daniel-san
Version:
a node-based budget-projection engine that helps your routines and finances find balance. The program features aggregates, terminal and file-based reporting output, multi-currency conversion capability and multi-frequency accounting triggers, including: o
112 lines (92 loc) • 3.78 kB
JavaScript
"use strict";
var fs = require('fs');
var path = require('path');
var _require = require('../constants'),
DEFAULT_JSON_SPACING = _require.DEFAULT_JSON_SPACING;
var defaultDirLevels = '/../../../../';
var createStream = function createStream(_ref) {
var _ref$filepath = _ref.filepath,
filepath = _ref$filepath === void 0 ? null : _ref$filepath,
filename = _ref.filename,
_ref$dirname = _ref.dirname,
dirname = _ref$dirname === void 0 ? __dirname : _ref$dirname,
_ref$defineEventHandl = _ref.defineEventHandlers,
defineEventHandlers = _ref$defineEventHandl === void 0 ? true : _ref$defineEventHandl,
_ref$json = _ref.json,
json = _ref$json === void 0 ? false : _ref$json;
var defaultPath = path.resolve("".concat(dirname).concat(defaultDirLevels));
if (!filename) {
filename = json ? 'danielSanReport.json' : 'danielSanReport.txt';
}
if (!filepath) {
filepath = path.resolve("".concat(defaultPath, "/reports"));
}
var fullFilename = "".concat(filename);
var absolutePath = path.resolve(filepath, fullFilename);
var fileStream = fs.createWriteStream(absolutePath);
if (defineEventHandlers) {
// the finish event is emitted when all data has been flushed from the stream
fileStream.on('finish', function () {
console.log("wrote all contents to file ".concat(absolutePath)); // eslint-disable-line no-console
}); // handle the errors on the write process
fileStream.on('error', function (err) {
console.error("there was an error writing the file ".concat(absolutePath, " => ").concat(err)); // eslint-disable-line no-console
});
}
var writeStream = function writeStream(content) {
fileStream.write("".concat(content));
};
return {
fileStream: fileStream,
writeStream: writeStream
};
};
var closeStream = function closeStream(fileStream) {
// close the stream
fileStream.end();
};
var writeJsonToFile = function writeJsonToFile(_ref2) {
var _ref2$filepath = _ref2.filepath,
filepath = _ref2$filepath === void 0 ? null : _ref2$filepath,
_ref2$filename = _ref2.filename,
filename = _ref2$filename === void 0 ? 'danielSanData.json' : _ref2$filename,
_ref2$dirname = _ref2.dirname,
dirname = _ref2$dirname === void 0 ? __dirname : _ref2$dirname,
_ref2$json = _ref2.json,
json = _ref2$json === void 0 ? {} : _ref2$json,
_ref2$jsonSpacing = _ref2.jsonSpacing,
jsonSpacing = _ref2$jsonSpacing === void 0 ? DEFAULT_JSON_SPACING : _ref2$jsonSpacing,
_ref2$onFinish = _ref2.onFinish,
onFinish = _ref2$onFinish === void 0 ? null : _ref2$onFinish,
_ref2$onError = _ref2.onError,
onError = _ref2$onError === void 0 ? null : _ref2$onError;
var defaultPath = path.resolve("".concat(dirname).concat(defaultDirLevels));
if (!filepath) {
filepath = path.resolve("".concat(defaultPath, "/data"));
}
var fullFilename = "".concat(filename);
var absolutePath = path.resolve(filepath, fullFilename);
var fileStream = fs.createWriteStream(absolutePath);
if (onFinish) {
fileStream.on('finish', onFinish);
} else {
fileStream.on('finish', function () {
console.log("wrote all contents to file ".concat(absolutePath)); // eslint-disable-line no-console
});
}
if (onError) {
fileStream.on('error', onError);
} else {
fileStream.on('error', function (err) {
console.error("there was an error writing the file ".concat(absolutePath, " => ").concat(err)); // eslint-disable-line no-console
});
}
fileStream.write(JSON.stringify(json, null, jsonSpacing), function () {
fileStream.end();
});
};
module.exports = {
createStream: createStream,
closeStream: closeStream,
writeJsonToFile: writeJsonToFile
};