diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f56da8..0ac1ac9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ All notable changes to this project will be documented in this file automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY! This project adheres to [Semantic Versioning](http://semver.org/). +## v1.0.0 - 2018-03-27 + +* Update file-disk to ^4.1.1 #15 [Alexis Svinartchouk] +* Update e2fsprogs to v1.44.1 #15 [Alexis Svinartchouk] + ## v0.1.1 - 2017-11-21 * Ensure pre-gyp releases use the existing versionbot tag (not a new one) #13 [Tim Perry] diff --git a/deps/e2fsprogs b/deps/e2fsprogs index 05dacf9..7489246 160000 --- a/deps/e2fsprogs +++ b/deps/e2fsprogs @@ -1 +1 @@ -Subproject commit 05dacf97376d0f611544e81cf993161b911ae8e7 +Subproject commit 748924621fdd0e70a191091915fc9724d42e4796 diff --git a/lib/disk.js b/lib/disk.js index 2cb1612..bbb066f 100644 --- a/lib/disk.js +++ b/lib/disk.js @@ -1,12 +1,19 @@ 'use strict'; -const filedisk = require('file-disk'); - const constants = require('./constants'); -class DiskWrapper extends filedisk.DiskWrapper { +const promiseToCallback = (promise, callback, transform) => { + promise + .then((result) => { + const args = (transform === undefined) ? [] : transform(result); + callback(null, ...args); + }) + .catch(callback); +}; + +class DiskWrapper { constructor(disk, offset=0) { - super(disk); + this.disk = disk; this.offset = offset; } @@ -14,16 +21,24 @@ class DiskWrapper extends filedisk.DiskWrapper { offset += this.offset; switch(type) { case constants.E2FS_BLK_READ: - this.disk.read(buffer, 0, buffer.length, offset, callback); + promiseToCallback( + this.disk.read(buffer, 0, buffer.length, offset), + callback, + ({ bytesRead, buffer }) => [ bytesRead, buffer ] + ); break; case constants.E2FS_BLK_WRITE: - this.disk.write(buffer, 0, buffer.length, offset, callback); + promiseToCallback( + this.disk.write(buffer, 0, buffer.length, offset), + callback, + ({ bytesWritten, buffer }) => [ bytesWritten, buffer ] + ); break; case constants.E2FS_BLK_FLUSH: - this.disk.flush(callback); + promiseToCallback(this.disk.flush(), callback); break; case constants.E2FS_BLK_DISCARD: - this.disk.discard(offset, length, callback); + promiseToCallback(this.disk.discard(offset, length), callback); break; default: callback(new Error('Unknown request type: ' + type)); diff --git a/package.json b/package.json index 84a8c0b..364b46d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ext2fs", - "version": "0.1.1", + "version": "1.0.0", "description": "NodeJS native bindings to the libext2fs for cross-platform ext filesystem handling", "author": "Petros Angelatos ", "contributors": [ @@ -30,7 +30,7 @@ "async": "^2.4.1", "bindings": "^1.2.1", "eslint": "^3.19.0", - "file-disk": "^1.0.0", + "file-disk": "^4.1.1", "nan": "^2.5.1", "node-pre-gyp": "^0.6.39" }, @@ -60,4 +60,4 @@ "bugs": { "url": "https://github.com/resin-io/node-ext2fs/issues" } -} \ No newline at end of file +} diff --git a/test/index.js b/test/index.js index 90e48b1..9ffae9f 100644 --- a/test/index.js +++ b/test/index.js @@ -879,7 +879,7 @@ describe('ext2fs', function() { return fs.trimAsync(); }) .then(function() { - return disk.getBlockMapAsync(blockSize); + return disk.getBlockMap(blockSize, true); // true is for calculateChecksums }) .then(function(bmap) { assert.strictEqual(bmap.imageSize, 4194304);