hyperdrive
Advanced tools
Comparing version 2.2.2 to 3.0.0
48
index.js
@@ -7,3 +7,2 @@ var constants = require('constants') | ||
var bulk = require('bulk-write-stream') | ||
var rabin = require('rabin') | ||
var path = require('path') | ||
@@ -17,3 +16,8 @@ var deltas = require('delta-list') | ||
var events = require('events') | ||
var storage = require('./lib/storage') | ||
var storage | ||
var rabin | ||
if (process.browser) rabin = require('through2') | ||
else rabin = require('rabin') | ||
if (process.browser) storage = require('./lib/browser-storage') | ||
else storage = require('./lib/storage') | ||
var messages = require('./lib/messages') | ||
@@ -66,3 +70,6 @@ | ||
this.entries = 0 | ||
this.metadata = {type: 'hyperdrive'} | ||
this._first = true | ||
if (!id) { | ||
@@ -72,2 +79,3 @@ this.feed = this.core.add({filename: null}) | ||
this.feed = this.core.get(id) | ||
this.feed.get(0, onmetadata) | ||
} | ||
@@ -81,5 +89,24 @@ | ||
if (err) return | ||
self.entries = self.feed.blocks | ||
self.entries = self.feed.blocks - 1 | ||
self.emit('ready') | ||
}) | ||
function onmetadata (err, json) { | ||
if (err) self.emit('error', err) | ||
var doc | ||
try { | ||
doc = JSON.parse(json.toString()) | ||
} catch (err) { | ||
// do nothing | ||
} | ||
if (!doc || doc.type !== 'hyperdrive') { | ||
self.emit('error', new Error('feed is not a hyperdrive')) | ||
} else { | ||
self.metadata = doc | ||
self.emit('metadata') | ||
} | ||
} | ||
} | ||
@@ -89,2 +116,6 @@ | ||
Archive.prototype.close = function (cb) { | ||
this.feed.close(cb) | ||
} | ||
Archive.prototype.ready = function (cb) { | ||
@@ -119,2 +150,3 @@ this.feed.ready(cb) | ||
var dest = join(self.directory, entry.name) | ||
if (process.browser) return cb() | ||
@@ -156,3 +188,3 @@ fs.stat(dest, function (_, st) { | ||
Archive.prototype.entry = function (i, cb) { | ||
this.feed.get(i, function (err, data) { | ||
this.feed.get(i + 1, function (err, data) { | ||
if (err) return cb(err) | ||
@@ -170,3 +202,3 @@ if (!data) return cb(null, null) | ||
self.id = self.feed.id | ||
self.entries = self.feed.blocks | ||
self.entries = self.feed.blocks - 1 | ||
cb() | ||
@@ -295,2 +327,8 @@ }) | ||
entry.link = link | ||
if (self._first) { | ||
// first block is gonna be a human readable metadata block | ||
// this makes updating the protocol easier in the future | ||
self.feed.append(JSON.stringify(self.metadata)) | ||
self._first = false | ||
} | ||
self.feed.append(messages.Entry.encode(entry), done) | ||
@@ -297,0 +335,0 @@ |
{ | ||
"name": "hyperdrive", | ||
"version": "2.2.2", | ||
"version": "3.0.0", | ||
"description": "A file sharing network based on rabin file chunking and append only feeds of data verified by merkle trees.", | ||
@@ -28,2 +28,3 @@ "main": "index.js", | ||
"subleveldown": "^2.1.0", | ||
"through2": "^2.0.0", | ||
"thunky": "^0.1.0" | ||
@@ -30,0 +31,0 @@ }, |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
55439
13
680
15
+ Addedthrough2@^2.0.0