UNPKG

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
"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 };