@signalk/streams
Version:
Utilities for handling streams of Signal K data
37 lines (36 loc) • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = require("fs");
const stream_1 = require("stream");
class FolderStream extends stream_1.Transform {
folder;
fileIndex = 0;
constructor(options) {
super({ objectMode: false });
this.folder = options.folder;
}
pipe(pipeTo) {
const files = (0, fs_1.readdirSync)(this.folder);
const pipeNextFile = () => {
const file = files[this.fileIndex];
if (!file) {
pipeTo.end();
return;
}
const fileStream = (0, fs_1.createReadStream)(this.folder + '/' + file);
fileStream.pipe(pipeTo, { end: false });
fileStream.on('end', () => {
this.fileIndex++;
if (this.fileIndex === files.length) {
pipeTo.end();
}
else {
pipeNextFile();
}
});
};
pipeNextFile();
return pipeTo;
}
}
exports.default = FolderStream;