db.get('!dat!key', function (err, value) { if (err) return cb(err) if (!value) return new Error('No dat here') var key = encoding.decode(value) var core = hypercore(db) var feed = core.createFeed(key) feed.open(function () { var secret = feed.secretKey if (!secret) return cb(new Error('No secret key found here')) cb(null, signatures.sign(buf, secret)) }) })
tape('test file ingest', function (t) { var db = level('test.db'); var core = hypercore(db); var J = new Jawn(); var path = './test.csv'; var ws = J.import(core, path); var filecontents = fs.readFileSync(path) .toString() .split('\n') .filter(function (line) { return line !== ''; }); // get number of rows in test.csv var numrows = filecontents.length; ws.end(function () { var id = ws.id.toString('hex'); t.ok(ws.id, 'has id'); t.same(ws.blocks, numrows, 'there should be one row for each block'); // Now create a read stream with the same id and read the data var rs = core.createReadStream(id); var feedcontents = []; rs.on('data', function (data) { // gather feed contents feedcontents.push(data.toString()); }); rs.on('end', function () { t.same(filecontents, feedcontents, 'contents of feed should match file contents'); }); }); t.end(); });
module.exports = function createStream (key, opts) { if (typeof key === 'string') key = Buffer(key, 'hex') if (key && !Buffer.isBuffer(key)) { opts = key key = undefined } if (!opts) opts = {} key = key || opts.key var secretKey = opts.secretKey if (key && key.length === 64) { secretKey = key key = undefined } if (!key && secretKey) { key = secretKey.slice(32, 64) } var db = opts.db || memdb() var core = hypercore(db) var feed = core.createFeed(null, { key, secretKey, live: opts.live || !opts.static, storage: opts.storage }) var rs = feed.createReadStream({ live: !!opts.tail, start: opts.start, end: opts.end }) var write = !key || !!secretKey var stream if (write) { var ws = feed.createWriteStream() stream = patch(duplexify(ws, rs), feed) } else { stream = patch(rs, feed) } return stream }
var stats = require('./') var http = require('http') var swarm = require('hyperdrive-archive-swarm') var minimist = require('minimist') var argv = minimist(process.argv.slice(2), { alias: {port: 'p', 'hyperdrive': 'd', wait: 'w'}, boolean: ['hyperdrive'] }) var hypercore = require('hypercore') var hyperdrive = require('hyperdrive') var memdb = require('memdb') var core = hypercore(memdb()) var f = core.createFeed(argv._[0]) var archive = null if (argv.hyperdrive) { archive = hyperdrive(memdb()).createArchive(argv._[0]) } var server = http.createServer(stats(archive || f)) server.on('listening', function () { console.log('Feed: ' + f.key.toString('hex')) console.log('Stats listening on port ' + server.address().port) if (argv.wait) setTimeout(join, Number(argv.wait)) else join()
var hypercore = require('hypercore') var level = require('level-browserify') var core = hypercore(level('hypercore')) var Queue = require('ordered-queue') var hubs = [ 'https://signalhub.mafintosh.com' ] module.exports = function (self) { var mode = null var feed, writeQueue, writeSeq = 0 var swarms = {} self.addEventListener('message', function (ev) { if (ev.data.type === 'record.start') { var stream = core.createWriteStream() writeQueue = new Queue(function (buf, next) { stream.write(buf) next() }, { concurrency: 10 }) mode = 'record' var id = stream.key.toString('hex') feed = stream.feed self.postMessage({ type: 'record.info', id: id }) } else if (ev.data.type === 'peer.start' && feed) { var id = ev.data.peerId swarms[id] = feed.replicate({ live: true, encrypted: false }) swarms[id].on('data', function (buf) { console.log('SEND PEER', buf.length) self.postMessage({ type: 'peer.data',
// All the keys of past and present participants var keys = [] var argv = minimist(process.argv.slice(2)) if (argv.help) { console.error('Usage: hyperchat [options]') console.error() console.error(' --feed=[feed-key] Feed of one participant') console.error(' --user=[username] Username') console.error() process.exit(1) } var db = level(path.join(home(), '.hyperchat.db')) var core = hypercore(db) var myFeed = core.createFeed() // Set username var cmd = {type: 'username', username: '******'} if (argv.user) { cmd.username = argv.user } myFeed.append(JSON.stringify(cmd)) console.log('my key is ' + myFeed.key.toString('hex')) console.log('my discovery key is ' + myFeed.discoveryKey.toString('hex')) // Share our feed join(myFeed)
test('jawn constructor set core', function (t) { var samplecore = hypercore(memdb()) var jawn = new Jawn({core: samplecore}) t.equal(jawn.core, samplecore, 'uses the provided instance of hypercore') t.end() })