diff --git a/package-lock.json b/package-lock.json index fa85fbea8..f5af75d62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -405,16 +405,16 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" }, "regexpu-core": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.5.tgz", - "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^6.0.0", + "regenerate-unicode-properties": "^7.0.0", "regjsgen": "^0.4.0", "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" } }, "regjsgen": { @@ -553,16 +553,16 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" }, "regexpu-core": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.5.tgz", - "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^6.0.0", + "regenerate-unicode-properties": "^7.0.0", "regjsgen": "^0.4.0", "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" } }, "regjsgen": { @@ -807,16 +807,16 @@ "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=" }, "regexpu-core": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.1.5.tgz", - "integrity": "sha512-3xo5pFze1F8oR4F9x3aFbdtdxAxQ9WBX6gXfLgeBt7KpDI0+oDF7WVntnhsPKqobU/GAYc2pmx+y3z0JI1+z3w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.2.0.tgz", + "integrity": "sha512-Z835VSnJJ46CNBttalHD/dB+Sj2ezmY6Xp38npwU87peK6mqOzOpV8eYktdkLTEkzzD+JsTcxd84ozd8I14+rw==", "requires": { "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^6.0.0", + "regenerate-unicode-properties": "^7.0.0", "regjsgen": "^0.4.0", "regjsparser": "^0.3.0", - "unicode-match-property-ecmascript": "^1.0.3", - "unicode-match-property-value-ecmascript": "^1.0.1" + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.0.2" } }, "regjsgen": { @@ -888,6 +888,11 @@ "caniuse-lite": "^1.0.30000844", "electron-to-chromium": "^1.3.47" } + }, + "caniuse-lite": { + "version": "1.0.30000851", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000851.tgz", + "integrity": "sha512-Y1ecA1cL9wg0vni8t33nBw/poX8ypm+2c3fbwAESj8cm4ufK9CBFQ1+nUK8Dp5dtFo5Fc3JzkI5DKmQbuIo6hQ==" } } }, @@ -964,12 +969,12 @@ } }, "@storybook/addon-a11y": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-3.4.6.tgz", - "integrity": "sha512-lyxVaj40veGriUtkbcyEgCJNk1ucAvN1fEfe+rR5+725R/jHrzAynDVrimvMGlnQ1+GRriCbMI9iQgw1H7087Q==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-a11y/-/addon-a11y-3.4.7.tgz", + "integrity": "sha512-260YSuVpcc1uR/5y2Or6fTzw3TyiSWGd9iFHq1nY8N897Bd1Jh1xjpx9QD3vZP1XorV1f1GvGTE5MKKZt54nCw==", "dev": true, "requires": { - "@storybook/components": "3.4.6", + "@storybook/components": "3.4.7", "axe-core": "^2.6.1", "babel-runtime": "^6.26.0", "glamor": "^2.20.40", @@ -978,12 +983,12 @@ } }, "@storybook/addon-actions": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.4.6.tgz", - "integrity": "sha512-0bI0PBR+AVvopTMKz9URJDW+2meqQ5o2bYBq94mCodjTSK97kXjuK9Ac2rf/F3hZWyxiQhC/sIuIrhRVDUCQOg==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-3.4.7.tgz", + "integrity": "sha512-/Z+XBEdsdIQywS2YpetBt3+LtY+5mENIJM5FPoCRgeTLLhwOMQsmijY/Pf7hs9RKW87gD7Pfs9YGSabNef74Mg==", "dev": true, "requires": { - "@storybook/components": "3.4.6", + "@storybook/components": "3.4.7", "babel-runtime": "^6.26.0", "deep-equal": "^1.0.1", "glamor": "^2.20.40", @@ -996,50 +1001,50 @@ } }, "@storybook/addon-links": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.4.6.tgz", - "integrity": "sha512-o539HBHPsF3b8Bz6K8gPDhH13RBPVKe2DiK5i63XizgN4jY+bqE9cQzO9Jp1mJyCOF6uDgjV5T+quyxSk8F4Zg==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-3.4.7.tgz", + "integrity": "sha512-xAdHLpPmXGIneVPSFBPLfHn+rjRgl4zJ6P7kWUBIyYJmZaL9re24CTn7prlqH/FgnhiswMT2SJyBhH/2GlotxQ==", "dev": true, "requires": { - "@storybook/components": "3.4.6", + "@storybook/components": "3.4.7", "babel-runtime": "^6.26.0", "global": "^4.3.2", "prop-types": "^15.6.1" } }, "@storybook/addons": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.4.6.tgz", - "integrity": "sha512-NTFQJna+Ph0WC0tcHob1aowkVMAXaioCC5cnHP3lCYh2i+a4HpwxSeI/yULVXLI+eto9LdneFj9Bep2TTGmDQg==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/addons/-/addons-3.4.7.tgz", + "integrity": "sha512-OpH9AZFJkXFaWYT5b8fp0o/Ucvk7hbIsrlqIQp+Nc/OEFxUnxqtNp+2MtCfRSfEvGoT/vTJv2bMXeWRgkTRoQg==", "dev": true }, "@storybook/channel-postmessage": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.4.6.tgz", - "integrity": "sha512-5pCvoxOxLqLl4eT+/EwqFPIb+ezR4/3DznWjNTIVWbaEacE29sX2DEvwAQ1G7NeEPIg9Ayk95ll8EfSGvCLlaQ==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/channel-postmessage/-/channel-postmessage-3.4.7.tgz", + "integrity": "sha512-o6PDQXvsA5IGlG0Ol62BYVt/1ZyHZ7ERFkWij368mCkHcFqE4mr9xOGr+rQkflMUl9tWnbdcfyp6KM3eq5nizA==", "dev": true, "requires": { - "@storybook/channels": "3.4.6", + "@storybook/channels": "3.4.7", "global": "^4.3.2", "json-stringify-safe": "^5.0.1" } }, "@storybook/channels": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.6.tgz", - "integrity": "sha512-4UJLkz0MxGVcj8nVIjfp41ZnZd6A8jVge4VQZuVzpRvdlvy4vycRKPtAakLL/XlxUCJmW6CJ4a6MEtxQ7FMJkA==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-3.4.7.tgz", + "integrity": "sha512-EzZx+4jJ2wNJ03N/HBfQVZ0XAhO8pfDlluDu/k9fWLWglHufpczp6NxvAL6qkUONVKwFpTPKizvDye3RUd+Qcw==", "dev": true }, "@storybook/client-logger": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.4.6.tgz", - "integrity": "sha512-8yOWufZen1cgH2fz7IY/FaElpfEchGaOoId99eOQ2d7Jn8Ist/7bk5t+3bi8kfmOafVQxJHiYBavVbIIex4DwA==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-3.4.7.tgz", + "integrity": "sha512-obyFZrM2Axoj0MwMoAZTvvGM/VjwLdXzUGZQLpafz97s61eDq6SX6Nd7rPyh1WJU+O5+1oo4R8u03iikpi3o2A==", "dev": true }, "@storybook/components": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.4.6.tgz", - "integrity": "sha512-mpOxTSYS0WE1om2GscxCO4pLMQOcoMZwE0k7nPXzP9wcFdEUj3GxFNYOnRZeWKl+lbT0htiRsY55Wkz4DpOKNw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-3.4.7.tgz", + "integrity": "sha512-i6EbX4XQ25uZtwX+bzmYbfBr1gSSRuFItShSRKYmsPyweqc9UVa2f3zMb8qhO9DpAVIOkXjBho5WICR7dbE9CQ==", "dev": true, "requires": { "glamor": "^2.20.40", @@ -1048,16 +1053,16 @@ } }, "@storybook/core": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/core/-/core-3.4.6.tgz", - "integrity": "sha512-5f+2rCeS7L7PfaT0XBIibSHv12y8kNGpkuBHFn35360RqZJhh6Lt3eJZznI+2zwhvh3w8EEiYgQY5KbvwzKhiw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/core/-/core-3.4.7.tgz", + "integrity": "sha512-mYMGmjFpJXGwVv2K7JjYUtaluI4ixhsb8VoJHU8tfrdqeiY26grsA5aUtosuFM0TsKft/GpZIOPfoynxHgBtjA==", "dev": true, "requires": { - "@storybook/addons": "3.4.6", - "@storybook/channel-postmessage": "3.4.6", - "@storybook/client-logger": "3.4.6", - "@storybook/node-logger": "3.4.6", - "@storybook/ui": "3.4.6", + "@storybook/addons": "3.4.7", + "@storybook/channel-postmessage": "3.4.7", + "@storybook/client-logger": "3.4.7", + "@storybook/node-logger": "3.4.7", + "@storybook/ui": "3.4.7", "autoprefixer": "^7.2.6", "babel-runtime": "^6.26.0", "chalk": "^2.3.2", @@ -1083,14 +1088,14 @@ }, "dependencies": { "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", + "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.1" } }, @@ -1234,6 +1239,12 @@ "number-is-nan": "^1.0.0" } }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -1513,9 +1524,9 @@ } }, "@storybook/node-logger": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.4.6.tgz", - "integrity": "sha512-YDNVb00TVcnxKuCF+nUUPJj8OwZBv7MdR+7drW7TlVgL2Tq/OxzQUZv8Wej6+ywcoFOCOb5TxlFGeSas2DsMig==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-3.4.7.tgz", + "integrity": "sha512-JtDpcKYn+1V7qIhaCmGveWfHd9n3GV7mxDCwEWuSQpcVTnD9YEww0LDtK9RyjR6dClXZwuzY52p4WDN7g5wWSQ==", "dev": true, "requires": { "npmlog": "^4.1.2" @@ -1532,19 +1543,19 @@ } }, "@storybook/react": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-3.4.6.tgz", - "integrity": "sha512-wxPBcjU+CuE8L36p/P8Z/V3GNSW+yhuFC/F1SvbPMpqQJcbGdrNaNb3okprFwocMEiMhNNBGwwCgQPsMNLmBwg==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-3.4.7.tgz", + "integrity": "sha512-phPJz0RG3YlttyuX6yn2MCiL41i/xitexrxQi95EA+vIUUlo/NlnxyZ9YNDRBvGS5Qudc7O//aW5eAbtmXGCVg==", "dev": true, "requires": { - "@storybook/addon-actions": "3.4.6", - "@storybook/addon-links": "3.4.6", - "@storybook/addons": "3.4.6", - "@storybook/channel-postmessage": "3.4.6", - "@storybook/client-logger": "3.4.6", - "@storybook/core": "3.4.6", - "@storybook/node-logger": "3.4.6", - "@storybook/ui": "3.4.6", + "@storybook/addon-actions": "3.4.7", + "@storybook/addon-links": "3.4.7", + "@storybook/addons": "3.4.7", + "@storybook/channel-postmessage": "3.4.7", + "@storybook/client-logger": "3.4.7", + "@storybook/core": "3.4.7", + "@storybook/node-logger": "3.4.7", + "@storybook/ui": "3.4.7", "airbnb-js-shims": "^1.4.1", "babel-loader": "^7.1.4", "babel-plugin-macros": "^2.2.0", @@ -1579,14 +1590,14 @@ }, "dependencies": { "ajv": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.0.tgz", - "integrity": "sha512-VDUX1oSajablmiyFyED9L1DFndg0P9h7p1F+NO8FkIzei6EPrR6Zu1n18rd5P8PqaSRd/FrWv3G1TVBqpM83gA==", + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.1.tgz", + "integrity": "sha512-pgZos1vgOHDiC7gKNbZW8eKvCnNXARv2oqrGQT7Hzbq5Azp7aZG6DJzADnkuSq7RH6qkXp4J/m68yPX/2uBHyQ==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", + "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.1" } }, @@ -1662,6 +1673,12 @@ "number-is-nan": "^1.0.0" } }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -1933,12 +1950,12 @@ } }, "@storybook/ui": { - "version": "3.4.6", - "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.4.6.tgz", - "integrity": "sha512-jK0xxYqlffnUKgf3pnIzmNke/TpvaIAU3RbiUxDbvHO1+cgSjiZ0SZaOAEkpsx1sAmaV8PBtPxIjBBjj6UIRiw==", + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/@storybook/ui/-/ui-3.4.7.tgz", + "integrity": "sha512-GMloQZpsbNI5fBJZemwsmLjkso+ccPtxa0rdpt1gkwpPcB8uoTQglK2Pbg+ojHR5y46K/Alu9bmQ1IZRfTcVzQ==", "dev": true, "requires": { - "@storybook/components": "3.4.6", + "@storybook/components": "3.4.7", "@storybook/mantra-core": "^1.7.2", "@storybook/podda": "^1.2.3", "@storybook/react-komposer": "^2.0.3", @@ -1970,9 +1987,9 @@ } }, "@types/node": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", - "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==" + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.1.tgz", + "integrity": "sha512-n7wxy8r2tjVcrzZoKJlyZmi1C1VhXGHAGhDEO1iqp7fbsTSsDF3dVA50KFsPg77EXqzNJqbzcna8Mi4m7a1lyw==" }, "abab": { "version": "1.0.4", @@ -2441,11 +2458,11 @@ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" }, "async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", - "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", + "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==", "requires": { - "lodash": "^4.17.10" + "lodash": "^4.14.0" } }, "async-each": { @@ -4104,6 +4121,14 @@ "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" }, + "boom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", + "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", + "requires": { + "hoek": "4.x.x" + } + }, "bowser": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.3.tgz", @@ -4457,14 +4482,14 @@ } }, "caniuse-db": { - "version": "1.0.30000844", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000844.tgz", - "integrity": "sha1-vKV5jNoraTHWgQDC1p5V+zOMu0E=" + "version": "1.0.30000843", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000843.tgz", + "integrity": "sha1-T36FAfVX3JvNN90zrIWQXHZe/sI=" }, "caniuse-lite": { - "version": "1.0.30000844", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000844.tgz", - "integrity": "sha512-UpKQE7y6dLHhlv75UyBCRiun34Q+bmxyX3zS+ve9M07YG52tRafOvop9N9d5jC+sikKuG7UMweJKJNts4FVehA==" + "version": "1.0.30000843", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000843.tgz", + "integrity": "sha512-1ntiW826MhRBmM0CeI7w1cQr16gxwOoM8doJWh3BFalPZoKWdZXs27Bc04xth/3NR1/wNXn9cpP4F92lVenCvg==" }, "capture-stack-trace": { "version": "1.0.0", @@ -4663,9 +4688,9 @@ } }, "classnames": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", - "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==", "dev": true }, "clean-css": { @@ -5059,6 +5084,24 @@ "which": "^1.2.9" } }, + "cryptiles": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", + "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", + "requires": { + "boom": "5.x.x" + }, + "dependencies": { + "boom": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", + "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", + "requires": { + "hoek": "4.x.x" + } + } + } + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -5358,6 +5401,23 @@ "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=" }, + "cytoscape": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.2.12.tgz", + "integrity": "sha512-epagPckuFpLO2hiKgKMXmCFBFM2K7XbJhYDQj8fH3riiEH+yFXpLYA30jV18TEbVcsq2c58ETOGnHE2YzSBr/Q==", + "requires": { + "heap": "^0.2.6", + "lodash.debounce": "^4.0.8" + } + }, + "cytoscape-dagre": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cytoscape-dagre/-/cytoscape-dagre-2.2.1.tgz", + "integrity": "sha512-8HK1lCCRi5Jxt4spMTksYy/lZTCidu7FX2jovGbC2GCGum0Qd4HInOkn5ofMVdpWYE7FmynSbZDlDfbNtnglwA==", + "requires": { + "dagre": "^0.7.4" + } + }, "d": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", @@ -5366,6 +5426,22 @@ "es5-ext": "^0.10.9" } }, + "dagre": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/dagre/-/dagre-0.7.4.tgz", + "integrity": "sha1-3nLw50pVDOEc5jjwoTb+1xI5gCI=", + "requires": { + "graphlib": "^1.0.5", + "lodash": "^3.10.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, "damerau-levenshtein": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", @@ -5398,9 +5474,9 @@ } }, "whatwg-url": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", - "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -5753,18 +5829,18 @@ "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=" }, "dotenv-webpack": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.5.6.tgz", - "integrity": "sha1-YBRqN85TuTTIVAT2icNcthc3HgQ=", + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-1.5.7.tgz", + "integrity": "sha1-xEOVqyHR/SjXmpCUKnsUsd69FF8=", "dev": true, "requires": { - "dotenv": "^6.0.0" + "dotenv": "^5.0.1" }, "dependencies": { "dotenv": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-6.0.0.tgz", - "integrity": "sha512-FlWbnhgjtwD+uNLUGHbMykMOYQaTivdHEmYwAKFjn6GKe/CqY0fNae93ZHTd20snh9ZLr8mTzIL9m0APQ1pjQg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", "dev": true } } @@ -5825,9 +5901,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.48", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", - "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=" + "version": "1.3.47", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz", + "integrity": "sha1-dk6IfKkQTQGgrI6r7n38DizhQQQ=" }, "elliptic": { "version": "6.4.0", @@ -7122,9 +7198,9 @@ } }, "follow-redirects": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", - "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.4.1.tgz", + "integrity": "sha512-uxYePVPogtya1ktGnAAXOacnbIuRMB4dkvqeNz2qTtTQsuzSfbDolV+wMMKxAmCx0bLgAKLbBOkjItMbbkR1vg==", "requires": { "debug": "^3.1.0" }, @@ -7714,9 +7790,9 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "fuse.js": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.2.0.tgz", - "integrity": "sha1-8ESOgGmFW/Kj5oPNwdMg5+KgfvQ=", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-3.2.1.tgz", + "integrity": "sha1-YyDLlM5W7JdVyJred1vNuwNY1CU=", "dev": true }, "gauge": { @@ -7933,6 +8009,21 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, + "graphlib": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-1.0.7.tgz", + "integrity": "sha1-DKst8P/mq+BwsmJb+h7bbslnuLE=", + "requires": { + "lodash": "^3.10.0" + }, + "dependencies": { + "lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=" + } + } + }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", @@ -8036,9 +8127,9 @@ } }, "whatwg-url": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.4.1.tgz", - "integrity": "sha512-FwygsxsXx27x6XXuExA/ox3Ktwcbf+OAvrKmLulotDAiO1Q6ixchPFaHYsis2zZBZSJTR0+dR+JVtf7MlbqZjw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", @@ -8228,11 +8319,27 @@ "minimalistic-assert": "^1.0.0" } }, + "hawk": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", + "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", + "requires": { + "boom": "4.x.x", + "cryptiles": "3.x.x", + "hoek": "4.x.x", + "sntp": "2.x.x" + } + }, "he": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" }, + "heap": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", + "integrity": "sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw=" + }, "history": { "version": "4.7.2", "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", @@ -8255,6 +8362,11 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "hoek": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", + "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==" + }, "hoist-non-react-statics": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.0.tgz", @@ -8331,9 +8443,9 @@ } }, "html-minifier": { - "version": "3.5.16", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.16.tgz", - "integrity": "sha512-zP5EfLSpiLRp0aAgud4CQXPQZm9kXwWjR/cF0PfdOj+jjWnOaCgeZcll4kYXSvIBPeUMmyaSc7mM4IDtA+kboA==", + "version": "3.5.15", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", + "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", "requires": { "camel-case": "3.0.x", "clean-css": "4.1.x", @@ -8406,9 +8518,9 @@ } }, "http-parser-js": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", - "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=" + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", + "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=" }, "http-proxy": { "version": "1.17.0", @@ -8802,6 +8914,13 @@ "pull-stream": "^3.6.7", "pull-traverse": "^1.0.3", "stable": "0.1.6" + }, + "dependencies": { + "stable": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", + "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=" + } } }, "is-absolute-url": { @@ -9088,9 +9207,9 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" }, "is-promise": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", - "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-redirect": { "version": "1.0.0", @@ -10204,8 +10323,7 @@ "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" }, "lodash.defaults": { "version": "4.2.0", @@ -10342,6 +10460,11 @@ "yallist": "^2.1.2" } }, + "macaddress": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=" + }, "make-dir": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", @@ -10431,9 +10554,9 @@ } }, "mdn-data": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.3.tgz", - "integrity": "sha512-h776Q5wL27jLGVL7bo3DHIR7idq/u34yazIOFjRzdu3pM3hWnLaum6QME/A9vhPEc6nd6NrQKGqgCvtFAvDhKQ==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz", + "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==" }, "media-typer": { "version": "0.3.0", @@ -10880,6 +11003,11 @@ "promise": "~1.3.0" }, "dependencies": { + "is-promise": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz", + "integrity": "sha1-MVc3YcBX4zwukaq56W2gjO++duU=" + }, "promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-1.3.0.tgz", @@ -11075,9 +11203,9 @@ "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==" }, "nwsapi": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.1.tgz", - "integrity": "sha512-xOJJb7kAAGy6UOklbaIPA0iu/27VMHfAbMUgYJlXz4qRXytIkPGM2vwfbxa+tbaqcqHNsP6RN4eDZlePelWKpQ==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.0.3.tgz", + "integrity": "sha512-zFJF9lOpg2+uicP0BQKOAfIOqeTp/p8PC669mewxgRkR1hGjne8BMUHk4wpRS9o5Z0icA5Nv04HmGkW31KfMKw==" }, "oauth-sign": { "version": "0.8.2", @@ -11989,11 +12117,12 @@ } }, "postcss-filter-plugins": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", - "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", "requires": { - "postcss": "^5.0.4" + "postcss": "^5.0.4", + "uniqid": "^4.0.0" }, "dependencies": { "has-flag": { @@ -12808,9 +12937,9 @@ "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" }, "prettier": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.4.tgz", - "integrity": "sha512-emsEZ2bAigL1lq6ssgkpPm1MIBqgeTvcp90NxOP5XDqprub/V/WS2Hfgih3mS7/1dqTUvhG+sxx1Dv8crnVexA==" + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.13.5.tgz", + "integrity": "sha512-4M90mfvLz6yRf2Dhzd+xPIE6b4xkI8nHMJhsSm9IlfG17g6wujrrm7+H1X8x52tC4cSNm6HmuhCUSNe6Hd5wfw==" }, "pretty-bytes": { "version": "4.0.2", @@ -12981,9 +13110,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=" }, "puppeteer": { "version": "1.4.0", @@ -13883,11 +14012,11 @@ "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==" }, "regenerate-unicode-properties": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-6.0.0.tgz", - "integrity": "sha512-BvXxRS7RfVWxtm7vrq+0I0j7sqZ1zeSC+yzf5HS0qLnKcZPX541gFEGB39LvGuKHrkyKXrzXug+oC7xkM1Zovw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz", + "integrity": "sha512-s5NGghCE4itSlUS+0WUj88G6cfMVMmH8boTPNvABf8od+2dhT9WDlWu8n01raQAJZMOK8Ch6jSexaRO7swd6aw==", "requires": { - "regenerate": "^1.3.3" + "regenerate": "^1.4.0" } }, "regenerator-runtime": { @@ -14080,9 +14209,9 @@ } }, "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "version": "2.86.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", + "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.6.0", @@ -14092,6 +14221,7 @@ "forever-agent": "~0.6.1", "form-data": "~2.3.1", "har-validator": "~5.0.3", + "hawk": "~6.0.2", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -14254,13 +14384,6 @@ "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", "requires": { "is-promise": "^2.1.0" - }, - "dependencies": { - "is-promise": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" - } } }, "run-parallel": { @@ -14700,6 +14823,14 @@ } } }, + "sntp": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", + "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", + "requires": { + "hoek": "4.x.x" + } + }, "sockjs": { "version": "0.3.18", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", @@ -14918,9 +15049,9 @@ } }, "stable": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.6.tgz", - "integrity": "sha1-kQ9dKu17Ugxud3SZwfMuE5/eyxA=" + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, "standard": { "version": "11.0.1", @@ -15502,19 +15633,19 @@ } }, "csso": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.0.tgz", - "integrity": "sha512-WtJjFP3ZsSdWhiZr4/k1B9uHPgYjFYnDxfbaJxk1hz5PDLIJ5BCRWkJqaztZ0DbP8d2ZIVwUPIJb2YmCwkPaMw==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz", + "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==", "requires": { - "css-tree": "1.0.0-alpha.27" + "css-tree": "1.0.0-alpha.29" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.27", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.27.tgz", - "integrity": "sha512-BAYp9FyN4jLXjfvRpTDchBllDptqlK9I7OsagXCG9Am5C+5jc8eRZHgqb9x500W2OKS14MMlpQc/nmh/aA7TEQ==", + "version": "1.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz", + "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==", "requires": { - "mdn-data": "^1.0.0", + "mdn-data": "~1.1.0", "source-map": "^0.5.3" } } @@ -15921,9 +16052,9 @@ "integrity": "sha512-LtzwHlVHwFGTptfNSgezHp7WUlwiqb0gA9AALRbKaERfxwJoiX0A73QbTToxteIAuIaFshhgIZfqK8s7clqgnA==" }, "uglify-js": { - "version": "3.3.27", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.27.tgz", - "integrity": "sha512-O94wxMSb3td/TlofkITYvYIlvIVdldvNXDVRekzK13CQZuL37ua4nrdXX0Ro7MapfUVzglRHs0/+imPRUdOghg==", + "version": "3.3.25", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.25.tgz", + "integrity": "sha512-hobogryjDV36VrLK3Y69ou4REyrTApzUblVFmdQOYRe8cYaSmFJXMb4dR9McdvYDSbeNdzUgYr2YVukJaErJcA==", "requires": { "commander": "~2.15.0", "source-map": "~0.6.1" @@ -16003,28 +16134,28 @@ "integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ=" }, "unicode-canonical-property-names-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.3.tgz", - "integrity": "sha512-iG/2t0F2LAU8aZYPkX5gi7ebukHnr3sWFESpb+zPQeeaQwOkfoO6ZW17YX7MdRPNG9pCy+tjzGill+Ah0Em0HA==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==" }, "unicode-match-property-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.3.tgz", - "integrity": "sha512-nFcaBFcr08UQNF15ZgI5ISh3yUnQm7SJRRxwYrL5VYX46pS+6Q7TCTv4zbK+j6/l7rQt0mMiTL2zpmeygny6rA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.2", - "unicode-property-aliases-ecmascript": "^1.0.3" + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" } }, "unicode-match-property-value-ecmascript": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.1.tgz", - "integrity": "sha512-lM8B0FDZQh9yYGgiabRQcyWicB27VLOolSBRIxsO7FeQPtg+79Oe7sC8Mzr8BObDs+G9CeYmC/shHo6OggNEog==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz", + "integrity": "sha512-Rx7yODZC1L/T8XKo/2kNzVAQaRE88AaMvI1EF/Xnj3GW2wzN6fop9DDWuFAKUVFH7vozkz26DzP0qyWLKLIVPQ==" }, "unicode-property-aliases-ecmascript": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.3.tgz", - "integrity": "sha512-TdDmDOTxEf2ad1g3ZBpM6cqKIb2nJpVlz1Q++casDryKz18tpeMBhSng9hjC1CTQCkOV9Rw2knlSB6iRo7ad1w==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz", + "integrity": "sha512-2WSLa6OdYd2ng8oqiGIWnJqyFArvhn+5vgx5GTxMbUYjCYKUcuKS62YLFF0R/BDGlB1yzXjQOLtPAfHsgirEpg==" }, "union-value": { "version": "1.0.0", @@ -16063,6 +16194,14 @@ "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=" }, + "uniqid": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "requires": { + "macaddress": "^0.2.8" + } + }, "uniqs": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", diff --git a/package.json b/package.json index 1ae5124a9..1278f7dff 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ }, "dependencies": { "cids": "^0.5.3", + "cytoscape": "^3.2.12", + "cytoscape-dagre": "^2.2.1", "enzyme": "^3.3.0", "enzyme-adapter-react-16": "^1.1.1", "file-extension": "^4.0.5", diff --git a/src/App.js b/src/App.js index 833952798..ae237d4eb 100644 --- a/src/App.js +++ b/src/App.js @@ -3,7 +3,7 @@ import PropTypes from 'prop-types' import { connect } from 'redux-bundler-react' import NavBar from './navigation/NavBar' import navHelper from 'internal-nav-helper' -import IpldExploreForm from './ipld/IpldExploreForm' +import IpldExploreForm from './explore/IpldExploreForm' import AsyncRequestLoader from './loader/AsyncRequestLoader' export class App extends Component { diff --git a/src/bundles/explore.js b/src/bundles/explore.js new file mode 100644 index 000000000..f0e0e9308 --- /dev/null +++ b/src/bundles/explore.js @@ -0,0 +1,43 @@ +import { createAsyncResourceBundle, createSelector } from 'redux-bundler' +import { resolveIpldPath, quickSplitPath } from '../lib/path' + +// Find all the nodes and path boundaries traversed along a given path +const bundle = createAsyncResourceBundle({ + name: 'explore', + actionBaseType: 'EXPLORE', + getPromise: async (args) => { + const {store, getIpfs} = args + const hash = store.selectHash() + const path = hash.replace('/explore', '') + const {cidOrFqdn, rest} = quickSplitPath(path) + const {targetNode, canonicalPath, localPath, nodes, pathBoundaries} = await resolveIpldPath(getIpfs, cidOrFqdn, rest) + return { + path, + targetNode, + canonicalPath, + localPath, + nodes, + pathBoundaries + } + }, + staleAfter: Infinity, + checkIfOnline: false +}) + +// Fetch the explore data when the address in the url hash changes. +bundle.reactExploreFetch = createSelector( + 'selectExploreIsLoading', + 'selectExploreIsWaitingToRetry', + 'selectIpfsReady', + 'selectRouteInfo', + 'selectExplore', + (isLoading, isWaitingToRetry, ipfsReady, {url, params}, obj) => { + if (!isLoading && !isWaitingToRetry && ipfsReady && url.startsWith('/explore') && params.path) { + if (!obj || obj.path !== params.path) { + return { actionCreator: 'doFetchExplore' } + } + } + } +) + +export default bundle diff --git a/src/bundles/index.js b/src/bundles/index.js index c1b261ab6..5ac03d593 100644 --- a/src/bundles/index.js +++ b/src/bundles/index.js @@ -1,7 +1,7 @@ import { composeBundles } from 'redux-bundler' import ipfsBundle from './ipfs' -import objectBundle from './object' +import exploreBundle from './explore' import appIdle from './app-idle' import peersBundle from './peers' import routesBundle from './routes' @@ -11,7 +11,7 @@ import filesBundle from './files' export default composeBundles( appIdle({idleTimeout: 5000}), ipfsBundle, - objectBundle, + exploreBundle, peersBundle, routesBundle, redirectsBundle, diff --git a/src/bundles/object.js b/src/bundles/object.js deleted file mode 100644 index d64250e97..000000000 --- a/src/bundles/object.js +++ /dev/null @@ -1,71 +0,0 @@ -import { createAsyncResourceBundle, createSelector } from 'redux-bundler' -import { quickSplitPath } from '../lib/path' -import { explainDagNode } from '../lib/dag' -import { findCid } from '../lib/cbor' - -/* -{ - path: '/ipfs/QmHash/foo/bar' - resolved: { - "data": { "type": "Buffer", "data": [8, 1] }, - "links": [ - { - "name": "contact-ipfs", - "size": 5814, - "multihash": "QmXdUm5xgmmFK5ykH3Yvk2PFtL9eDs4FGJ9wpScXUMVsU1" - }, - ], - "multihash": "QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW", - "size": 10016715 - } -} -*/ -const bundle = createAsyncResourceBundle({ - name: 'object', - actionBaseType: 'OBJECT', - getPromise (args) { - const {store, getIpfs} = args - const hash = store.selectHash() - const path = hash.replace('/explore', '') - const {address, cidOrFqdn, rest} = quickSplitPath(path) - return getIpfs().dag.get(address).then(async (res) => { - if (!res.value) throw new Error('unpackDag expects an object with a `value` property as provided by an ipfs.dag.get response') - let {value} = res - const resolved = explainDagNode(value) - if (resolved.type === 'dag-cbor') { - if (!rest) { - resolved.multihash = cidOrFqdn - } else { - // apply path to root obj, until you hit a link, or the end of the path - const {value: rootNode} = await getIpfs().dag.get(cidOrFqdn) - const cid = await findCid(getIpfs, rootNode, cidOrFqdn, rest) - resolved.multihash = cid - } - } - return { - path, - resolved, - remainderPath: res.remainderPath - } - }) - }, - staleAfter: 100, - checkIfOnline: false -}) - -bundle.reactObjectFetch = createSelector( - 'selectObjectShouldUpdate', - 'selectIpfsReady', - 'selectRouteInfo', - 'selectObject', - (shouldUpdate, ipfsReady, {url, params}, obj) => { - // console.log('reactObjectFetch', shouldUpdate, ipfsReady, url, params, obj) - if (shouldUpdate && ipfsReady && url.startsWith('/explore') && params.path) { - if (!obj || obj.path !== params.path) { - return { actionCreator: 'doFetchObject' } - } - } - } -) - -export default bundle diff --git a/src/bundles/routes.js b/src/bundles/routes.js index 12dddb080..d3f5d8e35 100644 --- a/src/bundles/routes.js +++ b/src/bundles/routes.js @@ -1,13 +1,13 @@ import { createRouteBundle } from 'redux-bundler' import StatusPage from '../status/StatusPage' import FilesPage from '../files/FilesPage' -import IpldPage from '../ipld/IpldPage' +import ExplorePage from '../explore/ExplorePage' import PeersPage from '../peers/PeersPage' import SettingsPage from '../settings/SettingsPage' export default createRouteBundle({ '/files': FilesPage, - '/explore*': IpldPage, + '/explore*': ExplorePage, '/files*': FilesPage, '/peers': PeersPage, '/settings': SettingsPage, diff --git a/src/components/cid/Cid.js b/src/components/cid/Cid.js new file mode 100644 index 000000000..4423c75b6 --- /dev/null +++ b/src/components/cid/Cid.js @@ -0,0 +1,34 @@ +import React from 'react' + +export function cidStartAndEnd (value) { + const chars = value.split('') + if (chars.length <= 9) return value + const start = chars.slice(0, 4).join('') + const end = chars.slice(chars.length - 4).join('') + return { + value, + start, + end + } +} + +export function shortCid (value) { + const {start, end} = cidStartAndEnd(value) + return `${start}…${end}` +} + +const Cid = ({value, title, style, ...props}) => { + style = Object.assign({}, { + textDecoration: 'none' + }, style) + const {start, end} = cidStartAndEnd(value) + return ( + + {start} + + {end} + + ) +} + +export default Cid diff --git a/src/components/cid/Cid.stories.js b/src/components/cid/Cid.stories.js new file mode 100644 index 000000000..0cdc00be2 --- /dev/null +++ b/src/components/cid/Cid.stories.js @@ -0,0 +1,17 @@ +import React from 'react' +import { storiesOf } from '@storybook/react' +import { action } from '@storybook/addon-actions' +import { checkA11y } from '@storybook/addon-a11y' +import Cid from './Cid' + +storiesOf('CID', module) + .addDecorator(checkA11y) + .add('CID v0', () => ( + + )) + .add('CID v1', () => ( + + )) + .add('CID v1 sha3', () => ( + + )) diff --git a/src/explore/ExplorePage.js b/src/explore/ExplorePage.js new file mode 100644 index 000000000..d1b4ac12c --- /dev/null +++ b/src/explore/ExplorePage.js @@ -0,0 +1,89 @@ +import React from 'react' +import { Helmet } from 'react-helmet' +import { connect } from 'redux-bundler-react' +import CidInfo from './cid-info/CidInfo' +import ObjectInfo from './object-info/ObjectInfo' +import IpldGraph from './graph/IpldGraphCytoscape' +import GraphCrumb from './graph-crumb/GraphCrumb' + +class ExplorePage extends React.Component { + constructor (props) { + super(props) + this.onLinkClick = this.onLinkClick.bind(this) + } + + onLinkClick (link) { + const {doUpdateHash, explore} = this.props + const {nodes, pathBoundaries} = explore + const cid = nodes[0].cid + const basePath = pathBoundaries.map(p => p.path).join('/') + const path = basePath ? `${basePath}/${link.path}` : link.path + // Reliably derive the url from the data, rather than the current hash + const hash = `#/explore/${cid}/${path}` + doUpdateHash(hash) + } + + render () { + const {explore} = this.props + if (!explore) return + const {targetNode, localPath, nodes, pathBoundaries} = explore + const sourceNode = nodes[0] + return ( +
+ + Explore - IPFS + + {pathBoundaries && targetNode ? ( + + ) : null} +
+
+ {targetNode ? ( + + ) : null} +
+
+ {targetNode ? ( +
+ + +
+ ) : null} +
+
+

IPLD

+
+ ) + } +} + +const StartExploringPage = () => { + return ( +
+ + Explore - IPFS + +

IPLD

+
+ ) +} + +export default connect('selectRouteParams', 'selectExploreIsLoading', 'selectExplore', 'selectHash', 'doUpdateHash', ExplorePage) diff --git a/src/ipld/IpldExploreForm.js b/src/explore/IpldExploreForm.js similarity index 100% rename from src/ipld/IpldExploreForm.js rename to src/explore/IpldExploreForm.js diff --git a/src/ipld/cid-info/CidInfo.js b/src/explore/cid-info/CidInfo.js similarity index 100% rename from src/ipld/cid-info/CidInfo.js rename to src/explore/cid-info/CidInfo.js diff --git a/src/ipld/cid-info/CidInfo.stories.js b/src/explore/cid-info/CidInfo.stories.js similarity index 100% rename from src/ipld/cid-info/CidInfo.stories.js rename to src/explore/cid-info/CidInfo.stories.js diff --git a/src/explore/graph-crumb/GraphCrumb.js b/src/explore/graph-crumb/GraphCrumb.js new file mode 100644 index 000000000..8e3b08b51 --- /dev/null +++ b/src/explore/graph-crumb/GraphCrumb.js @@ -0,0 +1,101 @@ +import React from 'react' +import Cid from '../../components/cid/Cid' +import {colorForNode} from '../object-info/ObjectInfo' + +const GraphCrumb = ({cid, pathBoundaries, localPath, hrefBase = '#/explore', ...props}) => { + const [first, ...rest] = pathBoundaries + const last = pathBoundaries[pathBoundaries.length - 1] + const firstHrefBase = calculateHrefBase(hrefBase, cid, pathBoundaries, 0) + return ( +
+
+ + + + + {first ? ( +
+ + +
+ ) : null } + {localPath && pathBoundaries.length === 0 ? ( +
+ + +
+ ) : null} +
+ {rest.map((link, i) => { + const nextHrefBase = calculateHrefBase(hrefBase, cid, pathBoundaries, i + 1) + return ( +
+ + + + +
+ ) + })} + {localPath && pathBoundaries.length > 0 ? ( +
+ + + + +
+ ) : null} +
+
+ ) +} + +function calculateHrefBase (hrefBase, cid, boundaries, boundaryIndex) { + const relPath = boundaries.slice(0, boundaryIndex).map(b => b.path).join('/') + const cidHref = hrefBase + '/' + cid + return relPath ? cidHref + '/' + relPath : cidHref +} + +const NodeUnderline = ({cid, children}) => { + // TODO: pass in or calc type + const type = cid.startsWith('Qm') ? 'dag-pb' : 'dag-cbor' + const color = colorForNode(type) + return ( +
+
{children}
+
+ ) +} + +const Path = ({path, hrefBase, sourceCid}) => { + const parts = path.split('/').filter(p => !!p) + return ( +
+ {parts.map((p, i) => { + const relPath = parts.slice(0, i + 1).join('/') + const href = `${hrefBase}/${relPath}` + return ( +
+ {i !== 0 && } + + {p} + +
+ ) + })} +
+ ) +} + +const Divider = () =>
/
+ +export default GraphCrumb diff --git a/src/explore/graph-crumb/GraphCrumb.stories.js b/src/explore/graph-crumb/GraphCrumb.stories.js new file mode 100644 index 000000000..abb7b4a63 --- /dev/null +++ b/src/explore/graph-crumb/GraphCrumb.stories.js @@ -0,0 +1,44 @@ +import React from 'react' +import { storiesOf } from '@storybook/react' +import { checkA11y } from '@storybook/addon-a11y' + +import GraphCrumb from './GraphCrumb' + +storiesOf('IPLD Graph Crumbs', module) + .addDecorator(checkA11y) + .add('lots of paths', () => ( +
+ + + +
+ )) diff --git a/src/ipld/graph/IpldGraph.js b/src/explore/graph/IpldGraph.js similarity index 95% rename from src/ipld/graph/IpldGraph.js rename to src/explore/graph/IpldGraph.js index 3702fd743..a5c87e9c0 100644 --- a/src/ipld/graph/IpldGraph.js +++ b/src/explore/graph/IpldGraph.js @@ -1,13 +1,10 @@ import React from 'react' -const IpldGraph = ({className, root}) => { +const IpldGraph = ({className, root, links}) => { const cls = `tc ma4 ${className}` return (
- - IPLD Graph - diff --git a/src/explore/graph/IpldGraph.stories.js b/src/explore/graph/IpldGraph.stories.js new file mode 100644 index 000000000..e1dfda888 --- /dev/null +++ b/src/explore/graph/IpldGraph.stories.js @@ -0,0 +1,37 @@ +import React from 'react' +import { storiesOf } from '@storybook/react' +import { action } from '@storybook/addon-actions' +import IpldGraph from './IpldGraph' +import IpldGraphCytoscape from './IpldGraphCytoscape' + +import dagNodeA from '../object-info/fixtures/object-info-8-links.json' +import dagNodeB from '../object-info/fixtures/object-info-36-links.json' +// import dagNodeC from '../object-info/fixtures/object-info-1240-links.json' +import dagNodeD from '../object-info/fixtures/object-info-0-links.json' + +storiesOf('IPLD Graph', module) + .add('3 links', () => ( + + )) + .add('cytoscape 8 links', () => ( + + )) + .add('cytoscape 36 links', () => ( + + )) + .add('cytoscape 0 links', () => ( + + )) diff --git a/src/explore/graph/IpldGraphCytoscape.js b/src/explore/graph/IpldGraphCytoscape.js new file mode 100644 index 000000000..fb107e1f7 --- /dev/null +++ b/src/explore/graph/IpldGraphCytoscape.js @@ -0,0 +1,139 @@ +import React from 'react' +import cytoscape from 'cytoscape' +import dagre from 'cytoscape-dagre' +import {colorForNode} from '../object-info/ObjectInfo' + +cytoscape.use(dagre) + +const graphOpts = { + wheelSensitivity: 0.05, + layout: { + name: 'dagre', + rankSep: 80, + nodeSep: 1 + }, + style: [ + { + selector: 'node', + style: { + shape: 'ellipse', + width: '14px', + height: '14px', + 'background-color': 'data(bg)' + } + }, + { + selector: 'edge', + style: { + 'source-distance-from-node': 3, + 'target-distance-from-node': 4, + 'curve-style': 'bezier', + 'control-point-weight': 0.5, + 'width': 1, + 'line-color': '#979797', + 'line-style': 'dotted', + 'target-label': 'data(index)', + 'font-family': 'Consolas, monaco, monospace', + 'font-size': '8px', + 'target-text-margin-x': '-5px', + 'color': '#ccc', + 'target-text-margin-y': '-2px', + 'text-halign': 'center', + 'text-valign': 'bottom' + } + } + ] +} + +export default class IpldGraphCytoscape extends React.Component { + constructor (props) { + super(props) + this.graphRef = React.createRef() + this.renderTree = this.renderTree.bind(this) + this.ipfsLinksToCy = this.ipfsLinksToCy.bind(this) + this.cy = null + } + + componentDidMount () { + const {path, links} = this.props + const container = this.graphRef.current + this.cy = this.renderTree({path, links, container}) + } + + componentDidUpdate () { + this.cy.destroy() + const {path, links} = this.props + const container = this.graphRef.current + this.cy = this.renderTree({path, links, container}) + } + + render () { + // pluck out custom props. Pass anything else on + const { onNodeClick, path, cid, ...props } = this.props + return
+ } + + renderTree ({path, links, container}) { + const cyLinks = this.ipfsLinksToCy(links) + // TODO: path is currently alwasys the root cid, but this will change. + const root = this.makeNode({target: path}, '') + + // list of graph elements to start with + const elements = [ + root, + ...cyLinks + ] + + const cy = cytoscape({ + elements: elements, + container: container, + ...graphOpts + }) + + if (this.props.onNodeClick) { + cy.on('tap', async (e) => { + const data = e.target.data() + // map back from cyNode to ipfs link + this.props.onNodeClick({target: data.target, path: data.path}) + }) + } + + return cy + } + + ipfsLinksToCy (links) { + const edges = links.map(this.makeLink) + const nodes = links.map(this.makeNode) + return [...nodes, ...edges] + } + + makeNode ({target, path}, index) { + // TODO: pass link type info. + const type = target.startsWith('Q') ? 'dag-pb' : 'dag-cbor' + const bg = colorForNode(type) + return { + group: 'nodes', + data: { + id: target, + path, + bg, + index + } + } + } + + makeLink ({source, target, path}, index) { + return { + group: 'edges', + data: { + source, + target, + index + } + } + } + + runLayout (cy) { + cy.layout(this.layoutOpts).run() + } +} diff --git a/src/ipld/object-info/ObjectInfo.js b/src/explore/object-info/ObjectInfo.js similarity index 83% rename from src/ipld/object-info/ObjectInfo.js rename to src/explore/object-info/ObjectInfo.js index 47c6bc99d..be0cac067 100644 --- a/src/ipld/object-info/ObjectInfo.js +++ b/src/explore/object-info/ObjectInfo.js @@ -13,19 +13,32 @@ const objectInspectorTheme = { const nodeStyles = { 'dag-cbor': {name: 'CBOR DAG Node', color: '#28CA9F'}, - 'dag-pb': {name: 'Protobuf Dag Node', color: '#244e66'} + 'dag-pb': {name: 'Protobuf DAG Node', color: '#244e66'} } -function nameForNode (type) { +export function nameForNode (type) { const style = nodeStyles[type] return (style && style.name) || 'DAG Node' } -function colorForNode (type) { +export function colorForNode (type) { const style = nodeStyles[type] return (style && style.color) || '#ea5037' } +// '/a/b' => ['$', '$.a', '$.a.b'] +// See: https://github.com/xyc/react-inspector#api +export function toExpandPathsNotation (localPath) { + if (!localPath) return [] + const parts = localPath.split('/') + const expandPaths = parts.map((part, i) => { + if (!part) return '$' + const relPath = parts.slice(0, i).join('.') + return `$${relPath}.${part}` + }) + return expandPaths.slice(0, expandPaths.length - 1) +} + const DagNodeIcon = ({type, ...props}) => ( @@ -45,27 +58,27 @@ class LinkRow extends React.Component { render () { const {index, link} = this.props - const {name, size, multihash} = link + const {target, path, size} = link return ( -
+
{index} - {name} + {path} + + + {target} {size ? humansize(size) : null} - - {multihash} -
) } } -const ObjectInfo = ({className, type, cid, size, data, links, onLinkClick, ...props}) => { +const ObjectInfo = ({className, type, cid, localPath, size, data, links, onLinkClick, ...props}) => { return (

@@ -97,7 +110,7 @@ const ObjectInfo = ({className, type, cid, size, data, links, onLinkClick, ...pr

{ !data ? null : (
- +
)}
@@ -114,13 +127,13 @@ const ObjectInfo = ({className, type, cid, size, data, links, onLinkClick, ...pr Name - Size CID + Size {links.map((link, i) => ( - + ))} diff --git a/src/ipld/object-info/ObjectInfo.stories.js b/src/explore/object-info/ObjectInfo.stories.js similarity index 93% rename from src/ipld/object-info/ObjectInfo.stories.js rename to src/explore/object-info/ObjectInfo.stories.js index d27d67c38..b568fb383 100644 --- a/src/ipld/object-info/ObjectInfo.stories.js +++ b/src/explore/object-info/ObjectInfo.stories.js @@ -16,7 +16,7 @@ storiesOf('IPLD Node Info', module) .add('cid v0 dag-pb', () => ( ( ( - - Explore - IPFS - -
-
- {object && object.resolved ? ( - - ) : null} -
-
- {object && object.resolved ? ( -
- - -
- ) : null} -
-
-
- ) - } -} - -export default connect('selectRouteParams', 'selectObject', 'selectHash', 'doUpdateHash', IpldPage) diff --git a/src/ipld/graph/IpldGraph.stories.js b/src/ipld/graph/IpldGraph.stories.js deleted file mode 100644 index f352622b6..000000000 --- a/src/ipld/graph/IpldGraph.stories.js +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react' -import { storiesOf } from '@storybook/react' -// import { action } from '@storybook/addon-actions' -import IpldGraph from './IpldGraph' - -storiesOf('IPLD Graph', module) - .add('3 links', () => ( - - )) diff --git a/src/ipld/object-info/fixtures/object-info-1240-links.json b/src/ipld/object-info/fixtures/object-info-1240-links.json deleted file mode 100644 index 894c9f4ea..000000000 --- a/src/ipld/object-info/fixtures/object-info-1240-links.json +++ /dev/null @@ -1,6207 +0,0 @@ -{ - "data": { "type": "Buffer", "data": [8, 1] }, - "links": [ - { - "name": "@babel", - "size": 28868922, - "multihash": "QmeS1EtEP5FxrdJopEWvNYWYdK5NELKuTr4aAVfDdkVAW5" - }, - { - "name": "@storybook", - "size": 13872471, - "multihash": "QmQ2rkyxtBQUbXmM7dzd1iPYm9CSWfeTpwnJqpucp1QcR2" - }, - { - "name": "@types", - "size": 507684, - "multihash": "QmPnedYuD1aXQGEPkpR4HTGrAU4aiwKWn3EhNbKafK7wTi" - }, - { - "name": "abab", - "size": 12299, - "multihash": "QmQHtEeNgA8KJEgC5kF5ejGeS6mVrLzWSPmQS72B3dvqU7" - }, - { - "name": "accepts", - "size": 17889, - "multihash": "QmXiZs8vF1T7kaemvSb6FEQ5QGajkpu3AGJBbERqhWArNV" - }, - { - "name": "acorn", - "size": 567816, - "multihash": "QmeVFRyEdJ7Z2Ag7NTPxvoVLZQLmM9h2PyogTFrbGXm8CC" - }, - { - "name": "acorn-dynamic-import", - "size": 594261, - "multihash": "QmZtNuyWRwq3SLVxFSQ4RAnGmmEZFJRpTWy7LxMavbabRa" - }, - { - "name": "acorn-globals", - "size": 593810, - "multihash": "QmX2GJdZqfQcwsAU48taAUGc76RujRQUptxP2x537z6GpP" - }, - { - "name": "acorn-jsx", - "size": 570879, - "multihash": "QmaW9iJzSnnRHKAXmHpZXQu7QoQeetzYMGe5RHp5hkaYyQ" - }, - { - "name": "address", - "size": 13218, - "multihash": "QmbuJfzZ68JsEvEB2MFi66MfCXHSStz2LLYRrmdG4X2ZFo" - }, - { - "name": "agent-base", - "size": 35377, - "multihash": "QmchisBcCfFLZTszSUy3X1n48dQxVNUhcPVy9bqnFuFjJb" - }, - { - "name": "airbnb-js-shims", - "size": 8292, - "multihash": "QmT98GXvQ8TaBgB5m7oz1xoxgFrSSB1ec8JrFwb6BUs9iV" - }, - { - "name": "ajv", - "size": 2097063, - "multihash": "QmUqS7UfAEcxwcgmpXCgZbMvBEQwZqLKM42x5pWv7re4r4" - }, - { - "name": "ajv-keywords", - "size": 65611, - "multihash": "QmSEcSs9Yan4naPfVCMrF4A5gg2nDz65ZqdAYxyv68Qx8r" - }, - { - "name": "align-text", - "size": 24652, - "multihash": "QmXwGGot9XpM5NDRQ3E5UewRqKD9XPt4RqH6pWis9MFYWF" - }, - { - "name": "alphanum-sort", - "size": 7632, - "multihash": "QmVuLTWkHcrQXUHvREhPKdnZSjyjpsUTu3867hPmmhc4x3" - }, - { - "name": "amdefine", - "size": 21569, - "multihash": "QmSedJ4Jij6ExTB5DfTsVBN87628UxH8NMtcYNNcXyvoz8" - }, - { - "name": "ansi-align", - "size": 7910, - "multihash": "QmQtrhcU7Pv6F9Tf9fHpRrHVFXHu4kKgH2MbTPVDMv43qV" - }, - { - "name": "ansi-escapes", - "size": 9162, - "multihash": "QmVYAJwJaVKWyurkFFdRYLSGKQqWH2J2g7ui88oHuPCAvx" - }, - { - "name": "ansi-html", - "size": 21059, - "multihash": "QmWzw9nWcbg3jTWytCW6ZiBnDL59NdQNWjV73BXEfQRoNC" - }, - { - "name": "ansi-regex", - "size": 5561, - "multihash": "QmV74n8x9JBvvpUPAQEqdpLVWBAMaS9UC3p7ujZUQoscYx" - }, - { - "name": "ansi-styles", - "size": 11515, - "multihash": "QmZ19mc2qgDXAJhrvisjyNZQDSzVCfFRnbva1Z4MsZa6C6" - }, - { - "name": "any-promise", - "size": 24910, - "multihash": "QmPw22qyy2ZWdHBVkvwexqfub8QHxt3tYYizBYW3R6Kqz5" - }, - { - "name": "anymatch", - "size": 126374, - "multihash": "Qme22sPn6f5eNX39GwiHRjkYmWbQqfq1nSMRUuAm3LWbSr" - }, - { - "name": "append-transform", - "size": 9013, - "multihash": "Qmagoy3ERSXACbbmEJmirTWMED3JE41e5pBrGokJK6Wggh" - }, - { - "name": "aproba", - "size": 9290, - "multihash": "QmP3cGncZZ9zbQXSSfHvhFowsRrn4wfrm7AyVFXBWCEixd" - }, - { - "name": "are-we-there-yet", - "size": 16974, - "multihash": "QmVESpkBcKkMdj1it4PmZLHQQj4WXCs3PYchnEPWwFqZSd" - }, - { - "name": "argparse", - "size": 119656, - "multihash": "QmZhjExi1CPTSzjsdbqfGU7iRmjHAdmsDRENf7dex6YcFM" - }, - { - "name": "aria-query", - "size": 133195, - "multihash": "QmWchWr59dcF5VzW7uwjybu67HWztDfjaLXxFQHFXi6Uz8" - }, - { - "name": "arr-diff", - "size": 9079, - "multihash": "QmXbwrAFhSDsz2GEEYeWo1N8BpW9npjeC5thgnzZCCE23e" - }, - { - "name": "arr-flatten", - "size": 8299, - "multihash": "QmYWi5sjd5TRwj6kVd5mkS1HM76Tn1RHcQvMnPrNrCHXg5" - }, - { - "name": "arr-union", - "size": 7739, - "multihash": "QmcfLe9xaWHvtfJpW3FzgYgCYd7bWPNnCgpx3dXnDCPi3J" - }, - { - "name": "array-equal", - "size": 3265, - "multihash": "QmPGLzsnqLKT6BagviKxVAHgZVAQuyY7QGYrmrvMvdcoEZ" - }, - { - "name": "array-filter", - "size": 4862, - "multihash": "Qmd3XZeoTjrqEiDJ9TmGWMgptP9hRZCDqM7ncRFTuiVb5r" - }, - { - "name": "array-find", - "size": 5965, - "multihash": "QmevCxBruxnqtaKdcyKbpEwEzLv4sRyj2qpVGnkSQpvvGG" - }, - { - "name": "array-find-index", - "size": 4140, - "multihash": "QmQbbhb3QNACdDg31RsRrnKtczcvYJ16Wd6ecHoqbzMQ7f" - }, - { - "name": "array-flatten", - "size": 7315, - "multihash": "Qmcs5ePZRfdJGeL3zebBcXsARmSzmTQPDEZ1jtjyPqWon5" - }, - { - "name": "array-includes", - "size": 22395, - "multihash": "QmenfG2oa4whfUGQHnX1m7PFLD6PFraDxR7Z3w3D1jS1An" - }, - { - "name": "array-map", - "size": 6138, - "multihash": "QmUyUzmQPiDMYFMz4kH7LXeNvPmBXCMKxHdNdMCbJ76xkk" - }, - { - "name": "array-reduce", - "size": 6676, - "multihash": "QmSVjwV8JJD15AE7cYWFf7xiktctTLuzjcaFQPeTqcb3tQ" - }, - { - "name": "array-union", - "size": 3700, - "multihash": "QmPmnFT66qxTgSgHBqESpFpSTgngyBbb2cqWHzue45h1ng" - }, - { - "name": "array-uniq", - "size": 4757, - "multihash": "QmQMEHCC1y2QPXPEPvmbv7hbqkwfL1oHyBL4zjqEGYzVHs" - }, - { - "name": "array-unique", - "size": 8299, - "multihash": "QmaWte94BKVucWpsT2Q1ddxwf8MffbjsW5EnTfLAAoEtuG" - }, - { - "name": "array.prototype.flatmap", - "size": 14875, - "multihash": "QmWVmTRuhQz4YPuA9zVsWRg1A5NEiZn43pkGexRScCggRM" - }, - { - "name": "array.prototype.flatten", - "size": 14910, - "multihash": "QmQXVaWvez9K5dRKF9J5gA2P4WJEw3HA5By5j2cDJTHdbU" - }, - { - "name": "arrify", - "size": 3500, - "multihash": "QmTENVCHi3KZL8Ey68JCgZXEv8nNzcnEmG9YAQpr67nnJn" - }, - { - "name": "asap", - "size": 35263, - "multihash": "QmRuNQerYPdkj6ZWTHGPt8RZQmoRHLp7b2ii433oRYobpW" - }, - { - "name": "asn1", - "size": 34714, - "multihash": "QmZabG1itpZgcM9GgpaRGw9EZK6vRXkxBn7ESjjS5EgDia" - }, - { - "name": "asn1.js", - "size": 48752, - "multihash": "QmcJJdvqeLGAWszR1xv89Q2c5qdCA5aaTAJhsjpTBvXCPz" - }, - { - "name": "assert", - "size": 34321, - "multihash": "Qmc4hgrqKqWXMeQnwg8RJJ6R3vYUCQP6vyHkVacYq1FVkm" - }, - { - "name": "assert-plus", - "size": 13274, - "multihash": "QmdQvUjUFQFqsSEDLprgjcAV7XMwy4EGR6q3v1CgYWAFE5" - }, - { - "name": "assign-symbols", - "size": 6959, - "multihash": "QmPKFrNWLPdLxkXALtnAHbHN8sYSmJvLUVLfP8FT7NZJnv" - }, - { - "name": "ast-types", - "size": 158328, - "multihash": "QmahRV8PfAp2hWe9wrR5V34JMMnjGBAbAZXzBPahsUMM9E" - }, - { - "name": "ast-types-flow", - "size": 125657, - "multihash": "QmYfZnFwWhuiud4MNDKNL6vNAkr3ZHEQ2kHETGvf6Q1FdN" - }, - { - "name": "async", - "size": 549429, - "multihash": "QmNMASUyzKxLExBtXW2S2GGRukTYwt3Wp5cbk9Md29PidV" - }, - { - "name": "async-each", - "size": 4753, - "multihash": "QmUV8Z1yizzSLe6NzyQhnd5QWrKz6qCxExBXVTCuxRL5G4" - }, - { - "name": "async-limiter", - "size": 55812, - "multihash": "QmViTwYyMRaLgG395FsQ6coWzkJnzoJHtxEHdFnf1X8wPs" - }, - { - "name": "asynckit", - "size": 29471, - "multihash": "QmeqiaHM7APNTryZN6usf87HZ9bdfPsKnmy2GiatfkQAYj" - }, - { - "name": "atob", - "size": 37575, - "multihash": "QmTxMLr7sF33wiCnBZg228Zp1LmCtFhXtDXujYhiUVRE86" - }, - { - "name": "autoprefixer", - "size": 308487, - "multihash": "QmTFirupzNKURyequ4gnTAm4dbdKucLb4fQcgEdQLz9dKY" - }, - { - "name": "aws-sign2", - "size": 15331, - "multihash": "QmWDxxQRnXGT3ZpY3mEKsdHEuqDQfmTvCNSoWsyRHXbgiL" - }, - { - "name": "aws4", - "size": 33072, - "multihash": "QmWaLYe5UsjYbQqisnDQ4nEHGy18fRtHY1TuqLdPC72SEE" - }, - { - "name": "axe-core", - "size": 2087841, - "multihash": "QmUDxE2LNok3RAe2MajtZfKc8VFsynLRoqY7GNsytNpLKB" - }, - { - "name": "axobject-query", - "size": 104131, - "multihash": "Qmf1s1GLWTFXLXFwSinfCX6A7jVcybcvANjVi6X9APR8Uz" - }, - { - "name": "babel-code-frame", - "size": 8914, - "multihash": "QmR2ixRwZDhhh5dhJHkrJhb27zgADQPy5B6gPHNYRhiee5" - }, - { - "name": "babel-core", - "size": 880518, - "multihash": "QmUqiHtgyg9ZuRKLRTuS8QcTkaEkPBSjPcLyGvPucwAxZn" - }, - { - "name": "babel-eslint", - "size": 36631, - "multihash": "Qmb7V2XY4ibF3zNuXWQb5A4N1CM6AYLKVeVmK8zaW9kVim" - }, - { - "name": "babel-generator", - "size": 865985, - "multihash": "Qmau66pgLDnzFUzJchQh339iSra1dfktfKQX1DZdprgjAL" - }, - { - "name": "babel-helper-bindify-decorators", - "size": 3573, - "multihash": "QmPZ7EZcomB7Wc8f7kWY3iXPxuWxf9FK2yna2DJGS1xzK5" - }, - { - "name": "babel-helper-builder-binary-assignment-operator-visitor", - "size": 4099, - "multihash": "QmNMHffK9CgiwXSw3M7mLNnbB3vLq72QCrvJvLztEeY76Z" - }, - { - "name": "babel-helper-builder-react-jsx", - "size": 7045, - "multihash": "QmZyXe16sSW4utmhsie4S7pRgFteXea4h5kXQV3dPEH3Ka" - }, - { - "name": "babel-helper-call-delegate", - "size": 3623, - "multihash": "QmS8W9D8VpNrn9gEXnN85wjTZKRmLJvdohLbtYm6LqFPfz" - }, - { - "name": "babel-helper-define-map", - "size": 6419, - "multihash": "QmVzijh1KienpYgBKSVcAD6BzV6J11y35RLctmmxmLCLj6" - }, - { - "name": "babel-helper-evaluate-path", - "size": 10026, - "multihash": "QmRwd8tbyLpLoU5EpoUWfNJrNRSis6aEZGmMZ4ZHB19Umk" - }, - { - "name": "babel-helper-explode-assignable-expression", - "size": 3813, - "multihash": "QmWa2JvrQ1yRvXjr4ERyGSePoekdHM15NTtYbt3yS7fFJe" - }, - { - "name": "babel-helper-explode-class", - "size": 4429, - "multihash": "QmeRxKMqVdKxFv2FprhBbaBYdMt23ydUNR6e32tGbr4iig" - }, - { - "name": "babel-helper-flip-expressions", - "size": 4418, - "multihash": "QmT7xtsXs2PJe3gQvzSWC1wyJcKqDKBqrZkTSn56HTFLBM" - }, - { - "name": "babel-helper-function-name", - "size": 6221, - "multihash": "QmR5utkmq8VbQjCqFj4S8MEPeXPDZYLXtZghk8iPBNsKwE" - }, - { - "name": "babel-helper-get-function-arity", - "size": 2370, - "multihash": "Qmd35NHNxot9Kho3R4E7BsAU4GczQhbKudoBoeyP5xSEqd" - }, - { - "name": "babel-helper-hoist-variables", - "size": 3744, - "multihash": "QmZpvoTwBPJ7mJTrZ4J5SF1G84mSsGmCuELjVZQum8ySxZ" - }, - { - "name": "babel-helper-is-nodes-equiv", - "size": 3713, - "multihash": "QmZ29o1zeUYD4DJSfhdkpHMrbTopcpNBgxV6fuZ1pfeJQY" - }, - { - "name": "babel-helper-is-void-0", - "size": 2041, - "multihash": "QmZpypANK2vJK8MCjSKhTxBHuoppnRZtd5SeuTGaQrwrtM" - }, - { - "name": "babel-helper-mark-eval-scopes", - "size": 6037, - "multihash": "QmZAKY8UJC84R3JakrkGRoy8PvQnyN2UbyMyUttLYs3iQ8" - }, - { - "name": "babel-helper-optimise-call-expression", - "size": 2594, - "multihash": "QmTGJYU3CdoHetHpp3XL1ThZkDxEis5Qejob1R99cwfshQ" - }, - { - "name": "babel-helper-regex", - "size": 2850, - "multihash": "Qmd2aoYfPQhqa8phnU9VQaopTriWPPCdaQbGcHD5BTXm6W" - }, - { - "name": "babel-helper-remap-async-to-generator", - "size": 10438, - "multihash": "QmQAoeXE9rTKQEHQvE4jvRjvqjobapeKmFtCaoYDJUN7JH" - }, - { - "name": "babel-helper-remove-or-void", - "size": 2743, - "multihash": "QmUsm1kXS6uLGLaVBSEURDdPis1E4YXqPk7MG7MCvVhsiM" - }, - { - "name": "babel-helper-replace-supers", - "size": 9599, - "multihash": "QmTiappczX6zqsL5taYbXJoajb9vrEXcjs4zFazRKSA6Cg" - }, - { - "name": "babel-helper-to-multiple-sequence-expressions", - "size": 5188, - "multihash": "Qmc6ynGmFRR1xfQwEBjB8KTwkSaYPo4dAxBi9SvZoUDzJh" - }, - { - "name": "babel-helpers", - "size": 19490, - "multihash": "QmR5pENT6ynAp5ztTJu43bbCJ4XqC7kpv6pKnP9c6P2ycT" - }, - { - "name": "babel-jest", - "size": 6031, - "multihash": "QmY7muKj1kjYSUKd3essUueirpJ2mfQVHbqTV5jLELWE5E" - }, - { - "name": "babel-loader", - "size": 29887, - "multihash": "QmYK8Rsgn1D8JN4c4nDK2iufZKtyJFszTC2TRUveWV6m92" - }, - { - "name": "babel-messages", - "size": 5977, - "multihash": "QmR6Eqqj2CeehYQbjbyx72i9DW9gYWwuFfNxdGTcDpjw4z" - }, - { - "name": "babel-plugin-check-es2015-constants", - "size": 4025, - "multihash": "QmRhYa6x1juw2yYdLN8QmssS4CvM4LZBcZsiP74eNUcoBV" - }, - { - "name": "babel-plugin-dynamic-import-node", - "size": 8456, - "multihash": "QmYie8ZQDE7mGS6ERRmxyw8rzvrRtiz68Hph3hQdVmVPUh" - }, - { - "name": "babel-plugin-istanbul", - "size": 20800, - "multihash": "QmP4ZZnQs4QpNCAf7eDiGQAkkWzsFfYC4pnqxRFCWM8UBD" - }, - { - "name": "babel-plugin-jest-hoist", - "size": 6870, - "multihash": "QmYnJE89934QKwRCrZFtSCdXs6vpxpYGNLp7J7NVFEWZCh" - }, - { - "name": "babel-plugin-macros", - "size": 677171, - "multihash": "QmSjy5UWqjG2cNUBo6BzJg4qFYc22kcqhtexdEAZS4SWbj" - }, - { - "name": "babel-plugin-minify-builtins", - "size": 15316, - "multihash": "QmNSZqbBmKY1BHJCiyM2UgBJjFwDi33QeMH8xvTtYzqzGB" - }, - { - "name": "babel-plugin-minify-constant-folding", - "size": 14491, - "multihash": "QmbhZBxigPK12UpHRv2KFKWGxS1aiiGai68SQpq4jvLWsv" - }, - { - "name": "babel-plugin-minify-dead-code-elimination", - "size": 49786, - "multihash": "QmNj1SCwWQkky8MCynVMzZaYGWyhKCCswpGzMMGbns7etk" - }, - { - "name": "babel-plugin-minify-flip-comparisons", - "size": 4444, - "multihash": "QmVNSrzdHVw74iiQ27MhKDgA75iY8CvB9UjP92mJxNMbk5" - }, - { - "name": "babel-plugin-minify-guarded-expressions", - "size": 5102, - "multihash": "QmRL7Ttdvk3eREaPnQAkLRc3PzexbEPM6H4auwj4csUpWK" - }, - { - "name": "babel-plugin-minify-infinity", - "size": 3004, - "multihash": "QmSJEN2Eb2iqdNnMN91Yiwm3NabxrTmYpBQKV91PyGRZGy" - }, - { - "name": "babel-plugin-minify-mangle-names", - "size": 42486, - "multihash": "QmZ6woWSAhL2ZFLC9hDcEM7iV91qHcNuBTLEnvA97jS8M2" - }, - { - "name": "babel-plugin-minify-numeric-literals", - "size": 3491, - "multihash": "QmX5Js2bdiW4wh4p4gTJP8t4TNKhJhgb4oqXXUravEcAej" - }, - { - "name": "babel-plugin-minify-replace", - "size": 5498, - "multihash": "QmdKqNijySbAchjLwwT6NzTdUxPVWt53HjU4HB96Xk8zoG" - }, - { - "name": "babel-plugin-minify-simplify", - "size": 64193, - "multihash": "QmWibixhV47XmMwYZfxuRgBKWV7NFsDibMxqwTpiiTzQZ9" - }, - { - "name": "babel-plugin-minify-type-constructors", - "size": 8374, - "multihash": "QmWDMZDMhogCBx3NxpCjS8aSdtxqWZmFVxAV2urBsuVUfY" - }, - { - "name": "babel-plugin-react-docgen", - "size": 83765, - "multihash": "QmNkmAZhq4gYH7uDPEkCXnAdhh8pET1vrHrYhTPUWnvG27" - }, - { - "name": "babel-plugin-syntax-async-functions", - "size": 2353, - "multihash": "QmQv6XydkUgeWFYi1dTUzBatYKkmJDxCVhS7spZSseUyeU" - }, - { - "name": "babel-plugin-syntax-async-generators", - "size": 2473, - "multihash": "Qmf7s4JSLYQ5dwGmSW7UuCJRgkkKMRYD4p4A8CmVMUwi1G" - }, - { - "name": "babel-plugin-syntax-class-constructor-call", - "size": 2586, - "multihash": "QmeygdjJQnHsf2fPhy8pCSseaW86PKeTxDHVWn3JLm4rgv" - }, - { - "name": "babel-plugin-syntax-class-properties", - "size": 2370, - "multihash": "QmVCK1wbjkAx2tbPod8k49QYurk9maxErAm4jxFxZeJ7Y7" - }, - { - "name": "babel-plugin-syntax-decorators", - "size": 2317, - "multihash": "QmeVfAvKVZmmR1SNL8CtehxgUt6FS66znZ8S7WMjiGdx8H" - }, - { - "name": "babel-plugin-syntax-do-expressions", - "size": 2395, - "multihash": "Qme1RPoSfXQaqW5USb6fS9VXAie8JuLBrVYEdXYDUVxfEZ" - }, - { - "name": "babel-plugin-syntax-dynamic-import", - "size": 2375, - "multihash": "QmZCSWWWEdi98eHPpCRXoeXWmwpufXVbbUARTr1vn4wFuT" - }, - { - "name": "babel-plugin-syntax-exponentiation-operator", - "size": 2517, - "multihash": "QmY7xaF5TmnXfvYRwtqHhiKSCSc9s7DcPhfcUcbxkpjHHz" - }, - { - "name": "babel-plugin-syntax-export-extensions", - "size": 2458, - "multihash": "Qmb6gUwNzW5oJY8wEsbehdpwNbJbkZqzibva8QxsHP3xGw" - }, - { - "name": "babel-plugin-syntax-flow", - "size": 2132, - "multihash": "QmQdczfcE9WzM4fjWK25rB8PzRNuBRCYFWUZ82JDkXFrNN" - }, - { - "name": "babel-plugin-syntax-function-bind", - "size": 2374, - "multihash": "QmTrkojMcdxwXXEASTNsR5CNPcm3RHxpyJmRtxRsst7BJC" - }, - { - "name": "babel-plugin-syntax-jsx", - "size": 2217, - "multihash": "QmPVHsTCo6AUv3S8f16BfNDaKvNukhZBCrWWgJUpNEihg7" - }, - { - "name": "babel-plugin-syntax-object-rest-spread", - "size": 2439, - "multihash": "QmU9c5JdD8isSQCbGDKzpRPS4B4JNyVut8kH8EFpQx1KZV" - }, - { - "name": "babel-plugin-syntax-trailing-function-commas", - "size": 4678, - "multihash": "QmYu2tqaA35vMxZHUooagQRFnWppE86sYVvhCsefgaZfX6" - }, - { - "name": "babel-plugin-transform-async-generator-functions", - "size": 6112, - "multihash": "QmVPE8s4DdYQfMRB6yHndCNnZyndy1qRs5PNZAm5vP7q5M" - }, - { - "name": "babel-plugin-transform-async-to-generator", - "size": 3516, - "multihash": "QmUJwr3GV5kx2LNWFmLnjfZeK8gGJNUFSbM34h1Z8AXxsG" - }, - { - "name": "babel-plugin-transform-class-constructor-call", - "size": 7104, - "multihash": "QmWkswiHL3ao1ri9PyqyLTVoZm7fSqes5gtFLYQX2TfLf8" - }, - { - "name": "babel-plugin-transform-class-properties", - "size": 11992, - "multihash": "QmbTUhQ9yZbLiFPj3PvLhnYY7DE4NqSFYEapiKkTMX6dQk" - }, - { - "name": "babel-plugin-transform-decorators", - "size": 8643, - "multihash": "QmXp9DgPsK5UMyJgxWqd3ikUyVbzGYBgY2Jgb4YnBt6ErQ" - }, - { - "name": "babel-plugin-transform-do-expressions", - "size": 6484, - "multihash": "QmUfvvLCM7MEnN5zQ9QBzNEHLUACYGs7Tq2CHZBkto1UgY" - }, - { - "name": "babel-plugin-transform-es2015-arrow-functions", - "size": 5131, - "multihash": "QmYzdxdsGL1tJJFztuEE818MCic1eDcbF4qVaAozfWQiZi" - }, - { - "name": "babel-plugin-transform-es2015-block-scoped-functions", - "size": 4076, - "multihash": "QmSv563UQSJsg3dGgjJoSnEneZUeEQFxojcj33kcVffF6j" - }, - { - "name": "babel-plugin-transform-es2015-block-scoping", - "size": 24836, - "multihash": "QmczbhvKHtGFLHvnDfKgtdJ6SS7HwycWMmrJUbouYK1Va9" - }, - { - "name": "babel-plugin-transform-es2015-classes", - "size": 28041, - "multihash": "QmZFZJT6K7aivzDwW2nL5quM95KMgchsjj6v8xKSvKsnzZ" - }, - { - "name": "babel-plugin-transform-es2015-computed-properties", - "size": 10369, - "multihash": "QmWLN9h7J6pv6etRV586daDeUKGMyZUzot1KrHCkPG1dZW" - }, - { - "name": "babel-plugin-transform-es2015-destructuring", - "size": 19388, - "multihash": "QmTCzhQe5Kjdx4yJLLZ97ce1J36xDEnvNKbA8KFBHBNNzu" - }, - { - "name": "babel-plugin-transform-es2015-duplicate-keys", - "size": 5644, - "multihash": "QmNNCXUY9WyKEbV9vDTcbvKnrRy861e1BspuyprjoeDfhW" - }, - { - "name": "babel-plugin-transform-es2015-for-of", - "size": 10572, - "multihash": "QmQhZKqu2H2MQ9SbhS9t76DV1XYh24udYFAQr6jccrL7i5" - }, - { - "name": "babel-plugin-transform-es2015-function-name", - "size": 3390, - "multihash": "QmRA24aF2e47KPqCb2nFf2wdcXFZnpqTEdVN3f1GRkpiGA" - }, - { - "name": "babel-plugin-transform-es2015-literals", - "size": 3159, - "multihash": "QmemM7nVX5cVkjXoeumyDJzEGQQBd1dyxUu79K2GoMpjo5" - }, - { - "name": "babel-plugin-transform-es2015-modules-amd", - "size": 6485, - "multihash": "QmYeguigjbRP3VGnKd5tuC3wergxy9PEPiXUc1MH7Mnsj4" - }, - { - "name": "babel-plugin-transform-es2015-modules-commonjs", - "size": 29824, - "multihash": "Qmez2g1Ryyi8rUapT5QFVMhzJrg3u9HSE9LAbBaNXJSquV" - }, - { - "name": "babel-plugin-transform-es2015-modules-systemjs", - "size": 17953, - "multihash": "Qme5W3yBf8R4aR1wHMLLqBJPtm8YoAcPbvb3aeYwsga9R7" - }, - { - "name": "babel-plugin-transform-es2015-modules-umd", - "size": 11473, - "multihash": "QmbwRiJj9KbojFn8zuwh6nV9qiwdUbjhJz4Tmi1pQsUJkA" - }, - { - "name": "babel-plugin-transform-es2015-object-super", - "size": 4770, - "multihash": "QmQnb4658KzoT4Q5S7YoGVDJJ9UA6ZM2RazFg5AvDyJdcC" - }, - { - "name": "babel-plugin-transform-es2015-parameters", - "size": 18404, - "multihash": "QmYgvY744kdUztxWM46M64UCYZdkZRiEPyo5LeWeZfCVfZ" - }, - { - "name": "babel-plugin-transform-es2015-shorthand-properties", - "size": 3750, - "multihash": "QmZXxvv87qM5KMF9soaE1QQ3t982irG3MLFefsWL3D8p7L" - }, - { - "name": "babel-plugin-transform-es2015-spread", - "size": 6694, - "multihash": "QmVrZwGRZBb7T7aHgcPcSQoabyVhBfhyyDz2Ek1nztTNzT" - }, - { - "name": "babel-plugin-transform-es2015-sticky-regex", - "size": 3282, - "multihash": "Qmc1p9o6kYrc4GJ54wFnFv6kB49mRZqCBioqZpA4znTZ4C" - }, - { - "name": "babel-plugin-transform-es2015-template-literals", - "size": 6785, - "multihash": "QmQ7stKfRryb6CHj5FEsffB2ey4oRNufLE61qARWkeFT1e" - }, - { - "name": "babel-plugin-transform-es2015-typeof-symbol", - "size": 4581, - "multihash": "QmVFgh5miFzcn3qKcXaFjAMuJGPga39nbbiw6XJz59zp42" - }, - { - "name": "babel-plugin-transform-es2015-unicode-regex", - "size": 3690, - "multihash": "QmSrPxpDR8y6EUjYVCLxuafQDSFpoMWdAdhJ93vdFSnHvE" - }, - { - "name": "babel-plugin-transform-exponentiation-operator", - "size": 3790, - "multihash": "QmcrnQdrq8t8RggZGUcNhx2XVBt75CnqTtMAF1RQuft3ti" - }, - { - "name": "babel-plugin-transform-export-extensions", - "size": 4237, - "multihash": "QmTVgP4eXEGTYnm4JA7RJLyRVuWcXcKCsb6mwvoLc5TXSS" - }, - { - "name": "babel-plugin-transform-flow-strip-types", - "size": 5185, - "multihash": "Qmf9uy79gifyiNhHjcARN8SHobmbYS4rDr643xXMF4uqZB" - }, - { - "name": "babel-plugin-transform-function-bind", - "size": 7181, - "multihash": "QmYKRVg4vXeMADffZb52swXroFTcfMMaaKgFJb5FNkZq6Z" - }, - { - "name": "babel-plugin-transform-inline-consecutive-adds", - "size": 28803, - "multihash": "QmX7GDmYPhWJm67x8Y2ZAMqKyWWnJaKtUGyNvSdZ6mun1M" - }, - { - "name": "babel-plugin-transform-member-expression-literals", - "size": 3578, - "multihash": "Qmd97j6VsN168QGfb6dYQfdYeEZfpCbMvAQHZ1d2Scrkym" - }, - { - "name": "babel-plugin-transform-merge-sibling-variables", - "size": 5688, - "multihash": "QmaeYCCB1YG4L97RB1nfabfxbJgX7YQXo9X4uDBfy7BEWE" - }, - { - "name": "babel-plugin-transform-minify-booleans", - "size": 2918, - "multihash": "QmNXy9dUFyMrmjqp1S29evResd4EmnuLaJowtfHh4REytq" - }, - { - "name": "babel-plugin-transform-object-rest-spread", - "size": 12626, - "multihash": "Qmf4bwizUvVAnXiJwhZsZk66DVg23DU2HQTG6hyzy2vPMd" - }, - { - "name": "babel-plugin-transform-property-literals", - "size": 6711, - "multihash": "QmULzrdAMYLD8G3yTEuoovsDaSLYLwfyzFTPQb5UbanSJS" - }, - { - "name": "babel-plugin-transform-react-constant-elements", - "size": 4707, - "multihash": "QmQUJfB8zmmSBDAkV5w8HHV4h8kqMQLhAX7crReiVYj2xD" - }, - { - "name": "babel-plugin-transform-react-display-name", - "size": 5160, - "multihash": "Qmd3hbwKhjjpMMT7BaVR4Khn2qsuasf7F5zQHXQAP3g1G4" - }, - { - "name": "babel-plugin-transform-react-jsx", - "size": 5963, - "multihash": "Qmc6yZWCq16Ryb2bzjuBKv4yGguSts3vB39AUcxtTQabkC" - }, - { - "name": "babel-plugin-transform-react-jsx-self", - "size": 2966, - "multihash": "QmQpYDCCtPpDAJGugZmSyim6sQKTDCCikQaNwozPD4y7a6" - }, - { - "name": "babel-plugin-transform-react-jsx-source", - "size": 4117, - "multihash": "QmXCZPanpALtwgXUyN8b9ta39i5UuSuYQYNwnSKF5mjDZD" - }, - { - "name": "babel-plugin-transform-regenerator", - "size": 5654, - "multihash": "QmYpJeJimQA6qyVYEmaWfVRMEF8VUTaLpVBzrPFVE47Hty" - }, - { - "name": "babel-plugin-transform-regexp-constructors", - "size": 4102, - "multihash": "QmXhLTTyBqsapMQDywQZKVNxQQHHwuYKxpM2yC3LinqTLa" - }, - { - "name": "babel-plugin-transform-remove-console", - "size": 5004, - "multihash": "QmYMnoc3RqsFoTRxfYQFCFvW6VLXFJxGzQLPPLs93cfNfi" - }, - { - "name": "babel-plugin-transform-remove-debugger", - "size": 2567, - "multihash": "QmaKYDUrG3Tyu4v7Y9BYxPDCuphGACyezfSVdidQA9BkHn" - }, - { - "name": "babel-plugin-transform-remove-undefined", - "size": 10247, - "multihash": "Qmdbivhpw58A3J6CEj2htmiWgdz3o1iPncu4usEdM8rt95" - }, - { - "name": "babel-plugin-transform-runtime", - "size": 18960, - "multihash": "QmX5wvMnErtn4uWfFBEJuBDvUDX5Con1yQWFBArTSpAYtE" - }, - { - "name": "babel-plugin-transform-simplify-comparison-operators", - "size": 5937, - "multihash": "QmctQtzw5oB9F4oRqZjmKqm86KHNcKoyGzecoUW3zFaMff" - }, - { - "name": "babel-plugin-transform-strict-mode", - "size": 4379, - "multihash": "QmRaCUMhuQCd3A2AA3Y4sf6Qw2gsZ6iMupNNJF2qtpvXBE" - }, - { - "name": "babel-plugin-transform-undefined-to-void", - "size": 3006, - "multihash": "QmPzdTRBg4eS1sNVzHFp3dTf9Ntid72S7NQQmSXtVYM4RQ" - }, - { - "name": "babel-preset-env", - "size": 101124, - "multihash": "QmVwFsQeWecWBn6DEcWX5kj2cxwYrDwh48FF1NEjcfYAJp" - }, - { - "name": "babel-preset-flow", - "size": 2704, - "multihash": "QmWMv5yyCbwuEAxaiUDS5oQ4QQsGCntWxqFw6QHJTzs2bW" - }, - { - "name": "babel-preset-jest", - "size": 2468, - "multihash": "Qmd9d22i6b6UJTNY6X9bgpK1XzVFhpUEKjHZS2qbWUdxBC" - }, - { - "name": "babel-preset-minify", - "size": 15031, - "multihash": "QmbrR8WNeprMeG4P88Vz8s4NxRoVrKiPjfnyHCtqidn5U4" - }, - { - "name": "babel-preset-react", - "size": 4134, - "multihash": "Qmb8WM5YYQfwrpXQgoXPPrN9TG7dmda5viHE5wuRuXXGoN" - }, - { - "name": "babel-preset-react-app", - "size": 8504, - "multihash": "Qmab31Vht47yKPuu7PfZr1w3kJHEQ4XuRwywvVeLnkkqqy" - }, - { - "name": "babel-preset-stage-0", - "size": 2948, - "multihash": "QmPb8vxhLwFrpcNEMQiv7TBUYs85r9tCEfT6UvReoHFT1S" - }, - { - "name": "babel-preset-stage-1", - "size": 4039, - "multihash": "QmNxgjVutdBCV7VeckRKMbMrGUTAH7Bf2oxtTW716T2WDZ" - }, - { - "name": "babel-preset-stage-2", - "size": 4089, - "multihash": "QmSiS1HaDqnvQG2UgKVc43emQv7ryTdTJpeAQ1R45FziJP" - }, - { - "name": "babel-preset-stage-3", - "size": 4627, - "multihash": "QmRsMcZ6VHXqPzD62QPsj5rYvb9aXGtBgrBnCaojqTcR4J" - }, - { - "name": "babel-register", - "size": 2298654, - "multihash": "QmSoPFDL6HnspeDD73X4bkKTnWcdC7tTszfTuRRBYtxYJB" - }, - { - "name": "babel-runtime", - "size": 2352605, - "multihash": "QmREV8QDX1wrniMa4FrchHaG2e4tAJugyQ7iUA32rDG3QL" - }, - { - "name": "babel-template", - "size": 7629, - "multihash": "QmcRsxftZLNFg567wTq3kwsdLXf5He2VRq5phdXKAoWucF" - }, - { - "name": "babel-traverse", - "size": 155808, - "multihash": "QmZ6EysM7Nn5Tinis5wfc44mGbuZZymJypyjVyS4xh4aXS" - }, - { - "name": "babel-types", - "size": 143968, - "multihash": "Qme45i3ByxoE1PMu7qFGehU7iG8xgPcA4mApqNkm2Rzgvr" - }, - { - "name": "babylon", - "size": 283756, - "multihash": "QmVobAmu5jLZzCG4Uxk6VsMmk8kYxaLRBQp7h6SimGejEc" - }, - { - "name": "balanced-match", - "size": 7757, - "multihash": "QmRnGVYGK3p5WMybaLL1Y54jbcBuhQUewzsiHMmBcyBTEH" - }, - { - "name": "base", - "size": 73324, - "multihash": "QmYkg8rjG771X9DbVfTnXhRXbYQ3S91MsSPaJ9SnE3JRZ1" - }, - { - "name": "base-x", - "size": 8145, - "multihash": "QmcksEoKwDMydNsr2Jr4g5T8YxxmRZBVFsA5RD3mkAdA9q" - }, - { - "name": "base64-js", - "size": 14456, - "multihash": "QmNsE22VjbVgcbS8jjvzTe87h1bU9MRGAXbzYNu3F2gZ5T" - }, - { - "name": "batch", - "size": 8515, - "multihash": "QmcgghayhBshhuX2HdTXdxpDW6iR5o7U72C1EmpbCkgbhw" - }, - { - "name": "bcrypt-pbkdf", - "size": 25796, - "multihash": "QmedJK3cufWk1YmC3uhuBeXjRZpwYqcg8BtiUg4KKMz1bH" - }, - { - "name": "big.js", - "size": 47603, - "multihash": "QmdC5AHGk857UzJsREucZxUju8LsUJYSVHuJgG9JxjxhxF" - }, - { - "name": "binary-extensions", - "size": 5833, - "multihash": "QmabG7q6pzvRvcXp6uY5ae9K8GLqAyErJYXhKWN1w5s34V" - }, - { - "name": "bluebird", - "size": 620113, - "multihash": "QmdqxCz4Q8BiGwSucPewxehYrFUm2KKAi5QZbtd1dCAUma" - }, - { - "name": "bn.js", - "size": 100723, - "multihash": "QmfCQhRPC6xZ5A7pucYLHAdhzbV6D7Aw4rQnRR5Jg4qrCp" - }, - { - "name": "body-parser", - "size": 508838, - "multihash": "QmNSohyGNKonQvsWkJJES2RYrEcQAVx4db9YqEQghCs4rQ" - }, - { - "name": "bonjour", - "size": 32924, - "multihash": "QmZSgJTqayrNhRC8UZyP9Ceth5ZJpwAGfSeWwSyCXGBnJh" - }, - { - "name": "boolbase", - "size": 2309, - "multihash": "QmSPWZMvjMtcYwDLg8wMGpPXfda3yRLM4Lo7iVLbxsR4TT" - }, - { - "name": "boom", - "size": 33733, - "multihash": "QmS9eDNYhEe9WwxybD15xAkXBVXEAXz1LRyfhy9iinWusL" - }, - { - "name": "bowser", - "size": 66424, - "multihash": "QmSWzVRbDykAbYxgkUB4zcqo7HqGNudQozBKMqaiGiuKMA" - }, - { - "name": "boxen", - "size": 43983, - "multihash": "QmTVtszNM6o7vEx3krM5R4ZrvuxhzyG5sET8zSvsPDmEbz" - }, - { - "name": "brace-expansion", - "size": 12272, - "multihash": "QmVhYz9Svn3ea6GejDkv7SKxrxDs71AMTtphcZ4RxJTNuC" - }, - { - "name": "braces", - "size": 67381, - "multihash": "QmWx1KfUXu3NEc3TTraeWeBRfvgjPPw7rXGMFjiDDNG6k7" - }, - { - "name": "brcast", - "size": 22592, - "multihash": "QmVBtsFV3S3UoUPrqoAGYj34zqCRjNxMr69LvuD37tXyiS" - }, - { - "name": "brorand", - "size": 4567, - "multihash": "Qmazh6bRAC2y1ApUNbZjrVWhdNww2Qt7WAP5rYPRvpC4c6" - }, - { - "name": "browser-resolve", - "size": 63606, - "multihash": "QmV5NmDsaYqJCFWy28vDZnmrdLoAdvvFagxhzLvq9PSV6T" - }, - { - "name": "browserify-aes", - "size": 31777, - "multihash": "QmcmYxW6bLBMZ8i9yfbgcFuJAWoH7nguZP4uTKbyPd8zyL" - }, - { - "name": "browserify-cipher", - "size": 7693, - "multihash": "QmVGU5xVnJUt9bWpSPAwGHvgP1rAMyDWxNLfRtSJJqEEwU" - }, - { - "name": "browserify-des", - "size": 6035, - "multihash": "QmfNnKig2kih3s9PesGxKKwACXyXpiR1rfVLNSN29efwyt" - }, - { - "name": "browserify-rsa", - "size": 12877, - "multihash": "QmZ5LngnYFGovRkP65n9u6fHWuFrudYgztb8tLjT9zSkBU" - }, - { - "name": "browserify-sign", - "size": 15842, - "multihash": "QmSQ6ESMP67rfrsC9ThERWNDyyZ4Qy5xDqAjJts1bybPqS" - }, - { - "name": "browserify-zlib", - "size": 193423, - "multihash": "QmTLgHbx8FPo5VLLYx8pdh3FLCvW9Y9sv1aYvUmVsMs4V6" - }, - { - "name": "browserslist", - "size": 51070, - "multihash": "QmXHJzfJwvKcakYwN57wieNGgE5cUqWTjEiTjS7zKyup9W" - }, - { - "name": "bs58", - "size": 5644, - "multihash": "QmZXvnVYQvLoMDSAFoo4NNYQq7NnbjE2SNmWY1BakSnpfE" - }, - { - "name": "bser", - "size": 18887, - "multihash": "Qmds9h2HJJxVvHLMhLZ2nEpms6MgmKw1EziGrDCC9wwmB8" - }, - { - "name": "btoa", - "size": 33355, - "multihash": "QmTQ1RZ5BdZ3rCF2R3dhv7ddhUCTjnTzmipvB1BFwne4Nz" - }, - { - "name": "buffer", - "size": 272276, - "multihash": "QmZwAsVVXxgux6ETuFpSsxTr9yxc76sViZwaLUBMCijeK9" - }, - { - "name": "buffer-from", - "size": 5617, - "multihash": "QmU1B2yjvn5o1snCcxWW2E5MEimrVQytJsFMhQuXZNB6bV" - }, - { - "name": "buffer-indexof", - "size": 20160, - "multihash": "QmRG48nkYKTD4JJXxEfF17GAzLMNjXbfo61FGKxHdth5qp" - }, - { - "name": "buffer-xor", - "size": 5956, - "multihash": "QmReXMQP7mvotfiyt8oq4WMN2fnhJMCQP3rf8b41Miq4HX" - }, - { - "name": "builtin-modules", - "size": 4867, - "multihash": "QmV89xN6yYXvu6eh97Zx9fzDJWuL4p6SMLQn8hvVY75Uky" - }, - { - "name": "builtin-status-codes", - "size": 5920, - "multihash": "QmSYAjUNZzEodGei9YtSD1KK1q1Md6ihaytUyGdXsqN5Sa" - }, - { - "name": "bytes", - "size": 12155, - "multihash": "QmZjfDgTbJZ8Xos8F69Sn7tBwFS9GZG2SJeGsX8H9k5LGQ" - }, - { - "name": "cacache", - "size": 116540, - "multihash": "QmaqJtRe7GQnZBTs1EtaESYZiQbXv7GgUZ1AUkHngFv3te" - }, - { - "name": "cache-base", - "size": 17622, - "multihash": "QmafLV8CaJuNZ9CGgTem2iHLQSbR1cVKxVQtxYhff4BYmV" - }, - { - "name": "caller-path", - "size": 2691, - "multihash": "QmRJtFP5wAiNmBx39wVm5Wpn8EiEtmRp1P9kEZDNNzFdcK" - }, - { - "name": "callsites", - "size": 3863, - "multihash": "QmQboEGsz4v1YncTVSU831mAPsZ5yj3BZCo3fFfaFciU4W" - }, - { - "name": "camel-case", - "size": 3982, - "multihash": "QmXVSiDRwg81HsuNefKpq8g49xYLV6hDMTQBzHzuqAEMZx" - }, - { - "name": "camelcase", - "size": 4546, - "multihash": "QmUwqhdAA91uUBUcpjkn9C1UgsCMEnJ1N8d9wacJiJV1r4" - }, - { - "name": "camelcase-keys", - "size": 9574, - "multihash": "QmP4wv8Njdrqgcro7HEabz8CLwbfEDKGNgjbXHWXSiA6qg" - }, - { - "name": "caniuse-api", - "size": 50731, - "multihash": "QmYAqWLhSmieeC9bkgNouAt8xbFtEmGoSDWXSsgeSVTWxZ" - }, - { - "name": "caniuse-db", - "size": 9008888, - "multihash": "QmVkKdmXzyszJw2gw4UFiXhn14D1MYtgTJkFjKE7xQ63P8" - }, - { - "name": "caniuse-lite", - "size": 1231467, - "multihash": "QmcQVoCLMMJvNjmsNDxqQ64SNJTo2T33nZSUEyPAPMkNMx" - }, - { - "name": "capture-stack-trace", - "size": 2696, - "multihash": "QmZZQ8MwGEKXPWKaT8MG4Q1Jub6SqyBCbR8BJVmHZJCg3Z" - }, - { - "name": "case-sensitive-paths-webpack-plugin", - "size": 14209, - "multihash": "QmW1WELkkFo9NXUETRXCww6HD3PXDGgLbKi5V9MMNJ5a3e" - }, - { - "name": "caseless", - "size": 15375, - "multihash": "QmeJcC8RcouD57zN3KVRkUuZQ6ut62euaxvfeDeNdePSxi" - }, - { - "name": "center-align", - "size": 6308, - "multihash": "QmahWf2uR7huZjn39j7viXjNvKmYDJUAeJRbxThjSHtjTK" - }, - { - "name": "chalk", - "size": 25644, - "multihash": "QmZiiocM1oQMKddRgmRw5pifYdL3TBcTEPBMAnmLjgsqJs" - }, - { - "name": "chardet", - "size": 87014, - "multihash": "Qmce9WZT17zgF4mAjZDKjuQSTCyZboJp8Ehy56FcSWwNqj" - }, - { - "name": "cheerio", - "size": 558444, - "multihash": "QmRZWRNE6QkKWs7VCnZFfSQSKBgMDtf3FdsQwsRtE55Ssp" - }, - { - "name": "chokidar", - "size": 126575, - "multihash": "QmP8ex3t3gouAPwb3NUQoeLwM34yVr9toEK2dmW7yX5EWA" - }, - { - "name": "chownr", - "size": 3776, - "multihash": "QmXw4MeFW63GCS4Gxqiu1ymJFpTJKMquLaPboCPqHVEoqo" - }, - { - "name": "ci-info", - "size": 7176, - "multihash": "QmSuRn5gxa5LFrPNDanhLn6ibvS4rHe44axeCL9DTbTJui" - }, - { - "name": "cids", - "size": 436152, - "multihash": "QmQVkBWRSoiSVqsgBtASpLnU48hcECz1GNEmb24VAk5w1h" - }, - { - "name": "cipher-base", - "size": 9047, - "multihash": "QmTB3o3NSDD4u189QehoLPwEqfhhDDcmkau1nVF4fcYHER" - }, - { - "name": "circular-json", - "size": 22485, - "multihash": "QmUXz7hPB2bXAskSQA8Tb7mKRrHK8rBN2TcEDypaUnjL81" - }, - { - "name": "clap", - "size": 26733, - "multihash": "QmWi4tUMo3nZUTra3c2qsZ6yMD4ALaNXgPtfnk735GUcqs" - }, - { - "name": "class-utils", - "size": 26720, - "multihash": "QmTKjLjmsygCvsUe9vKVFGoMm24WA48vXVgygjeJqTxiVs" - }, - { - "name": "classnames", - "size": 18472, - "multihash": "QmfRrgXCNRTLGAaxi5FLbs74s2tJobTPynbUAfn5w9naDA" - }, - { - "name": "clean-css", - "size": 1203398, - "multihash": "Qmf8y8a6jx3iD9p5wpi9HLeWBXTbrQakZixbV46fbUtfJe" - }, - { - "name": "cli-boxes", - "size": 5090, - "multihash": "QmbtKEDE2UiR6nqxoACX6TVcortkTkwBbSawnT5SqEYo6U" - }, - { - "name": "cli-cursor", - "size": 4341, - "multihash": "QmZxMUgnFycnREAzDeqo1df5YJfmaropbM9SY6MNFzfoMT" - }, - { - "name": "cli-width", - "size": 6171, - "multihash": "QmSh32FChDZ8bPJghueddSDGgJggu73bvBJfqaogjAmtMK" - }, - { - "name": "cliui", - "size": 58728, - "multihash": "Qma5MYEGx8Jtrn5mW5kX79TUCccibttptFCiZaUw7pRqDm" - }, - { - "name": "clone", - "size": 12886, - "multihash": "QmZuR3TC9Lt1WqMT1nMKDkk38uk4jBpiw3SCZDsweZzjFv" - }, - { - "name": "co", - "size": 17153, - "multihash": "QmdfwYhhtk9D5U5sDmahNsuVFynZum47yAY96m2d5j5fvb" - }, - { - "name": "coa", - "size": 292977, - "multihash": "QmQngeusRiNdxUqP5aeskxa1XkoxfhSc9Saded9om4EPu8" - }, - { - "name": "code-point-at", - "size": 4487, - "multihash": "Qmei5rKKN4A7iLoNztGWMyQZzhjvCSpdXx5oFeQjNbVdDn" - }, - { - "name": "collection-visit", - "size": 8077, - "multihash": "QmQrY1puWKVWgpRB5JqMYWuJ5wpcVi7n7J9E55ekGZcsJ2" - }, - { - "name": "color", - "size": 17389, - "multihash": "Qmd582yQv3zrtXLBoTZHMKLTHPakW8c6x6natyxKvCqVwE" - }, - { - "name": "color-convert", - "size": 28381, - "multihash": "QmPJp4BTnqcjz92AEQUHzCq5XdY2u2ELMRMEmj98Kb7MET" - }, - { - "name": "color-name", - "size": 7917, - "multihash": "QmdeJdHRmh9HR1ptz5w69kbHY8iqAU9r1rhXYorzyFZek5" - }, - { - "name": "color-string", - "size": 15913, - "multihash": "QmZh4z3R5MkKePLUVvFqWD2C6xoFJJiYZ34xjyy9Boffch" - }, - { - "name": "colormin", - "size": 11261, - "multihash": "QmPUwrtiZrjcwQdDf18wEcaGotEt4DQTvFVmpUwvKaH2PP" - }, - { - "name": "colors", - "size": 29499, - "multihash": "QmUdq3W4WrdAarvAVv2pvdtqZRXy3C2QBBckj1BceGzSVD" - }, - { - "name": "combined-stream", - "size": 12359, - "multihash": "Qmazt7ax3uhLtcttYj2qtxTrn3XQtvibZHhnq5WkYjKGVJ" - }, - { - "name": "commander", - "size": 61273, - "multihash": "QmNhDe88VZy6ui2yk1yTNoFc5vcxaR3o3RXSBfkCVEcdcW" - }, - { - "name": "common-tags", - "size": 239456, - "multihash": "QmP3djcJ34ah9ec3Mh5qUphydifVms1SqvegJtBqcNCRzR" - }, - { - "name": "commondir", - "size": 6180, - "multihash": "QmVNByzkvTB8keWirvbzMQBGUHPzXffsJSTRSYrnv5Lepn" - }, - { - "name": "compare-versions", - "size": 15669, - "multihash": "QmRGAmUqyx95coo487dTX1JvMYan5pE5kV9zUmvXMsHJhv" - }, - { - "name": "component-emitter", - "size": 8818, - "multihash": "QmRFpWA2E12LDrgBSsnNoRVHhYtA4sj72VbdC2PR5s8x5y" - }, - { - "name": "compressible", - "size": 8217, - "multihash": "QmZRDJ1nNPeWERtUeAa7PhAUZuWofjb7nfrvWhSiGeZLEw" - }, - { - "name": "compression", - "size": 51013, - "multihash": "QmREwL4XPxgDMJuAETGVeFP5c8dZhWV9c9fnnne81LCWYm" - }, - { - "name": "concat-map", - "size": 6133, - "multihash": "QmduhbSzWGjn2SVChNzGPrPyf31TJzyVTmyCoyidq6rYxj" - }, - { - "name": "concat-stream", - "size": 10797, - "multihash": "QmdxUjiSHjovDfWTnwRhmAYbJ2tjAcFqKhCVDPLyAm2ZVt" - }, - { - "name": "configstore", - "size": 8182, - "multihash": "QmaCAs9LXeNmtZRKNktqGeaGQEZBjf7qsScXCSaq5F9W25" - }, - { - "name": "connect-history-api-fallback", - "size": 12647, - "multihash": "QmQibw6dfMCuV5kZTjJEGJNfB5611R4zdHucdzH9k4R7Ey" - }, - { - "name": "console-browserify", - "size": 9398, - "multihash": "QmVQ1eJG6tceJpJLeq9AhS2NoJRMKHgmqi2D6MVMcMUzTP" - }, - { - "name": "console-control-strings", - "size": 14089, - "multihash": "QmNMAWwFJxu6oBp9P1AJbYaEj87QNtcGTxZJFz6JoRjQa7" - }, - { - "name": "constants-browserify", - "size": 8684, - "multihash": "QmW8dYK8nGMtLwxS4EqmTPDFPfm72iP7Qwjs7H6U7xirHj" - }, - { - "name": "contains-path", - "size": 6251, - "multihash": "Qme324smFQbxoBLfioT8tS5CjUmPYgfXzmrvy7Zjn72qFQ" - }, - { - "name": "content-disposition", - "size": 19904, - "multihash": "Qmba8dNVCeiM92DaAkybKMHHWfRcfTFW16FP6egYCgEJJi" - }, - { - "name": "content-type", - "size": 11573, - "multihash": "QmVtZxoVaKwEZXKi3JFRbbcvL1wzSKYzTGVu4wB1tS2mzT" - }, - { - "name": "content-type-parser", - "size": 8860, - "multihash": "QmfSwaW665drheDGtHEYiC75E4sk2HBsFi4K3bVxEzdkwZ" - }, - { - "name": "convert-source-map", - "size": 11568, - "multihash": "QmfCP8TneWL1Q7sH9wJyUPSCaR7cFbSZShGxXT8eQFPZVh" - }, - { - "name": "cookie", - "size": 18091, - "multihash": "QmUmDoBPjYPNERNLnZXUzaCr252gr7253JHXBZNkxvPC2W" - }, - { - "name": "cookie-signature", - "size": 5169, - "multihash": "QmRJ88jAHTKMxWKC2gDGoFeHvZc8nxdjC4BmLbJUteGRtr" - }, - { - "name": "copy-concurrently", - "size": 22781, - "multihash": "QmVPCfEwPSnX6PGDbYn2JyEjL1FB824ff1QFomzcoyYHjh" - }, - { - "name": "copy-descriptor", - "size": 5202, - "multihash": "Qma3G7WPKLLdXfFErWaLenFdkzqe2oLrodhMLakLme82eA" - }, - { - "name": "core-js", - "size": 1313368, - "multihash": "QmSZMAkuCgCJUfHUophQWLwBZQJznYqE2Xg7gRzcBNNT17" - }, - { - "name": "core-util-is", - "size": 24529, - "multihash": "QmVRaZ8tnDkTzWupdM4amhDUw39F3KK5MyiXpVsLnJ4xWq" - }, - { - "name": "cosmiconfig", - "size": 56814, - "multihash": "QmatMDRRmqDKZrjaHAPeXSCA5paBKAytxcdNyJuDEdasoC" - }, - { - "name": "create-ecdh", - "size": 6476, - "multihash": "QmWqogVMuXmfQc95jerk4AUgbR85DjFdwjZuVwTyqCRaB7" - }, - { - "name": "create-error-class", - "size": 4971, - "multihash": "Qme2o6PSWU5bZk79S7CxeGWCyyXbUXTnyrM2D3ggn5djwe" - }, - { - "name": "create-hash", - "size": 6334, - "multihash": "QmXZSRgkTD2yd4QoXCVSFK3TZKqi8j4DT72FZCsPCM1MqC" - }, - { - "name": "create-hmac", - "size": 7031, - "multihash": "Qmf6MdQTsAYCyz8UU5qKHgQtamJbSGXKN21WUzfVidYqVd" - }, - { - "name": "create-react-class", - "size": 82872, - "multihash": "QmSvzypNMDNx9LHU2t8PMzDwMYLDtq6uXFJCnh354Mmeh5" - }, - { - "name": "cross-spawn", - "size": 18543, - "multihash": "QmQZnhSLPcAKAhmVUipLdf26GQ7eKT87gNX8G5L1D4RJZb" - }, - { - "name": "cryptiles", - "size": 41742, - "multihash": "QmWxbtHDtPv9kPYVWkzq6F1dt98CYGL4PeufXzZPsMpetq" - }, - { - "name": "crypto-browserify", - "size": 54752, - "multihash": "QmagRSaoTp2wsz1rH3XbBY1h94frfHSLvYm974TjC5r6j1" - }, - { - "name": "crypto-random-string", - "size": 4780, - "multihash": "QmPfC1jFyGV2XpYjDP3uNsrhcJKEUh8tcPZYGdzn4pusWT" - }, - { - "name": "css-color-names", - "size": 6510, - "multihash": "Qma3ab8BiWdrKsanau23vTqYR1YARziUYweKYLcbru81Po" - }, - { - "name": "css-in-js-utils", - "size": 34053, - "multihash": "QmVPjMW1yqcnEGDYuY7VKqqNgBze4h2uaPnRLmVQypzrpT" - }, - { - "name": "css-loader", - "size": 1465579, - "multihash": "QmSoV1rvQTqftEzey9knZUYmnmxfRD1Pr4ZAcuuVzXeLek" - }, - { - "name": "css-select", - "size": 35038, - "multihash": "QmePwtKGa1hLF2krQuwEAnuXdC7PKSKe89Sfi3YfbgLzNT" - }, - { - "name": "css-select-base-adapter", - "size": 9923, - "multihash": "QmcLJy9V83MK6KiPT6e27HpXv6Q8tzLXEw2491wAVjiWJy" - }, - { - "name": "css-selector-tokenizer", - "size": 37044, - "multihash": "QmYSvb5moh4jyeVWE4n6Qi9oj5UoL8idwVq3XiFVejYWc8" - }, - { - "name": "css-tree", - "size": 1357430, - "multihash": "QmU5YdiqaeidnnJqKAutjU6EriGNdky3VNKWt4NhwhActS" - }, - { - "name": "css-url-regex", - "size": 3772, - "multihash": "QmfJy4xFjKR4LcghSmpJCteBqXx3exwpL1FuSowB8q2Dmn" - }, - { - "name": "css-what", - "size": 11344, - "multihash": "QmNiKbgrKa4kuPWj2xE4RRwFm8R2scpRgbVsoedFSFyQcC" - }, - { - "name": "cssesc", - "size": 20342, - "multihash": "QmSGPFwProWtUNAJMMESVytrBCvbgdNwxyzBd1jd1Ut7q8" - }, - { - "name": "cssnano", - "size": 1741515, - "multihash": "QmQQJvGC7rGZDx1iuuPVHwAMQgePUtCmBYJvFtta86iAQP" - }, - { - "name": "csso", - "size": 1079499, - "multihash": "QmYuAkpKt61THQoygQGVkZXZava5cZyxprznBFds43VWVt" - }, - { - "name": "cssom", - "size": 58146, - "multihash": "QmWv7jB8yqi7Qmo5yuiTXFsYy7fijbdkfjkLn1ao6QFWsn" - }, - { - "name": "cssstyle", - "size": 400678, - "multihash": "QmdxEJXNirCLgQizVtavSuw5uLzaB7cK5mzRaRFCa2c9YK" - }, - { - "name": "csstype", - "size": 1167003, - "multihash": "QmWDGAFgheeX4a2PgyQW2fVHzjmkov67i4Xj3zG2A6vS8Z" - }, - { - "name": "currently-unhandled", - "size": 6963, - "multihash": "QmVdmyu8XVPCVjn7KPskxuKPQDFewgQj779t8AQd1Crgmf" - }, - { - "name": "cyclist", - "size": 3358, - "multihash": "QmVcwigLDvTE9iLkVfdFb1j2fQHrVBwQuPa1AxJregGrQJ" - }, - { - "name": "d", - "size": 22377, - "multihash": "QmRzDmAK53XXkDqSFLoYip4PXGvxmdcRczi6K8nT7guscw" - }, - { - "name": "damerau-levenshtein", - "size": 10342, - "multihash": "QmNygGNY1KY8gWJmyuE4qEdrPo3qQJGsM6ZM3nT4bum9Mh" - }, - { - "name": "dashdash", - "size": 82018, - "multihash": "QmaMphbMgR3LCL9DHPAPjiyVpNmgVMZTTEfAyBK2iGbrmZ" - }, - { - "name": "date-now", - "size": 5571, - "multihash": "QmXRPTJVjWJ38aSJe3c2GnQtitU5HibuGJPY8eQiiMs83e" - }, - { - "name": "debug", - "size": 53078, - "multihash": "Qme5bMLJFJm9MvHt3aJYDKSfGfe7Kj6FufDgkRpHFrcYFK" - }, - { - "name": "debug-log", - "size": 4209, - "multihash": "QmXURz8RGdMWcFMPAcZD5GDFZh4sqtw8UHaXhf78614Pcu" - }, - { - "name": "decamelize", - "size": 4406, - "multihash": "QmPjf9NjKb58WdK3HxUDi8edTP9Z2TxscW6ydLK5LcGg6U" - }, - { - "name": "decode-uri-component", - "size": 7025, - "multihash": "QmVYgavYRBruk5faMuUSDhhjuTcjBBU9nD5k64e35EqKek" - }, - { - "name": "deep-equal", - "size": 11195, - "multihash": "Qmab4NW3iZXwRdMAdyDKL1kSV9Egayv5QQBee1fYD6tKZ3" - }, - { - "name": "deep-extend", - "size": 10277, - "multihash": "QmdAqN4pK6hX8KMuweuTo2oAgs1Dux9jpEYMC3ZNJQAupT" - }, - { - "name": "deep-is", - "size": 9601, - "multihash": "QmaDJKqmyzkfFrtZ61VEATzkAALksMbhx8Ty3qQ72JsoYS" - }, - { - "name": "default-require-extensions", - "size": 5003, - "multihash": "QmNwynuiKPdHActnhhP5tH9978fT6viDVmp2QuAQEthCUg" - }, - { - "name": "define-properties", - "size": 12822, - "multihash": "QmbSorfgiwaBroSWJy8fR2NpruRTtDwczMkMXFqKFrHLmB" - }, - { - "name": "define-property", - "size": 43485, - "multihash": "QmWApNczwQFvzMhvg5T3WB32YrtBLxV2dmNMAaHh2iVdG8" - }, - { - "name": "defined", - "size": 5730, - "multihash": "QmX8PVoUnBcmp5fUWMTe7Z8WXcEway7aYdCE4mJWqaQxaD" - }, - { - "name": "deglob", - "size": 13977, - "multihash": "QmWBhdTWgFJrpDANG2AC4TjBgt72drficbMdaahvLdRTnU" - }, - { - "name": "del", - "size": 7316, - "multihash": "QmNsr1tNTkbrDbXjZP4Pac3gqbGKA1FRgVcRD42hGvXd7V" - }, - { - "name": "delayed-stream", - "size": 9318, - "multihash": "QmWghsxCh5ykW5qMFCNz42s8NGsnxYrpBSkYwJ8zchnpy1" - }, - { - "name": "delegates", - "size": 8933, - "multihash": "QmWux3aojnvcqT8eEiAT7UmGTDviGxBiJN6j45j4Fx6wjG" - }, - { - "name": "depd", - "size": 32193, - "multihash": "QmaUeGxi52Ynz3bruUjWxqhMpiLqPiYkszs6ah6amSdKVr" - }, - { - "name": "des.js", - "size": 32582, - "multihash": "QmNgdrDGATb2Ui5q6Y2ypwfDqgakojussizQxVdTmSmNzX" - }, - { - "name": "destroy", - "size": 6334, - "multihash": "QmWZSaNSzUgGKenRsPQMMdwsnywoXG6vsb9np8Hg6Hd95Y" - }, - { - "name": "detect-indent", - "size": 7677, - "multihash": "QmdHMehPBdiQR4rN9VawejGsjVqpoQKsZ5aPYaTWdFy9s4" - }, - { - "name": "detect-node", - "size": 2338, - "multihash": "QmNdQyP7J4YKUQWCB9NA4XF1MHRpUQr5MxDPMYEgqRsMPK" - }, - { - "name": "detect-port-alt", - "size": 33067, - "multihash": "QmdCgErHTMbm5Lk2Kid5YgCGk2kdY2ZbVAGrqvD53opf9c" - }, - { - "name": "diff", - "size": 625016, - "multihash": "QmPhPxbdM7SQQdvhoGjcBwNbysr9RLThd8abPJrGPuwKfN" - }, - { - "name": "diffie-hellman", - "size": 18606, - "multihash": "QmcxyaESr1NqkGMzPh6tUv9xsgdUh2w1aFEcwHQZpDGisA" - }, - { - "name": "discontinuous-range", - "size": 11556, - "multihash": "QmdqZ9txDULPCm3tdMs4VBTR7b3GQvv5YBCp97jTK6zzrg" - }, - { - "name": "dns-equal", - "size": 4183, - "multihash": "QmTAgXrLh4n6gWWE5y3F8szhYEMMPLN9HCqCzdiBqfP3zv" - }, - { - "name": "dns-packet", - "size": 29456, - "multihash": "QmYbPwr9BVTWByxSU4gYXmUiLKcvWT6F5guGri8g7Dwhez" - }, - { - "name": "dns-txt", - "size": 12510, - "multihash": "QmWSJex2BrCC84PCRKcAeguaeStKnAtkA4d2PP7ZbWc8fK" - }, - { - "name": "docopt", - "size": 115493, - "multihash": "QmRpDbXPB1HU42P3sKKZkw6cwyHpZ1ZcBVf8WSruXj3dtA" - }, - { - "name": "doctrine", - "size": 107692, - "multihash": "QmYm7HteQHVVMANr7kPwxUB3aoifkFH6NfU9BmcSWcEmai" - }, - { - "name": "dom-converter", - "size": 263168, - "multihash": "QmaCb3Y5XBAy7SzJEMjLHexKuDE3B36PVCJue76Wpn1sL6" - }, - { - "name": "dom-helpers", - "size": 53722, - "multihash": "QmeFQZhDL5sJvvYYj9n2dZtx1UgH6USEXnLWHHzCHU1XxK" - }, - { - "name": "dom-serializer", - "size": 9615, - "multihash": "QmPT1TibSKVLqHXxn3Mt3cveBXV8WJGG81quihLJ9nQ9Z1" - }, - { - "name": "dom-urls", - "size": 6538, - "multihash": "QmQz7V24TXVG2vrRLzuyKL4ZtwGtGAq7hk1pHvoYAwbcbT" - }, - { - "name": "dom-walk", - "size": 19301, - "multihash": "QmREhdcJKACRyXvHnjGoZtjBzbNeztWrLUiNjfGzfwxGia" - }, - { - "name": "domain-browser", - "size": 18328, - "multihash": "QmbkxxqbtQqPPHESXtncjVZVf4QQaBV53wm52nmY5q2zNC" - }, - { - "name": "domelementtype", - "size": 3345, - "multihash": "QmcGrn8cZYMEuXcquQzjj7xMLWt3YnhYNQ5131z5z6zWgo" - }, - { - "name": "domhandler", - "size": 21475, - "multihash": "QmdZZhPrnK7uoPBCuWU7TikhT2NvgWRtaYQLaprjBHp4tc" - }, - { - "name": "domutils", - "size": 22307, - "multihash": "Qmb4gvX4GTpimqLEegtvnNV8UrcikjBtS8Z7CgPWJemrKz" - }, - { - "name": "dot-prop", - "size": 7134, - "multihash": "QmTze255PowzyQoawPYzcMoETZpXV7HDdGDKU4m47vxkpo" - }, - { - "name": "dotenv", - "size": 15412, - "multihash": "QmZTE5R1wzE35Xz8krssNvVZ4jwFLY2w7LHx2GZmdEQ8VN" - }, - { - "name": "dotenv-expand", - "size": 17868, - "multihash": "Qmackh1fSkvyeJLVQ3rimt8C5uCjn8EE3mSRfuG5Ain9KE" - }, - { - "name": "dotenv-webpack", - "size": 31535, - "multihash": "QmX9fYtE5ySRoNzbDNZAsu6cwB5aUYkGC6tQ64JyiuBx3S" - }, - { - "name": "duplexer", - "size": 6620, - "multihash": "QmbDYzBs6QTuagfYgGW5Lgx6zr7xYAtVxys8G8r91weWXy" - }, - { - "name": "duplexer3", - "size": 7637, - "multihash": "QmVh6BE6oLjRhb6WThGAyy5RZBix7u8Wq6w8zGVyqisCK1" - }, - { - "name": "duplexify", - "size": 18158, - "multihash": "Qmbmh9icbBqEL9o1GCCePsEYMEaj4KbistzUqq8tFQqxcP" - }, - { - "name": "ecc-jsbn", - "size": 28997, - "multihash": "QmVsNnL7ytvWMDggXoiQ2MeMX3zzDachYGEcm1SQT5AEmN" - }, - { - "name": "ecstatic", - "size": 345467, - "multihash": "QmNT8tPRk8BJDQd6kr1yUVyvnpGupqbWv1VHT11CA3fPD2" - }, - { - "name": "ee-first", - "size": 7412, - "multihash": "QmbXpN9dACJLF3rZpF8nZphLQ9navjyhxwJgeAiHuU3qog" - }, - { - "name": "electron-to-chromium", - "size": 18276, - "multihash": "QmTqnaQeZRqq7DqxUoPrNYr3yhNeNyyVcUsHYZ6dmCxBgs" - }, - { - "name": "elliptic", - "size": 119916, - "multihash": "QmRS5MXzizVSmpoGH3kxomRgu8HLEZZEqP7kL7DP3qTRrS" - }, - { - "name": "emoji-regex", - "size": 36731, - "multihash": "QmdinyPjdzHKD27F5DzHUu1qesiXTHVHjhWzUcdqfhoSrK" - }, - { - "name": "emojis-list", - "size": 43264, - "multihash": "QmeqEjuFLoLQXVhVJhuGd6S7AdrpnH5DQmeyUW8JY1L6F1" - }, - { - "name": "encodeurl", - "size": 9182, - "multihash": "QmWqD3fzkmXcjH9dqk7eNq2MXs2TmuaiYjn26nVMkboLdn" - }, - { - "name": "encoding", - "size": 10370, - "multihash": "QmSxw2zoQHeypC5ZPZYZbSurCWMWkhLVBEBT2dH2Khhcbw" - }, - { - "name": "end-of-stream", - "size": 7019, - "multihash": "QmWwwVNRPXMhQVSVJuTF9PVorKHg2can19DJd7B436qz2c" - }, - { - "name": "enhanced-resolve", - "size": 84779, - "multihash": "QmXv22PbRso7d9QcLHS3MouZtr125YpkV3rJCCU268dJcx" - }, - { - "name": "entities", - "size": 57515, - "multihash": "QmfUoFK6K6bYeJtY2VixbnFLBTkTTKvecDdLfqCVMJC6hJ" - }, - { - "name": "enzyme", - "size": 246233, - "multihash": "QmaCZRndgfxihgRuu3kHY2VJRb7NCbeYLedqx27Mb6VJ1S" - }, - { - "name": "enzyme-adapter-react-16", - "size": 28306, - "multihash": "QmZL2KD5KCZ9qS7dY9qdFRywfrRqDSjrFYBe7nx71tHcrA" - }, - { - "name": "enzyme-adapter-utils", - "size": 26122, - "multihash": "QmdPiyomtRv3yVnf3uiQGYtsuy7b1U7tAaWtroD2w5563G" - }, - { - "name": "errno", - "size": 18160, - "multihash": "QmPbRUA9k6Ddm29cLqYXGUZrfSDShkBj617S4mC81xmYxG" - }, - { - "name": "error-ex", - "size": 10240, - "multihash": "QmTBUgAumJfeTg3uuYBXarna6DR6kZzjrC6VAYQhwAjr22" - }, - { - "name": "es-abstract", - "size": 143893, - "multihash": "QmbgF5SSxBqV7autULPgYQsUyg3CKXZG9VdpefmiWhxKzj" - }, - { - "name": "es-to-primitive", - "size": 29187, - "multihash": "Qmdxibjiy9dC61EnfSJHuW8LcBURxggcfS4Bq3BR5w2dfX" - }, - { - "name": "es5-ext", - "size": 583456, - "multihash": "QmVkFTDJh6BEcqcnNwSXF8AwHkkXat3Vek2Cz6Hhz7MDpN" - }, - { - "name": "es5-shim", - "size": 455391, - "multihash": "QmVxjUEi3LWZZasSaPWviBjETX2ktosmS3MezPdsrjdS6A" - }, - { - "name": "es6-iterator", - "size": 31821, - "multihash": "Qmaf7UPzngkg4wooE8vr1p7bahbEXo7H4DFjogpPP29QX4" - }, - { - "name": "es6-map", - "size": 30683, - "multihash": "QmNUcM3XXfPQUZ3QWZWbZXEhfQkh7bgjjRy8E8QVzMFbaq" - }, - { - "name": "es6-promise", - "size": 319722, - "multihash": "QmasY1ByYzm9sFWW8iEnRLLvX6m8yJ9i5DqYqCZrjXobs2" - }, - { - "name": "es6-promisify", - "size": 8975, - "multihash": "QmfFBokPU1aPtLD9v9h5u3wWUX9Deye6ccZPtyk9hspXjq" - }, - { - "name": "es6-set", - "size": 30898, - "multihash": "QmPHo3NFBbkZ2x9aKSz8enDoxEsbuErht6iw6Gwci5xsjs" - }, - { - "name": "es6-shim", - "size": 579957, - "multihash": "QmZEtx4sNw45KSDnrCx6uqnAC9dVqhMoibNik1JSjVezjF" - }, - { - "name": "es6-symbol", - "size": 17213, - "multihash": "QmPbL7AG3uFKNRv3BRSwx57A8AmXEGgvBpAez2YZU37uK8" - }, - { - "name": "es6-templates", - "size": 1404789, - "multihash": "QmQbcjqCBQwuvLkXkt9VBEJHgdQg9tAxKBZVvswcq1j8Yy" - }, - { - "name": "es6-weak-map", - "size": 13656, - "multihash": "QmRGFFB38demdmLvsQ3L6DE7FyS9vmrT2MNf9tKKDQffYi" - }, - { - "name": "escape-html", - "size": 4925, - "multihash": "QmanNuDshcoanRPDpyhS9NLhC9SZq14dPajvbfSERnk5BT" - }, - { - "name": "escape-string-regexp", - "size": 4953, - "multihash": "Qmcirgekx5yE1FQhmqCMgf6H2Epx9hGXADMxC8K8hjvJZ4" - }, - { - "name": "escodegen", - "size": 403055, - "multihash": "QmdtVNVi59iRQaBLhx8qpzg71Vs8c8jgCU8aTfhMhqfe9n" - }, - { - "name": "escope", - "size": 809077, - "multihash": "QmcavPPxpjsEDQZsQhoBb9tJjPuUEaAXJ1yq7jHVfdRBJi" - }, - { - "name": "eslint", - "size": 3204922, - "multihash": "QmR8RQR56Fzky2BH5gHL3VB17jBuPa6pf3ARmcP7nAQsJe" - }, - { - "name": "eslint-config-react-app", - "size": 14470, - "multihash": "QmZWC33M68tSmbMWrrTCwGTVjyxmRDwtn566yicKTxVPXM" - }, - { - "name": "eslint-config-standard", - "size": 15627, - "multihash": "QmPdpCpZMzNEyFaN3YrevvZUWjEZGqowXkVE3y1WDctmNy" - }, - { - "name": "eslint-config-standard-jsx", - "size": 9086, - "multihash": "QmaHbzRv5LSXEQRjmhYD94jPEE94oxDEyzLJCyGqxFY3RR" - }, - { - "name": "eslint-import-resolver-node", - "size": 6332, - "multihash": "QmadVcNtBMjwZKVNM45bYemWh5ZoZNb9NeERQwFx4jp9F2" - }, - { - "name": "eslint-loader", - "size": 21437, - "multihash": "QmaqjYsm4KxCFQqM2xuhWGxWWorgpjXDVDL9L2smU1XSUE" - }, - { - "name": "eslint-module-utils", - "size": 35608, - "multihash": "QmVV8L3Pbq48FHNXaQi4Cwvhn38G6PEkP5EMEGJy7nTpqN" - }, - { - "name": "eslint-plugin-flowtype", - "size": 190583, - "multihash": "QmQb8TE3NvF5LYXVjFYaBcwAn6qwrgNjNChAUXB4rJZYwL" - }, - { - "name": "eslint-plugin-import", - "size": 502804, - "multihash": "QmPvzXBADDgRWubaN19raShoagTE2TKxcMvqcZuNi9AuEj" - }, - { - "name": "eslint-plugin-jsx-a11y", - "size": 644934, - "multihash": "QmVM9ft69GkxfmMdQD7HoEzqudpg6bx732qRaH9vH48tbs" - }, - { - "name": "eslint-plugin-node", - "size": 170862, - "multihash": "QmX5AW53ehXP32rAVJ5aYqcgdx9gYMc2iaw5vumTZZTteY" - }, - { - "name": "eslint-plugin-promise", - "size": 39281, - "multihash": "QmdzokpyXQ4911FxSEBE96DGB7fbdhSrw1jkeMbbZztJin" - }, - { - "name": "eslint-plugin-react", - "size": 850122, - "multihash": "QmfGotwqqGHzoHfmshoSD6jhMVAgN8WdhhxZhJ5NTKYRGC" - }, - { - "name": "eslint-plugin-standard", - "size": 79962, - "multihash": "QmeuiKV4qKt7bbEzxKz6hpbxEcU6CePGAKztuT159sLYDP" - }, - { - "name": "eslint-scope", - "size": 77769, - "multihash": "Qmek8qVixpWaVqJvJ1DD2a3JyiEBXt9LoDL7GvfMp55cg7" - }, - { - "name": "eslint-visitor-keys", - "size": 23919, - "multihash": "QmV1NrRzjhVmFi9jAV2DjYhU2MaiEJbV3bq8sRFydNGfPM" - }, - { - "name": "espree", - "size": 79421, - "multihash": "QmfT6WME9Jm7jAYLf94tsdrZb5uqaovGSUTkNEWT9UFP7c" - }, - { - "name": "esprima", - "size": 220035, - "multihash": "QmYHFiT2oNdi1CyBHPKLD6CKrMxfecn6nAGWMuWFBTwsMT" - }, - { - "name": "esquery", - "size": 96258, - "multihash": "QmPK7v8XqttUuq9UQd5NKRJj53edqDdc39K7AanNNSwV15" - }, - { - "name": "esrecurse", - "size": 14637, - "multihash": "QmQHamx9HZBgmesQa1ia6CiBkG6PmYBHUC6BhAFKUXSyYR" - }, - { - "name": "estraverse", - "size": 33852, - "multihash": "QmddE2uA11ebyHEcEsc6u9G2gsJwbDXxwftMfZrAQCNVY4" - }, - { - "name": "esutils", - "size": 52595, - "multihash": "QmQUSUu3pyNeismynnseLqqfkVXByMdG6RoBkgUkhPUiZ2" - }, - { - "name": "etag", - "size": 12091, - "multihash": "QmPGHBiTGxaq39iko52Rr2WTD6WShV4ZYgW5m7muB3FYtb" - }, - { - "name": "event-emitter", - "size": 28952, - "multihash": "QmPCJHaepYEvtyoFx7hhKnExRzH2MeJRdPhLYMzMyfSGoD" - }, - { - "name": "event-stream", - "size": 47105, - "multihash": "QmbzGLjCXxW5ZkMchLJznYFQnrzRS3ZSByKMzeTxLTjyyx" - }, - { - "name": "eventemitter3", - "size": 37727, - "multihash": "QmUThLXJpFPq5ZYhEf1r8tP42YftQ7vyceHkMWFCzPaQ3V" - }, - { - "name": "events", - "size": 42608, - "multihash": "QmRTPgHvHB5woPM8hrhcXNbUta9tB4cavcrgYyccDnDJnE" - }, - { - "name": "eventsource", - "size": 47048, - "multihash": "QmY9C4RnqRUZpwgF8Yc118sX6XZLosYbs9jkkJMgVdnNkS" - }, - { - "name": "evp_bytestokey", - "size": 6330, - "multihash": "QmV4AQ62hCHURVSuQW2pJS2psZMPPu8vXzJiFbiimGVVjc" - }, - { - "name": "exec-sh", - "size": 9070, - "multihash": "QmTjQbXnmLrtDGhDvWeVpJMzTv1DfWgX4LREcQRykPsCdp" - }, - { - "name": "execa", - "size": 19748, - "multihash": "QmeLoQ9mo83yb3YkTWDPNge8ZwgGB1xTuKb2wNQFQCNrrd" - }, - { - "name": "exenv", - "size": 5364, - "multihash": "QmWUZheMQ5T1WWEBcC6Vj9J3mMHykaMe8ziVwB2z3ZCinR" - }, - { - "name": "expand-brackets", - "size": 40192, - "multihash": "QmSWp4NM4FY8R4U3QHvmqKU9ghUC2rXW2EKTx3wbkY44Us" - }, - { - "name": "expand-range", - "size": 64430, - "multihash": "Qmaov3FjNQetXHY2bouYaXfBsniER7d6eC1ccSoDMUziAd" - }, - { - "name": "expand-tilde", - "size": 7707, - "multihash": "QmSUiFYW4b8p8adDjVbRBPJHm9nqodADovWTSpYXwFMrJK" - }, - { - "name": "express", - "size": 362336, - "multihash": "QmSQc8kVGzYeQ5FroF5Po7jZuBrK5Xr224iU31wsfFwUBw" - }, - { - "name": "extend", - "size": 11801, - "multihash": "QmYxcgM4Ke3qUgnWjhU71Yv95FoNyuA9RbaDn3ch9jptKy" - }, - { - "name": "extend-shallow", - "size": 18194, - "multihash": "QmbBkS4iWknwfcURRmv14t44ZbBrDRH9tivszAaPsJnGUh" - }, - { - "name": "external-editor", - "size": 22186, - "multihash": "QmZ7PDxJkWRbaRsHRRnqmnYhghtjWfnKhpDiwpFXDT8VqH" - }, - { - "name": "extglob", - "size": 82002, - "multihash": "QmVrURpULFMbud8Dt89D6ewpNLQnQSPAZVxo3ALw1K2KZ5" - }, - { - "name": "extract-text-webpack-plugin", - "size": 49124, - "multihash": "QmNqM4ymu1EMuPxPeRvQgYtEGb2HvFQq5g7akxg3DijfvE" - }, - { - "name": "extract-zip", - "size": 45425, - "multihash": "QmP1usJwg2miFtSR86auHFhJfJUtUp3EXgYPb1C1RWPRkn" - }, - { - "name": "extsprintf", - "size": 24200, - "multihash": "QmXbYBSbs5uMbGMcZkgK88NWdc7wPdejC5AVhUhiZQV6gC" - }, - { - "name": "fast-deep-equal", - "size": 6348, - "multihash": "QmQzLpdAJxNrpGYir9grTjZQewbWcrkEdEb94Lvdq8WRQZ" - }, - { - "name": "fast-json-stable-stringify", - "size": 17431, - "multihash": "QmfTc9aB4ecvk4vxfDrkigPesXN5ieTd6FsKCPBxXRrPGQ" - }, - { - "name": "fast-levenshtein", - "size": 10686, - "multihash": "QmV2CSZ3Tdd9R12HXcKSNFvhBcjJHQowFbbNyKKzWoH9o3" - }, - { - "name": "fast-memoize", - "size": 11897, - "multihash": "QmYkh1MQDnQr6rtLWEmXfrfDmi6KSSsHzNqXE4NJ6rxwcw" - }, - { - "name": "fastparse", - "size": 10679, - "multihash": "QmNuMJBvUjQvhdDRLFZC6gS8kxn9wHSqE8jTufrru76S2s" - }, - { - "name": "faye-websocket", - "size": 39407, - "multihash": "QmTGMANHDSJyePsfCfkbRxvKGCWXDzCLtqbrKJfiEeE2Nq" - }, - { - "name": "fb-watchman", - "size": 11817, - "multihash": "QmYZHL9KJwsHxjpGPJVjZLiazkzViqL4TFGRrfWEnoN6Vk" - }, - { - "name": "fbjs", - "size": 371714, - "multihash": "QmYy3TJyp5PrLpXCjfQPkP1UxY76PE4SoVAWajF27FkE2x" - }, - { - "name": "fd-slicer", - "size": 29886, - "multihash": "QmXrRLfx4pk6mSfBbi4rsdBpUefhSyJ5dWzJepFxAMzYMa" - }, - { - "name": "figures", - "size": 10047, - "multihash": "Qmc7VgYDS9H4pPTyPG53eP5PJgX2rMLLWbvozfFMax7f6i" - }, - { - "name": "file-entry-cache", - "size": 19701, - "multihash": "QmTo6yUtXqExpc2bWnKqg4tmL29NanL6yU2iR1zycnfQo4" - }, - { - "name": "file-loader", - "size": 20488, - "multihash": "QmNzbsE6Xa8YG2Kine2qVPVaKuUt4CSq4dkRhKCzF7HjLL" - }, - { - "name": "filename-regex", - "size": 5664, - "multihash": "QmbmCXvAzzvkWxWoyuZeRrUm4T5LvdiAtdNycsfpbuWJ18" - }, - { - "name": "fileset", - "size": 131368, - "multihash": "QmeusLP6TM2zk8ezqMf69HYJQBAW99Eg2eyJHLUcoHrDpB" - }, - { - "name": "filesize", - "size": 15990, - "multihash": "QmaqnJ8MjyLcJ4BZmMXgfrrqkVUWZKU2nMmAKcRtyMVj38" - }, - { - "name": "fill-range", - "size": 24207, - "multihash": "QmaBPtMPZc38TgA753TwtqnubP5dEM3P2fqXbHwzHgS7x6" - }, - { - "name": "finalhandler", - "size": 18262, - "multihash": "QmfWbnkzSKFUwet8avYcczFGR2KQKtvw8yc39okLwRmxPQ" - }, - { - "name": "find-cache-dir", - "size": 6796, - "multihash": "QmVAAeeqvBv21j3ZAdq22pYtnfPALMVey3Y8Gt1aaNuMoh" - }, - { - "name": "find-root", - "size": 6499, - "multihash": "QmRCghXLgtGFhGEJ6puwCTvEoHMoxRtVEN8JksUMUYLW7r" - }, - { - "name": "find-up", - "size": 6173, - "multihash": "QmQNJhtSeZMG3n4aPAuJmPupBjCDkJTxE84HcnZLKdTyrg" - }, - { - "name": "flat-cache", - "size": 22493, - "multihash": "QmQtEV3x7evVY7GBoumxPbRndpfAMscibwVZpVVWHFkKk3" - }, - { - "name": "flatten", - "size": 4559, - "multihash": "QmRqMdo5ZMe7ctdxVBbt3v3Bp7CnZzZRpdNyJjVSyMq884" - }, - { - "name": "flush-write-stream", - "size": 7715, - "multihash": "QmcPxvKNVFe4kwLQSxEoQjXKyME3Ydthu625fezNbNH5iD" - }, - { - "name": "follow-redirects", - "size": 74465, - "multihash": "QmYCdDfYZ19mxFEw2zHbXUhpFcbuYXqg1dW3cbAQadeXF3" - }, - { - "name": "for-in", - "size": 7423, - "multihash": "QmcFsDTN2ejbcy4kuA7jRqoSwXnTvkXHnXg8kgUUVmfFnC" - }, - { - "name": "for-own", - "size": 7622, - "multihash": "QmY6GqMvsNedYCk3AQh3DiFT1TPrw65kbUiRSGxVmRb7mb" - }, - { - "name": "foreach", - "size": 9830, - "multihash": "QmcKcp3YBraJ4qXbDjKQYB4kdiUNr5yCt1mDSHzW43gmBN" - }, - { - "name": "forever-agent", - "size": 15202, - "multihash": "QmNPJPnfMNxfZo7sm1oDM4uZGM7WNr8hjWVqe6KvtHSdHz" - }, - { - "name": "form-data", - "size": 31545, - "multihash": "QmP3TmM2o8BvvS7KPEMhUBqnkHfV9WtRFzxUvj3iQeWmCd" - }, - { - "name": "forwarded", - "size": 6817, - "multihash": "QmRdywXNgCeUzZDGWkKTfj2vyyhyV6u7WDt9xpcEiHKSZa" - }, - { - "name": "fragment-cache", - "size": 11046, - "multihash": "QmPQZgjaAbF2nLFb96hDauFeQAwTwJifmrLLya9wi1qVHN" - }, - { - "name": "fresh", - "size": 11467, - "multihash": "QmNRc7wRoJBeWbK482YdVFxoBNqjDAXF86jN4nTiHyogGc" - }, - { - "name": "from", - "size": 9736, - "multihash": "QmcSvyqrWCEL5zirmWkfpzvTG7hmypu6oPQdwPBNFw59LR" - }, - { - "name": "from2", - "size": 10328, - "multihash": "QmTzCEYezjaJ3mk7JGcDV3vs1Zi7Tap8xAQVQvBg6XKMGC" - }, - { - "name": "fs-extra", - "size": 138627, - "multihash": "QmW2xnTjkgT7NVKjNdu5csV7C7fKNknXigC9egKSAZeSTw" - }, - { - "name": "fs-write-stream-atomic", - "size": 20127, - "multihash": "QmZZQKokg81oWa6QVkYR2kmWqpSBomjDVtPJYYXR1aFycJ" - }, - { - "name": "fs.realpath", - "size": 14655, - "multihash": "QmfW4F3Gc5sv97WJzLWgE1a8V2A1UYHNjkz4U1nN4TD4BZ" - }, - { - "name": "fsevents", - "size": 2454493, - "multihash": "QmZSiMXUmFVLtJtvkGbuMmp4ipDjUcbbTQLzbR24qhqaPw" - }, - { - "name": "function-bind", - "size": 16211, - "multihash": "QmeoVFQrmuc1ak7oTsev6Ug4KfSfbX9zeXAroXGzcUmYEg" - }, - { - "name": "function.prototype.name", - "size": 15322, - "multihash": "QmXB4Qmvb9n5e4C5w2WoUBRh9deAXG6vdLyyDewFTZmeDR" - }, - { - "name": "functional-red-black-tree", - "size": 44841, - "multihash": "QmVqztiADRxLHoAmuVKqzPKaQkBVQXwvc9dHda6Q2PsEyE" - }, - { - "name": "fuse.js", - "size": 133756, - "multihash": "QmeuuT3xCg2JCXoo7ytX9wCdvkoqFNzMaAmoyuiL1xsAcJ" - }, - { - "name": "gauge", - "size": 61482, - "multihash": "QmeE99xUR21RFpVybxsUjsz7RV2V5fbS39mrHL1XCvuVkj" - }, - { - "name": "get-caller-file", - "size": 3103, - "multihash": "QmTrhuJehb4vLnzdeydhxB72LNjE8amjZSfr2D8bvvNmnx" - }, - { - "name": "get-stdin", - "size": 3058, - "multihash": "QmdbNgkwtNk1dM8GubG46PBHUUm6KLWQSuCvTXrQQMkRnG" - }, - { - "name": "get-stream", - "size": 9145, - "multihash": "QmdCn8EQjikQwYT7qZj1AQQ8F6kUpPR7i2hg9yKkPd8w4e" - }, - { - "name": "get-value", - "size": 4776, - "multihash": "QmWoirPtcwyJ4TUNy2pzgrLTReTMpvV1or4Vbiui4vs9Ls" - }, - { - "name": "getpass", - "size": 6670, - "multihash": "QmQXrdvBzVPGUxQYVhpnorS7Q4vGN5JxewAv7k893VBYCQ" - }, - { - "name": "glamor", - "size": 904008, - "multihash": "QmXtBTgDGrb6iYRTzsLZjQ1tBAootReVUPBh7MM2FgUHvL" - }, - { - "name": "glamorous", - "size": 1030914, - "multihash": "QmWWoEscaJaCFwCTTD6UegdHNwv9kmfaGAf7nErQB9urtK" - }, - { - "name": "glob", - "size": 57087, - "multihash": "QmYoCuSmxoQFKvjpnBN9g4VPRJ6TTeJaLXMzmFycU8hpiz" - }, - { - "name": "glob-base", - "size": 8887, - "multihash": "QmaQrmkvFEoZCEdgbzPchVYg2QX6vs5vjducksqW7cvUZy" - }, - { - "name": "glob-parent", - "size": 5415, - "multihash": "QmVyfaZfQLmUVqd1aR8tGUddYUshQKgEDee5wTNMwSPxTJ" - }, - { - "name": "global", - "size": 9613, - "multihash": "QmWpsGBBwFD4DAvRfP1T6HHcAYRhQeFxJiicXUoAsLgeLp" - }, - { - "name": "global-dirs", - "size": 7067, - "multihash": "QmVPUDBzRisN6dcowsGjX7Fwea9XQqexNGuZcs2CTw7sDS" - }, - { - "name": "global-modules", - "size": 7824, - "multihash": "QmcExZ36Gd3Jx3F4f4Fejz6VNnpZeDuKvmSUW6utMbqCJy" - }, - { - "name": "global-prefix", - "size": 9979, - "multihash": "QmVZvszCekBScXqg8iJ2tTEXJonyYGYxTQduJkAegEDWFN" - }, - { - "name": "globals", - "size": 35006, - "multihash": "QmcMcpiKk8Hoj9u6coLLbLSekZDnRxSzAup7XMDDpbNtdG" - }, - { - "name": "globby", - "size": 7339, - "multihash": "QmQrAZXBM9Cfa4zGUFJngNahRcoLYu1dWvhggAmowGcj1n" - }, - { - "name": "got", - "size": 22220, - "multihash": "QmP8GJAECuapeRPxAaHmjcPsrSLyBZEZMhN9MhifBPEe6C" - }, - { - "name": "graceful-fs", - "size": 26975, - "multihash": "QmUGgCUDPrSHrJTjsLASH4huEQW6uCPFtP8jf6hZ2xL9JD" - }, - { - "name": "growly", - "size": 50952, - "multihash": "QmY5vXifs3HMF751zKNQVqqE423eQ7GshAHPTTimhR2xCN" - }, - { - "name": "gzip-size", - "size": 4931, - "multihash": "QmQ98si8Vc1kmuBpVTdMNFDZzZf7ypZpxfSTevYrxwrCdp" - }, - { - "name": "h2x-core", - "size": 3344, - "multihash": "QmReGRFWZpBTJMB3CYjasBy6knv33VG9cp7HNPjdHYc7kL" - }, - { - "name": "h2x-generate", - "size": 2890, - "multihash": "QmRYtzxZuyEbqhdPvdntJna7KycyV1FpxNXDsKHoafvtRE" - }, - { - "name": "h2x-parse", - "size": 2707993, - "multihash": "QmYfv71y9JqWidrMKeifBdd4iUxu5nqkzQLBkxKyQHYWqy" - }, - { - "name": "h2x-plugin-jsx", - "size": 15883, - "multihash": "QmP1oMHqnQNAcbQAEBWTMRguC5AxJQiQE1DPudhPGymNo3" - }, - { - "name": "h2x-traverse", - "size": 7532, - "multihash": "QmXQHy9HqD9QgCrNkiNxLgBss9myYJdSGu4gGjfKLbRKij" - }, - { - "name": "h2x-types", - "size": 7665, - "multihash": "QmdCbBL5nLveEzm4DDE7WDsYKrKF34hULxpu3RPimHCu23" - }, - { - "name": "handle-thing", - "size": 16804, - "multihash": "QmQ2XtpNuXkiNNzm6cydszc5uXZ5LBcd8foADgVThQVM3y" - }, - { - "name": "handlebars", - "size": 4494260, - "multihash": "Qmd1jHJkmzwonRT7HZ9ok6JJZ93XQ2u2JKz4xS2kLkSAZg" - }, - { - "name": "har-schema", - "size": 17408, - "multihash": "QmWH633bkuYNszASj9KbjPAYrHxkjwuvMb9Ks5F5yu8XuD" - }, - { - "name": "har-validator", - "size": 9711, - "multihash": "QmUJUbMqsF7aiSWe5hTMRix7i9xRLmgmW9Xb8aGpfStnRJ" - }, - { - "name": "has", - "size": 3931, - "multihash": "QmPdXMFJXLxMCLMsT82NPYciwpzL46DDHKuKwP1a7Skccq" - }, - { - "name": "has-ansi", - "size": 4404, - "multihash": "QmVfCsR2SdftL1S2VxEFJ11GFkMQwA8vZpqfb5BbShi2m9" - }, - { - "name": "has-flag", - "size": 4295, - "multihash": "QmSKBex4BdN31brbsUhqRS5ScDoBPBMtL9cnMM5SyVjEM8" - }, - { - "name": "has-symbols", - "size": 12763, - "multihash": "QmRnDJRtEvQ1xAuyeKwbsZ8KcPtpEQLCabiEsDREharvtG" - }, - { - "name": "has-unicode", - "size": 4497, - "multihash": "QmaWsd2n71jvbx8fhsJShf9dXmMchJnoHkxZjCxJYarpMQ" - }, - { - "name": "has-value", - "size": 8751, - "multihash": "QmUpeeo9v77PTkQWn1QW9TDFoHwDkcun5wWUUvvyu3HJGH" - }, - { - "name": "has-values", - "size": 23889, - "multihash": "QmSrqVfP4oRyNEVbhmcJYc1hbwpM33nv1AopSD1fMKgYfh" - }, - { - "name": "hash-base", - "size": 7059, - "multihash": "QmWEDe1aLnFjizFNidj8GrrYNzejmhLVMZM6bV8dnnJVf8" - }, - { - "name": "hash.js", - "size": 41476, - "multihash": "QmVnJZ4vKWk3bM6g7CTNNuq5GdhQHGHfQ8VsGpX2KVDus7" - }, - { - "name": "hawk", - "size": 129508, - "multihash": "QmUKErGgZHcrTJepNnLjc6e9hGA3ip9GYFSxW6RtvWTZx7" - }, - { - "name": "he", - "size": 109287, - "multihash": "QmTjeR2H7SogdsvYNtiKQAazVNAP3KhbtTihFaCnvWKBwc" - }, - { - "name": "history", - "size": 160900, - "multihash": "QmP79yFTiwD576kdkS2HRa9wxp5QD3MwaB6RcKEaSR7h5Q" - }, - { - "name": "hmac-drbg", - "size": 26106, - "multihash": "QmVANeyM6AcEnBxK2W8pZQifRfjeNVedhGaRNXrV74KVNc" - }, - { - "name": "hoek", - "size": 32881, - "multihash": "QmebkiLpKJecxESCeEeWeEZMSa8ADBxnnuwnHb2mCsxLYr" - }, - { - "name": "hoist-non-react-statics", - "size": 9392, - "multihash": "QmTZjKBb15r4oeEDaS15na36FdbHwUdEPXpymaNUJNBX5v" - }, - { - "name": "home-or-tmp", - "size": 3927, - "multihash": "QmfYPMBLxpikHuEPojt24VR6wphRBKK2fbWs28VKaLkD8D" - }, - { - "name": "homedir-polyfill", - "size": 8283, - "multihash": "QmR4rJnNYcMc5VGzBWnhT41QfKEAGzXEGdnaygeVRc5Md7" - }, - { - "name": "hosted-git-info", - "size": 19433, - "multihash": "QmcxkM7NDShRfhU5vrwLq8s2pmfrziTGdpHkebsxZ9sUs5" - }, - { - "name": "hpack.js", - "size": 89100, - "multihash": "QmY5yhDukUbrf4BvZa6QHQS5JPnXbz7hHjpMw7VAPJ1qms" - }, - { - "name": "html-comment-regex", - "size": 3053, - "multihash": "QmRiWsjr2iUdC1Jr3QeRa9hqvCQRwxGeVzZFbEacRBmpmy" - }, - { - "name": "html-element-attributes", - "size": 13784, - "multihash": "QmNspeEbgAj3oCYFB4koZkMjxtNroUAdNLWv58Pqeb8KJf" - }, - { - "name": "html-encoding-sniffer", - "size": 12771, - "multihash": "QmdPeJbhSyskxT3MaEozqZXBNTkcnqPoQHZHMHRKYvqJfo" - }, - { - "name": "html-entities", - "size": 64959, - "multihash": "QmVSJwp1WYeCsUjWc4BHCXpSqhPsxMHLFB48CEaLDRNdup" - }, - { - "name": "html-loader", - "size": 20866, - "multihash": "QmVrEzYBwaxNekuM4XXEcaaycG3VKwhBAMEhb6zE4Gm7rU" - }, - { - "name": "html-minifier", - "size": 94690, - "multihash": "QmUq4Yn5uKGUL91zBQKyBrFC8P98cFz8icVMWbai61ySYi" - }, - { - "name": "html-tag-names", - "size": 7686, - "multihash": "QmT5RihXtx1EBinpiGuR1uSf5troy8kLJAhMwLyB9fkcm8" - }, - { - "name": "html-webpack-plugin", - "size": 80295, - "multihash": "QmVYKjHNGrVcW8vjmQpxzimNRBFHYduS5z3iipwYSGHJA8" - }, - { - "name": "htmlparser2", - "size": 261021, - "multihash": "QmcQeqMTBdFHjXeP6modAi2QfRFfPrGN1Zg3EDzkAbMfx4" - }, - { - "name": "http-deceiver", - "size": 14906, - "multihash": "QmVbvjoYFb6xEqJEc4PLGcz9nAemsvf4sAEsfyfYZ6N7eR" - }, - { - "name": "http-errors", - "size": 17234, - "multihash": "Qmc6zzyjHD6uzcEM9NweFMCRMZu3QU9h9w51Vsm2ytsCjU" - }, - { - "name": "http-parser-js", - "size": 21399, - "multihash": "QmQtXXwpvczqqovuyVmK3rBHHBGGUszWU7AHd9ZvJVtpV7" - }, - { - "name": "http-proxy", - "size": 373819, - "multihash": "QmW4ecR1WUDK7YYJq37wLEm3Mwv3zHVagY2557PeF6i62B" - }, - { - "name": "http-proxy-middleware", - "size": 199698, - "multihash": "QmTSqfLHmKNN1N9uoDyzJg4CcmSUCxEUQ27nYq9XtU3XEn" - }, - { - "name": "http-signature", - "size": 49778, - "multihash": "QmNyVrrdzNYafdqVF1pmmvzHPHvyvH77mUKCdGFNBGuYJv" - }, - { - "name": "https-browserify", - "size": 3921, - "multihash": "QmRSLe8MSUD8pZyRLwwKF2kHhqMk42NTeviRJEpj4tNY3N" - }, - { - "name": "https-proxy-agent", - "size": 83836, - "multihash": "QmWnNxBYUpV8hbiWKJFt1toeNYwqzpEhkGcyM869TiVrmw" - }, - { - "name": "hyphenate-style-name", - "size": 69394, - "multihash": "QmWLr8M3ch6zjCpJFaY8HQyc2pEbm5sjxUykSmzpAEjhDT" - }, - { - "name": "iconv-lite", - "size": 338149, - "multihash": "QmWhHV8J6q5dh5irKVsqvRyWQVe453u44PG4WvjRhzEUSg" - }, - { - "name": "icss-replace-symbols", - "size": 4090, - "multihash": "QmacenNcpsdaicmxxyhocLMSfj7RhF54igMc5DidF6s286" - }, - { - "name": "icss-utils", - "size": 9710, - "multihash": "QmTxj9tcGcAtydptPCpwEeeM6aLT7HGpbjGCDDMV5VV1Zb" - }, - { - "name": "ieee754", - "size": 8358, - "multihash": "QmWDjkemhMioPdHkG7whPeu4aPA8gUFB3AUeypRMbLSa4p" - }, - { - "name": "iferr", - "size": 6660, - "multihash": "QmNgZCh1jvLtuRmFPLTzQS1gF3ncFmnXW3irjbcXBwGppv" - }, - { - "name": "ignore", - "size": 22800, - "multihash": "QmZckdPCdmzPVmWDepXkB8Fk3kLnZBTbSKZMwyQZsRJzD7" - }, - { - "name": "immutable", - "size": 438324, - "multihash": "QmZtAWEMdbFcWTRH3MAeZbbGEeBmsBcgEqzwGnyaiSDJdv" - }, - { - "name": "import-lazy", - "size": 5970, - "multihash": "Qmbb3vfZtV3PBPUifpbpfWPLS9UXDhbBEe6DSFuNs57j9L" - }, - { - "name": "import-local", - "size": 4974, - "multihash": "QmSLPqjbA84ZABPxuBchjGW16ULsnYRfRmLJf9GmNvTdnS" - }, - { - "name": "imurmurhash", - "size": 13019, - "multihash": "QmP1SX5UREHrtNUczoGBMa5SZ5mMXh6NBz2g5SDwZyF84W" - }, - { - "name": "indent-string", - "size": 4412, - "multihash": "QmV2Vh4WFTeBh5fDpDeVasKEXwVoWrxN6JMB7ksRBCsg5i" - }, - { - "name": "indexes-of", - "size": 3887, - "multihash": "QmUF1UVKqaEYL4VraueecmkjSiddXJ9yNSocpFSNXmDJfn" - }, - { - "name": "indexof", - "size": 1932, - "multihash": "QmNcMgBqZ51TmooEj3pTDxynqrcN2BTXv4RwkyaeaZR9MJ" - }, - { - "name": "inflight", - "size": 4767, - "multihash": "QmbXt8bB32eqyJgg1fm9RwgDC2QimKS7VkVLGNn73yEDKo" - }, - { - "name": "inherits", - "size": 5744, - "multihash": "QmSz8vK2hfXPJcZSRnPnX2W8bV2GCuwvWc69GbW61W5HHK" - }, - { - "name": "ini", - "size": 10106, - "multihash": "QmUv6LVVZPhMre1GjsyBr9XKMc43T6yn4zWHkjN1NbsVzK" - }, - { - "name": "inline-style-prefixer", - "size": 96278, - "multihash": "QmckAZrdTxy8EsiiAaLmjnrHmzhBNVZcVTp5XxQHux62r5" - }, - { - "name": "inquirer", - "size": 111376, - "multihash": "QmYQ4AxB1xa3peMUH4JzDX76hMShddFtG8Ab6cUJjUgtEM" - }, - { - "name": "internal-ip", - "size": 5247, - "multihash": "QmWFSxsTZpMwrzDUtqL18NUCnAkXFaQGJvfN1mayNeAzYb" - }, - { - "name": "internal-nav-helper", - "size": 8137, - "multihash": "QmaVEGh8dgCiph3TV5JrPAiU6KbwWbdcFzxNEeaLndquk1" - }, - { - "name": "interpret", - "size": 13059, - "multihash": "QmUB5NLSAJ9WNRj2mQ6nTRpMWTPVpFx5ss8qyVhNqyk3MQ" - }, - { - "name": "invariant", - "size": 9562, - "multihash": "QmewMGsTR3zASNfxmb8Mrn7Eub5aAyJrJWy4GGn65oCBuC" - }, - { - "name": "invert-kv", - "size": 2412, - "multihash": "QmR4uiQzGdw7zLK6vyXsRQCzZhAGtncJf82RYBg5NRSQmq" - }, - { - "name": "ip", - "size": 28997, - "multihash": "Qmb9iDpx3ddRunUwJisVwNR1ZZ9CfhwXEVn2TuEAzZhU9B" - }, - { - "name": "ipaddr.js", - "size": 85854, - "multihash": "QmQdA1HqPa7fhMSDj7TyhKe2q6Sp2Y98ahiAbHPkdceoUJ" - }, - { - "name": "ipfs-css", - "size": 2552078, - "multihash": "QmRYapz7E1HEeq31HiU6KBPzK3HohiTByJ2nnkYKqzUQta" - }, - { - "name": "is-absolute-url", - "size": 3729, - "multihash": "Qmd43MFcQf591J3utwF6T6fbu9L3QBkBgojf6xHobSMfUt" - }, - { - "name": "is-accessor-descriptor", - "size": 23388, - "multihash": "QmctdyeoVApEf4ZfzUXLwBsgjMYLQKL5cqhjkXv85hemyX" - }, - { - "name": "is-arrayish", - "size": 3852, - "multihash": "QmcdHDiKfGXkZU4EhoEuobaMeiMsUrg6auzMGWjoYZK1YZ" - }, - { - "name": "is-binary-path", - "size": 4053, - "multihash": "QmRfVRbLrk3xWmVWt3kCPjXRoRsk6dKoho9v9qB5E4HSyW" - }, - { - "name": "is-boolean-object", - "size": 12177, - "multihash": "QmaBA4XHfnNsJcHZ9V5C8wTMSvqJvK8dLEJXL1RdHtK2LA" - }, - { - "name": "is-buffer", - "size": 7240, - "multihash": "QmdesXDgYYCYpaREvV7pVzGsWsqZS7a2awCcX5SofWcGQY" - }, - { - "name": "is-builtin-module", - "size": 4029, - "multihash": "QmUDvMdyFhtvB25tG8iJKG16gYyXL6eRj3EgzZ2ngsUNCn" - }, - { - "name": "is-callable", - "size": 17372, - "multihash": "QmPgBkzDiFquDhSMp786EK1zMZjvY6179uHurNpP3Nt1wZ" - }, - { - "name": "is-ci", - "size": 5547, - "multihash": "QmaGmiB91F1T1cRrk15nv2fFb5T6jbR45zjqjjVjw4tSVc" - }, - { - "name": "is-data-descriptor", - "size": 22536, - "multihash": "QmUEViuRSR1s4dTRvoCrFnJaBmykPSgvKQmiaBLaEQgHbg" - }, - { - "name": "is-date-object", - "size": 11738, - "multihash": "QmeRTYNYhz7P8uYpbJASFnwR36TbA58sN7wXZtCgjrB3Ku" - }, - { - "name": "is-descriptor", - "size": 28294, - "multihash": "QmNPNg5ZDBf945yo2mx7U4fmBCVZ9Heigdd5dU65LshJ8Y" - }, - { - "name": "is-directory", - "size": 6919, - "multihash": "QmcU7oqCd18wWjktJfGbK8921dibTdhArsnMYiLWCyraWm" - }, - { - "name": "is-dom", - "size": 4878, - "multihash": "QmNmPdB7wjEfDoaZWMfUqYsvH4VmwkJrtDZxG2tCzwhvJc" - }, - { - "name": "is-dotfile", - "size": 7738, - "multihash": "QmY4hUk63UbUd3GVXhjSCTHYUJXswXow5zj3okmJDqnroX" - }, - { - "name": "is-equal-shallow", - "size": 6670, - "multihash": "QmSCNmzxLFhNy8y2S32wmGMDUXMQ8VBMQLZqry24ZkZVsm" - }, - { - "name": "is-extendable", - "size": 6494, - "multihash": "QmV6rR5ak5H2EgGpvtGZEuNtxWDL5vtbcUdJZ9ymHRWogX" - }, - { - "name": "is-extglob", - "size": 5587, - "multihash": "QmYyyXXCAkynDPw3mcz8xCEty7NksSBwLQCmvGvBGk3NEV" - }, - { - "name": "is-finite", - "size": 3660, - "multihash": "QmRMTiki1JL7gS1CLxgXrqX4kqU6nZERiU2m8LyEknVeGc" - }, - { - "name": "is-fullwidth-code-point", - "size": 5488, - "multihash": "QmfGnRH7qbcDZofS3wXjpggVDoBVmUi8F1Nrv4s5M44wKj" - }, - { - "name": "is-function", - "size": 176576, - "multihash": "QmU7eQYgWnu598Wh5YAgt6waVgG8cWjBUHztEJJyjhwbQG" - }, - { - "name": "is-glob", - "size": 7193, - "multihash": "QmSe4n43mxr8nwCYReWrFhXKa2QwJzFrw8AeoQSCpFLm6c" - }, - { - "name": "is-installed-globally", - "size": 4527, - "multihash": "QmNPa5yzkUaYWQVfzYm2ToKB8y5CcK6LusqwAVSGRi3og9" - }, - { - "name": "is-npm", - "size": 2275, - "multihash": "QmRLRkfCDykt6Z5452DDEQuZ1xYEgGAnZ5WimvN4f6nxJc" - }, - { - "name": "is-number", - "size": 23513, - "multihash": "QmTnnNJY11qSRiDvf3M7cnLj7FYNdWajQLoaFByGwHzwBR" - }, - { - "name": "is-number-object", - "size": 12174, - "multihash": "QmcfgoMvkBb2Mx3RowwPFBXE3RiGYffcXE9W8cR9oGAQqk" - }, - { - "name": "is-obj", - "size": 3545, - "multihash": "QmacUtMak4CeboHCb7VY1TRtNy41Luosx3KoERBxv2j5sb" - }, - { - "name": "is-odd", - "size": 16835, - "multihash": "QmcJcEmKXp6oyyaRdjv18c8Lp33FNX3A8NUZWwSPs4wtxM" - }, - { - "name": "is-path-cwd", - "size": 2326, - "multihash": "QmVjVFaLQnzVPPDRcCvM1yGuvyynmJFHRePWukNcAXbL8K" - }, - { - "name": "is-path-in-cwd", - "size": 3796, - "multihash": "QmRJzPwrVGg1gvLKh8eHx2KeS1JbxJyQq9jJ3Q1UYtezL7" - }, - { - "name": "is-path-inside", - "size": 3861, - "multihash": "QmQH7MNyvAaYTbEUNDJBNR2H3Uyxz7KdD2WGijJjz4MTdN" - }, - { - "name": "is-plain-obj", - "size": 3849, - "multihash": "Qmf9qb5bdxqAFJmXWpe4dSoCeYtjadV5gDJLZdS8buFrrj" - }, - { - "name": "is-plain-object", - "size": 8985, - "multihash": "QmX5zrfdY5cDWSBdsyr289tat9xEVMcQe7z5MfJxjZ8xWk" - }, - { - "name": "is-posix-bracket", - "size": 7204, - "multihash": "QmVf8qkU2Mp2swH8biNTM97iq62t1djAgLvXrJeG3H2XSS" - }, - { - "name": "is-primitive", - "size": 4435, - "multihash": "Qmeq3g3vQsQaUcuXNmK6cj1YsVq29aEtqqLmcagfMRMfSj" - }, - { - "name": "is-promise", - "size": 3645, - "multihash": "QmRcrUqLo4kCNerE5Tb3WvJ4NUNfJDvDz4rScDsc6t7eFq" - }, - { - "name": "is-redirect", - "size": 3663, - "multihash": "QmSfn3uvzXxAV9fApYh7j9erbT2gxT5AFfSgG6LiDGp1SM" - }, - { - "name": "is-regex", - "size": 13346, - "multihash": "QmYsnHTSPLyussUzRovmEJtG7wHbjBoeNZG1huebueBw3V" - }, - { - "name": "is-resolvable", - "size": 5617, - "multihash": "Qmc43MfmBYfDciUk8rGV5Y9MYbBzGmDA7oQSZb3wiwDWn5" - }, - { - "name": "is-retry-allowed", - "size": 4787, - "multihash": "QmbbNbdQ8sqyfhpBQ5VMketcDSrnCvdPAJ19BGS9Y4bood" - }, - { - "name": "is-root", - "size": 2232, - "multihash": "QmTYMhCRygAniKHdxVbtqMVgPen2Vrh6xU7ma1XbhEopPQ" - }, - { - "name": "is-stream", - "size": 4437, - "multihash": "Qmbfwa1KS23JxWsXfb91uvxk53g2LW81RcNgeRhMLVRXYM" - }, - { - "name": "is-string", - "size": 12190, - "multihash": "QmSBBnbg63te3bsj37gDYbGFEGXA1ZbTxnbT8P4G9Ye8Lc" - }, - { - "name": "is-subset", - "size": 12005, - "multihash": "QmW8NSoCpcZnV83QBL1pNqcKJ8RrpX2zV6wEYMheyFALE8" - }, - { - "name": "is-svg", - "size": 4331, - "multihash": "QmTSZKXa8K7EKkHbSr863cJd3yRTqgATx3hcFvpcf6EHsS" - }, - { - "name": "is-symbol", - "size": 12830, - "multihash": "QmdXaZUkVdretrWCwq3gyCYmbnpXoRL99a4mztrnqxPXUe" - }, - { - "name": "is-typedarray", - "size": 5517, - "multihash": "QmTbSC1cDCwhHtf438Fe7Z5m8mAZaCZ8zXgShQBQkf4RkW" - }, - { - "name": "is-utf8", - "size": 5485, - "multihash": "QmQ9YGSMWivF9UbsA35aRW9KxDnF7G8xF21xSNRgEokJap" - }, - { - "name": "is-windows", - "size": 9248, - "multihash": "QmZuQ3miJPxG8JphMoKwAVK3XoQHYMnj62ZfHLUinM9M5W" - }, - { - "name": "is-wsl", - "size": 4015, - "multihash": "QmSQ4d2acPCNGCxNMaSUB15ZHyhEWZUcRESZB8FqNoVgTj" - }, - { - "name": "isarray", - "size": 8016, - "multihash": "QmcN5GH8KRwhnkBUMmSeWPLfKZVAeMmejWyzchGB1SK24Q" - }, - { - "name": "isexe", - "size": 12143, - "multihash": "QmTeTkE1WigpQYeocWfNGwHUzkKiKMaizi9b84RK1sDyNt" - }, - { - "name": "isobject", - "size": 8431, - "multihash": "QmUGgUZJ1vxEt1nuicSPg4JsjtFzMHst8qKxgxKkmLG1UG" - }, - { - "name": "isomorphic-fetch", - "size": 6694, - "multihash": "QmPwUrDBNVu1u32Q21hPfmdohQUyyUyCacBDqvnQbfsxmH" - }, - { - "name": "isstream", - "size": 13069, - "multihash": "QmTpKe3H3GcPoBy3RybkBZN7MVEooQ4dzrstYV4bX1Pqcr" - }, - { - "name": "istanbul-api", - "size": 906194, - "multihash": "QmSo2ty4uYrsNf5WVdPHBec6GC7tTNDGhzPNkVadtXARxm" - }, - { - "name": "istanbul-lib-coverage", - "size": 23064, - "multihash": "QmRXVry9ogx8ie3iMSrU3dgxKFwmki1YSeoTi76JKSXxHB" - }, - { - "name": "istanbul-lib-hook", - "size": 15542, - "multihash": "QmNkvtynuWGZq7EW3EkGsbVJJLjEvaVPsq5u4eH9snhj8m" - }, - { - "name": "istanbul-lib-instrument", - "size": 58827, - "multihash": "QmRCpLdMQVxE65peEUhd1d9TVmkp8L6keKxhM7j3iTTZi6" - }, - { - "name": "istanbul-lib-report", - "size": 46874, - "multihash": "QmW5j7i4hRa61vW2jqEJwGAbf7uxbzGiX9QwfGRF962Hi3" - }, - { - "name": "istanbul-lib-source-maps", - "size": 849218, - "multihash": "QmVmadpw2fq4uK86S3zjLJwBKjpCzpXmqi9tiTnJiQrQiB" - }, - { - "name": "istanbul-reports", - "size": 91356, - "multihash": "QmYbbxB1CtpsRQR2QsiM1J5acdPxSLJGLJKGgheZ488PB8" - }, - { - "name": "jest", - "size": 312562, - "multihash": "QmYqF74viGA4tomWB8XCdPFvwS9M5LoBbFuRskVJyyH2VU" - }, - { - "name": "jest-changed-files", - "size": 7471, - "multihash": "QmWsX5ro1BmQNfXroRHkvCAgQiz8dP1kj1KL8rUMaWWGfo" - }, - { - "name": "jest-config", - "size": 61582, - "multihash": "QmQwrEEGy6jDgs29AaPJS5h8TUC6STQ4dd7vcXqQmHZoa2" - }, - { - "name": "jest-diff", - "size": 24151, - "multihash": "QmcRHXzyLZcrdD724YoFYug2qunkLXUZpMMj5nJng2Mag1" - }, - { - "name": "jest-docblock", - "size": 2860, - "multihash": "QmRNMJZMaV58kY8E4s53dpiGbWLQfY7nq5rK7w9aBwEaQB" - }, - { - "name": "jest-environment-jsdom", - "size": 3067, - "multihash": "QmWseVyYLAEnZHpZSmtpmRUjJkrqdF4Rzb8cmUM4Kt9u9N" - }, - { - "name": "jest-environment-node", - "size": 2926, - "multihash": "QmbeHUNEy7CTYt46dFxsCE7HaVLhwWRfkiQoMKwNC92iVE" - }, - { - "name": "jest-haste-map", - "size": 159985, - "multihash": "QmQ7NErkSpoziKRpNv7TT6dU6cNzyvv1kMWiBcg7CqyC9b" - }, - { - "name": "jest-jasmine2", - "size": 82451, - "multihash": "QmSY2RtgTwCirdKKUKJFBfxWNe6ZQaTHEWgZSpFWKh3abM" - }, - { - "name": "jest-matcher-utils", - "size": 16692, - "multihash": "QmRkVoiPxjrsbGKMaqqS7XRcRZiSpeazmkqMP9zew1XTnZ" - }, - { - "name": "jest-matchers", - "size": 140190, - "multihash": "QmavhPknVfausUDjBRABq8CJYwE72qQRzoNoUnMYgwGnPv" - }, - { - "name": "jest-message-util", - "size": 131872, - "multihash": "QmTwY7ncn8zDtCZk2ApmCx9xEiASaHDUmNfimhc53tHPzM" - }, - { - "name": "jest-mock", - "size": 38995, - "multihash": "QmY5fLh3e3CEqsW3MnCVVWBCjkjaHmwuuZGnfZSHN7eqrJ" - }, - { - "name": "jest-regex-util", - "size": 3838, - "multihash": "QmcHqpR39w8LG6uqv7L9uhoo7uZguWHzedTqjZGHb5768k" - }, - { - "name": "jest-resolve", - "size": 11571, - "multihash": "QmWuo2WheF3tEgXtsG14fJmbyMJuTBZ7J2Er4RwFLTch1b" - }, - { - "name": "jest-resolve-dependencies", - "size": 5221, - "multihash": "QmajZfFMr82uMCo4XY1h4hFamuEHwiQEBjmmtqhRzHdYtM" - }, - { - "name": "jest-runtime", - "size": 161520, - "multihash": "QmVww6TbK33C44Seav4f2f62rFniWyLyKqGg6EmfDnuvVV" - }, - { - "name": "jest-snapshot", - "size": 19520, - "multihash": "QmUX6CQ5BhrhbKiKLvzui46oDAdXZV6gkUQ7TPVa5WpCkV" - }, - { - "name": "jest-util", - "size": 73004, - "multihash": "QmWEPypEQxAUY1znfYvtxVoMC8nMA6xHdZ3r8tNTnWDdiw" - }, - { - "name": "jest-validate", - "size": 39434, - "multihash": "QmWqdqwicfgZ7kLLzTnwxd7BKQKtFjokL3jKFS5XbzDCNw" - }, - { - "name": "js-base64", - "size": 180612, - "multihash": "QmTGVCUQkdrzsFZPxbCoHWWFv1jiypjqCeBNm5pX7pWy87" - }, - { - "name": "js-tokens", - "size": 15433, - "multihash": "QmPs5qtV5nHRXBxg5zucitBNgr1fscXCKSxMU1tJsU94k2" - }, - { - "name": "js-yaml", - "size": 275805, - "multihash": "QmVdeMQ8NNnRPcDF6JmG7xcw3KcopDCV2akKoPZGf3BUhe" - }, - { - "name": "jsbn", - "size": 47063, - "multihash": "QmWRLXFKUtTKv5qNrFFnMJvcrmD8pXBLPj1B81XEZFokrt" - }, - { - "name": "jsdom", - "size": 1796332, - "multihash": "QmTrw7RWTpLUvfxVdVNfuwGbQUjRhpzrYoiSUL4cqS12zh" - }, - { - "name": "jsesc", - "size": 19454, - "multihash": "QmX6Wjct4AAyjrtEGwgp1j6G7cuzm7njtNEiRRuBAb42Z3" - }, - { - "name": "json-loader", - "size": 7946, - "multihash": "QmRRuYCNH5PFngpe2oNZK2JENwVYaB1YDwiRxDL6zpp9Kg" - }, - { - "name": "json-parse-better-errors", - "size": 8215, - "multihash": "Qmacfqdk28E5CQXCEQ369QRyBe2txmvRciziVRf9sj29Nk" - }, - { - "name": "json-schema", - "size": 150400, - "multihash": "QmYTRGz1vy4rbyXgaLvyx6GuaCP5kA7vuLT6NnZ4HQt6kT" - }, - { - "name": "json-schema-traverse", - "size": 16447, - "multihash": "QmUnerhEKXwa4srfcHPSeWLPGugSaRteSdAb7Q9jBf7jkp" - }, - { - "name": "json-stable-stringify", - "size": 15822, - "multihash": "QmaKs8rF2mn1VKW2srDCM53Lta3Bvi86kLmBfqyUHuuYvV" - }, - { - "name": "json-stable-stringify-without-jsonify", - "size": 16250, - "multihash": "QmZxkdBtDv9M5ZFMgf6bB7JdWMnZfNTg9kZ966mw2UcyBV" - }, - { - "name": "json-stringify-safe", - "size": 14241, - "multihash": "QmV2aWe28CjJPFqZnK51YMEGKU2NagEzW4eyZ8jb1wxtsg" - }, - { - "name": "json3", - "size": 64863, - "multihash": "QmW46JmcTUikJ53fKAKmqpD79wiPE2iFxw5bk42wj21nx5" - }, - { - "name": "json5", - "size": 45282, - "multihash": "QmfVd1m5iWZreYZynzUpEo2E3j5mH5DDcgPnV2ergVtYkC" - }, - { - "name": "jsonfile", - "size": 18581, - "multihash": "Qmf2dkNsaxXdAJZ3XBisJbUqqH8bfYxWjwQfe9EM5AQ6BT" - }, - { - "name": "jsonify", - "size": 16010, - "multihash": "QmeYKgddfQBdDENuDrNw9vfYJgXd3LRiDn9UdmzHGcRAG7" - }, - { - "name": "jsprim", - "size": 32402, - "multihash": "QmTqDAQZfu87C9H9Q6HB1qT75ESCNJ3jDbUg4EDxSKiQh3" - }, - { - "name": "jsx-ast-utils", - "size": 243059, - "multihash": "Qme2SQUWQfzG9amwBuzrr6Kk496wBJJyWWKRFP5u5KvsYx" - }, - { - "name": "keycode", - "size": 119300, - "multihash": "QmcqcqkDvXpu6PjyaT2GMGmM47QumdJjiDJ3WqkPxWYep4" - }, - { - "name": "killable", - "size": 3160, - "multihash": "QmTua5Cz87U5n3toy5tLxvhyq6QtG9b2BxAZ7Kbn5yLzA9" - }, - { - "name": "kind-of", - "size": 24468, - "multihash": "QmayGud4RmoBvbbTwomMkT5Zkbh2tYSWADyYUt2ybzDtgq" - }, - { - "name": "klaw", - "size": 13780, - "multihash": "QmPErqy2i7vt1KEnjYc1v5zZz46Sc4XvcfeYLergmhRx67" - }, - { - "name": "latest-version", - "size": 4255, - "multihash": "QmaB29XDryiQRG9eqEZoxL5Tdz53paNtrkYgRHe73rPGnB" - }, - { - "name": "lazy-cache", - "size": 8578, - "multihash": "QmZhRqTwH7J5Xv9ztD5i27arpfwfnA7wN3EnJvyjruEu89" - }, - { - "name": "lcid", - "size": 7714, - "multihash": "QmTJ8DJBXXtEDe4SEvdBHRiVL5sxZ5bBVMXZdpbMhLGHkC" - }, - { - "name": "leven", - "size": 5957, - "multihash": "QmajaeeJSfU3EeH2jSWacJ3UYDuXZzGUeXkrmbdRcsjBdE" - }, - { - "name": "levn", - "size": 35379, - "multihash": "QmUo1mLCp9k8jFrDTu66gGb1AhbPsYQj9fQv7W8BPb6Tpm" - }, - { - "name": "load-json-file", - "size": 4626, - "multihash": "QmS8oHDbheEQJAZw9A3yxdMWV37nGscVnkZ5e6yQGfqXKE" - }, - { - "name": "loader-fs-cache", - "size": 29234, - "multihash": "QmcSYyBRcoF81UbuWM2CEhnUx56sHYwE46gfmidTfAWCFt" - }, - { - "name": "loader-runner", - "size": 16566, - "multihash": "QmUAt98dnB1Rgb2AaeFtBx3KKxfnYS5EohjdFcMr3WcAE1" - }, - { - "name": "loader-utils", - "size": 25240, - "multihash": "QmbwNiLBxHLRsEy6sZMKbLoTefMVvNu8dVw59TZJCiUbqG" - }, - { - "name": "locate-path", - "size": 5165, - "multihash": "QmQPHLNkmA8iicGPVAWmBvHE3E3mRwiaWDoSY4mP37BnNT" - }, - { - "name": "lodash", - "size": 1473365, - "multihash": "QmdGMvB6fFpksvkDW7ja4XxfhjfgoEqA1BTuTSwiTb7qu8" - }, - { - "name": "lodash-es", - "size": 672326, - "multihash": "QmZdfMiRaiMYW8YJ1mxpK7aaqwJwxJMAi7rfb9nx5PRkYY" - }, - { - "name": "lodash._getnative", - "size": 8018, - "multihash": "QmU471tkkVkxKmxwhqX2z46AVEEcZ8GoPxBav8DZyBcmQL" - }, - { - "name": "lodash._reinterpolate", - "size": 4741, - "multihash": "QmZA7E7CYishTpk3BPBnd7pButNRW6V9DsHiGykqjwLYjy" - }, - { - "name": "lodash.camelcase", - "size": 23360, - "multihash": "QmcJCHP9S6JdtKNQnSr47XfimT6qTZN5CZDrTHCbQM9mUj" - }, - { - "name": "lodash.cond", - "size": 66843, - "multihash": "QmTmXwSB6ZPMaUBMUdohZ1p4hF3NZpvWeB9heTGZKSVY9o" - }, - { - "name": "lodash.debounce", - "size": 15379, - "multihash": "QmNz4Wxk9VgrK3vkZYn5rvXVHiPGLEHGnDFAKfneyaZUrT" - }, - { - "name": "lodash.defaults", - "size": 22457, - "multihash": "Qmc1nwFkbHP6aqYhA7diox5tqFnaC8GJT5T7hyQs3AKJnR" - }, - { - "name": "lodash.flattendeep", - "size": 13561, - "multihash": "QmVdeE5PCyhQRdhespKaBZirW4y4yhuW7vpFn97sSjQqeB" - }, - { - "name": "lodash.isarguments", - "size": 10360, - "multihash": "QmV9AGVMbsUcz3voJg4VpFVARyrnJPtYYkE1NDXAjxA6bL" - }, - { - "name": "lodash.isarray", - "size": 9388, - "multihash": "Qmed3uwJq5R4fUwe88RrdExRoq3iYQx3W8Tc5n3bUr4TvM" - }, - { - "name": "lodash.isplainobject", - "size": 8375, - "multihash": "Qmc22haXMAdLfGByftCg4gLokRnwMZ1VWnd6G4DpEBxpiJ" - }, - { - "name": "lodash.keys", - "size": 10915, - "multihash": "QmR6eCuRS4wKX3KzmMwusRs5dnCEF5Nd4VwKh6u14L9SRx" - }, - { - "name": "lodash.memoize", - "size": 21500, - "multihash": "QmPV8XNUYGV9qKmVjvB42MMedCysg7A4yjjxfRY3emVPYi" - }, - { - "name": "lodash.pick", - "size": 17755, - "multihash": "QmYu4kQ7h6uCQzsVtrr5JPUi1MvcGkiCt8fKWWwmjVu2wC" - }, - { - "name": "lodash.some", - "size": 68759, - "multihash": "QmVojWS3Ng9Fdwb7hQDH15hKN3BChsMNNzKydvJiGs9WrP" - }, - { - "name": "lodash.sortby", - "size": 77151, - "multihash": "QmadVxNEpS1JsyDRcBU5ohvxWgQzJr352sd5SJREY5MAqG" - }, - { - "name": "lodash.template", - "size": 37129, - "multihash": "Qmd4qg9PPvsTCCbwPnCPRzS2V7AjLCmdNZJna54bwwZZRj" - }, - { - "name": "lodash.templatesettings", - "size": 12117, - "multihash": "QmYUqiWRzrXwaxDeqZbPMuCnip7BJAxesD8rxUREbdVjkh" - }, - { - "name": "lodash.throttle", - "size": 17906, - "multihash": "QmcEJM3EFbL9etVkkYrMv9ssZVw4zBN8M3U8ehWQtfoaUn" - }, - { - "name": "lodash.uniq", - "size": 26359, - "multihash": "QmVwuhv4xrJdfcKfdXpc1p1MkQaUR1QtkJSkavanHQSnVs" - }, - { - "name": "loglevel", - "size": 122133, - "multihash": "QmebWKWnmmvw2HpghF2rRTVo9xxTm2QAEqhxWGqzzxJyH2" - }, - { - "name": "longest", - "size": 5612, - "multihash": "QmRpfS9PnBt1idgv8yCYXokwdkQVfS4yBVgkqFEKotEuFd" - }, - { - "name": "loose-envify", - "size": 7395, - "multihash": "QmbuGYb5tDfJSgDGmkie8ACxmn5k2fkcocLT7ZYgWJpxgR" - }, - { - "name": "loud-rejection", - "size": 6393, - "multihash": "QmT48rfpAiGuyPgbERkBdHitm8Bt1ooFDyQf2vjLdU3shQ" - }, - { - "name": "lower-case", - "size": 5822, - "multihash": "QmcBSNFbrEfNAFUPNxnVeC1PYuyhhwHwv1m24kyrhm1Hf4" - }, - { - "name": "lowercase-keys", - "size": 3743, - "multihash": "QmSQtRdLCuoW3MVuEXDHUCfyR2mj6ZJbbMdW1p5v8WXCbc" - }, - { - "name": "lru-cache", - "size": 18864, - "multihash": "Qmb7HUNfcDgK2AkKNxWjUiEEngeCSZREQLpiXtAcwKMSdt" - }, - { - "name": "macaddress", - "size": 11106, - "multihash": "QmbdBr8SxxpTrbYdjUQ1vnDzv4yXyG3USjygEdYR1iMjhW" - }, - { - "name": "make-dir", - "size": 16143, - "multihash": "QmUW2TW8pUCuM3shjSRzVii7VNojAuMbZUbMKe8YXv3dFp" - }, - { - "name": "make-error", - "size": 12117, - "multihash": "QmQsq1zBGC5mSWpzJ7Tn8YkvwkugoeC3PP5Qx4s2mNSW5n" - }, - { - "name": "makeerror", - "size": 7251, - "multihash": "QmUCiKYVQRrD12Y9q6afjVrWCrMvNqPjsFG4oUyM8pwv29" - }, - { - "name": "map-cache", - "size": 8683, - "multihash": "QmcQqN9JrWqbpdt2kJZB6VRDDSz9e5F27CNaJhmdkVdkRB" - }, - { - "name": "map-obj", - "size": 3692, - "multihash": "QmPjThvKa185N195cD6mzTzB9zqynzALRDvjicVJhh2f4D" - }, - { - "name": "map-stream", - "size": 14890, - "multihash": "QmRPh7qSukCLWVvjSEweCQD7p9zAdgdb6mrvYPs57SbF22" - }, - { - "name": "map-visit", - "size": 9641, - "multihash": "QmT87ZwmS8MxQmprFzXBWQqK5u73gcTd2KHEf9YaG28EcQ" - }, - { - "name": "markdown-loader", - "size": 11634, - "multihash": "Qmcpr636H3fqdyyUqZfLec9EHCtrqSysG7BQU5Gm55Aezk" - }, - { - "name": "marked", - "size": 81549, - "multihash": "QmPApfzmfAFUapFfX3USA8wDzGkW1ugyuS7MzKjd88oRTP" - }, - { - "name": "math-expression-evaluator", - "size": 62159, - "multihash": "QmdU9LxFLURAAufBPDyrU2NidFVfbMwbvLk97EbWc4DAqt" - }, - { - "name": "math-random", - "size": 3880, - "multihash": "QmVdcoKzWJ6B2heRUQUh8oroVb6L5DhunmqgCijiaxgpaf" - }, - { - "name": "md5.js", - "size": 8595, - "multihash": "QmZYkwdHPbibk3vzTBJ8YuKZwbkEoNpTqeLbEGNLag4BET" - }, - { - "name": "mdn-data", - "size": 479765, - "multihash": "QmaYoog255Ji2TTH5W7z6HnRTQRY82QugApiQrwnt5HEiv" - }, - { - "name": "media-typer", - "size": 12335, - "multihash": "QmXQ14yQBUWSR7fsFaHu1n2EUrKjorCyRMaVFRFmwmNqUE" - }, - { - "name": "mem", - "size": 7171, - "multihash": "QmUPt7LMkk5ESzZqMYd8xw9XgweVFTacsnw5mCt8rKkxXE" - }, - { - "name": "memory-fs", - "size": 14660, - "multihash": "QmWpcSN3mtmeQUsKC6vfKSmVgoB8APBY56Ufe7TBZcVRwz" - }, - { - "name": "memorystream", - "size": 24397, - "multihash": "QmXFzLVD6P4tdtszaf8kzPujbd33oG6W2P8v5FE8YB7Tgo" - }, - { - "name": "meow", - "size": 41705, - "multihash": "QmT4nyP9cpWBcvePw3BmYoV584xHxL2nu3tnkd9ShUEu3C" - }, - { - "name": "merge", - "size": 8393, - "multihash": "QmYozk8YwjkNuDBH8Cvs1xkGsiXkz6UDjVpNArY1rNSZey" - }, - { - "name": "merge-descriptors", - "size": 6235, - "multihash": "QmUTdG7mYs4gB1EW7yTmf3kmNzi6fh98oN65rDFum8vgEn" - }, - { - "name": "methods", - "size": 6634, - "multihash": "QmWzbBuq6MUBpzRGdpmihdVMYV5oNZFHN2vWpdjPGbqJnN" - }, - { - "name": "micromatch", - "size": 80657, - "multihash": "QmPr7E7brrsGNgUHRY8zDhf4cP3ipoUPqpLSKvbx4NEhyf" - }, - { - "name": "miller-rabin", - "size": 8283, - "multihash": "QmRJKUazqe565isxZVK1KCPQrVX7JXVffNvztv7T3Quh7V" - }, - { - "name": "milliseconds", - "size": 3238, - "multihash": "QmaEeTpUesJoUGjoDqWVrcfeUUn48bW5DmXFEsirRLGxp8" - }, - { - "name": "mime", - "size": 53279, - "multihash": "QmStdN54Cyrnjo1TZeH5yBMAX6sDrrs5zSnVmMtyeJV39K" - }, - { - "name": "mime-db", - "size": 170390, - "multihash": "QmbSMZHbFGBeQVFa81kEzPaKPdwbtSfWjrtWvphELRsjY4" - }, - { - "name": "mime-types", - "size": 15860, - "multihash": "QmXYo7SwDX5FShQkSXM5QZKrxXhnWjcCt2QpNH4DjEdQip" - }, - { - "name": "mimic-fn", - "size": 4351, - "multihash": "QmWFqHfnVWc3v8tJigzy4qhicTBeJXgpQECsgJJD7mWMHk" - }, - { - "name": "min-document", - "size": 56325, - "multihash": "QmeKEXxUgwvyKi9iwxbKkhFGfh3GtTU1nNvD4shp9AzxY9" - }, - { - "name": "minimalistic-assert", - "size": 2744, - "multihash": "QmVriKonjZXPo5htMAw8vf766GgbB2KdXG5J6bGVvUb6Em" - }, - { - "name": "minimalistic-crypto-utils", - "size": 5904, - "multihash": "QmdoSghofhHQhKqyYL8bvUeFVeJhzTRugmDkPqkTx7d2HP" - }, - { - "name": "minimatch", - "size": 34620, - "multihash": "QmYz1zoWJ3KLh6jv1pxT17w4irs74zNsYhh1rXsJEvxVv6" - }, - { - "name": "minimist", - "size": 22874, - "multihash": "QmPbczNjxPXKM2TTaxAbMckW25vyYCPyTkJVqbn4Q1ZCAa" - }, - { - "name": "mississippi", - "size": 17239, - "multihash": "QmQiZu1UYzG9P2Ze5idQpJnMNedfMDDXxcZQoZkvsrYNWA" - }, - { - "name": "mixin-deep", - "size": 16430, - "multihash": "QmfVxticUY5avvn2E45wKAvrhUkd8tLTi1SzsRbWSYUnuY" - }, - { - "name": "mkdirp", - "size": 24142, - "multihash": "QmY2PtgfYmruoXTntymofzMw5DzxCdiiieEfiPsqroXdbE" - }, - { - "name": "move-concurrently", - "size": 9097, - "multihash": "QmbWjvjvTwDTM7BZRZhciXVwQCNS5y6yjzaDubqYCFXzDt" - }, - { - "name": "ms", - "size": 7956, - "multihash": "Qmd1rjhJ1uG4fHafN19qPnzBJ69XXdS1BVee8KetYRMNeA" - }, - { - "name": "multibase", - "size": 228783, - "multihash": "QmdQ5E34t2gE2DzjMf7i3Vf3nbrU7AgSvtYNZwqn9674oj" - }, - { - "name": "multicast-dns", - "size": 21356, - "multihash": "QmRFWTFsbXypnQaYJGux7Y5wr6ZTethvrg461AVXNwi96m" - }, - { - "name": "multicast-dns-service-types", - "size": 5844, - "multihash": "QmT93ariZZfsQToSoGeGPhUQ31xvA4rCjb4G38JRYWEJSd" - }, - { - "name": "multicodec", - "size": 279616, - "multihash": "QmTKgw1VLFJZghdEGNsFdm6N31FnzhhQRU5KAeYJNvUn6Z" - }, - { - "name": "multihashes", - "size": 309191, - "multihash": "QmRKb49PYz1k5fnDLFWaJF8Pbi7wGthXCvqbbYGnEUPWEa" - }, - { - "name": "mute-stream", - "size": 65618, - "multihash": "QmWcQL59LpNJnBuUWLs29Qv2vutU6ifhk3CavvLffRfon4" - }, - { - "name": "mz", - "size": 11311, - "multihash": "Qma4LG2YkTSsnhjryBNejF3vhrFjQ5UWsSgn4qfHNRy7dL" - }, - { - "name": "nan", - "size": 414550, - "multihash": "QmVyDnSEKBQvEuf4ak1AiL4ZwnQvSuESf7StE55U579Ug9" - }, - { - "name": "nanomatch", - "size": 95363, - "multihash": "QmWr24om1xMZCt7sKYuetpLC2vhRNxa8y3pUWHaKZenP1P" - }, - { - "name": "natural-compare", - "size": 6784, - "multihash": "QmVDuvFRwc45FgNP54SoHWZFJvrohtrY5akKFUYstsraxJ" - }, - { - "name": "nearley", - "size": 75303, - "multihash": "QmWGb1dtKwszZZkfy9tGbLqrbJ889q9h3Us7vc6ADdzB7K" - }, - { - "name": "negotiator", - "size": 29674, - "multihash": "QmQ8MttMSR54Lh3k2AEJWdoF9PE1dKnCtHFkG7aiVR2QGi" - }, - { - "name": "neo-async", - "size": 297896, - "multihash": "QmWW7i11FdiwVYDwfUz8PD8AXr6iyH1MqEGx8iGyPefFof" - }, - { - "name": "next-tick", - "size": 7286, - "multihash": "QmZw9MKiL1vDxrEjL5XsNmA148BMaTrvxBoMxhkRPgDjo9" - }, - { - "name": "nice-try", - "size": 4842, - "multihash": "QmTJ3C1kJMZNMMnFNsU4V47RuHxAcfCwAnVoQDGurTtaZH" - }, - { - "name": "no-case", - "size": 32215, - "multihash": "QmPGTaSfqXKTwhviwJ4MgUigtQF3mM729khP4NNKKMiY37" - }, - { - "name": "node-dir", - "size": 27479, - "multihash": "QmQotyG6D8P5fZo8BdTx2rxSkK45WUYoyosd6v36TxT6sE" - }, - { - "name": "node-fetch", - "size": 122921, - "multihash": "QmZRLP9Sgfu3m3dGBSMSNHkdQhBLyVGxwuA6CPAADrzMHf" - }, - { - "name": "node-forge", - "size": 1676295, - "multihash": "QmRMBjp5rgKrE7Qo1CaPcdHeEcnhNjKtojvdqKX6ooS7aT" - }, - { - "name": "node-int64", - "size": 17457, - "multihash": "QmXU8hJycBKedJjamCfASBBRwYrwZuYWARp7xqMav739Mi" - }, - { - "name": "node-libs-browser", - "size": 36590, - "multihash": "QmXzK2ps2G1dLVGAHbt3iGBq47FawBRmR1qimmS74a5PxA" - }, - { - "name": "node-notifier", - "size": 1394459, - "multihash": "QmWMajhYYcQFpxNuKKC6qpaZP8X2UaHpV9JvvJn7yyocsT" - }, - { - "name": "nomnom", - "size": 200651, - "multihash": "QmeXG8NLe9dXk5dvmhrYRBupuEj54TciHovn9CXiEZvSk2" - }, - { - "name": "normalize-package-data", - "size": 28935, - "multihash": "QmcUpzo3H9ZvMrac2RDCfbfZR57S63MLS4p52au7Uk6WFD" - }, - { - "name": "normalize-path", - "size": 9940, - "multihash": "Qmcqej3Lt7TYTdT3HytBSPWt4f44e9BQGHCgKcfQiSbnwf" - }, - { - "name": "normalize-range", - "size": 9082, - "multihash": "QmQymDmgpxEQChGaZggR7SjEaeMSKECHXd8mwmyQXgao5k" - }, - { - "name": "normalize-url", - "size": 10505, - "multihash": "QmRBQw4L6LaThsqCokZ8u2iwcQZptVkAGh5qvc7VQC6FgJ" - }, - { - "name": "npm-run-all", - "size": 180515, - "multihash": "QmZoiJ5pYZFmcwkYHLECXxGqfbNrNpwNGRUrDU8UDvQKj6" - }, - { - "name": "npm-run-path", - "size": 5734, - "multihash": "QmcZHvvayp36XTR9KBsoSi2GPN8mN12fwVtqHbYtqpYyZe" - }, - { - "name": "npmlog", - "size": 18723, - "multihash": "QmUePUGEqxCt1Y78vGN3NHz25k5ia84FT4CJTV3Z7HAp6E" - }, - { - "name": "nth-check", - "size": 7558, - "multihash": "QmbPTpCnDD7h2DtFSJbqLNAcnduW2rRh5AsFg6T3GFXSzg" - }, - { - "name": "num2fraction", - "size": 6246, - "multihash": "QmWzCwyu4fv3xsi89mc175JHvueywxTb9PeNsL5jLxYYUq" - }, - { - "name": "number-is-nan", - "size": 3910, - "multihash": "QmYxoV98TgVUkSE7nXZDTvG3q1Ha3NJkMv5PhbKzdecb1Y" - }, - { - "name": "nwmatcher", - "size": 153639, - "multihash": "QmdYwoKQZPvSxPPZUKA11Ut2qw8gLtna9sk6bjhvrxBxZF" - }, - { - "name": "oauth-sign", - "size": 14541, - "multihash": "Qmb2S6Xyxi588Pyi4ssrs3drs5pxBzHzJC8nUrnZheUWB5" - }, - { - "name": "object-assign", - "size": 7441, - "multihash": "QmNX6MSY3o6qA2otZJAeguL2f5mitiLcpEwKq5Y6JrrPPX" - }, - { - "name": "object-copy", - "size": 27790, - "multihash": "QmPbSfFuza9BNC2XGuGdVRzKejn4SmpUcBzDeiNusLrinJ" - }, - { - "name": "object-hash", - "size": 318184, - "multihash": "QmXoi1cjUBcJrNpaxocYtn3jfoCaSShXocaLmx51aWbn93" - }, - { - "name": "object-inspect", - "size": 27892, - "multihash": "QmdrUg6sKGrb97Xv1r9msJX1sMBypBVB5oSpx58Vkerc4j" - }, - { - "name": "object-is", - "size": 6791, - "multihash": "QmQHhHKNJhGeSbWyjWfnHpeLKPq3meyreGDoqjjBBnFDMW" - }, - { - "name": "object-keys", - "size": 18055, - "multihash": "Qmdc7GmBwip11KYpZbWKtC8XtjcgSK84niE8oUMenHJ89K" - }, - { - "name": "object-visit", - "size": 7812, - "multihash": "QmXgKTc6SsJky5untf1tCwicuzdWvnet1YUhmAwPdC77LK" - }, - { - "name": "object.assign", - "size": 47741, - "multihash": "QmXeuR3DtMgsFBVJvi6aooTG5gaLNDZaTuzVZKyi18PFza" - }, - { - "name": "object.entries", - "size": 746169, - "multihash": "QmRzmUveAvDv5sXkRE5jrHQ84RKMBY3EtrwsZDNFW51Soa" - }, - { - "name": "object.getownpropertydescriptors", - "size": 21623, - "multihash": "QmZe7Enay6mqDwghUrstPQTRR1wPEqu8feKPiWGW99nuNM" - }, - { - "name": "object.omit", - "size": 9207, - "multihash": "QmRewEW1PjHxpnxoEjEiwnbaPSrvAbFhr62FKzP8mxLdSK" - }, - { - "name": "object.pick", - "size": 7460, - "multihash": "QmdUGhAokhHx516b2C7XCxyosHpbKJuW9BgNyPbxPNkUuU" - }, - { - "name": "object.values", - "size": 13347, - "multihash": "QmcJ3A7UmPnqjYuiNWRaqBB116a88muUFeQnGRXc9aeAtE" - }, - { - "name": "obuf", - "size": 20502, - "multihash": "QmWuBy5QaRstRx7virkE8hvwh4k3hsXiLcpN64Pd2KjxHa" - }, - { - "name": "on-finished", - "size": 13703, - "multihash": "QmP5Z4WpVRN757KRFmwevP5ruwxhkQFxap4jsE9ijuWYEz" - }, - { - "name": "on-headers", - "size": 7545, - "multihash": "QmTRAw6E9m99nrSgRngDSkANX3fDnR97mw7XM4ne2aoasW" - }, - { - "name": "once", - "size": 5229, - "multihash": "QmWWEg8cw7kbSMdzWSE7NTf3ny9H5yBVsE2dGxnQ4p82aV" - }, - { - "name": "onetime", - "size": 4640, - "multihash": "QmbojHdjhcN1Em3meydTxjULZj2zsPtPdCEYpVGLyJnnFR" - }, - { - "name": "open", - "size": 24664, - "multihash": "QmW45fbqxmYMJ2c7f2MDiSNd7FZse5DWotb6cLgue1E2se" - }, - { - "name": "opn", - "size": 32380, - "multihash": "QmY9dH4jCAzMzwEqPQu87DFquT3zeYpng5vU3aQZi59VsX" - }, - { - "name": "optimist", - "size": 88012, - "multihash": "QmU2A1mHNhHu3Npwuvdt7cGCNEnwqfTRnWfmUe7jNZSVdp" - }, - { - "name": "optionator", - "size": 50819, - "multihash": "QmThqxhLPBnRp8cEM2mBQSTFjWETEn711iSrrWmmLw6SuY" - }, - { - "name": "original", - "size": 40753, - "multihash": "QmViykbKDpRURPd7NGxZpQvQ39EVKZycqJP8M4QMSX8C5r" - }, - { - "name": "os-browserify", - "size": 4051, - "multihash": "Qmes1TiD3AWxq8hG84w1hHQboYGxg4qNSqaFZPJGA37GcG" - }, - { - "name": "os-homedir", - "size": 4361, - "multihash": "QmTtXzQK3EyEnUSrErwbYHSkQ6cfUq4T6icmvMkwFPUkg2" - }, - { - "name": "os-locale", - "size": 6679, - "multihash": "QmWFnbgybZZEnw4UTJD4g85FcyXzAD8GyQJcxkXmss82tN" - }, - { - "name": "os-tmpdir", - "size": 4259, - "multihash": "Qme432A9JZBk8rut8LUZpRGtiw8HYEifjnQGxq1N9KKAPn" - }, - { - "name": "output-file-sync", - "size": 10790, - "multihash": "QmNRNvaMRT9SpxPNXUJ3NXxgxXg9yLPjWLDrAzj1vUtmWw" - }, - { - "name": "p-finally", - "size": 4283, - "multihash": "QmU8sm8K89mvmrvSRJX3RtdDdGqUZnppwxRKFvVArdjfQV" - }, - { - "name": "p-limit", - "size": 5261, - "multihash": "Qmf2LAQ4YJLVB71db6N4WfTn3C8535qZvzw9q5zJZiEcoE" - }, - { - "name": "p-locate", - "size": 6220, - "multihash": "QmPrjdCK4TxfzoYKrh7XpBxt8xFFP7SAUcqWxjVGwbKE3V" - }, - { - "name": "p-map", - "size": 6587, - "multihash": "QmNjri3hCgnqwfyWgM5ynpxGpY9QBsak7JTKy9HxjutEgv" - }, - { - "name": "p-try", - "size": 3924, - "multihash": "QmUCUqk4cB2CTa4NGQRTazmYZCjM9TykpPhkcaGxC3q1ou" - }, - { - "name": "package-json", - "size": 7060, - "multihash": "QmWGSZXEmFtru4E7Ny2WdGXRWGwufvG69bmT32L2y9sQhA" - }, - { - "name": "pako", - "size": 789247, - "multihash": "QmewkctzbAPY94zoQcCgrkZxmpDga14iJ2bBL4Au9Vxg18" - }, - { - "name": "parallel-transform", - "size": 6818, - "multihash": "QmYttLuRh5GuhqbogkgA78Yhang8DbSddchtheGE7HWhWU" - }, - { - "name": "param-case", - "size": 4874, - "multihash": "QmY7dZ6yZ1ANdMQ268EeS32ej4u8AmU8H6HtZZYBaBUjCq" - }, - { - "name": "parse-asn1", - "size": 40429, - "multihash": "QmNxF8H5Zr7f9ash39LUFioJM74EX9gR2Tbnyinnhg1WhT" - }, - { - "name": "parse-glob", - "size": 11416, - "multihash": "QmXTJpkqPMBKfakUattgneCFAQhTr7E8vbfx1DGEzLtKKs" - }, - { - "name": "parse-json", - "size": 35048, - "multihash": "QmbHrGtkDVNUfxWA8v4tzkpbFCsrvr11WZNEHgwmNcCqN8" - }, - { - "name": "parse-passwd", - "size": 7052, - "multihash": "QmUzLtFviYtfgUmVZSjr1vaK94KgnVSY1f1KTsCSgEmXu6" - }, - { - "name": "parse5", - "size": 412091, - "multihash": "Qmc6DZEXvoWV64s6EVSDGEzsFCuy2pe5aJ34wszyC2LkyK" - }, - { - "name": "parseurl", - "size": 11112, - "multihash": "Qmb78SjDstunyL4vdBfF3bjVomn4zRnLJYBH5ScRWLmRY5" - }, - { - "name": "pascalcase", - "size": 5528, - "multihash": "QmXsYhJRNi2cGVRr7aEmGJ1NYkkjVBZwNKEYVDjtFbYovf" - }, - { - "name": "path-browserify", - "size": 9057, - "multihash": "QmdghojpqsF5A8ppH3ukP54A18X9xGmTYgRGqkLq71mrjb" - }, - { - "name": "path-dirname", - "size": 7488, - "multihash": "QmfMtBh46dbSoHQAAK7g2PHcZvncAdvXgwhwP9944qyAUL" - }, - { - "name": "path-exists", - "size": 4516, - "multihash": "Qmd8kJV8WM5YxRrpe84aqeHwjX9L9i6c7agQ3fJK6euckN" - }, - { - "name": "path-is-absolute", - "size": 5008, - "multihash": "QmSfXW8Mir41YEcbf8uJasyvarGh9NGtqdJjtaQi9F2S4d" - }, - { - "name": "path-is-inside", - "size": 4638, - "multihash": "QmedvG9xhpKqzmP2a8CTNPMYqNt6VmzTB9odj5GMz4ks62" - }, - { - "name": "path-key", - "size": 4220, - "multihash": "QmUAJHYNnFTLbDymVNjEQxneKyYSKEYpJXVQ3Tjn3WA3m2" - }, - { - "name": "path-parse", - "size": 13542, - "multihash": "QmRo6kLvoAVnF8JAEAnx1sZ7YaA34vPfUJimyiyijV5wHk" - }, - { - "name": "path-to-regexp", - "size": 28595, - "multihash": "QmQUrBy828pVXy3FCDE8sTCL1YQcykHAvg7EKN52D43eP5" - }, - { - "name": "path-type", - "size": 4717, - "multihash": "QmcmmG9MAkUbaJtT4qesk8YRN3sgc5R4NDuMstadP8au6A" - }, - { - "name": "pause-stream", - "size": 16463, - "multihash": "QmUeZgWZbHRxeVuugKQbn4wj1FyV94EuywLdp3Cs9xEB99" - }, - { - "name": "pbkdf2", - "size": 14340, - "multihash": "QmXT6EpNezrVoKhTfQUoQp2DQeCeW2ZyyUo8zM7WeQ5awN" - }, - { - "name": "pend", - "size": 7117, - "multihash": "QmYh9sL5iYz3cmc4b3BYLtSB2BEkDtNe4RmVFwisosaFYG" - }, - { - "name": "performance-now", - "size": 13057, - "multihash": "QmVJnT3ufi3nbeXT1cKVAs2AhKX9pXMomvvBSp87GKFmRb" - }, - { - "name": "pify", - "size": 7560, - "multihash": "QmeEcXRh1JiV8TQwbzCNnuZJZNE892egT6Gf8hcLWKcUvX" - }, - { - "name": "pinkie", - "size": 11655, - "multihash": "QmQWTeh2TAsmEzozfjTzAmMekgTzYd6yz4eRGUKT4MNHDv" - }, - { - "name": "pinkie-promise", - "size": 4085, - "multihash": "QmXkyA2V6rbZG5DFtysEpgRZac1LqoPv6Z8b89pNWQYENP" - }, - { - "name": "pkg-conf", - "size": 29757, - "multihash": "QmTzCnJQxynzDUjyhxNtsYX422VwCx5xVR1s5dCiYY21pm" - }, - { - "name": "pkg-config", - "size": 8879, - "multihash": "QmXjQyFFsnyaEjPuTPjbBa5fjenL8NBQSgVNdp7qim3jEN" - }, - { - "name": "pkg-dir", - "size": 4677, - "multihash": "QmSJeks8T3Gg4adfNc6rTFMZxzvTr5ZTVHhws9JpoqukX4" - }, - { - "name": "pluralize", - "size": 18216, - "multihash": "QmSjCUkBNn2n7x62PBN8VoppnYB1sM1atoxtNpzN2J78oe" - }, - { - "name": "pn", - "size": 65261, - "multihash": "QmSAt7ZPMqx8S8doks92vrQgpHiPmJ2qxwxY8i3ay7MstX" - }, - { - "name": "portfinder", - "size": 178950, - "multihash": "QmTwU6bpwFaWFhC15gxpHLH8JYYcU4oU4HXPh67nE2vbBX" - }, - { - "name": "posix-character-classes", - "size": 8163, - "multihash": "QmQsCt4RJD3S2aKrdhsumCk6JanYTB46AG1y1tbN85EH13" - }, - { - "name": "postcss", - "size": 690343, - "multihash": "QmSYLis4DbpQGpwMR4X4fo7rewVUgPSNcpuCbmzisHYDwx" - }, - { - "name": "postcss-calc", - "size": 1431205, - "multihash": "QmbCJz65XPwazgcQv7eL6Efynv2wPddf3SdJqzT9t1usoo" - }, - { - "name": "postcss-colormin", - "size": 1431173, - "multihash": "QmXx3qKCs2yduBWNj1TmvbJCecah2HYQxtdAbc1ipsQvex" - }, - { - "name": "postcss-convert-values", - "size": 1439455, - "multihash": "QmeH7dn7c5sNg42SVvnnrq7c2tNjTxDtp9Dwoxb68vyWKp" - }, - { - "name": "postcss-discard-comments", - "size": 1434826, - "multihash": "QmS69WeUDFWhKMwSG1wJYvTc4FnSbvFS2CktbXGr85AW1p" - }, - { - "name": "postcss-discard-duplicates", - "size": 1433033, - "multihash": "QmZTvDQFhMan8U1bDMCJbnoo2ZMkCbEavLL41xKxZBPEVC" - }, - { - "name": "postcss-discard-empty", - "size": 1427330, - "multihash": "QmfRmfy6JBj4i33XN8T5zhYodjwEomFhMjy4sdSxyCe6VD" - }, - { - "name": "postcss-discard-overridden", - "size": 1432149, - "multihash": "QmZFKbo37zfXrrz8thY99gLt7nRnfF9bLAMSL8QaXp4omd" - }, - { - "name": "postcss-discard-unused", - "size": 1435557, - "multihash": "Qmc2KexhYWX5VswowP67rTVKEaJWvzHCg9JqboFkao3mWD" - }, - { - "name": "postcss-filter-plugins", - "size": 1432347, - "multihash": "QmZpE6795Ndoi5wA5AiRxBVpUwn7zATQ9euMHqHhVuZaz5" - }, - { - "name": "postcss-flexbugs-fixes", - "size": 8841, - "multihash": "QmWiCZ6gqJkP8Jy3LXmKP1DMbkhniMUNzg6mUPMhqJRapN" - }, - { - "name": "postcss-load-config", - "size": 15646, - "multihash": "QmUJU262a7eFVBJsBQ2W4AymnvN3aPjY9NNhwGWvNAQkqW" - }, - { - "name": "postcss-load-options", - "size": 10937, - "multihash": "Qmd66T9Fdo3CxotGcZcgeTom5U9fpKG8ErJzxfQoL7HfVM" - }, - { - "name": "postcss-load-plugins", - "size": 14441, - "multihash": "QmPunABCXBKqV3fFs36v8i7FbHoPKqTVAFMargFuLriey8" - }, - { - "name": "postcss-loader", - "size": 28572, - "multihash": "QmdtzaWc7RzHwArTzqLq1W8HadEqVW9P3FSKz3a8uymHaD" - }, - { - "name": "postcss-merge-idents", - "size": 1431590, - "multihash": "Qma9wTsNtuLcEnXsNstW7t9KXBhzZXjtk55Tf1fTgTwBtH" - }, - { - "name": "postcss-merge-longhand", - "size": 1462668, - "multihash": "QmYTNfYGQzipZSyrvJNV4LpGjNr8r1fE4CNdidqKEMH73m" - }, - { - "name": "postcss-merge-rules", - "size": 1483660, - "multihash": "QmPBxnPEtmbQWhVXHCaDp1i7EQtRKDoyPLJ7nXBKzXA3Kg" - }, - { - "name": "postcss-message-helpers", - "size": 7583, - "multihash": "QmbFuqKzrwwHX37gdnnidCyRh45s4rQaG4tfVZNzMSMKHM" - }, - { - "name": "postcss-minify-font-values", - "size": 1433259, - "multihash": "QmSw2JjkY9kTaWJ9qzLmXCLJPwnjSkB3rRnp5K1bKkB5iP" - }, - { - "name": "postcss-minify-gradients", - "size": 1433382, - "multihash": "QmRfr5pK5p2D12cqf6GFf1KkohSnLwBrxzdjHWZeVhpC9r" - }, - { - "name": "postcss-minify-params", - "size": 1429267, - "multihash": "QmZ2u2U2oYHFdyMuNx25cVPYyQhKDcMfuZ5ZQQM2csYFqU" - }, - { - "name": "postcss-minify-selectors", - "size": 1435001, - "multihash": "QmTyxf3hrUFm1Lwvb1naptPHRNivKN9o58hqEiwfVoL4CM" - }, - { - "name": "postcss-modules-extract-imports", - "size": 7967, - "multihash": "QmeBu5PgZq8KS9V1oYw3PNzdpG2mrNQujNzy8irxH9V7wa" - }, - { - "name": "postcss-modules-local-by-default", - "size": 19865, - "multihash": "QmaTA28ovbagNdXQSRPe7wzZUNmAaHpUE1uxeyBtqGLwqg" - }, - { - "name": "postcss-modules-scope", - "size": 11798, - "multihash": "QmSS1fPKSxQGxhaSiD5BCh7JyXXJ8BWwdvZVJTXaau3csY" - }, - { - "name": "postcss-modules-values", - "size": 18137, - "multihash": "QmcdLgSjbpCLbbye8hmthULDrmvKPaUpeZD7TqfmMJ3xBy" - }, - { - "name": "postcss-normalize-charset", - "size": 1426452, - "multihash": "QmZD3QwwxpoDqn4ogFuEZxn1Ju8ZMapQk7TePGErW3qwFp" - }, - { - "name": "postcss-normalize-url", - "size": 1431996, - "multihash": "QmPnmDMXkQ3R2MbesrX1xgCJ7v5Y99GaiYrv6pkr1shGau" - }, - { - "name": "postcss-ordered-values", - "size": 1440754, - "multihash": "QmSqWKdojihcZaZDyMdKm7VxT6mTaWJCZzNFkNayU7nUvQ" - }, - { - "name": "postcss-reduce-idents", - "size": 1445805, - "multihash": "QmR2cgLRx7kAvaXUmKj7taMp7R2EdBAchu915fLTyYdRhL" - }, - { - "name": "postcss-reduce-initial", - "size": 1436158, - "multihash": "QmQ7unbkLbygagg4WAbC1xye1WX1CCvfrwnpU3GESWZB6g" - }, - { - "name": "postcss-reduce-transforms", - "size": 1431337, - "multihash": "QmcqB5G4Rv9ScTw1EKRFTSVtjAPfukbPv38wpJZJdejwrs" - }, - { - "name": "postcss-selector-parser", - "size": 94187, - "multihash": "QmcJ4sWT32cQ1SeZ72RuYA6C1D8SkmnncBDW2dTSomVBwi" - }, - { - "name": "postcss-svgo", - "size": 1435675, - "multihash": "QmUjV2RLURgYLQ7xqcWMdFeWywoyqGDaakbLHf98Zx3W3m" - }, - { - "name": "postcss-unique-selectors", - "size": 1427005, - "multihash": "QmbLZbsuf5yEWRCmxNooNh2kdD3Qwt2BcHGVX4mLedNwLV" - }, - { - "name": "postcss-value-parser", - "size": 22468, - "multihash": "QmbvyhCtbkY3QZYUUJXaBsacHbmZHUnRA6pWqzsdYKnvj9" - }, - { - "name": "postcss-zindex", - "size": 1430378, - "multihash": "QmbiyAEroU4UwG1NjYR1RRu2BHAi1siBtWLfvk4YZ4HMgi" - }, - { - "name": "prelude-ls", - "size": 37493, - "multihash": "QmV7LYUWALfzfypEK6fYr2Tk2gZGsLTcBwYkVNdR7qBaXp" - }, - { - "name": "prepend-http", - "size": 3846, - "multihash": "QmWGouWBnf9WxZPY89kub18aCmu3GUi2iB2KLNF9tgenF7" - }, - { - "name": "preserve", - "size": 8121, - "multihash": "Qmbo4JfFfYowrQCHACnyXcM96GdMPuM9ffAhT8rNSa6pGH" - }, - { - "name": "prettier", - "size": 7824491, - "multihash": "QmNLj9Ahj2mVqDoEQm7FcPHJfc7WVfTguv4DorfgfNaqoM" - }, - { - "name": "pretty-bytes", - "size": 4354, - "multihash": "QmdN3jaEn5hyVWfcPfbZEs36EyWEnrF5vQZCY1oVnRHqVZ" - }, - { - "name": "pretty-error", - "size": 58243, - "multihash": "QmdAVvNveVhcKeWjbm4CVqR6yKmb6dBGSweKEFEyHUnXVc" - }, - { - "name": "pretty-format", - "size": 355722, - "multihash": "QmeR7eVSg1DdhjKzePxqG8oyFEhiDwALpEUbB4YG75u1rq" - }, - { - "name": "private", - "size": 14634, - "multihash": "Qmf2QhiB1g4Qza5UY8Esj8WjtZD6DCKmpDSK7Hoy1W4vWF" - }, - { - "name": "process", - "size": 16160, - "multihash": "QmXtzDCs4cx7wzwM7uAzdfyUoxmDaT8dBYVw5kbrGE4uNq" - }, - { - "name": "process-nextick-args", - "size": 4279, - "multihash": "QmWgMuEaoNbh6cZRx4N4jkUUmZcrQ8MnsDMqa3kEDGw93P" - }, - { - "name": "progress", - "size": 16978, - "multihash": "QmbcTYWzJFDJicBNRZzbv6NpX8c2fCMR69H9ZDmN7r2fGG" - }, - { - "name": "promise", - "size": 94418, - "multihash": "QmSUxFjdtYzCvxneNr4UHTLXEhUgWmtjjdPAB68RetuczB" - }, - { - "name": "promise-inflight", - "size": 4121, - "multihash": "QmbZypJRHn2w9npX6tSQKFAu4zMbu2nRPrJKD9vqNVkHmp" - }, - { - "name": "promise.prototype.finally", - "size": 23772, - "multihash": "QmVjhaLwYopmky7wxaBkW1dqUGGDpBpx66uHJ6wKKWgAFe" - }, - { - "name": "prop-types", - "size": 81877, - "multihash": "QmTJtZfJy5VSWhgL4Vei88XfD1UjMYyeWd3T1VMW1hneUD" - }, - { - "name": "proxy-addr", - "size": 16752, - "multihash": "Qmak6uV1VfXTLGZUDeZTS6Fvver6K48Lshmkrrcxcdqy98" - }, - { - "name": "proxy-from-env", - "size": 24645, - "multihash": "QmVfDCREtnStixzQkPFfTs2K4JxPCcGs6yV8cogsvb2Vqp" - }, - { - "name": "prr", - "size": 9901, - "multihash": "QmUrsZXD1yWi6eDQkBWcWC8cWqGiSXcAtedGKhaxdHHXp9" - }, - { - "name": "ps-tree", - "size": 14638, - "multihash": "QmXhEBciwcrgC94YPhjNMvm4pAPXfB9bRpdTEa6yM69Ee5" - }, - { - "name": "pseudomap", - "size": 9401, - "multihash": "QmY4MDDQDfT8MMaY4trCCSpUExyszjtaT8rr3z1riH2EGo" - }, - { - "name": "public-encrypt", - "size": 30620, - "multihash": "QmaPM91DdmMbAcERbRdARjUUcWS3Dg8ryVtdvJyEFWtuBU" - }, - { - "name": "pump", - "size": 8655, - "multihash": "QmTyn8CkU9wXiFTMPXzhWseoBXkMKjHiEqTE7TGub58anx" - }, - { - "name": "pumpify", - "size": 10446, - "multihash": "QmbQA1RuRWqvPoJfEzti3CBXZAYPVcdPfjXTvCvQq4V2sq" - }, - { - "name": "punycode", - "size": 33412, - "multihash": "QmVEfaw6K2Stq4e5n9oWKTE3XHHd6n296NyVECyZHbmbJr" - }, - { - "name": "puppeteer", - "size": 680536, - "multihash": "QmRnwVSmyATPtzQSM1kMLXjDghvzagzXY2zXwqJiTFn2ab" - }, - { - "name": "q", - "size": 124548, - "multihash": "QmRTyu3jZ6gjeTcGQengpKkaa9D4neyMPSoQbYYSxF4CT1" - }, - { - "name": "qs", - "size": 114528, - "multihash": "QmVZWDamJvu6k2eaaWp23eAPiT1zjYabm9GCRnKLLWU4gr" - }, - { - "name": "query-string", - "size": 12365, - "multihash": "QmQj5tq5mhGGjRx4XxU8fm5voZsFvPtwr8D1ZKPfvtf4EY" - }, - { - "name": "querystring", - "size": 16966, - "multihash": "QmfHo5D16Zcg2zP1r1hP2S7cyCcy1CAT8TpGaEbjmzQGeC" - }, - { - "name": "querystring-es3", - "size": 17648, - "multihash": "QmU4tCvwWsAsg9kJ4vQ33L34Gs7y7s8Qq4HZsWaE9bHND4" - }, - { - "name": "querystringify", - "size": 4343, - "multihash": "QmVoqpSdLik7sffAeG23LDmt8XbCy99Acmx3QzPovJB1mn" - }, - { - "name": "radium", - "size": 853333, - "multihash": "QmWYBxRdTbbXRXfv126VrND8gAj1xNNtqxL8Qf2J4CQXtA" - }, - { - "name": "raf", - "size": 8347, - "multihash": "QmNvXovFeLujeFQKRqTCP3wqYH7eHUYYZfhhBeAdK8GPLg" - }, - { - "name": "railroad-diagrams", - "size": 50929, - "multihash": "QmRCFauNXn8CUVq96KFp5A5V4X33TzVKyDR8thpEg9wWy7" - }, - { - "name": "randexp", - "size": 13462, - "multihash": "QmWy43JgbfvRRtPMwKcyyLSC7jB5YiK1G6fnuqbVN63L5f" - }, - { - "name": "randomatic", - "size": 22672, - "multihash": "QmQDSToZTyg1RE54vp8XWEcnREfYLxxKXJT9SMSxJDzeUa" - }, - { - "name": "randombytes", - "size": 6096, - "multihash": "QmRgVAaNDa44EG5YFzLWzX9UagJqxWdqRn6j4ivUpcmHZr" - }, - { - "name": "randomfill", - "size": 7692, - "multihash": "QmS6H87ZdvuT2r1xRXg6ijuU5Y7Zn7SkzWnsKe12E715Bf" - }, - { - "name": "range-parser", - "size": 9381, - "multihash": "QmTDB7STLYxenE5YKhiXHWqLPqFAMuTV3y267DB8R5fXRe" - }, - { - "name": "raw-body", - "size": 414315, - "multihash": "QmbNnLeNhZBtJyzHN4pESVSjyBFE5LKGa3gLLN5o9Np2Tg" - }, - { - "name": "rc", - "size": 51552, - "multihash": "QmcVoqq5xddJ3J9tS2fQqRTUM1hhndNrLJp2j5tAdkznfD" - }, - { - "name": "react", - "size": 120594, - "multihash": "QmRsUcfUYsBXaVGeQKdN4J8KbEvGteo6ZcfCXnaWgaY5TH" - }, - { - "name": "react-debounce-render", - "size": 10856, - "multihash": "QmTHBvVPsveyBnZ7zQ1KHxm2rZEqt84Njxh4LdZWcYRs4R" - }, - { - "name": "react-dev-utils", - "size": 92354, - "multihash": "Qmbwf5eLuUwzoMCw5Wf8S7x8tDj73UbQf7srDwmx67AKvR" - }, - { - "name": "react-docgen", - "size": 601169, - "multihash": "QmRbjnycJiTFFoviFMBUrBZPLk8qjLEjD5gVshKkCyRiD1" - }, - { - "name": "react-dom", - "size": 2024452, - "multihash": "QmdshBjinMScexvrZk7qusCCuGKdqSR4NVPCd5WxJWR8ux" - }, - { - "name": "react-error-overlay", - "size": 419126, - "multihash": "QmT9cTXYQ9HHB2niAGGcNytEG6LRhKnWyBj6RNPkQCgDpe" - }, - { - "name": "react-fuzzy", - "size": 216334, - "multihash": "QmY7ENqfmr6cMvv7Yy6pdYB9cCRYNGs1yqJ8PUYmWDNuQt" - }, - { - "name": "react-html-attributes", - "size": 109159, - "multihash": "QmWX5uikmMgCRxdFJvSXEz1UFRboxPsnTj9ZxCCzd7eT1o" - }, - { - "name": "react-icon-base", - "size": 8978, - "multihash": "QmeS2DPUDCmBPSLRyAskteG5NrZa1Sy8bVoJ2MUcaYhpVY" - }, - { - "name": "react-icons", - "size": 6779866, - "multihash": "QmXjBHufvprttJgDdShPD7VAYFTqNLbNbQmXdzxsBMDW8s" - }, - { - "name": "react-inspector", - "size": 453138, - "multihash": "Qmc1QCGX5bvHmWuKLzwcJTLSPPJUVzvL88tqG42LBBZ73t" - }, - { - "name": "react-is", - "size": 17917, - "multihash": "QmeUauF4JBGcXTQuRYh5QC9UY3XQEBKAjmCNuUTL7uoQDL" - }, - { - "name": "react-lifecycles-compat", - "size": 30784, - "multihash": "QmUHJoGTaLz9MQtdKZ8jxq3ggwSf2SQypzxBskjkvdsCWv" - }, - { - "name": "react-modal", - "size": 192978, - "multihash": "QmXi3YUUbiUtwoiRdL6LzSjqjr5dQnNnMyMoH5qSmafs2R" - }, - { - "name": "react-reconciler", - "size": 320045, - "multihash": "QmRwEuqm6CKbiZkpraaEubu5z7XqTJqakyaEAh96MfCyh4" - }, - { - "name": "react-router", - "size": 183594, - "multihash": "QmdUycVQc9NgRP85gWmD12eHJbhfK1qBDqEb47TyE7hKwa" - }, - { - "name": "react-router-dom", - "size": 250112, - "multihash": "QmZwdahdbpSbzQQvCeUXMwUFWmT1U5mK8G5i3HnFLMYaTk" - }, - { - "name": "react-scripts", - "size": 5172748, - "multihash": "QmboU46MR2q7TrChT92FkbBNvYa4yz17Dey84GZYfnxbEd" - }, - { - "name": "react-split-pane", - "size": 38067, - "multihash": "QmSBuRb6fAWRRdqBwRr7sZjnr3tpnCC7NdcHJuYcTBDGsH" - }, - { - "name": "react-style-proptype", - "size": 87181, - "multihash": "QmTgD2m1MKgCke1GiSeJKTPg9ieqC1M1urMjJiN4oSrKyf" - }, - { - "name": "react-test-renderer", - "size": 868848, - "multihash": "QmT9nNYcx4Re5bKodWyCkbeHF7RVNtWYXgp7pbqxzexhEE" - }, - { - "name": "react-transition-group", - "size": 176136, - "multihash": "QmPWKKGj36VDFiVPH6bDJmm9Noqt99azGf5JJAUhcqvuAK" - }, - { - "name": "react-treebeard", - "size": 64255, - "multihash": "QmWRRuiKwgeWnJk2eVtBHap4UFND9GXW2GjQabSnsyCr65" - }, - { - "name": "read-pkg", - "size": 5589, - "multihash": "QmPJjMySnxDebjG2uA2ygwjnMP5FfxCHiCyUXBPugpvfsH" - }, - { - "name": "read-pkg-up", - "size": 15759, - "multihash": "QmYFcvRouK7389AJCDvkNrUUBc1Rqyzapa5kg2jhNj6pq8" - }, - { - "name": "readable-stream", - "size": 94932, - "multihash": "QmWPtcFfTDPddBiixTEnz73am2P8SQCHuQeznwFBRLFLMt" - }, - { - "name": "readdirp", - "size": 47793, - "multihash": "QmNTPVZCeAY2ReRSDJYWrXMYAa85Wmc7Z5MQf53aHPQFm6" - }, - { - "name": "recast", - "size": 2815612, - "multihash": "QmcvXmChG5GynPHATLhSBVgfdio9AJzkD6uXeWyEeqbGHR" - }, - { - "name": "rechoir", - "size": 9258, - "multihash": "QmT5Gv9aXWKhLzQtZub7pxf7rGG2uZ7Xfk7ZSKrSvgykFL" - }, - { - "name": "recursive-readdir", - "size": 53684, - "multihash": "QmTP4116KaWqqV77ib7hrBba3fESsoqhL4ppM259yq1mP3" - }, - { - "name": "redent", - "size": 3975, - "multihash": "QmaDHBXZhkZnc4WmMsfMB2EDJPjVbc1uV5w2RXeTA71td2" - }, - { - "name": "reduce-css-calc", - "size": 19128, - "multihash": "QmUzhnZNpyZGEoWMLXzoJXYMEyXfn6MNm6yEwsnaDJYzsL" - }, - { - "name": "reduce-function-call", - "size": 15073, - "multihash": "QmZii4fFSeh7KbUFp2QSXFwK5H2LfPXuZ3zYSRs8rDEK2Y" - }, - { - "name": "redux", - "size": 139122, - "multihash": "QmbxLrzUdsbD9V7X8GiRn2Y2WqnJFKaKtYJTDFfAbMf2cr" - }, - { - "name": "redux-bundler", - "size": 401832, - "multihash": "QmQ6XFMnxDkMZvw6qAVXRG2JkMRBfPZJXriNazGFMmTq9F" - }, - { - "name": "redux-bundler-react", - "size": 11558, - "multihash": "QmTw8LH5bW9BaVhEBYbmLWRiXUgbtSzB5dYr9waV9RYi7R" - }, - { - "name": "regenerate", - "size": 50158, - "multihash": "QmQSdG2siVy2EhJwyd9bmTq5T3N3c2NBMTDwb6NBWXvVBZ" - }, - { - "name": "regenerate-unicode-properties", - "size": 383418, - "multihash": "QmUBmHTwn7ersLU62Hz51CxS8FKsCrrPqLrDdjTz9taDbE" - }, - { - "name": "regenerator-runtime", - "size": 27965, - "multihash": "QmWa9DeiJUi5Pw2wJLidKL675mibqmKnwzqMSJCTXFxMXf" - }, - { - "name": "regenerator-transform", - "size": 121942, - "multihash": "QmTZibqdNKpAf2ui17G4X3gkiWjkypmkw1JSeo2AJC56Pr" - }, - { - "name": "regex-cache", - "size": 11301, - "multihash": "QmSQcjWRxKDhcpDZSmbRHd8zUKS1q72ngoRaTB9yYaeYNA" - }, - { - "name": "regex-not", - "size": 9658, - "multihash": "Qma2koTj8S8Vi267C5ebw6oieGxSye36CV8zVuZuF9fe8p" - }, - { - "name": "regexpp", - "size": 1112461, - "multihash": "QmeqzxGwyvB89t1oM1TXRitkgKoWs2HwfrskNQagh3DA4b" - }, - { - "name": "regexpu-core", - "size": 19183, - "multihash": "QmVzXruuPEdNVChsWpY4a3fcQFkUBA1wEcguwFq8sSaVn8" - }, - { - "name": "registry-auth-token", - "size": 80970, - "multihash": "QmTTu73ToPvo9KoSTcZBoK2C74DRR4FLAob33VDUpCKWKf" - }, - { - "name": "registry-url", - "size": 4462, - "multihash": "QmUwvV3rKcBgvHM33UjVuXbjtXEefv8JHQjrys8oXQDJgR" - }, - { - "name": "regjsgen", - "size": 14815, - "multihash": "QmPUqqyMSeKiTqs52wbFaQJzai4z3zyKeF2drXV6SzMAEM" - }, - { - "name": "regjsparser", - "size": 65616, - "multihash": "QmTWHDYMpZ2TFAMbtvWBTrYJLorKPkofUEaj37oPokQCPG" - }, - { - "name": "relateurl", - "size": 33673, - "multihash": "QmbZBM8L9NnQzrqM9JDDmkzL19fQFSEGufunjdY7RbySzR" - }, - { - "name": "remove-trailing-separator", - "size": 5445, - "multihash": "QmPCxweJdjNhG4MZzQ64ajVYKH1ZC5ViCtA7U7jdqcGNKr" - }, - { - "name": "renderkid", - "size": 349538, - "multihash": "QmWJJ1pNamd7Mx5VURDck2J5qQBCok6HA9m9CygM5Yrw79" - }, - { - "name": "repeat-element", - "size": 5038, - "multihash": "QmchYsQAECEcy2fxPSJyFjFARU2gU5BmudnMz7nmn3xh5E" - }, - { - "name": "repeat-string", - "size": 10521, - "multihash": "QmWq3pbTaVqNMR7pbE4Mps9MfyHGVLJphi3PyDfkXpmC2n" - }, - { - "name": "repeating", - "size": 4614, - "multihash": "QmTkZicVbPyeuqapF3ZAsqwijQo61kepLixPYJ2ixqT9bw" - }, - { - "name": "request", - "size": 205765, - "multihash": "QmVDb5tpd7LzkzP8n2Ey7Aus7k44isVzdnChgRrnHGUfKX" - }, - { - "name": "request-promise-core", - "size": 20093, - "multihash": "Qmc9r1e7jGr6xCTyj6PmRzxYzgxCtdAGdWWh7jEkYSDKeR" - }, - { - "name": "request-promise-native", - "size": 8137, - "multihash": "QmfX6aPQeE4GTWAtS6DPS6a43rvU5cvDiDcSZdDya5NZr1" - }, - { - "name": "require-directory", - "size": 11376, - "multihash": "QmPnws2hdETRHjrNLq23FEa56aQcJ6ieNHfMshJ35FHpYx" - }, - { - "name": "require-from-string", - "size": 4561, - "multihash": "QmdKpZsGuLWcEPJxfKaBCrMC9gihzujS22zL3KemFJyxD1" - }, - { - "name": "require-main-filename", - "size": 5329, - "multihash": "QmSHeXACrPhkhXzV2QzhTJonSSZFY7gVU6U71dSTSoMyFs" - }, - { - "name": "require-uncached", - "size": 4833, - "multihash": "QmcgURQcUZctn6rVNPsRjx8qUSj2ZW7X1fp8BGBwrTYvKM" - }, - { - "name": "requires-port", - "size": 9339, - "multihash": "QmXVSicjMJVw7NJTZbQY5uLZ6rqJAy9ucFya5XkuAxiKsB" - }, - { - "name": "resolve", - "size": 70592, - "multihash": "QmQ3zBDAFRCPPVr48LubvtiUDW9Upkpiz3MgyyN1GKiiSD" - }, - { - "name": "resolve-cwd", - "size": 10473, - "multihash": "QmQpPntKxbFKUghdS9tcTcjGVf99oFXA7rq5rzSqQsNjqQ" - }, - { - "name": "resolve-dir", - "size": 7377, - "multihash": "Qmbkb2e4h1gkwYgPwUXueoPzMFnqx8cNHGkNSCV1GyhRqy" - }, - { - "name": "resolve-from", - "size": 4429, - "multihash": "Qmd6EBo764WNY1F4dej13WLjQ27apV5qHC2tMcrdgrddsN" - }, - { - "name": "resolve-pathname", - "size": 13517, - "multihash": "QmYnuroFUYuxzpzXrSnCYv5iLfqj4mZjUqAaLPGeqPbbbZ" - }, - { - "name": "resolve-url", - "size": 9495, - "multihash": "QmQb8QRpuTxKBu1xUWyvvDfYLki522kf2ktv8gUF4dVQqK" - }, - { - "name": "restore-cursor", - "size": 3676, - "multihash": "QmWTtaPjcDTYfUndWsaMzG8t9T7xRyWMUQCS7z32ZiCrHV" - }, - { - "name": "ret", - "size": 19361, - "multihash": "QmPkNGkmBEpnrMmYECPas64PhEWNmQDfE6TkFEwNtKLJdM" - }, - { - "name": "right-align", - "size": 5355, - "multihash": "QmcQGvsqCWrDpNn3LNC1HZEretNpCJ3yrA58WZDzB17p6S" - }, - { - "name": "rimraf", - "size": 16644, - "multihash": "QmcxbD6ryojWLjpRtczu5dgYunt1u15DNe4PuRCUWqQzr7" - }, - { - "name": "ripemd160", - "size": 11081, - "multihash": "QmS4qS71ag6eRepvdajm3W7DEa3j6qdGg8gUg9HKWSwmHG" - }, - { - "name": "rst-selector-parser", - "size": 353597, - "multihash": "QmTk5Eed5ozjquJeWQMRDpEuVSdupWEaYyokaxmZxncJAZ" - }, - { - "name": "run-async", - "size": 6523, - "multihash": "QmaxfnZbmLPneEohQZhKSZe3Ccxh4QHaNb8vemNKMP4EtQ" - }, - { - "name": "run-parallel", - "size": 7197, - "multihash": "QmaWgRWaLhuB3XEqgP7ifYG1cdGZnANd4ZZzHEhoCbCMdy" - }, - { - "name": "run-queue", - "size": 6744, - "multihash": "QmZmuKcVnghTCQcxTkRm31KFNmzgwz3UqkjXG9WiYDcAeM" - }, - { - "name": "rx-lite", - "size": 459720, - "multihash": "QmTRV27AxM7ESENSsGWNCFU2EMqUDMGCmPsfLZzz4xsYNk" - }, - { - "name": "rx-lite-aggregates", - "size": 93790, - "multihash": "QmNWxFzD5UfkBmrUxJN7bzc8uRjBne39RqzXXwBdcJxtmi" - }, - { - "name": "safe-buffer", - "size": 33175, - "multihash": "QmZiudomZQkWgJExqfooDmW6eKMs2wzSwSRrgcLHenVDnW" - }, - { - "name": "safe-regex", - "size": 7133, - "multihash": "QmVjKDdxVbHVuunBUF9qf4PhXEioQ1dmSfEDaxVKLSeTcZ" - }, - { - "name": "safer-buffer", - "size": 43620, - "multihash": "QmSHAcfM4sMaEyNfUBBKWvtP2epLWcCR2nvhF62qYBY66E" - }, - { - "name": "sane", - "size": 95308, - "multihash": "Qmaxh4qLNsTVPDERM7RWGgKS7M8Abr9sSfwETPYL2xvFju" - }, - { - "name": "sax", - "size": 55875, - "multihash": "QmdnZvs6Mz5ptkKtuAZa4TDtbMudK1byQdKL6Dwi8xPpyh" - }, - { - "name": "schema-utils", - "size": 12351, - "multihash": "Qma1i98PaeJnuEtBZUYAVeqsw2zdozvBaVDUASidcoW1No" - }, - { - "name": "select-hose", - "size": 8735, - "multihash": "QmSfyk1wM4aPg9M8MnyHZqwrTTbEwxwyfxdeL1TPBKBXK2" - }, - { - "name": "selfsigned", - "size": 22204, - "multihash": "QmSi7bi9SwQbQDpVMesm36GysFhx3PpGvUE7WBh29tvhWG" - }, - { - "name": "semver", - "size": 59064, - "multihash": "QmVdoE5TX25TPPfGSvwqccm487Crd8apGe1QN62nxHiYBu" - }, - { - "name": "semver-diff", - "size": 4439, - "multihash": "QmQvq4bJESkb2EzJVXE3Xx6G5wVLP3LyjrmErbaAQV12yv" - }, - { - "name": "send", - "size": 90515, - "multihash": "Qme6mKGAGNKVqoaqRu6RSVGhgRuY8ZVzEPmGb99UVhfbau" - }, - { - "name": "serialize-javascript", - "size": 12672, - "multihash": "QmYLcjMgoXkETJpzKeAAqJ8hxXJeexf3ej3u9ynzCwEwX4" - }, - { - "name": "serve-favicon", - "size": 51468, - "multihash": "QmSAMFphWPY4yeMP5i4cDvcvGRi37ze4cmf3tzQd7ocWKC" - }, - { - "name": "serve-index", - "size": 101411, - "multihash": "QmZ4DpsPH9UzmdP3psgvAUcHq7tC6rHPG6qm94ATmCtGyr" - }, - { - "name": "serve-static", - "size": 25731, - "multihash": "QmVNjVh4oe2cakXKDg7Xpn36MvxbNzkruWjGxCZ3VcqMyn" - }, - { - "name": "serviceworker-cache-polyfill", - "size": 17768, - "multihash": "QmZpL3bivda18SyMfQLaZpZ3Wsg2zSYFQMU3Yc9nwWEKk3" - }, - { - "name": "set-blocking", - "size": 5449, - "multihash": "QmdM923JvsbWk8XzhcJcnLrvWMgtZKYaQGX7qd7jH8aXZE" - }, - { - "name": "set-immediate-shim", - "size": 2609, - "multihash": "QmYuR3aKXwkEm6xZwaxKbzvPSaaL9dLx19VEVLoLfoLS18" - }, - { - "name": "set-value", - "size": 17494, - "multihash": "QmPsLqS7isscnNCev2tKvjJvttL8nBnsVD6Wwjs7HnozCH" - }, - { - "name": "setimmediate", - "size": 9786, - "multihash": "QmVuB8fiWe5PBhApEdA8txxWgADka5YKJzZS5S1v5hfMjb" - }, - { - "name": "setprototypeof", - "size": 3436, - "multihash": "QmTJuuw8TuyChffi4YfcaiP53ZWnH7EWtDHheFhK1XpuCD" - }, - { - "name": "sha.js", - "size": 32793, - "multihash": "Qma2ywWcRnAWAiS73RuHVdww8BQMJezGmQH7Yz8vXRx7wG" - }, - { - "name": "shallowequal", - "size": 4362, - "multihash": "QmfNZABZMy6SxS1NpEHpe1ZrTnrZEpr6kFYzJf8Vaw8jUR" - }, - { - "name": "shebang-command", - "size": 3950, - "multihash": "QmcVZ3d2cCrH5Po8GKhEaMgGdfbFCSVjHozCAYeiiV3pMk" - }, - { - "name": "shebang-regex", - "size": 3525, - "multihash": "QmVQrvGqnK5N5DCv94wzkWMfPsm7eLNqEP7CG5JEMvGvAc" - }, - { - "name": "shell-quote", - "size": 23834, - "multihash": "QmNzbvsDW4vpqTUrd4SivUuidfDsLUauvdtn2RkEp3kY3E" - }, - { - "name": "shelljs", - "size": 208424, - "multihash": "QmRquwYuWdYCumvTYpwZn1TZbXYbMwAdZHh4ZQa39AkSae" - }, - { - "name": "shellwords", - "size": 4914, - "multihash": "QmZDGM9WRmDWVF6TMcbeqJrNo16PX8gZdfPLHYqod7fPFs" - }, - { - "name": "signal-exit", - "size": 10667, - "multihash": "QmckcrgUb3Ps744TN4BZg7xv4sFSamGAhS7Pek8XLpJcVu" - }, - { - "name": "slash", - "size": 2824, - "multihash": "QmPcTEsoCgYYUgKAtRcVsUhnVkT7K4LHFkp6hvzHL3tEpw" - }, - { - "name": "slice-ansi", - "size": 6298, - "multihash": "QmSaKLpnQWeD5myWU7wuCua7Ki6MHGbvMQbX9ZgUVVpUQ3" - }, - { - "name": "snapdragon", - "size": 819636, - "multihash": "Qmbe6gbpY6FU7gCaGCmvAR7AFCSoaSCC5eZkDJuhEqbHD7" - }, - { - "name": "snapdragon-node", - "size": 66342, - "multihash": "Qmd1nRTWrjz7THPah4FKj6tr6J3o4TAvb5NGZNdR6yTLR8" - }, - { - "name": "snapdragon-util", - "size": 66664, - "multihash": "QmZqWs5PuH3JKvczhMR2md13e9NngDtEGZgEGmYpz5ry2o" - }, - { - "name": "sntp", - "size": 15272, - "multihash": "Qma8c3NqfrWd9mP77nrPPFuoLs5eN2S9by3bLSuAzjfFMK" - }, - { - "name": "sockjs", - "size": 185697, - "multihash": "QmX9pRyV23kvVYyQ4CZ8ymTiWEj4Z9NgHLNh3MUJhQbDwt" - }, - { - "name": "sockjs-client", - "size": 815831, - "multihash": "QmZeGoyXtBVM9LvBZZVpWu4a4t2QAStyyCxPm5WA4eyDtp" - }, - { - "name": "sort-keys", - "size": 4762, - "multihash": "QmYRpuHC6LeB1yvLo9TYNSdused2mLU9RxFYSrL5SwMBNU" - }, - { - "name": "source-list-map", - "size": 27935, - "multihash": "QmfRGBSaZH3Kz4f2DqPC7ZY7HpaWRp2StnirkrVydmJxKM" - }, - { - "name": "source-map", - "size": 809242, - "multihash": "QmaW7WCArAeLWQRXypfKpfqvgT8vZMtA4PFN6SPLQP6zad" - }, - { - "name": "source-map-explorer", - "size": 921390, - "multihash": "QmWaq896PXeL9fhf48spsHJNe17j6FfEMvfz3xyF8r9hD5" - }, - { - "name": "source-map-resolve", - "size": 86417, - "multihash": "QmdYDfddddvEDkegBBq6XpJEE59JM5NZ4fuMtk3eL54KR5" - }, - { - "name": "source-map-support", - "size": 849998, - "multihash": "QmYN3JpjmW7HxC4xkZWQ74vzvJ2aWWQ3eqB4jPsJddNKXE" - }, - { - "name": "source-map-url", - "size": 20264, - "multihash": "QmSwaMMgKKAKY45Y948wVzAVjb4Pi4n4bmxAwXLha7FdTn" - }, - { - "name": "spdx-correct", - "size": 22267, - "multihash": "QmeWTuA1xZ1NcKRtbn3RoLq6wHSr3NgmVFKr1SFMwcxnu4" - }, - { - "name": "spdx-exceptions", - "size": 3587, - "multihash": "QmcVsbvKTd5x3Sk4NBhSt9HSz2YR8BgtAuM2Fa4wrfPB1u" - }, - { - "name": "spdx-expression-parse", - "size": 13944, - "multihash": "QmRYaVUzvA5X12nrkoae5JqfPuBGmPgfrTixQGEXhCrUic" - }, - { - "name": "spdx-license-ids", - "size": 9104, - "multihash": "QmQSacENhRcvDSK3j4sgD6MK8STQkwbEUx449BRseKY94N" - }, - { - "name": "spdy", - "size": 58622, - "multihash": "QmYnpotFH6Drb7zNLcY3fM9rpijEcDMhDvr2urQDdcW8rx" - }, - { - "name": "spdy-transport", - "size": 142274, - "multihash": "QmNP4YPqDYfvzMpeic7522uR7U1epaM21wnAfGjpPNRm7e" - }, - { - "name": "split", - "size": 13038, - "multihash": "QmQ4xKFgK7SeceocZoFt9RKL8HYW5fiGGuXqYHFw5vKpmM" - }, - { - "name": "split-string", - "size": 15058, - "multihash": "QmW6ha2XFJsznBbM5Qqb1Gr7cWYDXd2JcYzyN5cqfY6eeP" - }, - { - "name": "sprintf-js", - "size": 36818, - "multihash": "Qmes3Z3qvwRFoSD2ASEGJacGTSRxNcWuejhJWRCDRXutND" - }, - { - "name": "sshpk", - "size": 211404, - "multihash": "QmWp3DyvoG5evNufDSehXRDzTvPVyi9z7zEQmffnYLQMsu" - }, - { - "name": "ssri", - "size": 41691, - "multihash": "Qmd7PCG4QtXWM7ukP9Gb1ZA5YTenz3KfAywc9cN1MRVpC4" - }, - { - "name": "stable", - "size": 9583, - "multihash": "QmR1BoCZSWss778B85A6tUYPkcpwCQHoDB34rYVvXzTUst" - }, - { - "name": "standard", - "size": 5296083, - "multihash": "QmPujWN4mM1kgYLeUksia5vN6bXucvaVRJnBgceX9yD4m8" - }, - { - "name": "standard-engine", - "size": 75896, - "multihash": "QmTRxUXijZZUEzmNEzJroweS3fP71wWo1oZrnrAa1gr39b" - }, - { - "name": "static-extend", - "size": 12264, - "multihash": "QmZBSo6tqgUy3eYPYq9gtxPfHpaSZDsFPrNraa3XawSpPi" - }, - { - "name": "statuses", - "size": 12458, - "multihash": "QmYQNHPNdS467Q4issAE583KFCM4tQjmVxyDsM4wFpzKhT" - }, - { - "name": "stealthy-require", - "size": 13457, - "multihash": "QmSJWPrVvVLfWrBqkHc7r5BMFZsdhiRZGPbziqeyMpZnSC" - }, - { - "name": "stream-browserify", - "size": 8295, - "multihash": "QmRGdF35LeCnJGmxEbU3NLFJ5WyKZECuK7fGAXnpUu9M6c" - }, - { - "name": "stream-combiner", - "size": 5847, - "multihash": "Qmarwgf8w42dBwFG3j4sbY4etwcN4RZP7DTiXGJjyiZg3d" - }, - { - "name": "stream-each", - "size": 7423, - "multihash": "QmWaPxhDEgczvvheUMECZ324t4crkAmDpRvrQ4ky4U2uhD" - }, - { - "name": "stream-http", - "size": 93825, - "multihash": "QmfUr5A162KjRGAs3iNLSNPgz5iPC1cnPUjJS7zjc9p8mJ" - }, - { - "name": "stream-shift", - "size": 4903, - "multihash": "QmWwAEesEQDH1ZKz19Vc4Pmoj91q4ZosuzhuoZvQPgedSZ" - }, - { - "name": "strict-uri-encode", - "size": 3781, - "multihash": "QmYvTWiwuKoWxewuYA4KPgBinFzhwoEqjK4KzzwvppaF2x" - }, - { - "name": "string-length", - "size": 3969, - "multihash": "QmUtUyCf2sLZuF6bT21b3qZ4q8VYgSwW93d5BEicCFM2LU" - }, - { - "name": "string-width", - "size": 14831, - "multihash": "QmcsfZhG849WDgKNQAuzW3fY2VLt742fWyuV1EAxnktX4e" - }, - { - "name": "string.prototype.padend", - "size": 12135, - "multihash": "QmZqXrrGVSuNYNYviir6Cx9TEj4kHyaLf1YPxf7X2eppX8" - }, - { - "name": "string.prototype.padstart", - "size": 12366, - "multihash": "QmS2RmqCwJ1uyFojN86HZ6q34zCtypxCfoN32G5pKotmj2" - }, - { - "name": "string_decoder", - "size": 15643, - "multihash": "QmaKjx5QsqTtjQefaiQt6cNgnvDT8V8pj91PJAEw59CJC5" - }, - { - "name": "stringstream", - "size": 7424, - "multihash": "QmTgS9VAypwAdA5WtCbdMC8FN2wfFLiS24c6PQNkFH2B3p" - }, - { - "name": "strip-ansi", - "size": 5063, - "multihash": "QmVBSJj9g4oFtoqeV6JYNt56uwdaFfygkE9JhPJcN7T3WT" - }, - { - "name": "strip-bom", - "size": 4344, - "multihash": "QmbWVY5AQyE1UtFoFEHhGoE5UVfyJi6QXps9v9iGLEyEnC" - }, - { - "name": "strip-eof", - "size": 3810, - "multihash": "QmehpyrKKWSzYFv2hwp9K9JR2QpWnik6t4tDRNKeuVbgFq" - }, - { - "name": "strip-indent", - "size": 5270, - "multihash": "QmVf2qThuXxUjU7K3URekfScJZfDGTdPALErEyoLCYbuGL" - }, - { - "name": "strip-json-comments", - "size": 6408, - "multihash": "Qmf8WCYxkAXjQPpQXH4LzLBwbX6GjoaqBuWdchXUFCdPS2" - }, - { - "name": "style-loader", - "size": 39488, - "multihash": "QmWbBDa49fYgFQ5N4Nq534mzrhk34upp7ZtB8PECp2326D" - }, - { - "name": "supports-color", - "size": 8817, - "multihash": "QmXSjQ7CdPYsatA4YBtYWjtS4HqxjGhWk17uuYxP1ua7Pt" - }, - { - "name": "svg-tag-names", - "size": 7250, - "multihash": "QmbAAV4nxyMVDcALjz83tYzPU3zmDbrt2rAMYGMp5jy5QG" - }, - { - "name": "svgo", - "size": 339586, - "multihash": "QmWtvtpKXuTiNXNQX4nLj25ufJM8qjVdhBcfkEYC7Fyy6E" - }, - { - "name": "svgr", - "size": 2901696, - "multihash": "QmSM97mB4JSR7h7WAi6FN5T5pkrhugtVsAQcqTkfmBN4E2" - }, - { - "name": "sw-precache", - "size": 76209, - "multihash": "Qmbp1vNS2jojCE1etVNAEobycZpw3mMoGLXcrmWwFUBCvM" - }, - { - "name": "sw-precache-webpack-plugin", - "size": 184732, - "multihash": "QmRuU1qiCtwdBniRsBc1e6MhsvUyav9AUR4bfTUwF8658B" - }, - { - "name": "sw-toolbox", - "size": 136308, - "multihash": "QmbGNVpHEDxXP9WVgSsjx8cZtfb2ztDrfVz18twKXRpoUR" - }, - { - "name": "symbol-observable", - "size": 12030, - "multihash": "QmW8SgCy2swUntNVdQR7Hcu2ayY9Urgj4auD6B9Y7CpAnx" - }, - { - "name": "symbol-tree", - "size": 58149, - "multihash": "QmPJkneKxHoPC1MRW3zmTEyay3Ld2DKRgNzsnKgqE1P3bZ" - }, - { - "name": "table", - "size": 141545, - "multihash": "QmdhumpJnejrbfa4Dot23KJuKPMgzJrWKV1JGQwW3j57Ch" - }, - { - "name": "tachyons", - "size": 366912, - "multihash": "QmYxv25bBHRqrzr5xear1upPyFZTcwhDp4NXKmhtCdx2HT" - }, - { - "name": "tapable", - "size": 18205, - "multihash": "QmeCs8HCs98onmE1fuTaWX2XprnPdCFRg7kw1x8S6h8zUA" - }, - { - "name": "temp", - "size": 35906, - "multihash": "QmXKRdEPCxbnunm6goqYdhhoDRaG3dDwAdTvXuWfBr6n1L" - }, - { - "name": "term-size", - "size": 32385, - "multihash": "QmfXVJQoRrohzwCgbXTc7JjaJsqcW3pVGQdA5wgjLddTpk" - }, - { - "name": "test-exclude", - "size": 14926, - "multihash": "QmSgGn6VYmG7ruiV8FsCKFHwxzPNTAj5ZNsjRaYk4G7VQW" - }, - { - "name": "text-table", - "size": 12767, - "multihash": "QmTUQH8iZUH4J9upoxdDHFRbEmbTNYX97oGiF23uqj7kBr" - }, - { - "name": "thenify", - "size": 9256, - "multihash": "QmYT64A6c7RAsbqhqihpKfmjbvyroSq8rZTpuXxSpdN3w1" - }, - { - "name": "thenify-all", - "size": 7879, - "multihash": "QmXo2o3NrEtZkNw2CkLzTftc5iy6xx4rvyqofNtkkaXfHX" - }, - { - "name": "throat", - "size": 9281, - "multihash": "QmUFvHvC21jcnYSaLxLenAUXUuavKR8wiLat4pdvKZpbgp" - }, - { - "name": "through", - "size": 14094, - "multihash": "QmSxuj3q3gGyNFFjCdSqqFPtRZKZq1EA3xjJmaGm6Akakp" - }, - { - "name": "through2", - "size": 17661, - "multihash": "QmP2H9mTZB9muf3j9LUnkB1vHCJx8XH3rg29nuffywFGmV" - }, - { - "name": "thunky", - "size": 6981, - "multihash": "QmWRKprAkLkjQmuB3FNY1Y1sCWCPHrJeWt8VdyKTSFE1Cs" - }, - { - "name": "time-stamp", - "size": 9940, - "multihash": "QmdrbC7hWRUNJacCs6ptryccYgccb6BbEj5S2ExpgsXDpk" - }, - { - "name": "timed-out", - "size": 5242, - "multihash": "QmQzBrFh1chAeY6ME1CJBs7BgqdLAhFNgj3en5BXUEpy8Q" - }, - { - "name": "timers-browserify", - "size": 11906, - "multihash": "QmU8MWY2TBjTykcF62MmzRrAScjk2xHfg17EDSvp9sJzar" - }, - { - "name": "tmp", - "size": 27166, - "multihash": "QmU5hKQ6nwxgL8JVS1LivQkNt7KnNkgnVjXaoakcnXxKSo" - }, - { - "name": "tmpl", - "size": 3862, - "multihash": "QmP3zXXwX47QZvBXFr4NB8RkP2xC9cv2VKQbf1CL4br4pF" - }, - { - "name": "to-arraybuffer", - "size": 6249, - "multihash": "QmZadBbiCiu5BE2pMYJMBn7v77tbzNuBX6EjTuXksYoMFB" - }, - { - "name": "to-fast-properties", - "size": 4062, - "multihash": "QmTU58c3KzjPixnDW6eAm25DdC5CTkCvRHoioozdNCSFLq" - }, - { - "name": "to-object-path", - "size": 21039, - "multihash": "QmSXo69nzfzTcx4gNAKCbaBL2n9QaEDhqZoigh9bycV6Xa" - }, - { - "name": "to-regex", - "size": 13814, - "multihash": "QmcMnur99wWh2rEjuMfuJm3x2ZHSAfeL8irBZnzXhdV1eA" - }, - { - "name": "to-regex-range", - "size": 21366, - "multihash": "QmefKFWtsf3x8iEdkV7ha4B3SUdMwUjcSoyeBxNA7eTeFn" - }, - { - "name": "toposort", - "size": 16889, - "multihash": "QmUFCZeymkMw6Sff44HLJp25DRvXyKVnQWKYvgKZijckDR" - }, - { - "name": "tough-cookie", - "size": 270939, - "multihash": "QmQ6dotMSTZ565JvtXD4kAbaeBz58cCxqUJTNpTxRYsGMt" - }, - { - "name": "tr46", - "size": 269306, - "multihash": "QmNpC16eHwUiUeL7Y7VZXEBctD14ap93QN4ZstxRvGv913" - }, - { - "name": "trim-newlines", - "size": 4205, - "multihash": "QmbDS7aGhFSGphbK1uSzNGTnmnDixMdSXUuNyoCXLmJMuo" - }, - { - "name": "trim-right", - "size": 4177, - "multihash": "QmeD11FU1x5Hb2VPesdN6CfVYP5ianhwA8tyiaoxpjMmA1" - }, - { - "name": "tty-browserify", - "size": 3094, - "multihash": "QmW6mFr6fGoStBiHWny1Hnh1MaGNDqspZ51mJNQBuic76V" - }, - { - "name": "tunnel-agent", - "size": 17859, - "multihash": "QmdqJVVhHnGjfr8eBokUVYgpGB5MP2iYL5ko3v9T7pK7vZ" - }, - { - "name": "tweetnacl", - "size": 175531, - "multihash": "QmeHnf4u4ya5XZSyRaWyWSedHASdZiqwWK2iw2rX8FELf5" - }, - { - "name": "type-check", - "size": 22075, - "multihash": "QmYne34cro2EKNDSjC1w7kPmAkfvYCF6JnNiaAyKeUWA51" - }, - { - "name": "type-is", - "size": 18123, - "multihash": "QmV1k5dWPL3YSsHJwguNWx9cvrL6CZvRo9RGiE8hyCceHG" - }, - { - "name": "typedarray", - "size": 27358, - "multihash": "QmRF8Vgn5KiUQwwN4ZsEEnWjwygaoztcka9Zo9s2NWibHN" - }, - { - "name": "ua-parser-js", - "size": 208193, - "multihash": "Qme9rokTUBZJSVjByhUmZfpX6Ajuarrh3bnFNLgCJRjuvT" - }, - { - "name": "uglify-js", - "size": 685734, - "multihash": "QmSsfoWgitFEnDRq5d72skpqAY1wvqkhnUjcPEwmgkATTe" - }, - { - "name": "uglify-to-browserify", - "size": 6096, - "multihash": "QmVF5xMoedCggfpkyTXDL3h3BdJ1dHQLttitgdxUPiuyKz" - }, - { - "name": "uglifyjs-webpack-plugin", - "size": 1872514, - "multihash": "QmeM7Uno1WQaepB7u1VhMabKLC5foe1NVzvQrRBUWWMJHe" - }, - { - "name": "ultron", - "size": 10370, - "multihash": "QmYFqtfqRP1kYu6pBwC56txyD3JdZsB122SMUddVEvCevh" - }, - { - "name": "underscore", - "size": 112197, - "multihash": "QmbovyQ9L17aVAhL16Y7yu95AmipvCw4x6Mdy2x9cfbiSs" - }, - { - "name": "unicode-canonical-property-names-ecmascript", - "size": 5701, - "multihash": "QmVr32GdcKQbDJtrsUPQ7ecVHHeWCCs4N5Za7V5eqwQMrj" - }, - { - "name": "unicode-match-property-ecmascript", - "size": 5848, - "multihash": "QmcMbHMBPUv1FisRtVmFCmbVWs5S1EY25cGVteowQD9Ezb" - }, - { - "name": "unicode-match-property-value-ecmascript", - "size": 24248, - "multihash": "QmdekVg21qvp5VuR7MXAKiHgHdeUHzG7UeAmyQkcoEvLU1" - }, - { - "name": "unicode-property-aliases-ecmascript", - "size": 6530, - "multihash": "QmeTQKdswjy6issnwvj6ejncJwPGroJaqjwJCQW3PbA9Aw" - }, - { - "name": "union-value", - "size": 24092, - "multihash": "QmZDz7t4tgQvGZ2brqGTh2V21Zbr5DEez1KzGZPj21zMUv" - }, - { - "name": "uniq", - "size": 5406, - "multihash": "QmSPQc4qFcc3AVGCzAv16mHrD8FU5SkZMNg57CF5cACo7t" - }, - { - "name": "uniqid", - "size": 7388, - "multihash": "QmZvHb3jSpxHfWefC56ujtzr8whAtk2g9tP47Zzj12FgzT" - }, - { - "name": "uniqs", - "size": 3568, - "multihash": "QmZFe5Qpo6c6FPT2MHkZSHAo9FiddbakEAnEmng1QFSD5P" - }, - { - "name": "unique-filename", - "size": 43109, - "multihash": "QmPzrhoRhSFwrSaFgvEXBPB5Ma6pX9Q7S8WtRutPhmKEdB" - }, - { - "name": "unique-slug", - "size": 3457, - "multihash": "QmVSUf38Czktw1pkAVLZptJ8h2o8ryVNpnSqaMhHV6JxTV" - }, - { - "name": "unique-string", - "size": 3797, - "multihash": "QmRSavRzY74NYoPM3JXEwUqGkuHpZhHyB1XNNTXgcZgzjU" - }, - { - "name": "universalify", - "size": 5469, - "multihash": "QmP7FiwtJdMz7gHK3KaGqiFq6REGKou4rxk8zvd9k3jZU8" - }, - { - "name": "unpipe", - "size": 5566, - "multihash": "QmQrD5CfRXHV68QXuRwbUSmCfxgVhS9mRnCMKmEpp5FzKA" - }, - { - "name": "unquote", - "size": 3374, - "multihash": "QmNZL8QWNBA1xXYTadvPaZG2iRKs51Up3pFzDXB9d1FepT" - }, - { - "name": "unset-value", - "size": 36097, - "multihash": "QmRR7QR5NvMEpCoNmSVeKTQMLfqxCdpCxp5kF3tgAWkw2Q" - }, - { - "name": "unzip-response", - "size": 4730, - "multihash": "QmXTLqxDEiJQxFyGy2dPPpoAGbE58rSwyADsEp73C5A6Pb" - }, - { - "name": "upath", - "size": 34955, - "multihash": "QmctpAfJGjbf8fvUX8vBNZQ8CK53TDDR9sY4DeuwePczSm" - }, - { - "name": "update-notifier", - "size": 43544, - "multihash": "QmUtwpWpf3sN6jLMQerZQ4iwWTWS5htSGujJVM35hP8z9y" - }, - { - "name": "upper-case", - "size": 5692, - "multihash": "QmUGQ9iTvskm5iJNr8HLS5qspYSrnNpR5pz8UkeDhjtFmu" - }, - { - "name": "uri-js", - "size": 540732, - "multihash": "QmXJN2SzQe1BCag14PDtMeWcm1DNVRm2rrS6NRhMcJU7nQ" - }, - { - "name": "urijs", - "size": 223639, - "multihash": "Qmd1Cro3xmCnEhmMUPA3NHrww9FEFtSEHxntdC8pF8QdsL" - }, - { - "name": "urix", - "size": 4865, - "multihash": "QmPZg5SJJYs3okDRrBjiUos2s32XZ9oQwieXqxkiixQuEk" - }, - { - "name": "url", - "size": 101311, - "multihash": "QmTcS7njwUfWmioYJspr8HGVqEWDsshsf9NCPrbn6EDHo2" - }, - { - "name": "url-join", - "size": 10465, - "multihash": "QmcRTZTbDdFweN4MrNhPMGN9ZuVNw48u2q6vrrF6ABkbXu" - }, - { - "name": "url-loader", - "size": 11063, - "multihash": "Qmc3Q71CDcUvMPutzeEtxBbjQwvxrHpPvuTFauKtdKkpPx" - }, - { - "name": "url-parse", - "size": 56164, - "multihash": "QmNhXHWkmeXBeMM28e3VhwMHqxRXDomHYM2n6MDi1eiEmW" - }, - { - "name": "url-parse-lax", - "size": 4919, - "multihash": "QmWhw1zWbuD9JE5VddcyVfKCbLy3irEuyJ6A3v93JM29hR" - }, - { - "name": "use", - "size": 10754, - "multihash": "QmTGo68b9DqMhjWnHxLycBo9wJ2bZHjpnUbDWquFf1VXgZ" - }, - { - "name": "util", - "size": 49337, - "multihash": "QmUGuj7CvJebx1C8EJSRM8CpeoSN1Vu3RX5jEKuUyps1L5" - }, - { - "name": "util-deprecate", - "size": 6694, - "multihash": "QmcMZ8CkYqEtr71doicL18ijXJJ5EdJsharp2yeTAuv297" - }, - { - "name": "util.promisify", - "size": 8002, - "multihash": "QmUiKoVXVSbCY646XeJ7qEUbCEmXmicHahNf8Crh7JGAvv" - }, - { - "name": "utila", - "size": 25878, - "multihash": "QmVD5YHFi6o9qJfhZKrDpAnTSS94kMKZope6Z2nNhTAuyj" - }, - { - "name": "utils-merge", - "size": 4674, - "multihash": "QmTKxKgmzdD7WNVdAuRioXhK43Zd3bgYZvTbT1i8uZ8sRS" - }, - { - "name": "uuid", - "size": 42582, - "multihash": "QmWR8q74jDBd9zVCGmG3HYYWd7skPBYb3UYMrLXsoA17PQ" - }, - { - "name": "validate-npm-package-license", - "size": 18173, - "multihash": "QmWcEmdix5fhWLrs7TjZvzfzpKQP4TUFvXcc2E9n5SiiAW" - }, - { - "name": "value-equal", - "size": 15095, - "multihash": "QmapHKuripSLAT7QrbSUGSd1jcu4XERz71nCRt7gjfMLTM" - }, - { - "name": "varint", - "size": 10415, - "multihash": "QmeC2EF32zKooqMdAUnRCk2PMazPvtvDoCWNQteAceMWQq" - }, - { - "name": "vary", - "size": 9970, - "multihash": "QmZ7NDbTKFfzWhnbaGVfCUrwnRPq1jyKZEqdYnG5xSDwsW" - }, - { - "name": "velocity-animate", - "size": 295344, - "multihash": "QmY9jcRpRbGVj1No4Wm38LZ4kFJrtaJhG7bJVCJyMjbwEe" - }, - { - "name": "velocity-react", - "size": 80165, - "multihash": "QmNekhQtJoUuhoABSEwAbzzbjzNNkCiDeWMT1gAmvr43ey" - }, - { - "name": "vendors", - "size": 5111, - "multihash": "Qma4Lk7DZ5YVqNWfGiCWK6LVafsnmtA1h2sRL7N6e3RY2o" - }, - { - "name": "verror", - "size": 37054, - "multihash": "Qmb3B3VMLw4M14b8wAhpfXLXSsuf1wq6ExvKrWa6ffHT67" - }, - { - "name": "vm-browserify", - "size": 23150, - "multihash": "QmNkz1FjdSEMLmvfbST3P7CZhNYMJNriYc1nPYq6YDKhdT" - }, - { - "name": "walker", - "size": 6867, - "multihash": "QmTquqDcdgrxWDi8A8RCZZmQeX81J8QZ4fYXKrLZP3bddD" - }, - { - "name": "warning", - "size": 9121, - "multihash": "QmNN9emEkbeYBTnYNHFDjVW4tKaskL6iH46SGiWA4WGtMU" - }, - { - "name": "watch", - "size": 20576, - "multihash": "QmahReVgVdoDHKiqaWXP5CG2whNwLgJE1UU8gaugov74CR" - }, - { - "name": "watchpack", - "size": 24089, - "multihash": "QmefF2HZet3vF1kYuHs7CnvsuU7xKjB3Jt2z3YzmmCicR4" - }, - { - "name": "wbuf", - "size": 22011, - "multihash": "Qmcr9FEEvNdmkKY4tzEvfZtZVDxAusCyW7DGNQxgCHVMmF" - }, - { - "name": "webidl-conversions", - "size": 20730, - "multihash": "QmaNp8AHGB6XqqGXmc4HCXfAPK53yLTfmANvLMmRXXfZiN" - }, - { - "name": "webpack", - "size": 2883118, - "multihash": "QmRhzQyBugTmcChggDS1PM3AWcjctVdxaPjTwikxxoLvfX" - }, - { - "name": "webpack-dev-middleware", - "size": 23876, - "multihash": "QmTG5qeYACZZTN6L46vi8ZftUGCxjtT6o78dEtJLxdynzX" - }, - { - "name": "webpack-dev-server", - "size": 1190845, - "multihash": "QmfAW8vNcmneCptbSVyS5s862FkVzhv9WzbmhWsA64TqWw" - }, - { - "name": "webpack-hot-middleware", - "size": 31538, - "multihash": "QmdXzRYvTjppYTrJURwFHtoRWBx5ZiaYPX7aV46F15HZEh" - }, - { - "name": "webpack-manifest-plugin", - "size": 125805, - "multihash": "QmaeLnwKCJbTMcDXGo72KX8QH4vHm2fxPcmD38AxDayapx" - }, - { - "name": "webpack-sources", - "size": 30121, - "multihash": "QmagrtryaUENKEJVxifF4ta9ZcESMaNkR3cyQ3yr4AphzP" - }, - { - "name": "websocket-driver", - "size": 67650, - "multihash": "QmVyPVgvrPr9okZfS8wbpMJytYSH2oeLLUWjDcd84oxK1h" - }, - { - "name": "websocket-extensions", - "size": 56918, - "multihash": "QmPreZTQN1apmMrMzaiafKdecdp5SaLWNu9QaKr4ar2k7Y" - }, - { - "name": "whatwg-encoding", - "size": 352219, - "multihash": "QmQWqkj19heAt2gDLz1BGkfMGRq6oYSdG3WALsHG5JPGT3" - }, - { - "name": "whatwg-fetch", - "size": 24354, - "multihash": "Qmch7Km5aihhnX63php5BDdhu54iESoMDeAShh9zPhYnDf" - }, - { - "name": "whatwg-url", - "size": 65384, - "multihash": "QmWbNiSV8ZaHpvqPreyDSihrvDMv2ipWL4ipkAGfHuzDYi" - }, - { - "name": "whet.extend", - "size": 24342, - "multihash": "QmTuEtUq8bvkMNgxmY7jKasJ7coyvikG6JApmmGAxs2udG" - }, - { - "name": "which", - "size": 10845, - "multihash": "QmRcDzBhLyEDLP9Cmg3c9LNCcHfrucEuxvD8Lfp6GQ65Kq" - }, - { - "name": "which-module", - "size": 5268, - "multihash": "QmZgwtBp6AHyGJ9H71ifh3yofCeE2vGitFPA4yMftoP12q" - }, - { - "name": "wide-align", - "size": 17028, - "multihash": "QmNiWDu89oqEJX3g6mBpGScGohvzVty7qLAm8NW5BrCzQ6" - }, - { - "name": "widest-line", - "size": 4315, - "multihash": "QmPzo1mcpn1qAEuL3RzWSBJS7ZrhWvpqkjQGX1Y8EnoAqB" - }, - { - "name": "window-or-global", - "size": 4864, - "multihash": "QmQDFMsZd7wmX6YcXEsnWTLpyjVSiS9zbH9xV3LYQJY9uL" - }, - { - "name": "window-size", - "size": 4455, - "multihash": "Qmdi8yEcQRNPiAX6FUoX3cqTodPwnQR5CHBiBdfmw59bS3" - }, - { - "name": "window.ipfs-fallback", - "size": 6370, - "multihash": "QmT2bvE1xMfrEcLv7z5SLPgoatxgWMQQnCXNqgCbhFEp5X" - }, - { - "name": "wordwrap", - "size": 38284, - "multihash": "QmVSohGMmVuyzA9NU7ZKuQwmKYMwBtw5Skcy9sArmw7c7x" - }, - { - "name": "worker-farm", - "size": 48947, - "multihash": "QmVT9ZRmQvriZSWWT2EyMi859dYevEKNSWfvazNiiTKHqJ" - }, - { - "name": "wrap-ansi", - "size": 20398, - "multihash": "QmRUbTDcAaTSrbgNAhHaosoxGJ3TXehUdbaa7ezdRAjy6F" - }, - { - "name": "wrappy", - "size": 3967, - "multihash": "QmbDXRZ35WjrKrsxi9oN8wFWF3MRyWh2JzxFCCYzB8C7Aq" - }, - { - "name": "write", - "size": 7966, - "multihash": "QmTSgWCV3EfxZHed9YtwADf5vFceMxCb9pCkdahJCeYjM5" - }, - { - "name": "write-file-atomic", - "size": 10854, - "multihash": "QmYUBogtG3sADtdM4hUB46uPjuxRsqAhwyp4E9u6Qa1yNU" - }, - { - "name": "ws", - "size": 96509, - "multihash": "QmNxPApFD2Y6pSPhQamMrQ4CZyhsko34VYpZT6zJzWJsvq" - }, - { - "name": "xdg-basedir", - "size": 5306, - "multihash": "QmUtAjrQDS4mDQAY22Sezd9KiZ4eTf5tuP71nBWaSBvCmL" - }, - { - "name": "xml-name-validator", - "size": 15075, - "multihash": "QmQkpLYEPdnL76tH5Q4FqpgGiKrNfiKQLhjxVozNnj1q3u" - }, - { - "name": "xtend", - "size": 6624, - "multihash": "QmVcY88oWtt3Mhf2dd71b7a1ZZ4Tz4W12CA8FcnJNB3tZy" - }, - { - "name": "y18n", - "size": 9831, - "multihash": "QmWi3hc7PFjwcCt67GWoo2zPpRQ3NPt4ukiXs4ferS1kS1" - }, - { - "name": "yallist", - "size": 14787, - "multihash": "QmZDojX7hGNiWNjYZkq6XSr9drHNG8WeXFzBp4UJ19EiEP" - }, - { - "name": "yargs", - "size": 277457, - "multihash": "QmfGRTNaSWQ4ytrVFA2EPeQ8iKvUg6xBmD6svmYPSX521d" - }, - { - "name": "yargs-parser", - "size": 44466, - "multihash": "QmPHrZJG4HFSYh26HMRh6CzejrwigUvbPhoCXd9aUyvNTk" - }, - { - "name": "yauzl", - "size": 47873, - "multihash": "QmddegQtekERYxSWo1aCwwxHJzu1o6MRkoKnzu5X1cDrzH" - } - ], - "multihash": "QmQPXjxdsxM7PKp1HVZ3oAXVKLSXoZXFG5CY1evPe4UGCB", - "size": 243148030 -} diff --git a/src/ipld/object-info/fixtures/object-info-36-links.json b/src/ipld/object-info/fixtures/object-info-36-links.json deleted file mode 100644 index ac772b1d9..000000000 --- a/src/ipld/object-info/fixtures/object-info-36-links.json +++ /dev/null @@ -1,187 +0,0 @@ -{ - "data": { "type": "Buffer", "data": [8, 1] }, - "links": [ - { - "name": "20note.jpg", - "size": 54434, - "multihash": "QmPbBHyXAFAjir9PK2thehdcB3xhbSzvtUoy6DvnXiYWRT" - }, - { - "name": "B4B-1BsIUAAVkmX.jpg_large.jpg", - "size": 118997, - "multihash": "QmPHTEb5Zua1W4J6nyGhMTzKYvtHcNYdBnP2cdTLyQUbon" - }, - { - "name": "Bat_Pug.jpg", - "size": 70762, - "multihash": "QmQdYC9vv2bJZdf9b4QvsFWniKH8PhasW23jJ7Z6VRfqru" - }, - { - "name": "Coolio_Gangstas_Paradise.jpg", - "size": 81045, - "multihash": "QmcsPJjdZteiJpHyRXk4pPMsXkdt4GWWczS3BA4ZRQrCe2" - }, - { - "name": "Groucho_Jake.png", - "size": 144966, - "multihash": "QmTwp3rxNrTFEdBW9kKTFuot3WHikJNa2GBsZftdDAUYCB" - }, - { - "name": "Open-University-student-1-012.jpg", - "size": 104449, - "multihash": "Qma4NHJypAtvQ7REcqVB2GDF8PLVUT6q1efMy9CVoYSoWM" - }, - { - "name": "Open-University-teacher.jpg", - "size": 22658, - "multihash": "QmTpYzNdBjNXuga5Pr7qWQNmU3GpbzZ7kRfKuz59CRKiWF" - }, - { - "name": "castro-poster.jpg", - "size": 92277, - "multihash": "QmSBHbQzAukRfypFBQ23BbC42JNqQVLrRm1QrmD2Neg91L" - }, - { - "name": "castro-space.jpg", - "size": 527755, - "multihash": "QmNSKCS45LmFsueywZiQm3uekM8wdPTpq8UrdMF9ggEuYZ" - }, - { - "name": "chill-marmot.jpg", - "size": 2005867, - "multihash": "Qmc1yZDsbWM8ztLqfUXfaJpuQpvJeGjbAXfjes7zCWjSDg" - }, - { - "name": "fear-nothing.jpeg", - "size": 11709, - "multihash": "QmULGntFFKatKrxK1bsWpegZjHEVME7R2uPrhFGPpNgJPW" - }, - { - "name": "gitter.png", - "size": 2948, - "multihash": "QmRYAjKGgLBoSi6uFLZxqkn4K4iyKrkm8ruM5RbUhZQzRf" - }, - { - "name": "gotta-let-me-fly.png", - "size": 370240, - "multihash": "QmeUxPvfoG2YQ88YirQQhjR7VvdX5pXNgpXVoUKHbRQsyt" - }, - { - "name": "io.donkey.png", - "size": 77727, - "multihash": "QmZvzUNRwKm2F9ctRdtcbNNezpaCiJGU3mTQ7HukUdXw92" - }, - { - "name": "johnny-five-wave.jpg", - "size": 185787, - "multihash": "QmbPDi8ftPvgaEkwMpgswcEW4vLuLw3p6j4SMhV85qRzwb" - }, - { - "name": "kno-that.jpg", - "size": 39879, - "multihash": "QmW2FYwwpZbEAYcmnr4Sin9oEQ4VsptiKM2bJutPNogdCp" - }, - { - "name": "look-around-you-modules.jpg", - "size": 59493, - "multihash": "QmWWGBCJ9SpW89ijP7sZmjVs68PSvpJEkFgSiVsGv2qcMR" - }, - { - "name": "marmot-1.jpg", - "size": 50665, - "multihash": "QmNP4V1Kj78CvRXoVhq6d22LVsFCeMFMLxWqCbpA6j3khP" - }, - { - "name": "maths-textbook-1.jpg", - "size": 52334, - "multihash": "QmTKA1zSEiah8aSg6ivyZBMPoXbGjzmD5SHzGMwv14Pedg" - }, - { - "name": "openuniversity.jpg", - "size": 178806, - "multihash": "QmSHmaXDHQwLfw4Tujg7ncMdXYZfmkLcgCxq63BVi5qVUE" - }, - { - "name": "slow.jpg", - "size": 30271, - "multihash": "QmUgGdzqyXo34J8qoKshMWDaRSK2jQX64Q5V13j6Wh8cbF" - }, - { - "name": "space-castro-0.png", - "size": 71955, - "multihash": "Qmd2oCfHTEY3o2fTLtALoGhYDtjXKopQy8W71tFNu7NbDY" - }, - { - "name": "space-castro.jpg", - "size": 31724, - "multihash": "QmUhW6ooLfdHEcvjo5CoYqKyFduD1ugBtgiNh3d9eFzufK" - }, - { - "name": "space-castro.png", - "size": 71950, - "multihash": "QmUrvJATkh5GQXAS7jA9BQQQnTZT7VegipkEa4HoqnoHVy" - }, - { - "name": "space1.jpg", - "size": 4959883, - "multihash": "QmX7Rnn4KgP9F9mJ4c5ycJQNYFDcGv7TLZKpWxDGoe6fpn" - }, - { - "name": "squatconf-anton-udt.jpg", - "size": 806259, - "multihash": "Qmf1Fv7Rv2oqwE7RWx2XYFNKanbg6FsdP1Y9EACuZvaggJ" - }, - { - "name": "squatconf-hack.jpg", - "size": 135980, - "multihash": "QmZzVsZaw55iDWWdLf2ZgEZxmUQ54ZTfL4ti6cmyfEtMxc" - }, - { - "name": "squatconf-hanger-56-paris.jpg", - "size": 111281, - "multihash": "QmP9DzCHthFjiNFJcUvT2toAcJ569Z6FAQSbxcJRXxuWfa" - }, - { - "name": "squatconf-i-dont-always-tweet.jpg", - "size": 54599, - "multihash": "Qmd9ER8aS3i6fXfik75u1153YKTruFGj4g6j2Hv5gqvP5Z" - }, - { - "name": "tuxwithfriends.png", - "size": 3077323, - "multihash": "QmY6GVyRNN5VfLQXDB7NDZLLqytFJYvRBEBWVw7gtykiPH" - }, - { - "name": "wBWTqlpxkI.l.jpg", - "size": 115972, - "multihash": "Qma4spcV13w3nt1NvFsVkjTQRSA5ubjTmTebDP1LKDMaNg" - }, - { - "name": "wDx-GTJxn1.l.jpg", - "size": 106031, - "multihash": "QmZMwGuF3T1Dr1Xzf4k2VU43d5XXhKDKWjBkHfRv7LwYYr" - }, - { - "name": "wat.jpg", - "size": 49191, - "multihash": "QmUg83rf4YYuEX4XFom3Nu4jVFfRJNeEs7gTKJt8ygQzK7" - }, - { - "name": "woohoo.jpg", - "size": 19145, - "multihash": "QmXqyYtHXzd6AjfLefhALB7fc9EcNLYBPxBFm1FWipqLnQ" - }, - { - "name": "yep-its-wood.jpg", - "size": 48273, - "multihash": "QmXYyaSRVGZXcNrgB3fZfDqxy5Tev9a4x8NJuEjXwd1ikv" - }, - { - "name": "yuriy.jpg", - "size": 143485, - "multihash": "QmSzbrYK5sWd1A6guzfH8mambRq8qEErb9w9ZYTMRptCBD" - } - ], - "multihash": "QmWKryJRmxyHnyhMiaGXYBBsogqGrz9zx7r6kyMjD4AxBZ", - "size": 14088343 -} diff --git a/src/ipld/object-info/fixtures/object-info-8-links.json b/src/ipld/object-info/fixtures/object-info-8-links.json deleted file mode 100644 index e11a8c8eb..000000000 --- a/src/ipld/object-info/fixtures/object-info-8-links.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "data": { "type": "Buffer", "data": [8, 1] }, - "links": [ - { - "name": "contact-ipfs", - "size": 5814, - "multihash": "QmXdUm5xgmmFK5ykH3Yvk2PFtL9eDs4FGJ9wpScXUMVsU1" - }, - { - "name": "css", - "size": 42684, - "multihash": "QmRNaib6Pz2PUVLpEbMkEdETu5cup77Dtkief58o4NRPaM" - }, - { - "name": "docs", - "size": 6750964, - "multihash": "QmSNmHbujerGN3ZmtXdkUY1MoRhULFQztV4tRWpXW8pjkV" - }, - { - "name": "fonts", - "size": 914365, - "multihash": "QmX7GQcyrVaKnS24y6nvU4LEB9hkcK5TkxoxRBaGFUUD6Q" - }, - { - "name": "images", - "size": 1509477, - "multihash": "QmZMWv34NMLbhBxWysqViFdiMkGf4WtfXc5GQDnV8NWo5J" - }, - { - "name": "index.html", - "size": 17069, - "multihash": "Qme8Kh3QbmeBjDZEVTmL6NEf8AWQZr6vyBpoxqC3WwmScc" - }, - { - "name": "js", - "size": 755010, - "multihash": "QmSGnYkR3jJFPfooK7HZbam4418fpSRsCbtLpxMeikciTS" - }, - { - "name": "legal", - "size": 5726, - "multihash": "QmaXsRWbBAxTF7Z4SrScHitj4CvjyCcnCjqXwBLgnkpP5W" - }, - { - "name": "media", - "size": 12900, - "multihash": "QmYMe5tKxTQdyNL7Vs9QtehBTci6F1CDYYkeo9wFdoVSE7" - }, - { - "name": "sitemap.xml", - "size": 2202, - "multihash": "QmbBZGoTh58At3D5uvr5HzCqRtPp39rZeydtPE2isW3gEq" - } - ], - "multihash": "QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW", - "size": 10016715 -} diff --git a/src/lib/cbor.js b/src/lib/cbor.js index 3631a454c..a141525b4 100644 --- a/src/lib/cbor.js +++ b/src/lib/cbor.js @@ -1,4 +1,4 @@ -import {toCidStrOrNull} from './dag' +import { toCidStrOrNull } from './cid' export function isPathInThisNode (node, path) { if (!path) return true @@ -19,25 +19,40 @@ export function findFirstLinkInPath (node, path) { const parts = path.split('/').filter(p => !!p) if (parts.length === 0) return null let current = node - let link = null + let linkCid = null let index = 0 - while (current && !link) { - const p = parts[index++] - current = current[p] - link = current ? toCidStrOrNull(current['/']) : null + while (current && !linkCid) { + const key = parts[index++] + current = current[key] + linkCid = current ? toCidStrOrNull(current['/']) : null + } + if (!linkCid) return null + const linkPath = '/' + parts.slice(0, index).join('/') + return {linkCid, linkPath} +} + +export async function findCid (getIpfs, cid, path) { + const {value: node} = await getIpfs().dag.get(cid) + // until ipfs.dag.resolve is available, we have to walk the path to find the nearest cid. + // dag.resolve https://github.com/ipfs/js-ipfs-api/pull/755#issuecomment-386882099 + const firstLinkCid = findFirstLinkInPath(node, path) + if (!firstLinkCid) { + // we're in the right node. + return cid + } else { + return findCid(getIpfs, firstLinkCid, path) } - return link } -export async function findCid (getIpfs, node, rootCid, rest) { +export async function findPathBoundaries (getIpfs, cid, path, nodes = []) { + const {value: node} = await getIpfs().dag.get(cid) // until ipfs.dag.resolve is available, we have to walk the path to find the nearest cid. // dag.resolve https://github.com/ipfs/js-ipfs-api/pull/755#issuecomment-386882099 - const firstLinkCid = findFirstLinkInPath(node, rest) + const firstLinkCid = findFirstLinkInPath(node, path) if (!firstLinkCid) { // we're in the right node. - return rootCid + return cid } else { - const {value: nextNode} = await getIpfs().dag.get(firstLinkCid) - return findCid(getIpfs, nextNode, firstLinkCid, rest) + return findCid(getIpfs, firstLinkCid, path) } } diff --git a/src/lib/cbor.test.js b/src/lib/cbor.test.js index c1addf39c..564f6d31d 100644 --- a/src/lib/cbor.test.js +++ b/src/lib/cbor.test.js @@ -5,7 +5,7 @@ it('handles nested ipld links', () => { const nested = { a: { b: { - c: { + a: { '/': 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW' } } @@ -15,8 +15,8 @@ it('handles nested ipld links', () => { expect(isPathInThisNode(nested, '/')).toBe(true) expect(isPathInThisNode(nested, '/a')).toBe(true) expect(isPathInThisNode(nested, '/a/b')).toBe(true) - // "c" resolves to it's link target QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW, not this node. - expect(isPathInThisNode(nested, '/a/b/c')).toBe(false) + // "a/b/a" resolves to it's link target QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW, not this node. + expect(isPathInThisNode(nested, '/a/b/a')).toBe(false) }) it('handles arrays ipld links', () => { @@ -45,7 +45,7 @@ it('finds links in nested ipld paths', () => { const nested = { a: { b: { - c: { + a: { '/': 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW' } } @@ -56,5 +56,6 @@ it('finds links in nested ipld paths', () => { expect(findFirstLinkInPath(nested, '/a')).toBe(null) expect(findFirstLinkInPath(nested, '/a/b')).toBe(null) // "c" resolves to it's link target QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW, not this node. - expect(findFirstLinkInPath(nested, '/a/b/c')).toBe('QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW') + expect(findFirstLinkInPath(nested, '/a/b/a')).toEqual({linkCid: 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW', linkPath: '/a/b/a'}) + expect(findFirstLinkInPath(nested, '/a/b/a/c/d')).toEqual({linkCid: 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW', linkPath: '/a/b/a'}) }) diff --git a/src/lib/cid.js b/src/lib/cid.js index 837a980d7..5d60191b6 100644 --- a/src/lib/cid.js +++ b/src/lib/cid.js @@ -3,6 +3,17 @@ const multihash = require('multihashes') const multibaseConstants = require('multibase/src/constants') const mutlicodecVarintTable = require('multicodec/src/varint-table') +export function toCidStrOrNull (value) { + if (!value) return null + try { + const cid = new CID(value) + return cid.toBaseEncodedString() + } catch (err) { + console.log('Failed to parse CID', value, err) + return null + } +} + export function cidToHuman (value) { const data = decodeCid(value) return { diff --git a/src/lib/dag.js b/src/lib/dag.js index a0c319174..7e6866eeb 100644 --- a/src/lib/dag.js +++ b/src/lib/dag.js @@ -1,15 +1,32 @@ import { DAGNode } from 'ipld-dag-pb' import unixfs from 'ipfs-unixfs' -import CID from 'cids' +import { toCidStrOrNull } from './cid' -export function explainDagNode (node) { +/** + * Provide a uniform shape for all^ node types. + * + * Spare the rest of the codebase from having to cope with all possible node + * shapes. + * + * ^: currently dag-cbor and dag-pb are supported. + * + * @param {Object} node a DagNode instance or an CBOR object from `ipfs.dag.get` + * @param {String} cid the cid string passed to `ipfs.dag.get` + */ +export function normaliseDagNode (node, cid) { if (DAGNode.isDAGNode(node)) { - return explainDagPb(node) + return normaliseDagPb(node, cid) } - return explainDagCbor(node) + return normaliseDagCbor(node, cid) } -export function explainDagPb (node) { +/* + * Normalize links and add type info. Add unixfs info where available + */ +export function normaliseDagPb (node, cid) { + if (toCidStrOrNull(node.multihash) !== cid) { + throw new Error('dag-pb multihash should match provided cid') + } node = node.toJSON() let format try { @@ -19,48 +36,56 @@ export function explainDagPb (node) { format = `unixfs` } catch (err) { // dag-pb but not a unixfs. - console.log(err) + // console.log(err) } + return { + cid, type: 'dag-pb', - format, - ...node + data: node.data, + links: normaliseDagPbLinks(node), + size: node.size, + format } } -export function explainDagCbor (obj) { - const links = findIpldLinks(obj) +/* + * Convert DagLink shape into normalized form that can be used interchangeably + * with links found in dag-cbor + */ +export function normaliseDagPbLinks (node) { + return node.links.map(({name, size, multihash}) => ({ + path: name, + source: node.multihash, + target: multihash, + size + })) +} + +/* + * Find links and add type and cid info + */ +export function normaliseDagCbor (obj, cid) { + const links = findDagCborLinks(obj, cid) return { - type: 'dag-cbor', + cid, + type: 'dag-cbor', // TODO: extract from cid, to support more exotic types. data: obj, links: links } } -export function toCidStrOrNull (value) { - try { - const cid = new CID(value) - return cid.toBaseEncodedString() - } catch (err) { - return null - } -} - -// valid link... -// must be object with single "/" property. -// -// [ -// 'a/b/c': zHash, -// 'other': zHash -// ] -export function findIpldLinks (obj, name = '') { +/** + * A valid IPLD link in a dag-cbor node is an object with single "/" property. + */ +export function findDagCborLinks (obj, sourceCid, path = '') { if (!obj || !typeof obj === 'object' || Buffer.isBuffer(obj) || typeof obj === 'string') { return [] } if (Array.isArray(obj)) { return obj - .map((val, i) => findIpldLinks(val, name ? `${name}/${i}` : `${i}`)) + .map((val, i) => findDagCborLinks(val, sourceCid, path ? `${path}/${i}` : `${i}`)) .reduce((a, b) => a.concat(b)) .filter(a => !!a) } @@ -68,13 +93,12 @@ export function findIpldLinks (obj, name = '') { const keys = Object.keys(obj) if (keys.length === 1 && keys[0] === '/') { - const multihash = toCidStrOrNull(obj['/']) - if (!multihash) return [] - return [{name, multihash}] + const target = toCidStrOrNull(obj['/']) + if (!target) return [] + return [{path, source: sourceCid, target}] } else if (keys.length > 0) { - // recurse return keys - .map(key => findIpldLinks(obj[key], name ? `${name}/${key}` : `${key}`)) + .map(key => findDagCborLinks(obj[key], sourceCid, path ? `${path}/${key}` : `${key}`)) .reduce((a, b) => a.concat(b)) .filter(a => !!a) } else { diff --git a/src/lib/dag.test.js b/src/lib/dag.test.js index 9df4b407a..0b577e9b5 100644 --- a/src/lib/dag.test.js +++ b/src/lib/dag.test.js @@ -1,14 +1,14 @@ /* global it expect */ -import { findIpldLinks } from './dag' +import { findDagCborLinks } from './dag' it('finds minimal ipld links', () => { const minimal = { '/': 'zdpuAzR6UUgm6FLcpUVPH2U2JGteR8rLrM57BzZqJPnjAmTy4' } - const res = findIpldLinks(minimal) + const res = findDagCborLinks(minimal) expect(res.length).toBe(1) - expect(res[0].name).toBe('') - expect(res[0].multihash).toBe(minimal['/']) + expect(res[0].path).toBe('') + expect(res[0].target).toBe(minimal['/']) }) it('finds nested ipld links', () => { @@ -21,10 +21,10 @@ it('finds nested ipld links', () => { } } } - const res = findIpldLinks(nested) + const res = findDagCborLinks(nested) expect(res.length).toBe(1) - expect(res[0].name).toBe('a/b/c') - expect(res[0].multihash).toBe(nested.a.b.c['/']) + expect(res[0].path).toBe('a/b/c') + expect(res[0].target).toBe(nested.a.b.c['/']) }) it('finds multiple ipld links', () => { @@ -39,12 +39,12 @@ it('finds multiple ipld links', () => { '/': 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW' } } - const res = findIpldLinks(multiple) + const res = findDagCborLinks(multiple) expect(res.length).toBe(2) - expect(res[0].name).toBe('a') - expect(res[0].multihash).toBe(multiple.a['/']) - expect(res[1].name).toBe('c') - expect(res[1].multihash).toBe(multiple.c['/']) + expect(res[0].path).toBe('a') + expect(res[0].target).toBe(multiple.a['/']) + expect(res[1].path).toBe('c') + expect(res[1].target).toBe(multiple.c['/']) }) it('finds ipld links in arrays', () => { @@ -60,10 +60,10 @@ it('finds ipld links in arrays', () => { }, 'nope' ] - const res = findIpldLinks(arr) + const res = findDagCborLinks(arr) expect(res.length).toBe(2) - expect(res[0].name).toBe('0') - expect(res[0].multihash).toBe(arr[0]['/']) - expect(res[1].name).toBe('2') - expect(res[1].multihash).toBe(arr[2]['/']) + expect(res[0].path).toBe('0') + expect(res[0].target).toBe(arr[0]['/']) + expect(res[1].path).toBe('2') + expect(res[1].target).toBe(arr[2]['/']) }) diff --git a/src/lib/path.js b/src/lib/path.js index de2fc4355..651e02168 100644 --- a/src/lib/path.js +++ b/src/lib/path.js @@ -1,10 +1,91 @@ +import { normaliseDagNode } from './dag' + +/** + * Walk an IPLD path to find all the nodes and path boundaries it traverses. + * + * Normalizes nodes into a common structure: + * + * ```js + * { cid: String, type: 'dag-cbor' | 'dag-pb', data: Object, links: [{cid, name}] } + * ``` + * + * Path boundaries capture the source and target cid where a path traverses a link: + * + * ```js + * { linkPath: 'a/b', source: `zdpHash1` target: `zdpHash2`' } + * ``` + * + * Usage: + * ```js + * const res = resolveIpldPath(getIpfs, 'zdpuHash' '/favourites/0/a/css') + * const {targetNode, canonicalPath, localPath, nodes, pathBoundaries} = res + * ``` + * Where: + * - `targetNode` is the normalised node that the path lands in. + * - `canonicalPath` is the shortest cid + path that can be used to locate the targetNode + * - `localPath` is the tail part of the path that is local to the targetNode. May be '' + * - `nodes` is the array of nodes that the path traverses. + * - `pathBoundaries` is the array of links that the path traverses. + * + * @param {function()} getIpfs ipfs accessor + * @param {string} sourceCid the root hash + * @param {string} path everything after the hash + * @param {Object[]} nodes accumulated node info + * @param {Object[]} pathBoundaries accumulated path boundary info + * @returns {{targetNode: Object, canonicalPath: String, localPath: String, nodes: Object[], pathBoundaries: Object[]}} resolved path info + */ +export async function resolveIpldPath (getIpfs, sourceCid, path, nodes = [], pathBoundaries = []) { + // TODO: find out why ipfs.dag.get with localResolve never resolves. + // const {value, remainderPath} = await getIpfs().dag.get(sourceCid, path, {localResolve: true}) + const {value} = await getIpfs().dag.get(sourceCid) + + const node = normaliseDagNode(value, sourceCid) + nodes.push(node) + + const link = findPathBoundaryLink(node, path) + if (link) { + pathBoundaries.push(link) + const relPath = path.startsWith('/') ? path.substring(1) : path + const remainderPath = relPath.replace(link.path, '') + // Go again, using the link.target as the sourceCid, and the remainderPath as the path. + return resolveIpldPath(getIpfs, link.target, remainderPath, nodes, pathBoundaries) + } + + // we made it to the containing node. Hand back the info + const canonicalPath = path ? `${sourceCid}${path}` : sourceCid + let targetNode = node + return {targetNode, canonicalPath, localPath: path, nodes, pathBoundaries} +} + +/** + * Find the link that must be traversed to resolve the path or null if none. + * + * @param {Object} node a `normalisedDagNode` + * @param {Object} path an IPLD path string + * @returns {Object} the first link you hit while traversing the path or null + */ +export function findPathBoundaryLink (node, path) { + if (!path) return null + if (!node) return null + const {links} = node + const normalisedPath = path.startsWith('/') ? path.substring(1) : path + const link = links.reduce((longest, link) => { + if (link && normalisedPath.startsWith(link.path)) { + if (!longest || link.path.length > longest.path.length) { + return link + } + } + return longest + }, null) + return link +} + /* Capture groups 1 1: ipns | ipfs | ipld 2: CID | fqdn 3: /rest */ - const pathRegEx = /(\/(ipns|ipfs|ipld)\/)?([^/]+)(\/.*)?/ export function quickSplitPath (str) { diff --git a/src/lib/path.test.js b/src/lib/path.test.js new file mode 100644 index 000000000..f72075ec9 --- /dev/null +++ b/src/lib/path.test.js @@ -0,0 +1,155 @@ +/* global it expect jest */ +import {DAGNode} from 'ipld-dag-pb' +import { + resolveIpldPath, + findPathBoundaryLink +} from './path.js' + +it('resolves all nodes traversed along a path', async () => { + const dagGetMock = jest.fn() + const getIpfsMock = () => ({dag: {get: dagGetMock}}) + const cid = 'zdpuAs8sJjcmsPUfB1bUViftCZ8usnvs2cXrPH6MDyT4zrvSs' + const path = '/a/b/a' + const linkCid = 'zdpuAyzU5ahAKr5YV24J5TqrDX8PhzHLMkxx69oVzkBDWHnjq' + const dagGetRes1 = { + remainderPath: 'a', + value: { + a: { + b: { + '/': linkCid + } + } + } + } + const dagGetRes2 = { + remainderPath: '', + value: 'hello world' + } + + dagGetMock.mockReturnValueOnce(Promise.resolve(dagGetRes1)) + dagGetMock.mockReturnValueOnce(Promise.resolve(dagGetRes2)) + + const res = await resolveIpldPath(getIpfsMock, cid, path) + + expect(dagGetMock.mock.calls.length).toBe(2) + expect(res.canonicalPath).toBe(`${linkCid}/a`) + expect(res.nodes.length).toBe(2) + expect(res.nodes[0].type).toBe('dag-cbor') + expect(res.nodes[0].cid).toBe(cid) + expect(res.nodes[1].type).toBe('dag-cbor') + expect(res.nodes[1].cid).toBe(linkCid) + expect(res.pathBoundaries.length).toBe(1) + expect(res.pathBoundaries[0]).toEqual({ + path: 'a/b', + source: cid, + target: linkCid + }) +}) + +it('resolves thru dag-cbor to dag-pb to dag-pb', async () => { + const dagGetMock = jest.fn() + const getIpfsMock = () => ({dag: {get: dagGetMock}}) + + const cid = 'zdpuAs8sJjcmsPUfB1bUViftCZ8usnvs2cXrPH6MDyT4zrvSs' + const path = '/a/b/pb1' + + const dagNode3 = await createDagPbNode(Buffer.from('the second pb node'), []) + + const dagNode2 = await createDagPbNode(Buffer.from('the first pb node'), [{ + name: 'pb1', + multihash: dagNode3.toJSON().multihash, + size: 101 + }]) + + const dagNode1 = { + a: { + b: { + '/': dagNode2.toJSON().multihash + } + } + } + + const dagGetRes1 = { + remainderPath: 'pb1', + value: dagNode1 + } + + const dagGetRes2 = { + remainderPath: '', + value: dagNode2 + } + + const dagGetRes3 = { + remainderPath: '', + value: dagNode3 + } + + dagGetMock.mockReturnValueOnce(Promise.resolve(dagGetRes1)) + dagGetMock.mockReturnValueOnce(Promise.resolve(dagGetRes2)) + dagGetMock.mockReturnValueOnce(Promise.resolve(dagGetRes3)) + + const res = await resolveIpldPath(getIpfsMock, cid, path) + + expect(dagGetMock.mock.calls.length).toBe(3) + expect(res.targetNode.cid).toEqual(dagNode3.toJSON().multihash) + expect(res.canonicalPath).toBe(dagNode3.toJSON().multihash) + expect(res.nodes.length).toBe(3) + expect(res.nodes[0].type).toBe('dag-cbor') + expect(res.nodes[0].cid).toBe(cid) + expect(res.nodes[0].links.length).toBe(1) + expect(res.nodes[1].type).toBe('dag-pb') + expect(res.nodes[1].cid).toBe(dagNode2.toJSON().multihash) + expect(res.nodes[1].links.length).toBe(1) + expect(res.nodes[2].type).toBe('dag-pb') + expect(res.nodes[2].cid).toBe(dagNode3.toJSON().multihash) + expect(res.nodes[2].links.length).toBe(0) + expect(res.pathBoundaries.length).toBe(2) + expect(res.pathBoundaries[0]).toEqual({ + path: 'a/b', + source: cid, + target: dagNode2.toJSON().multihash + }) + expect(res.pathBoundaries[1]).toEqual({ + path: 'pb1', + size: dagNode2.toJSON().links[0].size, + source: dagNode2.toJSON().multihash, + target: dagNode3.toJSON().multihash + }) +}) + +function createDagPbNode (data, links) { + return new Promise((resolve, reject) => { + DAGNode.create(data, links, (err, dagNode) => { + if (err) return reject(err) + resolve(dagNode) + }) + }) +} + +it('finds the path boundary link in a dag-cbor ipld path', () => { + const normalisedCborNode = { + cid: 'zdpuAs8sJjcmsPUfB1bUViftCZ8usnvs2cXrPH6MDyT4zrvSs', + type: 'dag-cbor', + data: { + a: { + b: { + a: { + '/': 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW' + } + } + } + }, + links: [{ + path: 'a/b/a', + source: 'zdpuAs8sJjcmsPUfB1bUViftCZ8usnvs2cXrPH6MDyT4zrvSs', + target: 'QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW' + }] + } + expect(findPathBoundaryLink(normalisedCborNode, '')).toBe(null) + expect(findPathBoundaryLink(normalisedCborNode, '/')).toBe(null) + expect(findPathBoundaryLink(normalisedCborNode, '/a')).toBe(null) + expect(findPathBoundaryLink(normalisedCborNode, '/a/b')).toBe(null) + // "c" resolves to it's link target QmYPNmahJAvkMTU6tDx5zvhEkoLzEFeTDz6azDCSNqzKkW, not this node. + expect(findPathBoundaryLink(normalisedCborNode, '/a/b/a')).toEqual(normalisedCborNode.links[0]) + expect(findPathBoundaryLink(normalisedCborNode, '/a/b/a/c/d')).toEqual(normalisedCborNode.links[0]) +}) diff --git a/src/loader/Loader.js b/src/loader/Loader.js index 52bcd9ac5..86cc27877 100644 --- a/src/loader/Loader.js +++ b/src/loader/Loader.js @@ -1,11 +1,12 @@ import React from 'react' import './Loader.css' -export const Loader = props => { +export const Loader = ({color = 'light', ...props}) => { + const className = `dib la-ball-triangle-path la-${color} la-sm` return (