Skip to content

Commit 4ecbfb7

Browse files
committed
pumpify -> pump + better UInt8Array handling
1 parent 9d035fa commit 4ecbfb7

2 files changed

Lines changed: 25 additions & 13 deletions

File tree

lib/clients/drive.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
const grpc = require('@grpc/grpc-js')
22
const maybe = require('call-me-maybe')
33
const collectStream = require('stream-collector')
4-
const pumpify = require('pumpify')
4+
const pump = require('pump')
55
const codecs = require('codecs')
66
const { Writable, Transform } = require('streamx')
77

@@ -230,7 +230,7 @@ class RemoteHyperdrive {
230230
if (prefix) req.setPrefix(prefix)
231231

232232
const call = this._client.createDiffStream(req, toMetadata({ token: this.token }))
233-
return pumpify.obj(
233+
return pump(
234234
call,
235235
new Transform({
236236
transform (rsp, cb) {
@@ -254,11 +254,12 @@ class RemoteHyperdrive {
254254
if (opts.end) req.setEnd(opts.end)
255255

256256
const call = this._client.createReadStream(req, toMetadata({ token: this.token }))
257-
return pumpify(
257+
return pump(
258258
call,
259259
new Transform({
260260
transform (rsp, cb) {
261-
return cb(null, Buffer.from(rsp.getChunk()))
261+
const chunk = rsp.getChunk()
262+
return cb(null, Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength))
262263
}
263264
})
264265
)
@@ -280,7 +281,10 @@ class RemoteHyperdrive {
280281
const call = this._client.readFile(req, toMetadata({ token: this.token }))
281282
collectStream(call, (err, rsps) => {
282283
if (err) return reject(err)
283-
const bufs = rsps.map(rsp => Buffer.from(rsp.getChunk()))
284+
const bufs = rsps.map(rsp => {
285+
const chunk = rsp.getChunk()
286+
return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)
287+
})
284288
var decoded = Buffer.concat(bufs)
285289
if (codec) {
286290
try {
@@ -325,7 +329,8 @@ class RemoteHyperdrive {
325329

326330
map: chunk => {
327331
const req = new messages.WriteStreamRequest()
328-
req.setChunk(Buffer.from(chunk))
332+
if (typeof chunk === 'string') chunk = Buffer.from(chunk)
333+
req.setChunk(chunk)
329334
return req
330335
}
331336
})

lib/common.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,15 @@ function fromHyperdriveOptions (opts) {
5050
writable: opts.getWritable() || false,
5151
seed: opts.getSeed() || false
5252
}
53-
if (extracted.key) extracted.key = Buffer.from(extracted.key)
54-
if (extracted.discoveryKey) extracted.discoveryKey = Buffer.from(extracted.discoveryKey)
55-
if (extracted.hash) extracted.hash = Buffer.from(extracted.hash)
53+
if (extracted.key) {
54+
extracted.key = Buffer.from(extracted.key.buffer, extracted.key.byteOffset, extracted.key.byteLength)
55+
}
56+
if (extracted.discoveryKey) {
57+
extracted.discoveryKey = Buffer.from(extracted.discoveryKey.buffer, extracted.discoveryKey.byteOffset, extracted.discoveryKey.byteLength)
58+
}
59+
if (extracted.hash) {
60+
extracted.hash = Buffer.from(extracted.hash.buffer, extracted.hash.byteOffset, extracted.hash.byteLength)
61+
}
5662
return extracted
5763
}
5864

@@ -79,8 +85,8 @@ function fromMount (mount) {
7985
const key = mount.getKey()
8086
const hash = mount.getHash()
8187
return {
82-
key: key ? Buffer.from(key) : null,
83-
hash: hash ? Buffer.from(hash) : null,
88+
key: key ? Buffer.from(key.buffer, key.byteOffset, key.byteLength) : null,
89+
hash: hash ? Buffer.from(hash.buffer, hash.byteOffset, hash.byteLength) : null,
8490
version: mount.getVersion(),
8591
hypercore: mount.getHypercore()
8692
}
@@ -165,7 +171,7 @@ function fromMetadata (map) {
165171
const metadata = {}
166172
if (!map || !map.getLength()) return metadata
167173
map.forEach((value, key) => {
168-
metadata[key] = Buffer.from(value)
174+
metadata[key] = Buffer.from(value.buffer, value.byteOffset, value.byteLength)
169175
})
170176
return metadata
171177
}
@@ -185,8 +191,9 @@ function fromDriveStats (driveStats) {
185191

186192
function getCoreStats (coreStats) {
187193
if (!coreStats) return {}
194+
const key = coreStats.getKey()
188195
return {
189-
key: Buffer.from(coreStats.getKey()),
196+
key: key ? Buffer.from(key.buffer, key.byteOffset, key.byteLength) : null,
190197
peers: coreStats.getPeers(),
191198
uploadedBytes: coreStats.getUploadedbytes(),
192199
downloadedBytes: coreStats.getDownloadedbytes(),

0 commit comments

Comments
 (0)