├── README.md ├── git-remote-hypergit.js ├── package-lock.json └── package.json /README.md: -------------------------------------------------------------------------------- 1 | # git-remote-hypergit 2 | 3 | > [git remote helper](http://git-scm.com/docs/git-remote-helpers) for 4 | > peer-to-peer `hypergit://` git repos 5 | 6 | ## Install 7 | 8 | ``` 9 | npm install --global git-remote-hypergit 10 | ``` 11 | 12 | ## Usage 13 | 14 | ``` 15 | git clone hypergit://... 16 | ``` 17 | 18 | ## Contributors 19 | 20 | With hypergit, each project participant has their own hypergit repo. There is no 21 | "origin" central authority. 22 | 23 | - @noffle: `hypergit://7ea2a9970f74f3a4a70652462f8d9e6f4f3abfd37571df279f71d1db8e004a52` 24 | 25 | If you'd like your hypergit added, open a PR. 26 | 27 | ## License 28 | 29 | non-commercial 30 | -------------------------------------------------------------------------------- /git-remote-hypergit.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var path = require('path') 4 | var fs = require('fs') 5 | var toPull = require('stream-to-pull-stream') 6 | var pull = require('pull-stream') 7 | var hyperdb = require('hyperdb') 8 | var Repo = require('hyperdb-git-repo') 9 | var gitRemoteHelper = require('pull-git-remote-helper') 10 | var discovery = require('discovery-swarm') 11 | var swarmDefaults = require('dat-swarm-defaults') 12 | var debug = require('debug')('git-remote-hypergit') 13 | var envpaths = require('env-paths')('hypergit') 14 | var mkdirp = require('mkdirp') 15 | var tmpdir = require('os').tmpdir() 16 | var ncp = require('ncp') 17 | 18 | function swarmReplicate (db, cb) { 19 | var repoKey = db.key.toString('hex') 20 | debug('id', repoKey) 21 | console.error('Seeking peers..') 22 | var swarm = discovery(swarmDefaults({ 23 | id: db.local.key 24 | })) 25 | swarm.listen(2341) // TODO: pick free port 26 | swarm.join(repoKey) 27 | var seen = {} 28 | seen[db.local.key.toString('hex')] = true 29 | var active = [] 30 | var done = new Buffer(1) 31 | var replicated = 0 32 | setTimeout(function () { 33 | if (!active.length && !replicated) { 34 | console.error('timeout (no peers available for this repo)') 35 | swarm.leave(repoKey) 36 | swarm.destroy(cb.bind(null, null, replicated)) 37 | } 38 | }, 15000) 39 | swarm.on('connection', function (conn, info) { 40 | if (seen[key]) return 41 | seen[key] = true 42 | var key = info.id.toString('hex') 43 | 44 | debug('found peer', key) 45 | console.error('Replicating with peer..') 46 | 47 | var r = db.replicate({live:false}) 48 | r.pipe(conn).pipe(r) 49 | active.push(key) 50 | 51 | r.once('end', function () { 52 | debug('done replicating', key) 53 | console.error('..done!') 54 | replicated++ 55 | if (active.indexOf(key) === -1) return 56 | active.splice(active.indexOf(key), 1) 57 | if (!active.length) { 58 | swarm.leave(repoKey) 59 | swarm.destroy(cb.bind(null, null, replicated)) 60 | } 61 | }) 62 | r.once('error', function (err) { 63 | debug('failed replicating', key) 64 | console.error('..failed! (' + err.message + ')') 65 | if (active.indexOf(key) === -1) return 66 | active.splice(active.indexOf(key), 1) 67 | if (!active.length) { 68 | swarm.leave(repoKey) 69 | swarm.destroy(cb.bind(null, null, replicated)) 70 | } 71 | }) 72 | }) 73 | /* 74 | // TODO: dont crash here on info.id === undefined 75 | swarm.on('connection-closed', function (conn, info) { 76 | console.log('info', info) 77 | var key = info.id.toString('hex') 78 | debug('lost connection ', key) 79 | if (active.indexOf(key) === -1) return 80 | console.error('..failed! (lost connection)') 81 | active.splice(active.indexOf(key), 1) 82 | if (!active.length) { 83 | swarm.leave(repoKey) 84 | swarm.destroy(cb.bind(null, null, replicated)) 85 | } 86 | }) 87 | */ 88 | } 89 | 90 | var key = process.argv[3].replace('hypergit://', '') 91 | 92 | var dbpath = path.join(envpaths.config, key) 93 | var tmpdbpath = path.join(tmpdir, key + '-' + String(Math.random()).substring(3)) 94 | 95 | // Only consult the swarm on an initial 'git clone' 96 | var doSwarm = true 97 | if (fs.existsSync(dbpath)) doSwarm = false 98 | 99 | mkdirp.sync(tmpdbpath) 100 | var db = hyperdb(tmpdbpath, key) 101 | 102 | db.ready(function () { 103 | if (doSwarm) swarmReplicate(db, done) 104 | else done(null, Infinity) 105 | 106 | function done (err, numReplicated) { 107 | if (!numReplicated) { 108 | console.error('Failed to find any peers for this repo.') 109 | return process.exit(1) 110 | } 111 | 112 | // make real repo + copy 113 | mkdirp.sync(dbpath) 114 | ncp(tmpdbpath, dbpath, function (err) { 115 | if (err) throw err 116 | var realdb = hyperdb(dbpath, key) 117 | pull( 118 | toPull(process.stdin), 119 | gitRemoteHelper(Repo(realdb)), 120 | toPull(process.stdout) 121 | ) 122 | }) 123 | } 124 | }) 125 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "git-remote-hypergit", 3 | "version": "2.0.4", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "array-lru": { 8 | "version": "1.1.1", 9 | "resolved": "https://registry.npmjs.org/array-lru/-/array-lru-1.1.1.tgz", 10 | "integrity": "sha1-DH4bTgIq4Wb/HoRIxZXzGB/NMzc=" 11 | }, 12 | "asyncmemo": { 13 | "version": "1.0.0", 14 | "resolved": "https://registry.npmjs.org/asyncmemo/-/asyncmemo-1.0.0.tgz", 15 | "integrity": "sha1-7ySdyGnWwH59/UoiyKGIULs51/E=" 16 | }, 17 | "atomic-batcher": { 18 | "version": "1.0.2", 19 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 20 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 21 | }, 22 | "bencode": { 23 | "version": "1.0.0", 24 | "resolved": "https://registry.npmjs.org/bencode/-/bencode-1.0.0.tgz", 25 | "integrity": "sha512-N+VOSP5MkoX+xgnp6Y056iCY5TmCZg9rgPNPQe0bIiXchxYFP4vs/Tf0dTdQ+qQhP7HM2gvfFq+sUVjQsGy5Zw==", 26 | "requires": { 27 | "safe-buffer": "5.1.2" 28 | } 29 | }, 30 | "bitfield-rle": { 31 | "version": "2.1.0", 32 | "resolved": "https://registry.npmjs.org/bitfield-rle/-/bitfield-rle-2.1.0.tgz", 33 | "integrity": "sha1-rinpOCp7pImN6fSLsj/TOMT73Pg=", 34 | "requires": { 35 | "varint": "4.0.1" 36 | }, 37 | "dependencies": { 38 | "varint": { 39 | "version": "4.0.1", 40 | "resolved": "https://registry.npmjs.org/varint/-/varint-4.0.1.tgz", 41 | "integrity": "sha1-SQgpuULSSEY7KzUJeZXDv3NxmOk=" 42 | } 43 | } 44 | }, 45 | "bittorrent-dht": { 46 | "version": "7.10.0", 47 | "resolved": "https://registry.npmjs.org/bittorrent-dht/-/bittorrent-dht-7.10.0.tgz", 48 | "integrity": "sha512-fvb6M58Ceiv/S94nu6zeaiMoJvUYOeIqRbgaClm+kJTzCAqJPtAR/31pXNYB5iEReOoKqQB5zY33gY0W6ZRWQQ==", 49 | "requires": { 50 | "bencode": "1.0.0", 51 | "buffer-equals": "1.0.4", 52 | "debug": "3.1.0", 53 | "inherits": "2.0.3", 54 | "k-bucket": "3.3.1", 55 | "k-rpc": "4.3.1", 56 | "lru": "3.1.0", 57 | "randombytes": "2.0.6", 58 | "safe-buffer": "5.1.2", 59 | "simple-sha1": "2.1.1" 60 | } 61 | }, 62 | "blake2b": { 63 | "version": "2.1.2", 64 | "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.2.tgz", 65 | "integrity": "sha1-aIDt3KNc/t6SxPsnJCITNPmJFFo=", 66 | "requires": { 67 | "blake2b-wasm": "1.1.7", 68 | "nanoassert": "1.1.0" 69 | } 70 | }, 71 | "blake2b-wasm": { 72 | "version": "1.1.7", 73 | "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", 74 | "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", 75 | "requires": { 76 | "nanoassert": "1.1.0" 77 | } 78 | }, 79 | "buffer-alloc": { 80 | "version": "1.2.0", 81 | "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", 82 | "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", 83 | "requires": { 84 | "buffer-alloc-unsafe": "1.1.0", 85 | "buffer-fill": "1.0.0" 86 | } 87 | }, 88 | "buffer-alloc-unsafe": { 89 | "version": "1.1.0", 90 | "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", 91 | "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" 92 | }, 93 | "buffer-equals": { 94 | "version": "1.0.4", 95 | "resolved": "https://registry.npmjs.org/buffer-equals/-/buffer-equals-1.0.4.tgz", 96 | "integrity": "sha1-A1O1T9B/2VZBcGca5vZrnPENJ/U=" 97 | }, 98 | "buffer-fill": { 99 | "version": "1.0.0", 100 | "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", 101 | "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" 102 | }, 103 | "buffer-from": { 104 | "version": "1.1.0", 105 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", 106 | "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==" 107 | }, 108 | "bulk-write-stream": { 109 | "version": "1.1.4", 110 | "resolved": "https://registry.npmjs.org/bulk-write-stream/-/bulk-write-stream-1.1.4.tgz", 111 | "integrity": "sha512-GtKwd/4etuk1hNeprXoESBO1RSeRYJMXKf+O0qHmWdUomLT8ysNEfX/4bZFXr3BK6eukpHiEnhY2uMtEHDM2ng==", 112 | "requires": { 113 | "buffer-from": "1.1.0", 114 | "inherits": "2.0.3", 115 | "readable-stream": "2.3.6" 116 | } 117 | }, 118 | "circular-append-file": { 119 | "version": "1.0.1", 120 | "resolved": "https://registry.npmjs.org/circular-append-file/-/circular-append-file-1.0.1.tgz", 121 | "integrity": "sha512-BUDFvrBTCdeVhg9E05PX4XgMegk6xWB69uGwyuATEg7PMfa9lGU1mzFSK0xWNW2O0i9CAQHN0oIdXI/kI2hPkg==", 122 | "requires": { 123 | "multistream": "2.1.1" 124 | } 125 | }, 126 | "codecs": { 127 | "version": "1.2.1", 128 | "resolved": "https://registry.npmjs.org/codecs/-/codecs-1.2.1.tgz", 129 | "integrity": "sha512-SPnx+ZHXVJ0qTInRXmnxuyu8PDvSzvop5MXp1BOr/urFQI3yL2n5ewE755skTklF/hKVlWj8cinGxdR2gvLvTA==" 130 | }, 131 | "compare": { 132 | "version": "2.0.0", 133 | "resolved": "https://registry.npmjs.org/compare/-/compare-2.0.0.tgz", 134 | "integrity": "sha512-FXeLLVm09Uh7Updmmx2NCCRG2nMq+mdY3DR9PqhVeOrie3IFU+occFQoqziFkHlTUDw8mDgmdblIZ+J9tsSAUA==" 135 | }, 136 | "connections": { 137 | "version": "1.4.2", 138 | "resolved": "https://registry.npmjs.org/connections/-/connections-1.4.2.tgz", 139 | "integrity": "sha1-eJBIK/XHGvbFyhkr4xNq7XRCiq0=" 140 | }, 141 | "core-util-is": { 142 | "version": "1.0.2", 143 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 144 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 145 | }, 146 | "dat-swarm-defaults": { 147 | "version": "1.0.1", 148 | "resolved": "https://registry.npmjs.org/dat-swarm-defaults/-/dat-swarm-defaults-1.0.1.tgz", 149 | "integrity": "sha512-T2WlO7BVmN9USchefsP8entQiByIlJLGuzHLL9qEqOBkyKB8p0Y7XPWxP8dcL43+SkeoxU5NVe7O0bsi3xL8Jg==", 150 | "requires": { 151 | "xtend": "4.0.1" 152 | } 153 | }, 154 | "debug": { 155 | "version": "3.1.0", 156 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 157 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 158 | "requires": { 159 | "ms": "2.0.0" 160 | } 161 | }, 162 | "discovery-channel": { 163 | "version": "5.5.1", 164 | "resolved": "https://registry.npmjs.org/discovery-channel/-/discovery-channel-5.5.1.tgz", 165 | "integrity": "sha512-EEmZQFE0PiOsJj7G3KVCwFGbYs4QchUvzA91iHtZ6HfkIqfBEDSTGLygJrUlY1Tr77WDV+qZVrZuNghHxSL/vw==", 166 | "requires": { 167 | "bittorrent-dht": "7.10.0", 168 | "buffer-from": "1.1.0", 169 | "debug": "2.6.9", 170 | "dns-discovery": "6.1.0", 171 | "pretty-hash": "1.0.1", 172 | "thunky": "0.1.0" 173 | }, 174 | "dependencies": { 175 | "debug": { 176 | "version": "2.6.9", 177 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 178 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 179 | "requires": { 180 | "ms": "2.0.0" 181 | } 182 | }, 183 | "thunky": { 184 | "version": "0.1.0", 185 | "resolved": "https://registry.npmjs.org/thunky/-/thunky-0.1.0.tgz", 186 | "integrity": "sha1-vzAUaCTituZ7Dy16Ssi+smkIaE4=" 187 | } 188 | } 189 | }, 190 | "discovery-swarm": { 191 | "version": "5.1.1", 192 | "resolved": "https://registry.npmjs.org/discovery-swarm/-/discovery-swarm-5.1.1.tgz", 193 | "integrity": "sha512-r38993qP/fcuAlNLSOwGZUps1inzNA4wXkIkv/piwFDseyIWNjYyk/4DHGxyf/bWMB86gPWIUdA6AhydkWmgdA==", 194 | "requires": { 195 | "buffer-equals": "1.0.4", 196 | "connections": "1.4.2", 197 | "debug": "2.6.9", 198 | "discovery-channel": "5.5.1", 199 | "length-prefixed-message": "3.0.3", 200 | "pump": "1.0.3", 201 | "to-buffer": "1.1.1", 202 | "utp-native": "1.7.1" 203 | }, 204 | "dependencies": { 205 | "debug": { 206 | "version": "2.6.9", 207 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 208 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 209 | "requires": { 210 | "ms": "2.0.0" 211 | } 212 | } 213 | } 214 | }, 215 | "dns-discovery": { 216 | "version": "6.1.0", 217 | "resolved": "https://registry.npmjs.org/dns-discovery/-/dns-discovery-6.1.0.tgz", 218 | "integrity": "sha512-Kl2tL2zuNR1w6SnsoRaqrOFm7gGP3/i/HzRXtyVBqaOq/5L1D2TUdViUAZ8e/NDbt+jQCJFWoaKCnmDC343usQ==", 219 | "requires": { 220 | "circular-append-file": "1.0.1", 221 | "debug": "2.6.9", 222 | "dns-socket": "3.0.0", 223 | "lru": "2.0.1", 224 | "minimist": "1.2.0", 225 | "multicast-dns": "7.0.0", 226 | "network-address": "1.1.2", 227 | "pump": "3.0.0", 228 | "speedometer": "1.0.0", 229 | "unordered-set": "1.1.0" 230 | }, 231 | "dependencies": { 232 | "debug": { 233 | "version": "2.6.9", 234 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 235 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 236 | "requires": { 237 | "ms": "2.0.0" 238 | } 239 | }, 240 | "lru": { 241 | "version": "2.0.1", 242 | "resolved": "https://registry.npmjs.org/lru/-/lru-2.0.1.tgz", 243 | "integrity": "sha1-+XmHHhYuP1yiVL5GhExT1MU2RUQ=", 244 | "requires": { 245 | "inherits": "2.0.3" 246 | } 247 | }, 248 | "minimist": { 249 | "version": "1.2.0", 250 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 251 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 252 | }, 253 | "pump": { 254 | "version": "3.0.0", 255 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 256 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 257 | "requires": { 258 | "end-of-stream": "1.4.1", 259 | "once": "1.4.0" 260 | } 261 | }, 262 | "unordered-set": { 263 | "version": "1.1.0", 264 | "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-1.1.0.tgz", 265 | "integrity": "sha1-K6fvMW7dC5WQzFR8dPdqLxZP7Mo=" 266 | } 267 | } 268 | }, 269 | "dns-packet": { 270 | "version": "4.2.0", 271 | "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-4.2.0.tgz", 272 | "integrity": "sha512-bn1AKpfkFbm0MIioOMHZ5qJzl2uypdBwI4nYNsqvhjsegBhcKJUlCrMPWLx6JEezRjxZmxhtIz/FkBEur2l8Cw==", 273 | "requires": { 274 | "ip": "1.1.5", 275 | "safe-buffer": "5.1.2" 276 | } 277 | }, 278 | "dns-socket": { 279 | "version": "3.0.0", 280 | "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-3.0.0.tgz", 281 | "integrity": "sha512-M0WkByoJ/mTm+HtwBQLsRJPe5uGIC/lYVOp+s6ZzhbZ5iq4GxjFyxYPQhB85dgCLvVb43aJQXHDC9aUgyKGc/Q==", 282 | "requires": { 283 | "dns-packet": "4.2.0" 284 | } 285 | }, 286 | "end-of-stream": { 287 | "version": "1.4.1", 288 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 289 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 290 | "requires": { 291 | "once": "1.4.0" 292 | } 293 | }, 294 | "env-paths": { 295 | "version": "1.0.0", 296 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz", 297 | "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=" 298 | }, 299 | "flat-tree": { 300 | "version": "1.6.0", 301 | "resolved": "https://registry.npmjs.org/flat-tree/-/flat-tree-1.6.0.tgz", 302 | "integrity": "sha1-/KMM3bkAb7ZW6168ea6ydOf96e0=" 303 | }, 304 | "from2": { 305 | "version": "2.3.0", 306 | "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", 307 | "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", 308 | "requires": { 309 | "inherits": "2.0.3", 310 | "readable-stream": "2.3.6" 311 | } 312 | }, 313 | "git-packidx-parser": { 314 | "version": "1.0.0", 315 | "resolved": "https://registry.npmjs.org/git-packidx-parser/-/git-packidx-parser-1.0.0.tgz", 316 | "integrity": "sha1-xX0RRe7BZGWrm/vfV1JisWkWJNY=", 317 | "requires": { 318 | "through": "2.2.7" 319 | } 320 | }, 321 | "hypercore": { 322 | "version": "6.15.0", 323 | "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-6.15.0.tgz", 324 | "integrity": "sha512-H/CyPXt7QYFRRnplmX0O8sAoic/HCJLOtcfZNBl4yXukPhZyiiI6D56xjLTyK3FoMnNOHOviemo7lGsno1nRsA==", 325 | "requires": { 326 | "array-lru": "1.1.1", 327 | "atomic-batcher": "1.0.2", 328 | "bitfield-rle": "2.1.0", 329 | "buffer-alloc-unsafe": "1.1.0", 330 | "buffer-equals": "1.0.4", 331 | "buffer-from": "1.1.0", 332 | "bulk-write-stream": "1.1.4", 333 | "codecs": "1.2.1", 334 | "flat-tree": "1.6.0", 335 | "from2": "2.3.0", 336 | "hypercore-protocol": "6.6.4", 337 | "inherits": "2.0.3", 338 | "last-one-wins": "1.0.4", 339 | "memory-pager": "1.1.0", 340 | "merkle-tree-stream": "3.0.3", 341 | "process-nextick-args": "1.0.7", 342 | "random-access-file": "2.0.1", 343 | "sodium-universal": "2.0.0", 344 | "sparse-bitfield": "3.0.3", 345 | "thunky": "1.0.2", 346 | "uint64be": "2.0.2", 347 | "unordered-array-remove": "1.0.2", 348 | "unordered-set": "2.0.0" 349 | }, 350 | "dependencies": { 351 | "process-nextick-args": { 352 | "version": "1.0.7", 353 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 354 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" 355 | } 356 | } 357 | }, 358 | "hypercore-protocol": { 359 | "version": "6.6.4", 360 | "resolved": "https://registry.npmjs.org/hypercore-protocol/-/hypercore-protocol-6.6.4.tgz", 361 | "integrity": "sha512-9TU7P+uve0e5v1ZiBx70DFhkpepW4iNSGYlZthK+Unm0EbZ+Yppc6clH7JTffPBNUMSnDrE552MfXMilpCHZMw==", 362 | "requires": { 363 | "buffer-alloc-unsafe": "1.1.0", 364 | "buffer-from": "1.1.0", 365 | "inherits": "2.0.3", 366 | "protocol-buffers-encodings": "1.1.0", 367 | "readable-stream": "2.3.6", 368 | "sodium-universal": "2.0.0", 369 | "sorted-indexof": "1.0.0", 370 | "varint": "5.0.0" 371 | } 372 | }, 373 | "hyperdb": { 374 | "version": "3.1.2", 375 | "resolved": "https://registry.npmjs.org/hyperdb/-/hyperdb-3.1.2.tgz", 376 | "integrity": "sha512-BGGyIRmsJ8z94n0VGzn9KXON13I0doEPlorJM9ocZW9VnN4KvlITEaJv4LZE+lGgkrEYUItiYwNCN2Ff7KeDnw==", 377 | "requires": { 378 | "array-lru": "1.1.1", 379 | "bulk-write-stream": "1.1.4", 380 | "codecs": "1.2.1", 381 | "compare": "2.0.0", 382 | "hypercore": "6.15.0", 383 | "hypercore-protocol": "6.6.4", 384 | "inherits": "2.0.3", 385 | "mutexify": "1.2.0", 386 | "nanoiterator": "1.2.0", 387 | "protocol-buffers-encodings": "1.1.0", 388 | "random-access-file": "2.0.1", 389 | "sodium-universal": "2.0.0", 390 | "thunky": "1.0.2", 391 | "unordered-array-remove": "1.0.2", 392 | "unordered-set": "2.0.0", 393 | "varint": "5.0.0" 394 | } 395 | }, 396 | "hyperdb-git-repo": { 397 | "version": "1.0.2", 398 | "resolved": "https://registry.npmjs.org/hyperdb-git-repo/-/hyperdb-git-repo-1.0.2.tgz", 399 | "integrity": "sha512-WkLTIf8tQOmwEi1byopLLO4MIa9ePYUxKO4ivgtzNGxscpZKDyCtf+HP3NobQ6c70DkpeAIIpYCdjC1ty4uDeg==", 400 | "requires": { 401 | "debug": "3.1.0", 402 | "hyperdb": "3.1.2", 403 | "pull-git-remote-helper": "2.0.0", 404 | "pull-hash": "1.0.0", 405 | "pull-stream": "3.6.8", 406 | "stream-to-pull-stream": "1.7.2" 407 | } 408 | }, 409 | "inherits": { 410 | "version": "2.0.3", 411 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 412 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 413 | }, 414 | "ini": { 415 | "version": "1.3.5", 416 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 417 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", 418 | "optional": true 419 | }, 420 | "ip": { 421 | "version": "1.1.5", 422 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", 423 | "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" 424 | }, 425 | "isarray": { 426 | "version": "1.0.0", 427 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 428 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 429 | }, 430 | "k-bucket": { 431 | "version": "3.3.1", 432 | "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-3.3.1.tgz", 433 | "integrity": "sha512-kgwWqYT79rAahn4maIVTP8dIe+m1KulufWW+f1bB9DlZrRFiGpZ4iJOg2HUp4xJYBWONP3+rOPIWF/RXABU6mw==", 434 | "requires": { 435 | "buffer-equals": "1.0.4", 436 | "inherits": "2.0.3", 437 | "randombytes": "2.0.6" 438 | } 439 | }, 440 | "k-rpc": { 441 | "version": "4.3.1", 442 | "resolved": "https://registry.npmjs.org/k-rpc/-/k-rpc-4.3.1.tgz", 443 | "integrity": "sha512-mgAJZeFYbpP0xzJzmS0TQTYoFI0sjy3GnKFhg8wyboL+KvWg2WLaA2Oy9PthLPx2Rxz4WeBMk4y3MSOrDJ95FA==", 444 | "requires": { 445 | "buffer-equals": "1.0.4", 446 | "k-bucket": "4.0.1", 447 | "k-rpc-socket": "1.8.0", 448 | "randombytes": "2.0.6", 449 | "safe-buffer": "5.1.2" 450 | }, 451 | "dependencies": { 452 | "k-bucket": { 453 | "version": "4.0.1", 454 | "resolved": "https://registry.npmjs.org/k-bucket/-/k-bucket-4.0.1.tgz", 455 | "integrity": "sha512-YvDpmY3waI999h1zZoW1rJ04fZrgZ+5PAlVmvwDHT6YO/Q1AOhdel07xsKy9eAvJjQ9xZV1wz3rXKqEfaWvlcQ==", 456 | "requires": { 457 | "inherits": "2.0.3", 458 | "randombytes": "2.0.6" 459 | } 460 | } 461 | } 462 | }, 463 | "k-rpc-socket": { 464 | "version": "1.8.0", 465 | "resolved": "https://registry.npmjs.org/k-rpc-socket/-/k-rpc-socket-1.8.0.tgz", 466 | "integrity": "sha512-f/9TynsO8YYjZ6JjNNtSSH7CJcIHcio1buy3zqByGxb/GX8AWLdL6FZEWTrN8V3/J7W4/E0ZTQQ+Jt2rVq7ELg==", 467 | "requires": { 468 | "bencode": "2.0.0", 469 | "buffer-equals": "1.0.4", 470 | "safe-buffer": "5.1.2" 471 | }, 472 | "dependencies": { 473 | "bencode": { 474 | "version": "2.0.0", 475 | "resolved": "https://registry.npmjs.org/bencode/-/bencode-2.0.0.tgz", 476 | "integrity": "sha512-wr2HwwrUpfB5c68zmAudOltC7rZ1G0+lQOcnuEcfIM3AWAVnB3rHI3nlgd/2CWTfQ3w3zagKt89zni/M+VLZ8g==", 477 | "requires": { 478 | "safe-buffer": "5.1.2" 479 | } 480 | } 481 | } 482 | }, 483 | "last-one-wins": { 484 | "version": "1.0.4", 485 | "resolved": "https://registry.npmjs.org/last-one-wins/-/last-one-wins-1.0.4.tgz", 486 | "integrity": "sha1-wb/Qy8tGeQ7JFWuNGu6Py4bNoio=" 487 | }, 488 | "length-prefixed-message": { 489 | "version": "3.0.3", 490 | "resolved": "https://registry.npmjs.org/length-prefixed-message/-/length-prefixed-message-3.0.3.tgz", 491 | "integrity": "sha1-JFR01pq8BhTco2jcNaqAdJgqI6w=", 492 | "requires": { 493 | "varint": "3.0.1" 494 | }, 495 | "dependencies": { 496 | "varint": { 497 | "version": "3.0.1", 498 | "resolved": "https://registry.npmjs.org/varint/-/varint-3.0.1.tgz", 499 | "integrity": "sha1-nT9T4DbAqxIACnS8LSTL8JOlgdk=" 500 | } 501 | } 502 | }, 503 | "looper": { 504 | "version": "4.0.0", 505 | "resolved": "https://registry.npmjs.org/looper/-/looper-4.0.0.tgz", 506 | "integrity": "sha1-dwat7VmpntygbmtUu4bI7BnJUVU=" 507 | }, 508 | "lru": { 509 | "version": "3.1.0", 510 | "resolved": "https://registry.npmjs.org/lru/-/lru-3.1.0.tgz", 511 | "integrity": "sha1-6n+4VG2DczOWoTCR12z+tMBoN9U=", 512 | "requires": { 513 | "inherits": "2.0.3" 514 | } 515 | }, 516 | "memory-pager": { 517 | "version": "1.1.0", 518 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.1.0.tgz", 519 | "integrity": "sha512-Mf9OHV/Y7h6YWDxTzX/b4ZZ4oh9NSXblQL8dtPCOomOtZciEHxePR78+uHFLLlsk01A6jVHhHsQZZ/WcIPpnzg==" 520 | }, 521 | "merkle-tree-stream": { 522 | "version": "3.0.3", 523 | "resolved": "https://registry.npmjs.org/merkle-tree-stream/-/merkle-tree-stream-3.0.3.tgz", 524 | "integrity": "sha1-+KBkdg0355eK1fn208EZpJT1cIE=", 525 | "requires": { 526 | "flat-tree": "1.6.0", 527 | "readable-stream": "2.3.6" 528 | } 529 | }, 530 | "minimist": { 531 | "version": "0.0.8", 532 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 533 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 534 | }, 535 | "mkdirp": { 536 | "version": "0.5.1", 537 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 538 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 539 | "requires": { 540 | "minimist": "0.0.8" 541 | } 542 | }, 543 | "ms": { 544 | "version": "2.0.0", 545 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 546 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 547 | }, 548 | "multicast-dns": { 549 | "version": "7.0.0", 550 | "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.0.0.tgz", 551 | "integrity": "sha512-BqB5TtIXHo+8gN33N1CA1clsvPsAJlnc6D49SzfQA0xq75cxj15g2y9NaRdf4x2u4v1P66PBC+Wg6YgPO5Bc/g==", 552 | "requires": { 553 | "dns-packet": "4.2.0", 554 | "thunky": "1.0.2" 555 | } 556 | }, 557 | "multicb": { 558 | "version": "1.2.2", 559 | "resolved": "https://registry.npmjs.org/multicb/-/multicb-1.2.2.tgz", 560 | "integrity": "sha512-PZM4dhYFmCF6uZGWpEmoPMUqJBywS9IcAgybT2GmSpYI1BvGvoWSdbio+ik+q/YD2vodhvslESWIS3NnkKYdqQ==" 561 | }, 562 | "multistream": { 563 | "version": "2.1.1", 564 | "resolved": "https://registry.npmjs.org/multistream/-/multistream-2.1.1.tgz", 565 | "integrity": "sha512-xasv76hl6nr1dEy3lPvy7Ej7K/Lx3O/FCvwge8PeVJpciPPoNCbaANcNiBug3IpdvTveZUcAV0DJzdnUDMesNQ==", 566 | "requires": { 567 | "inherits": "2.0.3", 568 | "readable-stream": "2.3.6" 569 | } 570 | }, 571 | "mutexify": { 572 | "version": "1.2.0", 573 | "resolved": "https://registry.npmjs.org/mutexify/-/mutexify-1.2.0.tgz", 574 | "integrity": "sha512-oprzxd2zhfrJqEuB98qc1dRMMonClBQ57UPDjnbcrah4orEMTq1jq3+AcdFe5ePzdbJXI7zmdhfftIdMnhYFoQ==" 575 | }, 576 | "nan": { 577 | "version": "2.10.0", 578 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 579 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", 580 | "optional": true 581 | }, 582 | "nanoassert": { 583 | "version": "1.1.0", 584 | "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", 585 | "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" 586 | }, 587 | "nanoiterator": { 588 | "version": "1.2.0", 589 | "resolved": "https://registry.npmjs.org/nanoiterator/-/nanoiterator-1.2.0.tgz", 590 | "integrity": "sha512-Ybp8yZQDvjgqjrER+jlvZ2m/qzhK7gakNTKFDs84OLPrzsHcSbsFczJlNkDmyBlYldxFEO3JT3gwBWCN9nj8aQ==", 591 | "requires": { 592 | "inherits": "2.0.3", 593 | "readable-stream": "2.3.6" 594 | } 595 | }, 596 | "network-address": { 597 | "version": "1.1.2", 598 | "resolved": "https://registry.npmjs.org/network-address/-/network-address-1.1.2.tgz", 599 | "integrity": "sha1-Sqe/1D8D8LgclwKxPWqFjdsybz4=" 600 | }, 601 | "node-gyp-build": { 602 | "version": "3.3.0", 603 | "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.3.0.tgz", 604 | "integrity": "sha512-SNtBzznpPggc7mY8XTfnYBywd9OGN99bwnxGKFqud9erYJMbwnJn6B8HXER2dy8iOYr6Nf2SzBQoJjV8gdM4Nw==", 605 | "optional": true 606 | }, 607 | "once": { 608 | "version": "1.4.0", 609 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 610 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 611 | "requires": { 612 | "wrappy": "1.0.2" 613 | } 614 | }, 615 | "pako": { 616 | "version": "1.0.6", 617 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", 618 | "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==" 619 | }, 620 | "pretty-hash": { 621 | "version": "1.0.1", 622 | "resolved": "https://registry.npmjs.org/pretty-hash/-/pretty-hash-1.0.1.tgz", 623 | "integrity": "sha1-FuBXkYje9WvbVliSvNBaXWUySAc=" 624 | }, 625 | "process-nextick-args": { 626 | "version": "2.0.0", 627 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 628 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" 629 | }, 630 | "progress": { 631 | "version": "1.1.8", 632 | "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", 633 | "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=" 634 | }, 635 | "protocol-buffers-encodings": { 636 | "version": "1.1.0", 637 | "resolved": "https://registry.npmjs.org/protocol-buffers-encodings/-/protocol-buffers-encodings-1.1.0.tgz", 638 | "integrity": "sha512-SmjEuAf3hc3h3rWZ6V1YaaQw2MNJWK848gLJgzx/sefOJdNLujKinJVXIS0q2cBQpQn2Q32TinawZyDZPzm4kQ==", 639 | "requires": { 640 | "signed-varint": "2.0.1", 641 | "varint": "5.0.0" 642 | } 643 | }, 644 | "pull-buffered": { 645 | "version": "0.3.4", 646 | "resolved": "https://registry.npmjs.org/pull-buffered/-/pull-buffered-0.3.4.tgz", 647 | "integrity": "sha512-rs5MtSaB1LQfXyer2uderwS4ypsTdmh9VC4wZC0WZsIBKqHiy7tFqNZ0QP1ln544N+yQGXEBRbwYn59iO6Ub9w==", 648 | "requires": { 649 | "pull-looper": "1.0.0" 650 | } 651 | }, 652 | "pull-cache": { 653 | "version": "0.0.0", 654 | "resolved": "https://registry.npmjs.org/pull-cache/-/pull-cache-0.0.0.tgz", 655 | "integrity": "sha1-+bgfpons8qLY8Q94rOY71YmA57s=" 656 | }, 657 | "pull-cat": { 658 | "version": "1.1.11", 659 | "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", 660 | "integrity": "sha1-tkLdElXaN2pwa220+pYvX9t0wxs=" 661 | }, 662 | "pull-git-pack": { 663 | "version": "1.0.2", 664 | "resolved": "https://registry.npmjs.org/pull-git-pack/-/pull-git-pack-1.0.2.tgz", 665 | "integrity": "sha512-WZzAAs9ap+QBHliP3E7sCn9kRfMNbdtFVOU0wRRtbY8x6+SUGeCpIkeYUcl9K/KgkL+2XZeyKXzPZ688IyfMbQ==", 666 | "requires": { 667 | "pako": "1.0.6", 668 | "pull-buffered": "0.3.4", 669 | "pull-cat": "1.1.11", 670 | "pull-git-packidx-parser": "1.0.0", 671 | "pull-looper": "1.0.0", 672 | "pull-stream": "3.6.8", 673 | "stream-to-pull-stream": "1.7.2" 674 | } 675 | }, 676 | "pull-git-packidx-parser": { 677 | "version": "1.0.0", 678 | "resolved": "https://registry.npmjs.org/pull-git-packidx-parser/-/pull-git-packidx-parser-1.0.0.tgz", 679 | "integrity": "sha1-LYvwr+SCSJfuA4QL/k9ahq/syiE=", 680 | "requires": { 681 | "pull-stream": "3.6.8" 682 | } 683 | }, 684 | "pull-git-remote-helper": { 685 | "version": "2.0.0", 686 | "resolved": "https://registry.npmjs.org/pull-git-remote-helper/-/pull-git-remote-helper-2.0.0.tgz", 687 | "integrity": "sha1-coUmnKCWhGbjgSQx3cKsNX3xQb4=", 688 | "requires": { 689 | "multicb": "1.2.2", 690 | "progress": "1.1.8", 691 | "pull-buffered": "0.3.4", 692 | "pull-cache": "0.0.0", 693 | "pull-cat": "1.1.11", 694 | "pull-git-pack": "1.0.2", 695 | "pull-git-repo": "1.2.1", 696 | "pull-hash": "1.0.0", 697 | "pull-stream": "3.6.8", 698 | "stream-to-pull-stream": "1.7.2" 699 | } 700 | }, 701 | "pull-git-repo": { 702 | "version": "1.2.1", 703 | "resolved": "https://registry.npmjs.org/pull-git-repo/-/pull-git-repo-1.2.1.tgz", 704 | "integrity": "sha512-nHOicXiFryxuO9J+EhYY0cFC4n4mvsDabj6ts6BYgRbWAbp/gQUa+Hzfy05uey+HLz7XaR7N8XC+xGBgsYCmsg==", 705 | "requires": { 706 | "asyncmemo": "1.0.0", 707 | "git-packidx-parser": "1.0.0", 708 | "multicb": "1.2.2", 709 | "pull-buffered": "0.3.4", 710 | "pull-cache": "0.0.0", 711 | "pull-cat": "1.1.11", 712 | "pull-git-pack": "1.0.2", 713 | "pull-hash": "1.0.0", 714 | "pull-kvdiff": "0.0.0", 715 | "pull-paramap": "1.2.2", 716 | "semver": "5.5.0", 717 | "stream-to-pull-stream": "1.7.2" 718 | } 719 | }, 720 | "pull-hash": { 721 | "version": "1.0.0", 722 | "resolved": "https://registry.npmjs.org/pull-hash/-/pull-hash-1.0.0.tgz", 723 | "integrity": "sha1-/K1NJQe/LCsyMfZT3Jv7LbTw2Iw=" 724 | }, 725 | "pull-kvdiff": { 726 | "version": "0.0.0", 727 | "resolved": "https://registry.npmjs.org/pull-kvdiff/-/pull-kvdiff-0.0.0.tgz", 728 | "integrity": "sha1-m2Yn0OMy2YKI5H1HFgIWH0H/E1M=", 729 | "requires": { 730 | "multicb": "1.2.2" 731 | } 732 | }, 733 | "pull-looper": { 734 | "version": "1.0.0", 735 | "resolved": "https://registry.npmjs.org/pull-looper/-/pull-looper-1.0.0.tgz", 736 | "integrity": "sha512-djlD60A6NGe5goLdP5pgbqzMEiWmk1bInuAzBp0QOH4vDrVwh05YDz6UP8+pOXveKEk8wHVP+rB2jBrK31QMPA==", 737 | "requires": { 738 | "looper": "4.0.0" 739 | } 740 | }, 741 | "pull-paramap": { 742 | "version": "1.2.2", 743 | "resolved": "https://registry.npmjs.org/pull-paramap/-/pull-paramap-1.2.2.tgz", 744 | "integrity": "sha1-UaQZPOnI1yFdla2tReK824STsjo=", 745 | "requires": { 746 | "looper": "4.0.0" 747 | } 748 | }, 749 | "pull-stream": { 750 | "version": "3.6.8", 751 | "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.8.tgz", 752 | "integrity": "sha512-wQUIptQBcM0rFsUhZoEpOT3vUn73DtTGVq3NQ86c4T7iMOSprDzeKWYq2ksXnbwiuExTKvt+8G9fzNLFQuiO+A==" 753 | }, 754 | "pump": { 755 | "version": "1.0.3", 756 | "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz", 757 | "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==", 758 | "requires": { 759 | "end-of-stream": "1.4.1", 760 | "once": "1.4.0" 761 | } 762 | }, 763 | "random-access-file": { 764 | "version": "2.0.1", 765 | "resolved": "https://registry.npmjs.org/random-access-file/-/random-access-file-2.0.1.tgz", 766 | "integrity": "sha512-nb4fClpzoUY+v1SHrro+9yykN90eMA1rc+xM39tnZ5R3BgFY+J/NxPZ0KuUpishEsvnwou9Fvm2wa3cjeuG7vg==", 767 | "requires": { 768 | "mkdirp": "0.5.1", 769 | "random-access-storage": "1.2.0" 770 | } 771 | }, 772 | "random-access-storage": { 773 | "version": "1.2.0", 774 | "resolved": "https://registry.npmjs.org/random-access-storage/-/random-access-storage-1.2.0.tgz", 775 | "integrity": "sha512-KASq0p0d4Tri71p1w9+gvKBhUpjt9/9TGtVMschfwNjdw93rZFnKlsZ+4CKFq/qi2GvdobIFLu0CjnQpfsr05Q==", 776 | "requires": { 777 | "inherits": "2.0.3" 778 | } 779 | }, 780 | "randombytes": { 781 | "version": "2.0.6", 782 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", 783 | "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", 784 | "requires": { 785 | "safe-buffer": "5.1.2" 786 | } 787 | }, 788 | "readable-stream": { 789 | "version": "2.3.6", 790 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 791 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 792 | "requires": { 793 | "core-util-is": "1.0.2", 794 | "inherits": "2.0.3", 795 | "isarray": "1.0.0", 796 | "process-nextick-args": "2.0.0", 797 | "safe-buffer": "5.1.2", 798 | "string_decoder": "1.1.1", 799 | "util-deprecate": "1.0.2" 800 | } 801 | }, 802 | "rusha": { 803 | "version": "0.8.13", 804 | "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.13.tgz", 805 | "integrity": "sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo=" 806 | }, 807 | "safe-buffer": { 808 | "version": "5.1.2", 809 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 810 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 811 | }, 812 | "semver": { 813 | "version": "5.5.0", 814 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 815 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" 816 | }, 817 | "signed-varint": { 818 | "version": "2.0.1", 819 | "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", 820 | "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", 821 | "requires": { 822 | "varint": "5.0.0" 823 | } 824 | }, 825 | "simple-sha1": { 826 | "version": "2.1.1", 827 | "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-2.1.1.tgz", 828 | "integrity": "sha512-pFMPd+I/lQkpf4wFUeS/sED5IqdIG1lUlrQviBMV4u4mz8BRAcB5fvUx5Ckfg3kBigEglAjHg7E9k/yy2KlCqA==", 829 | "requires": { 830 | "rusha": "0.8.13" 831 | } 832 | }, 833 | "siphash24": { 834 | "version": "1.1.0", 835 | "resolved": "https://registry.npmjs.org/siphash24/-/siphash24-1.1.0.tgz", 836 | "integrity": "sha512-nDCEEZKb6m7OxxG/5wwaLy2R+KpyLcOnGjTJlFXG+14FUmpDD1FCFV/MjsYATjShsqPkSkl1BVevI0TCehdsTw==", 837 | "requires": { 838 | "nanoassert": "1.1.0" 839 | } 840 | }, 841 | "sodium-javascript": { 842 | "version": "0.5.5", 843 | "resolved": "https://registry.npmjs.org/sodium-javascript/-/sodium-javascript-0.5.5.tgz", 844 | "integrity": "sha512-UMmCHovws/sxIBZsIRhIl8uRPou/RFDD0vVop81T1hG106NLLgqajKKuHAOtAP6hflnZ0UrVA2VFwddTd/NQyA==", 845 | "requires": { 846 | "blake2b": "2.1.2", 847 | "nanoassert": "1.1.0", 848 | "siphash24": "1.1.0", 849 | "xsalsa20": "1.0.2" 850 | } 851 | }, 852 | "sodium-native": { 853 | "version": "2.1.6", 854 | "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-2.1.6.tgz", 855 | "integrity": "sha512-vfovcNlU8C93SbeNoGSAdW5zVOTlrh1sTy+TzdC2FhDTE/IUK6j4ML5gdr/qziLz4XRT4EQWJvbFzql6CAAH/A==", 856 | "optional": true, 857 | "requires": { 858 | "ini": "1.3.5", 859 | "nan": "2.10.0", 860 | "node-gyp-build": "3.3.0" 861 | } 862 | }, 863 | "sodium-universal": { 864 | "version": "2.0.0", 865 | "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-2.0.0.tgz", 866 | "integrity": "sha512-csdVyakzHJRyCevY4aZC2Eacda8paf+4nmRGF2N7KxCLKY2Ajn72JsExaQlJQ2BiXJncp44p3T+b80cU+2TTsg==", 867 | "requires": { 868 | "sodium-javascript": "0.5.5", 869 | "sodium-native": "2.1.6" 870 | } 871 | }, 872 | "sorted-indexof": { 873 | "version": "1.0.0", 874 | "resolved": "https://registry.npmjs.org/sorted-indexof/-/sorted-indexof-1.0.0.tgz", 875 | "integrity": "sha1-F8dC/3zxh+L1mhXfm4HxemLOCJk=" 876 | }, 877 | "sparse-bitfield": { 878 | "version": "3.0.3", 879 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 880 | "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", 881 | "requires": { 882 | "memory-pager": "1.1.0" 883 | } 884 | }, 885 | "speedometer": { 886 | "version": "1.0.0", 887 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz", 888 | "integrity": "sha1-zWccsGdSwivKM3Di8zREC+T8YuI=" 889 | }, 890 | "stream-to-pull-stream": { 891 | "version": "1.7.2", 892 | "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.2.tgz", 893 | "integrity": "sha1-dXYJrhzr0zx0MtSvvjH/eGULnd4=", 894 | "requires": { 895 | "looper": "3.0.0", 896 | "pull-stream": "3.6.8" 897 | }, 898 | "dependencies": { 899 | "looper": { 900 | "version": "3.0.0", 901 | "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", 902 | "integrity": "sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k=" 903 | } 904 | } 905 | }, 906 | "string_decoder": { 907 | "version": "1.1.1", 908 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 909 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 910 | "requires": { 911 | "safe-buffer": "5.1.2" 912 | } 913 | }, 914 | "through": { 915 | "version": "2.2.7", 916 | "resolved": "https://registry.npmjs.org/through/-/through-2.2.7.tgz", 917 | "integrity": "sha1-bo4hIAGR1OtqmfbwEN9Gqhxusr0=" 918 | }, 919 | "thunky": { 920 | "version": "1.0.2", 921 | "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", 922 | "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=" 923 | }, 924 | "to-buffer": { 925 | "version": "1.1.1", 926 | "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", 927 | "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" 928 | }, 929 | "uint64be": { 930 | "version": "2.0.2", 931 | "resolved": "https://registry.npmjs.org/uint64be/-/uint64be-2.0.2.tgz", 932 | "integrity": "sha512-9QqdvpGQTXgxthP+lY4e/gIBy+RuqcBaC6JVwT5I3bDLgT/btL6twZMR0pI3/Fgah9G/pdwzIprE5gL6v9UvyQ==", 933 | "requires": { 934 | "buffer-alloc": "1.2.0" 935 | } 936 | }, 937 | "unordered-array-remove": { 938 | "version": "1.0.2", 939 | "resolved": "https://registry.npmjs.org/unordered-array-remove/-/unordered-array-remove-1.0.2.tgz", 940 | "integrity": "sha1-xUbo+I4xegzyZEyX7LV9umbSUO8=" 941 | }, 942 | "unordered-set": { 943 | "version": "2.0.0", 944 | "resolved": "https://registry.npmjs.org/unordered-set/-/unordered-set-2.0.0.tgz", 945 | "integrity": "sha1-mFon6XW6oguCY66np5HpMAlBqew=" 946 | }, 947 | "util-deprecate": { 948 | "version": "1.0.2", 949 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 950 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 951 | }, 952 | "utp-native": { 953 | "version": "1.7.1", 954 | "resolved": "https://registry.npmjs.org/utp-native/-/utp-native-1.7.1.tgz", 955 | "integrity": "sha512-FSs76hQZsSsdI4YeePxb5SQoWmHxDRznImGiAN905O1svyHvcoQ3hYptu3Y9hPxRHeB3lHzJR5KRZy0Byj7qqg==", 956 | "optional": true, 957 | "requires": { 958 | "nan": "2.10.0", 959 | "node-gyp-build": "3.3.0", 960 | "readable-stream": "2.3.6" 961 | } 962 | }, 963 | "varint": { 964 | "version": "5.0.0", 965 | "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.0.tgz", 966 | "integrity": "sha1-2Ca4n3SQcy+rwMDtaT7Uddyynr8=" 967 | }, 968 | "wrappy": { 969 | "version": "1.0.2", 970 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 971 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 972 | }, 973 | "xsalsa20": { 974 | "version": "1.0.2", 975 | "resolved": "https://registry.npmjs.org/xsalsa20/-/xsalsa20-1.0.2.tgz", 976 | "integrity": "sha512-g1DFmZ5JJ9Qzvt4dMw6m9IydqoCSP381ucU5zm46Owbk3bwmqAr8eEJirOPc7PrXRn45drzOpAyDp8jsnoyXyw==" 977 | }, 978 | "xtend": { 979 | "version": "4.0.1", 980 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 981 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" 982 | } 983 | } 984 | } 985 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "git-remote-hypergit", 3 | "description": "git remote helper for hypergit", 4 | "author": "Stephen Whitmore ", 5 | "version": "2.0.4", 6 | "bin": { 7 | "git-remote-hypergit": "git-remote-hypergit.js" 8 | }, 9 | "repository": { 10 | "url": "git://github.com/noffle/git-remote-hypergit.git" 11 | }, 12 | "homepage": "https://github.com/noffle/git-remote-hypergit", 13 | "bugs": "https://github.com/noffle/git-remote-hypergit/issues", 14 | "main": "index.js", 15 | "scripts": { 16 | "test": "echo done", 17 | "lint": "standard" 18 | }, 19 | "keywords": [], 20 | "dependencies": { 21 | "dat-swarm-defaults": "^1.0.1", 22 | "debug": "^3.1.0", 23 | "discovery-swarm": "^5.1.1", 24 | "env-paths": "^1.0.0", 25 | "hyperdb": "^3.1.2", 26 | "hyperdb-git-repo": "^1.0.2", 27 | "mkdirp": "^0.5.1", 28 | "ncp": "^2.0.0", 29 | "pull-git-remote-helper": "^2.0.0", 30 | "pull-stream": "^3.6.8", 31 | "stream-to-pull-stream": "^1.7.2" 32 | }, 33 | "devDependencies": { 34 | "standard": "~10.0.0" 35 | }, 36 | "license": "non-commercial" 37 | } 38 | --------------------------------------------------------------------------------