From 5870831d90ded27ebc5428b9b2579a5edf7791a9 Mon Sep 17 00:00:00 2001 From: Jacob Heun Date: Tue, 11 Sep 2018 23:00:26 +0200 Subject: [PATCH 1/3] feat: add basic error codes License: MIT Signed-off-by: Jacob Heun --- package.json | 1 + src/errors.js | 23 +++++++++++++++++++++++ src/index.js | 2 ++ src/memory.js | 6 +++++- src/tests.js | 9 +++++++++ 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/errors.js diff --git a/package.json b/package.json index c4660d6..e0b2430 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ }, "dependencies": { "async": "^2.6.0", + "err-code": "^1.1.2", "pull-defer": "^0.2.2", "pull-stream": "^3.6.1", "uuid": "^3.1.0" diff --git a/src/errors.js b/src/errors.js new file mode 100644 index 0000000..f5e9287 --- /dev/null +++ b/src/errors.js @@ -0,0 +1,23 @@ +'use strict' + +const errcode = require('err-code') + +module.exports.ERR_DB_CANNOT_OPEN = (err) => { + err = err || new Error('Cannot open database') + return errcode(err, 'ERR_CANNOT_OPEN_DB') +} + +module.exports.ERR_DB_DELETE_FAILED = (err) => { + err = err || new Error('Delete failed') + return errcode(err, 'ERR_DB_DELETE_FAILED') +} + +module.exports.ERR_DB_WRITE_FAILED = (err) => { + err = err || new Error('Write failed') + return errcode(err, 'ERR_DB_WRITE_FAILED') +} + +module.exports.ERR_NOT_FOUND = (err) => { + err = err || new Error('Not Found') + return errcode(err, 'ERR_NOT_FOUND') +} diff --git a/src/index.js b/src/index.js index f1bcc5f..d2fba21 100644 --- a/src/index.js +++ b/src/index.js @@ -4,10 +4,12 @@ const Key = require('./key') const MemoryDatastore = require('./memory') const utils = require('./utils') +const Errors = require('./errors') exports.Key = Key exports.MemoryDatastore = MemoryDatastore exports.utils = utils +exports.Errors = Errors /* :: // -- Basics diff --git a/src/memory.js b/src/memory.js index 2a9805e..ffe6ce0 100644 --- a/src/memory.js +++ b/src/memory.js @@ -10,6 +10,10 @@ const asyncFilter = require('./utils').asyncFilter const asyncSort = require('./utils').asyncSort const Key = require('./key') +// Errors +const Errors = require('./errors') +const ERR_NOT_FOUND = Errors.ERR_NOT_FOUND + class MemoryDatastore { /* :: data: {[key: string]: Buffer} */ @@ -34,7 +38,7 @@ class MemoryDatastore { } if (!exists) { - return callback(new Error('No value')) + return callback(ERR_NOT_FOUND()) } callback(null, this.data[key.toString()]) diff --git a/src/tests.js b/src/tests.js index 2d6927a..90b0938 100644 --- a/src/tests.js +++ b/src/tests.js @@ -111,6 +111,15 @@ module.exports = (test/* : Test */) => { }) ], done) }) + + it('should return error with missing key', (done) => { + const k = new Key('/does/not/exist') + check(store).get(k, (err) => { + expect(err).to.exist() + expect(err).to.have.property('code', 'ERR_NOT_FOUND') + done() + }) + }) }) describe('delete', () => { From 75dd48045ca0f9cde6095dcd93ae8d6df57ed29f Mon Sep 17 00:00:00 2001 From: Jacob Heun Date: Tue, 11 Sep 2018 23:05:42 +0200 Subject: [PATCH 2/3] chore: update deps --- package.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index e0b2430..d3d5298 100644 --- a/package.json +++ b/package.json @@ -34,17 +34,17 @@ }, "homepage": "https://github.com/ipfs/interface-datastore#readme", "devDependencies": { - "aegir": "^12.2.0", + "aegir": "^15.1.0", "chai": "^4.1.2", "dirty-chai": "^2.0.1", - "flow-bin": "^0.60.1" + "flow-bin": "~0.60.1" }, "dependencies": { - "async": "^2.6.0", + "async": "^2.6.1", "err-code": "^1.1.2", - "pull-defer": "^0.2.2", - "pull-stream": "^3.6.1", - "uuid": "^3.1.0" + "pull-defer": "~0.2.3", + "pull-stream": "^3.6.9", + "uuid": "^3.3.2" }, "engines": { "node": ">=6.0.0", From 4aa5d1620f32b5c81863e3cb7b53e7f766f8a3ce Mon Sep 17 00:00:00 2001 From: Jacob Heun Date: Wed, 12 Sep 2018 12:06:36 +0200 Subject: [PATCH 3/3] refactor: rename error factory functions License: MIT Signed-off-by: Jacob Heun --- src/errors.js | 10 +++++----- src/memory.js | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/errors.js b/src/errors.js index f5e9287..14ca3ef 100644 --- a/src/errors.js +++ b/src/errors.js @@ -2,22 +2,22 @@ const errcode = require('err-code') -module.exports.ERR_DB_CANNOT_OPEN = (err) => { +module.exports.dbOpenFailedError = (err) => { err = err || new Error('Cannot open database') - return errcode(err, 'ERR_CANNOT_OPEN_DB') + return errcode(err, 'ERR_DB_OPEN_FAILED') } -module.exports.ERR_DB_DELETE_FAILED = (err) => { +module.exports.dbDeleteFailedError = (err) => { err = err || new Error('Delete failed') return errcode(err, 'ERR_DB_DELETE_FAILED') } -module.exports.ERR_DB_WRITE_FAILED = (err) => { +module.exports.dbWriteFailedError = (err) => { err = err || new Error('Write failed') return errcode(err, 'ERR_DB_WRITE_FAILED') } -module.exports.ERR_NOT_FOUND = (err) => { +module.exports.notFoundError = (err) => { err = err || new Error('Not Found') return errcode(err, 'ERR_NOT_FOUND') } diff --git a/src/memory.js b/src/memory.js index ffe6ce0..9ae1a24 100644 --- a/src/memory.js +++ b/src/memory.js @@ -12,7 +12,6 @@ const Key = require('./key') // Errors const Errors = require('./errors') -const ERR_NOT_FOUND = Errors.ERR_NOT_FOUND class MemoryDatastore { /* :: data: {[key: string]: Buffer} */ @@ -38,7 +37,7 @@ class MemoryDatastore { } if (!exists) { - return callback(ERR_NOT_FOUND()) + return callback(Errors.notFoundError()) } callback(null, this.data[key.toString()])