From 9267975aba1f001094b5f95dd27373f675d94aa2 Mon Sep 17 00:00:00 2001 From: Sean Zellmer Date: Sat, 16 Sep 2023 17:31:41 -0500 Subject: [PATCH 1/5] refact: Support b4a buffers Only `b4a.copy()` was needed. --- index.js | 3 ++- package.json | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index e2eb5cc..730d220 100644 --- a/index.js +++ b/index.js @@ -5,6 +5,7 @@ var once = require('once') var blocks = require('./lib/blocks.js') var bufferFrom = require('buffer-from') var bufferAlloc = require('buffer-alloc') +var b4a = require('b4a') var DELIM = '\0' @@ -121,7 +122,7 @@ Store.prototype._write = function (req) { block = bufferFrom(req.data.slice(j, j + len)) } else { block = buffers[i] - req.data.copy(block, o.start, j, j + len) + b4a.copy(req.data, block, o.start, j, j + len) } store.put(block, self.name + DELIM + o.block) j += len diff --git a/package.json b/package.json index 2638cdd..69c3622 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,14 @@ "version": "1.3.1", "main": "index.js", "dependencies": { - "random-access-storage": "^1.4.1", + "b4a": "^1.6.4", "buffer-alloc": "^1.2.0", "buffer-from": "^0.1.1", "inherits": "^2.0.4", "mutexify": "^1.3.1", "next-tick": "^1.0.0", - "once": "^1.4.0" + "once": "^1.4.0", + "random-access-storage": "^1.4.1" }, "devDependencies": { "browser-run": "^8.0.0", From 285f9c5ecff8dc898f24f1321bf7d0a3a4d15482 Mon Sep 17 00:00:00 2001 From: Sean Zellmer Date: Sat, 16 Sep 2023 18:24:12 -0500 Subject: [PATCH 2/5] refact: Convert `.concat()` & `.from()` to `b4a` version Also converted tests to use `b4a.toString(buf)` instead of `buf.toString()`. --- example/hello.js | 7 ++++--- index.js | 11 +++++------ package.json | 1 - test/big.js | 9 +++++---- test/multifile.js | 18 +++++++++--------- test/random.js | 3 ++- test/simple.js | 7 ++++--- 7 files changed, 29 insertions(+), 27 deletions(-) diff --git a/example/hello.js b/example/hello.js index cfa0d09..4cceaef 100644 --- a/example/hello.js +++ b/example/hello.js @@ -1,17 +1,18 @@ var RAI = require('../') +var b4a = require('b4a') const storage = RAI('dbname') var cool = storage('cool.txt') -cool.write(100, Buffer.from('GREETINGS'), function (err) { +cool.write(100, b4a.from('GREETINGS'), function (err) { if (err) return console.error(err) cool.read(104, 3, function (err, buf) { if (err) return console.error(err) - console.log(buf.toString()) // TIN + console.log(b4a.toString(buf)) // TIN }) cool.read(100, 9, function (err, buf) { if (err) return console.error(err) - console.log(buf.toString()) // GREETINGS + console.log(b4a.toString(buf)) // GREETINGS }) }) diff --git a/index.js b/index.js index 730d220..ef7d53e 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,6 @@ var inherits = require('inherits') var nextTick = require('next-tick') var once = require('once') var blocks = require('./lib/blocks.js') -var bufferFrom = require('buffer-from') var bufferAlloc = require('buffer-alloc') var b4a = require('b4a') @@ -84,12 +83,12 @@ Store.prototype._read = function (req) { backify(store.get(key), function (err, ev) { if (err) return req.callback(err) buffers[o.block - firstBlock] = ev.target.result - ? bufferFrom(ev.target.result.subarray(o.start, o.end)) + ? b4a.from(ev.target.result.subarray(o.start, o.end)) : bufferAlloc(o.end - o.start) - if (--pending === 0) req.callback(null, Buffer.concat(buffers)) + if (--pending === 0) req.callback(null, b4a.concat(buffers)) }) })(offsets[i]) - if (--pending === 0) req.callback(null, Buffer.concat(buffers)) + if (--pending === 0) req.callback(null, b4a.concat(buffers)) }) } @@ -106,7 +105,7 @@ Store.prototype._write = function (req) { var key = self.name + DELIM + o.block backify(store.get(key), function (err, ev) { if (err) return req.callback(err) - buffers[i] = bufferFrom(ev.target.result || bufferAlloc(self.size)) + buffers[i] = b4a.from(ev.target.result || bufferAlloc(self.size)) if (--pending === 0) write(store, offsets, buffers) }) })(offsets[i], i) @@ -119,7 +118,7 @@ Store.prototype._write = function (req) { var o = offsets[i] var len = o.end - o.start if (len === self.size) { - block = bufferFrom(req.data.slice(j, j + len)) + block = b4a.from(req.data.slice(j, j + len)) } else { block = buffers[i] b4a.copy(req.data, block, o.start, j, j + len) diff --git a/package.json b/package.json index 69c3622..fdb170c 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "dependencies": { "b4a": "^1.6.4", "buffer-alloc": "^1.2.0", - "buffer-from": "^0.1.1", "inherits": "^2.0.4", "mutexify": "^1.3.1", "next-tick": "^1.0.0", diff --git a/test/big.js b/test/big.js index e4c1a27..a2a5609 100644 --- a/test/big.js +++ b/test/big.js @@ -1,20 +1,21 @@ var test = require('tape') var random = require('../')('testing-' + Math.random(), { size: 1024 }) +var b4a = require('b4a') test('big', function (t) { t.plan(6) var cool = random('cool.txt') - cool.write(32, Buffer.from('GREETINGS'), function (err) { + cool.write(32, b4a.from('GREETINGS'), function (err) { t.ifError(err) - cool.write(32 + 3, Buffer.from('AT SCOTT'), function (err) { + cool.write(32 + 3, b4a.from('AT SCOTT'), function (err) { t.ifError(err) cool.read(32, 9, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'GREAT SCO') + t.equal(b4a.toString(buf), 'GREAT SCO') }) cool.read(32 + 6, 5, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'SCOTT') + t.equal(b4a.toString(buf), 'SCOTT') }) }) }) diff --git a/test/multifile.js b/test/multifile.js index 5963087..7b4dc59 100644 --- a/test/multifile.js +++ b/test/multifile.js @@ -1,35 +1,35 @@ var test = require('tape') var random = require('../')('testing-' + Math.random(), { size: 5 }) -var bfrom = require('buffer-from') +var b4a = require('b4a') test('multiple files cool and good', function (t) { t.plan(14) var cool = random('cool.txt') var and = random('and.txt') var good = random('good.txt') - cool.write(100, bfrom('GREETINGS'), function (err) { + cool.write(100, b4a.from('GREETINGS'), function (err) { t.ifError(err) cool.read(100, 9, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'GREETINGS') + t.equal(b4a.toString(buf), 'GREETINGS') }) cool.read(104, 3, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'TIN') + t.equal(b4a.toString(buf), 'TIN') }) - and.write(106, bfrom('ORANG'), function (err) { + and.write(106, b4a.from('ORANG'), function (err) { t.ifError(err) and.read(107, 3, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'RAN') - good.write(90, bfrom('DO YOU EVER JUST... TEAPOT'), function (err) { + t.equal(b4a.toString(buf), 'RAN') + good.write(90, b4a.from('DO YOU EVER JUST... TEAPOT'), function (err) { t.ifError(err) good.read(110, 6, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'TEAPOT') + t.equal(b4a.toString(buf), 'TEAPOT') good.read(86, 10, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), '\0\0\0\0DO YOU') + t.equal(b4a.toString(buf), '\0\0\0\0DO YOU') good.read(110, 10, function (err, buf) { t.ok(err, 'should error when reading past end of file') }) diff --git a/test/random.js b/test/random.js index 71ddc49..d961835 100644 --- a/test/random.js +++ b/test/random.js @@ -3,6 +3,7 @@ var rai = require('../')('testing-' + Math.random(), { size: 256 }) var ram = require('random-access-memory') var randombytes = require('randombytes') var balloc = require('buffer-alloc') +var b4a = require('b4a') test('random', function (t) { var nwrites = 500 @@ -61,7 +62,7 @@ test('random', function (t) { t.ok((data.ierr && data.merr), 'read: offset=' + offset + ', length=' + len) } else { - t.ok((data.istore).equals(data.mstore), + t.ok(b4a.equals(data.istore, data.mstore), 'read: offset=' + offset + ', length=' + len) } read(i + 1) diff --git a/test/simple.js b/test/simple.js index 6af3f7e..6277ae3 100644 --- a/test/simple.js +++ b/test/simple.js @@ -1,19 +1,20 @@ var test = require('tape') var random = require('../')('testing-' + Math.random(), { size: 5 }) +var b4a = require('b4a') test('simple', function (t) { t.plan(6) var cool = random('cool.txt', { size: 5 }) t.equal(cool.name, 'cool.txt') - cool.write(100, Buffer.from('GREETINGS'), function (err) { + cool.write(100, b4a.from('GREETINGS'), function (err) { t.ifError(err) cool.read(100, 9, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'GREETINGS') + t.equal(b4a.toString(buf), 'GREETINGS') }) cool.read(104, 3, function (err, buf) { t.ifError(err) - t.equal(buf.toString(), 'TIN') + t.equal(b4a.toString(buf), 'TIN') }) }) }) From 783d055d520d968ad6eb4b23a36e6ddeb7cd4915 Mon Sep 17 00:00:00 2001 From: Sean Zellmer Date: Sat, 16 Sep 2023 18:28:33 -0500 Subject: [PATCH 3/5] refact: Upgrade `random-access-storage` to `^3.0.0` & convert to class --- index.js | 226 +++++++++++++++++++++++++------------------------ package.json | 4 +- test/random.js | 4 +- test/reopen.js | 4 +- 4 files changed, 120 insertions(+), 118 deletions(-) diff --git a/index.js b/index.js index ef7d53e..6b39333 100644 --- a/index.js +++ b/index.js @@ -10,7 +10,7 @@ var DELIM = '\0' module.exports = function (dbname, xopts) { if (!xopts) xopts = {} - + var win = typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {}) @@ -51,131 +51,133 @@ module.exports = function (dbname, xopts) { } } -function Store (opts) { - if (!(this instanceof Store)) return new Store(opts) - RandomAccess.call(this) - if (!opts) opts = {} - if (typeof opts === 'string') opts = { name: opts } - this.size = opts.size || 4096 - this.name = opts.name - this.length = opts.length || 0 - this._getdb = opts.db -} -inherits(Store, RandomAccess) +class Store extends RandomAccess { + constructor (opts) { + super(opts) + if (!(this instanceof Store)) return new Store(opts) -Store.prototype._blocks = function (i, j) { - return blocks(this.size, i, j) -} + if (!opts) opts = {} + if (typeof opts === 'string') opts = { name: opts } + this.size = opts.size || 4096 + this.name = opts.name + this.length = opts.length || 0 + this._getdb = opts.db + } -Store.prototype._read = function (req) { - var self = this - var buffers = [] - self._store('readonly', function (err, store) { - if ((self.length || 0) < req.offset + req.size) { - return req.callback(new Error('Could not satisfy length'), null) - } - if (err) return req.callback(err) - var offsets = self._blocks(req.offset, req.offset + req.size) - var pending = offsets.length + 1 - var firstBlock = offsets.length > 0 ? offsets[0].block : 0 - for (var i = 0; i < offsets.length; i++) (function (o) { - var key = self.name + DELIM + o.block - backify(store.get(key), function (err, ev) { - if (err) return req.callback(err) - buffers[o.block - firstBlock] = ev.target.result - ? b4a.from(ev.target.result.subarray(o.start, o.end)) - : bufferAlloc(o.end - o.start) - if (--pending === 0) req.callback(null, b4a.concat(buffers)) - }) - })(offsets[i]) - if (--pending === 0) req.callback(null, b4a.concat(buffers)) - }) -} + _blocks (i, j) { + return blocks(this.size, i, j) + } -Store.prototype._write = function (req) { - var self = this - self._store('readwrite', function (err, store) { - if (err) return req.callback(err) - var offsets = self._blocks(req.offset, req.offset + req.data.length) - var pending = 1 - var buffers = {} - for (var i = 0; i < offsets.length; i++) (function (o, i) { - if (o.end - o.start === self.size) return - pending++ - var key = self.name + DELIM + o.block - backify(store.get(key), function (err, ev) { - if (err) return req.callback(err) - buffers[i] = b4a.from(ev.target.result || bufferAlloc(self.size)) - if (--pending === 0) write(store, offsets, buffers) - }) - })(offsets[i], i) - if (--pending === 0) write(store, offsets, buffers) - }) - - function write (store, offsets, buffers) { - var block - for (var i = 0, j = 0; i < offsets.length; i++) { - var o = offsets[i] - var len = o.end - o.start - if (len === self.size) { - block = b4a.from(req.data.slice(j, j + len)) - } else { - block = buffers[i] - b4a.copy(req.data, block, o.start, j, j + len) + _read (req) { + var self = this + var buffers = [] + self._store('readonly', function (err, store) { + if ((self.length || 0) < req.offset + req.size) { + return req.callback(new Error('Could not satisfy length'), null) } - store.put(block, self.name + DELIM + o.block) - j += len - } - - var length = Math.max(self.length || 0, req.offset + req.data.length) - store.put(length, self.name + DELIM + 'length') - store.transaction.addEventListener('complete', function () { - self.length = length - req.callback(null) + if (err) return req.callback(err) + var offsets = self._blocks(req.offset, req.offset + req.size) + var pending = offsets.length + 1 + var firstBlock = offsets.length > 0 ? offsets[0].block : 0 + for (var i = 0; i < offsets.length; i++) (function (o) { + var key = self.name + DELIM + o.block + backify(store.get(key), function (err, ev) { + if (err) return req.callback(err) + buffers[o.block - firstBlock] = ev.target.result + ? b4a.from(ev.target.result.subarray(o.start, o.end)) + : bufferAlloc(o.end - o.start) + if (--pending === 0) req.callback(null, b4a.concat(buffers)) + }) + })(offsets[i]) + if (--pending === 0) req.callback(null, b4a.concat(buffers)) }) - store.transaction.addEventListener('error', function (err) { - req.callback(err) + } + + _write (req) { + var self = this + self._store('readwrite', function (err, store) { + if (err) return req.callback(err) + var offsets = self._blocks(req.offset, req.offset + req.data.length) + var pending = 1 + var buffers = {} + for (var i = 0; i < offsets.length; i++) (function (o, i) { + if (o.end - o.start === self.size) return + pending++ + var key = self.name + DELIM + o.block + backify(store.get(key), function (err, ev) { + if (err) return req.callback(err) + buffers[i] = b4a.from(ev.target.result || bufferAlloc(self.size)) + if (--pending === 0) write(store, offsets, buffers) + }) + })(offsets[i], i) + if (--pending === 0) write(store, offsets, buffers) }) + + function write (store, offsets, buffers) { + var block + for (var i = 0, j = 0; i < offsets.length; i++) { + var o = offsets[i] + var len = o.end - o.start + if (len === self.size) { + block = b4a.from(req.data.slice(j, j + len)) + } else { + block = buffers[i] + b4a.copy(req.data, block, o.start, j, j + len) + } + store.put(block, self.name + DELIM + o.block) + j += len + } + + var length = Math.max(self.length || 0, req.offset + req.data.length) + store.put(length, self.name + DELIM + 'length') + store.transaction.addEventListener('complete', function () { + self.length = length + req.callback(null) + }) + store.transaction.addEventListener('error', function (err) { + req.callback(err) + }) + } } -} -Store.prototype._store = function (mode, cb) { - cb = once(cb) - var self = this - self._getdb(function (db) { - var tx = db.transaction(['data'], mode) - var store = tx.objectStore('data') - tx.addEventListener('error', cb) - cb(null, store) - }) -} + _store (mode, cb) { + cb = once(cb) + var self = this + self._getdb(function (db) { + var tx = db.transaction(['data'], mode) + var store = tx.objectStore('data') + tx.addEventListener('error', cb) + cb(null, store) + }) + } -Store.prototype._open = function (req) { - var self = this - this._getdb(function (db) { - self._store('readonly', function (err, store) { - if (err) return req.callback(err) - backify(store.get(self.name + DELIM + 'length'), function (err, ev) { + _open (req) { + var self = this + this._getdb(function (db) { + self._store('readonly', function (err, store) { if (err) return req.callback(err) - self.length = ev.target.result || 0 - req.callback(null) + backify(store.get(self.name + DELIM + 'length'), function (err, ev) { + if (err) return req.callback(err) + self.length = ev.target.result || 0 + req.callback(null) + }) }) }) - }) -} + } -Store.prototype._close = function (req) { - this._getdb(function (db) { - //db.close() // TODO: reopen gracefully. Close breaks with corestore, as innercorestore closes the db - req.callback() - }) -} + _close (req) { + this._getdb(function (db) { + //db.close() // TODO: reopen gracefully. Close breaks with corestore, as innercorestore closes the db + req.callback() + }) + } -Store.prototype._stat = function (req) { - var self = this - nextTick(function () { - req.callback(null, { size: self.length }) - }) + _stat (req) { + var self = this + nextTick(function () { + req.callback(null, { size: self.length }) + }) + } } function backify (r, cb) { diff --git a/package.json b/package.json index fdb170c..ec8dc43 100644 --- a/package.json +++ b/package.json @@ -10,12 +10,12 @@ "mutexify": "^1.3.1", "next-tick": "^1.0.0", "once": "^1.4.0", - "random-access-storage": "^1.4.1" + "random-access-storage": "^3.0.0" }, "devDependencies": { "browser-run": "^8.0.0", "browserify": "^16.5.2", - "random-access-memory": "^3.1.1", + "random-access-memory": "^6.2.0", "randombytes": "^2.1.0", "tape": "^5.0.1" }, diff --git a/test/random.js b/test/random.js index d961835..e1cafc9 100644 --- a/test/random.js +++ b/test/random.js @@ -1,6 +1,6 @@ var test = require('tape') var rai = require('../')('testing-' + Math.random(), { size: 256 }) -var ram = require('random-access-memory') +var Ram = require('random-access-memory') var randombytes = require('randombytes') var balloc = require('buffer-alloc') var b4a = require('b4a') @@ -10,7 +10,7 @@ test('random', function (t) { var nreads = 500 t.plan(2 + nwrites * 2 + nreads) var istore = rai('cool.txt') - var mstore = ram('cool.txt') + var mstore = new Ram('cool.txt') ;(function () { var zeros = balloc(5000 + 1000) diff --git a/test/reopen.js b/test/reopen.js index 3328f4c..f3fb66b 100644 --- a/test/reopen.js +++ b/test/reopen.js @@ -1,6 +1,6 @@ var test = require('tape') var rai = require('../')('testing-' + Math.random(), { size: 256 }) -var ram = require('random-access-memory') +var Ram = require('random-access-memory') var randombytes = require('randombytes') var balloc = require('buffer-alloc') @@ -13,7 +13,7 @@ test('reopen', function (t) { var store = rai('cool.txt') function istore () { if (Math.random() > 0.75) store = rai('cool.txt'); return store } - var mstore = ram('cool.txt') + var mstore = new Ram('cool.txt') ;(function () { var zeros = balloc(500 + 100) From 8210ad11d4057a61d6132b05c3bf76293c3d386e Mon Sep 17 00:00:00 2001 From: Sean Zellmer Date: Sun, 17 Sep 2023 15:36:57 -0500 Subject: [PATCH 4/5] feat: Add `.del()` support --- index.js | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/simple.js | 25 +++++++++++++++++++++++- 2 files changed, 76 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 6b39333..c753a75 100644 --- a/index.js +++ b/index.js @@ -93,6 +93,58 @@ class Store extends RandomAccess { }) } + _del (req) { + var self = this + var buffers = [] + self._store('readwrite', function (err, store) { + if (err) return req.callback(err) + var offsets = self._blocks(req.offset, Math.min(self.length, req.offset + req.size)) + var pending = offsets.length + 1 + var firstBlock = offsets.length > 0 ? offsets[0].block : 0 + var isTruncation = req.offset + req.size >= self.length + for (var i = 0; i < offsets.length; i++) (function (o) { + var key = self.name + DELIM + o.block + var len = o.end - o.start + + // Delete key if truncating and its not a partial block + if (isTruncation && (i !== 0 || len === self.size)) { + backify(store.delete(key), function (err) { + if (err) return req.callback(err) + if (--pending === 0) done(store, req) + }) + } else { + // Get block to be zeroed + backify(store.get(key), function (err, ev) { + if (err) return req.callback(err) + var block = b4a.from(ev.target.result || bufferAlloc(self.size)) + + block.fill(0, o.start, o.end) + + // Commit zeros + backify(store.put(block, self.name + DELIM + o.block), function (err) { + if (err) return req.callback(err) + if (--pending === 0) done(store, req) + }) + }) + } + })(offsets[i]) + if (--pending === 0) done(store, req) + }) + + function done (store, req) { + // Update length in db & on object + var length = req.offset + req.size >= self.length ? req.offset : self.length + store.put(length, self.name + DELIM + 'length') + store.transaction.addEventListener('complete', function () { + self.length = length + req.callback(null) + }) + store.transaction.addEventListener('error', function (err) { + req.callback(err) + }) + } + } + _write (req) { var self = this self._store('readwrite', function (err, store) { diff --git a/test/simple.js b/test/simple.js index 6277ae3..494a6de 100644 --- a/test/simple.js +++ b/test/simple.js @@ -3,7 +3,7 @@ var random = require('../')('testing-' + Math.random(), { size: 5 }) var b4a = require('b4a') test('simple', function (t) { - t.plan(6) + t.plan(15) var cool = random('cool.txt', { size: 5 }) t.equal(cool.name, 'cool.txt') cool.write(100, b4a.from('GREETINGS'), function (err) { @@ -17,6 +17,29 @@ test('simple', function (t) { t.equal(b4a.toString(buf), 'TIN') }) }) + cool.write(200, b4a.from('PARTIALDELETE'), function (err) { + t.ifError(err) + var deletionOffset = 203 + cool.del(deletionOffset, 3, function (err) { + t.ifError(err) + cool.read(deletionOffset, 10, function (err, buf) { + t.ifError(err) + t.equal(b4a.toString(buf), '\0\0\0LDELETE') + }) + }) + }) + cool.write(300, b4a.from('FULLDELETE'), function (err) { + t.ifError(err) + var deletionOffset = 250 + cool.del(deletionOffset, cool.length - deletionOffset, function (err) { + t.ifError(err) + t.equal(cool.length, deletionOffset, 'truncated length') + cool.read(deletionOffset, 10, function (err, buf) { + t.ok(err, 'got error') + t.equal(err.message, 'Could not satisfy length', 'returns error reading out of bounds') + }) + }) + }) }) var exitCode = 0 From fc62a8933a93de3b35c8082e4ef7526ece521330 Mon Sep 17 00:00:00 2001 From: Sean Zellmer Date: Wed, 25 Oct 2023 18:18:12 -0500 Subject: [PATCH 5/5] refact: Remove buffer-alloc dependency No need for `buffer-alloc` when `b4a` supplies the ponyfill for us. --- index.js | 7 +++---- package.json | 1 - test/random.js | 3 +-- test/reopen.js | 4 ++-- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/index.js b/index.js index c753a75..b735f1b 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,6 @@ var inherits = require('inherits') var nextTick = require('next-tick') var once = require('once') var blocks = require('./lib/blocks.js') -var bufferAlloc = require('buffer-alloc') var b4a = require('b4a') var DELIM = '\0' @@ -85,7 +84,7 @@ class Store extends RandomAccess { if (err) return req.callback(err) buffers[o.block - firstBlock] = ev.target.result ? b4a.from(ev.target.result.subarray(o.start, o.end)) - : bufferAlloc(o.end - o.start) + : b4a.alloc(o.end - o.start) if (--pending === 0) req.callback(null, b4a.concat(buffers)) }) })(offsets[i]) @@ -116,7 +115,7 @@ class Store extends RandomAccess { // Get block to be zeroed backify(store.get(key), function (err, ev) { if (err) return req.callback(err) - var block = b4a.from(ev.target.result || bufferAlloc(self.size)) + var block = b4a.from(ev.target.result || b4a.alloc(self.size)) block.fill(0, o.start, o.end) @@ -158,7 +157,7 @@ class Store extends RandomAccess { var key = self.name + DELIM + o.block backify(store.get(key), function (err, ev) { if (err) return req.callback(err) - buffers[i] = b4a.from(ev.target.result || bufferAlloc(self.size)) + buffers[i] = b4a.from(ev.target.result || b4a.alloc(self.size)) if (--pending === 0) write(store, offsets, buffers) }) })(offsets[i], i) diff --git a/package.json b/package.json index ec8dc43..9feea50 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "main": "index.js", "dependencies": { "b4a": "^1.6.4", - "buffer-alloc": "^1.2.0", "inherits": "^2.0.4", "mutexify": "^1.3.1", "next-tick": "^1.0.0", diff --git a/test/random.js b/test/random.js index e1cafc9..7dfb9c6 100644 --- a/test/random.js +++ b/test/random.js @@ -2,7 +2,6 @@ var test = require('tape') var rai = require('../')('testing-' + Math.random(), { size: 256 }) var Ram = require('random-access-memory') var randombytes = require('randombytes') -var balloc = require('buffer-alloc') var b4a = require('b4a') test('random', function (t) { @@ -13,7 +12,7 @@ test('random', function (t) { var mstore = new Ram('cool.txt') ;(function () { - var zeros = balloc(5000 + 1000) + var zeros = b4a.alloc(5000 + 1000) var pending = 2 istore.write(0, zeros, function (err) { t.ifError(err) diff --git a/test/reopen.js b/test/reopen.js index f3fb66b..cbff490 100644 --- a/test/reopen.js +++ b/test/reopen.js @@ -2,7 +2,7 @@ var test = require('tape') var rai = require('../')('testing-' + Math.random(), { size: 256 }) var Ram = require('random-access-memory') var randombytes = require('randombytes') -var balloc = require('buffer-alloc') +var b4a = require('b4a') test('reopen', function (t) { var nwrites = 100 @@ -16,7 +16,7 @@ test('reopen', function (t) { var mstore = new Ram('cool.txt') ;(function () { - var zeros = balloc(500 + 100) + var zeros = b4a.alloc(500 + 100) var pending = 2 istore().write(0, zeros, function (err) { t.ifError(err)