Skip to content
This repository was archived by the owner on Sep 25, 2020. It is now read-only.

Commit 5651814

Browse files
committed
refactored internals to use Result instead of tuple
1 parent 84c8982 commit 5651814

File tree

3 files changed

+25
-20
lines changed

3 files changed

+25
-20
lines changed

index.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
var process = require('process');
22
var EventEmitter = require('events').EventEmitter;
3+
var Result = require('raynos-rust-result');
34

45
var errors = require('./errors.js');
56
var readDatacenter = require('./read-datacenter.js');
@@ -21,16 +22,17 @@ function fetchConfigSync(dirname, opts) {
2122
// config is EventEmitter purely for `.emit('error', err)`
2223
var config = new EventEmitter();
2324

24-
var datacenterTuple = readDatacenter(opts);
25+
var result = readDatacenter(opts);
2526

26-
if (datacenterTuple[0]) {
27+
if (Result.isErr(result)) {
28+
var err = Result.Err(result);
2729
// throw error async. this allows for breaking a
2830
// circular dependency between config & logger.
2931
process.nextTick(function () {
30-
config.emit('error', datacenterTuple[0]);
32+
config.emit('error', err);
3133
});
3234
} else {
33-
opts.datacenterValue = datacenterTuple[1];
35+
opts.datacenterValue = Result.Ok(result);
3436
}
3537

3638
var configState = getConfigState(dirname, opts);

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
"error": "^4.1.1",
1919
"flatten-prototypes": "^3.0.0",
2020
"minimist": "^1.1.0",
21-
"process": "^0.7.0"
21+
"process": "^0.7.0",
22+
"raynos-rust-result": "0.1.0-improvement3"
2223
},
2324
"devDependencies": {
2425
"coveralls": "^2.10.0",

read-datacenter.js

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var fs = require('fs');
2+
var Result = require('raynos-rust-result');
23

34
var errors = require('./errors.js');
45

@@ -14,40 +15,41 @@ function readDatacenter(opts) {
1415
});
1516
}
1617

17-
var result, error = null;
18+
var result;
1819

1920
// specifying a datacenter is optional in dev but required
2021
// in production.
2122
if (opts.dc) {
22-
var tuple = readFileOrError(opts.dc);
23-
if (tuple[0]) {
24-
var err = tuple[0];
23+
var fileResult = readFileOrError(opts.dc);
24+
if (Result.isErr(fileResult)) {
25+
var err = Result.Err(fileResult);
2526
// create error synchronously for correct stack trace
2627
if (NODE_ENV === 'production') {
27-
error = errors.DatacenterFileRequired({
28+
result = Result.Err(errors.DatacenterFileRequired({
2829
path: err.path,
2930
errno: err.errno,
3031
code: err.code,
3132
syscall: err.syscall
32-
});
33+
}));
3334
} else {
34-
error = errors.MissingDatacenter({
35+
result = Result.Err(errors.MissingDatacenter({
3536
path: err.path,
3637
errno: err.errno,
3738
code: err.code,
3839
syscall: err.syscall
39-
});
40+
}));
4041
}
4142
} else {
42-
result = {
43-
'datacenter': tuple[1].replace(/\s/g, '')
44-
};
43+
result = Result.Ok({
44+
'datacenter': Result.Ok(fileResult)
45+
.replace(/\s/g, '')
46+
});
4547
}
4648
} else {
47-
result = null;
49+
result = Result.Ok(null);
4850
}
4951

50-
return [error, result];
52+
return result;
5153
}
5254

5355
// break try catch into small function to avoid v8 de-optimization
@@ -56,8 +58,8 @@ function readFileOrError(uri) {
5658
try {
5759
content = fs.readFileSync(uri, 'utf8');
5860
} catch (err) {
59-
return [err, null];
61+
return Result.Err(err);
6062
}
6163

62-
return [null, content];
64+
return Result.Ok(content);
6365
}

0 commit comments

Comments
 (0)