UNPKG

@atomictech/xlsx-write-stream

Version:

Stream huge amount of data into an XLSX generated file stream with minimum memory footprint.

51 lines (43 loc) 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _stream = require("stream"); var _templates = require("./templates"); /** * Class representing a XLSX Row transformation from array to Row. */ class XLSXRowTransform extends _stream.Transform { /** * Create new xlsx row transform stream * @param {Object} [options] * @param {Boolean} [options.header=false] - If set to true writer will output first row with an header style. * @param {Boolean} [options.format=true] - If set to false writer will not format cells with number, date, boolean and text. * @param {Styles} [options.styles=new Styles()] - If set you can overwrite default standard type styles by other standard ones or even define custom `formatCode`. */ constructor({ header = false, format = true, styles = new _templates.Styles() }) { super({ objectMode: true }); this.rowCount = 0; this.header = header; this.format = format; this.styles = styles; if (this.header) throw new Error('Header special style output not yet implemented.'); } /** * Transform array to row string */ _transform(row, encoding, callback) { const xlsxRow = (0, _templates.Row)(this.rowCount, row, this.format, this.styles); this.rowCount++; callback(null, xlsxRow); } } exports.default = XLSXRowTransform; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9YTFNYUm93VHJhbnNmb3JtLmpzIl0sIm5hbWVzIjpbIlhMU1hSb3dUcmFuc2Zvcm0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsImhlYWRlciIsImZvcm1hdCIsInN0eWxlcyIsIlN0eWxlcyIsIm9iamVjdE1vZGUiLCJyb3dDb3VudCIsIkVycm9yIiwiX3RyYW5zZm9ybSIsInJvdyIsImVuY29kaW5nIiwiY2FsbGJhY2siLCJ4bHN4Um93Il0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ2UsTUFBTUEsZ0JBQU4sU0FBK0JDLGlCQUEvQixDQUF5QztBQUN0RDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFQyxFQUFBQSxXQUFXLENBQUM7QUFBRUMsSUFBQUEsTUFBTSxHQUFHLEtBQVg7QUFBa0JDLElBQUFBLE1BQU0sR0FBRyxJQUEzQjtBQUFpQ0MsSUFBQUEsTUFBTSxHQUFHLElBQUlDLGlCQUFKO0FBQTFDLEdBQUQsRUFBMkQ7QUFDcEUsVUFBTTtBQUFFQyxNQUFBQSxVQUFVLEVBQUU7QUFBZCxLQUFOO0FBRUEsU0FBS0MsUUFBTCxHQUFnQixDQUFoQjtBQUNBLFNBQUtMLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDtBQUNBLFNBQUtDLE1BQUwsR0FBY0EsTUFBZDtBQUVBLFFBQUksS0FBS0YsTUFBVCxFQUFpQixNQUFNLElBQUlNLEtBQUosQ0FBVSxrREFBVixDQUFOO0FBQ2xCO0FBRUQ7QUFDRjtBQUNBOzs7QUFDRUMsRUFBQUEsVUFBVSxDQUFDQyxHQUFELEVBQU1DLFFBQU4sRUFBZ0JDLFFBQWhCLEVBQTBCO0FBQ2xDLFVBQU1DLE9BQU8sR0FBRyxvQkFBSSxLQUFLTixRQUFULEVBQW1CRyxHQUFuQixFQUF3QixLQUFLUCxNQUE3QixFQUFxQyxLQUFLQyxNQUExQyxDQUFoQjtBQUNBLFNBQUtHLFFBQUw7QUFDQUssSUFBQUEsUUFBUSxDQUFDLElBQUQsRUFBT0MsT0FBUCxDQUFSO0FBQ0Q7O0FBMUJxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zZm9ybSB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBSb3csIFN0eWxlcyB9IGZyb20gJy4vdGVtcGxhdGVzJztcblxuLyoqXG4gKiBDbGFzcyByZXByZXNlbnRpbmcgYSBYTFNYIFJvdyB0cmFuc2Zvcm1hdGlvbiBmcm9tIGFycmF5IHRvIFJvdy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgWExTWFJvd1RyYW5zZm9ybSBleHRlbmRzIFRyYW5zZm9ybSB7XG4gIC8qKlxuICAgKiBDcmVhdGUgbmV3IHhsc3ggcm93IHRyYW5zZm9ybSBzdHJlYW1cbiAgICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmhlYWRlcj1mYWxzZV0gLSBJZiBzZXQgdG8gdHJ1ZSB3cml0ZXIgd2lsbCBvdXRwdXQgZmlyc3Qgcm93IHdpdGggYW4gaGVhZGVyIHN0eWxlLlxuICAgKiBAcGFyYW0ge0Jvb2xlYW59IFtvcHRpb25zLmZvcm1hdD10cnVlXSAtIElmIHNldCB0byBmYWxzZSB3cml0ZXIgd2lsbCBub3QgZm9ybWF0IGNlbGxzIHdpdGggbnVtYmVyLCBkYXRlLCBib29sZWFuIGFuZCB0ZXh0LlxuICAgKiBAcGFyYW0ge1N0eWxlc30gW29wdGlvbnMuc3R5bGVzPW5ldyBTdHlsZXMoKV0gLSBJZiBzZXQgeW91IGNhbiBvdmVyd3JpdGUgZGVmYXVsdCBzdGFuZGFyZCB0eXBlIHN0eWxlcyBieSBvdGhlciBzdGFuZGFyZCBvbmVzIG9yIGV2ZW4gZGVmaW5lIGN1c3RvbSBgZm9ybWF0Q29kZWAuXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih7IGhlYWRlciA9IGZhbHNlLCBmb3JtYXQgPSB0cnVlLCBzdHlsZXMgPSBuZXcgU3R5bGVzKCkgfSkge1xuICAgIHN1cGVyKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcblxuICAgIHRoaXMucm93Q291bnQgPSAwO1xuICAgIHRoaXMuaGVhZGVyID0gaGVhZGVyO1xuICAgIHRoaXMuZm9ybWF0ID0gZm9ybWF0O1xuICAgIHRoaXMuc3R5bGVzID0gc3R5bGVzO1xuXG4gICAgaWYgKHRoaXMuaGVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoJ0hlYWRlciBzcGVjaWFsIHN0eWxlIG91dHB1dCBub3QgeWV0IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybSBhcnJheSB0byByb3cgc3RyaW5nXG4gICAqL1xuICBfdHJhbnNmb3JtKHJvdywgZW5jb2RpbmcsIGNhbGxiYWNrKSB7XG4gICAgY29uc3QgeGxzeFJvdyA9IFJvdyh0aGlzLnJvd0NvdW50LCByb3csIHRoaXMuZm9ybWF0LCB0aGlzLnN0eWxlcyk7XG4gICAgdGhpcy5yb3dDb3VudCsrO1xuICAgIGNhbGxiYWNrKG51bGwsIHhsc3hSb3cpO1xuICB9XG59XG4iXX0=