unzipper-esm
Version:
Unzip cross-platform streaming API
55 lines (52 loc) • 1.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = parseOne;
var _stream = require("stream");
var _DuplexStream = _interopRequireDefault(require("./DuplexStream.js"));
var _parse = _interopRequireDefault(require("./parse.js"));
var _BufferStream = _interopRequireDefault(require("./BufferStream.js"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
// 'node:stream'
function parseOne(match, opts) {
var inStream = new _stream.PassThrough({
objectMode: true
});
var outStream = new _stream.PassThrough();
var transform = new _stream.Transform({
objectMode: true,
transform: function transform(entry, e, cb) {
if (found || re && !re.exec(entry.path)) {
entry.autodrain();
return cb();
} else {
found = true;
out.emit('entry', entry);
entry.on('error', function (e) {
outStream.emit('error', e);
});
entry.pipe(outStream).on('error', function (err) {
cb(err);
}).on('finish', function (d) {
cb(null, d);
});
}
}
});
var re = match instanceof RegExp ? match : match && new RegExp(match);
var found;
inStream.pipe((0, _parse["default"])(opts)).on('error', function (err) {
outStream.emit('error', err);
}).pipe(transform).on('error', Object) // Silence error as its already addressed in transform
.on('finish', function () {
if (!found) outStream.emit('error', new Error('PATTERN_NOT_FOUND'));else outStream.end();
});
// Create a combined stream
var out = new _DuplexStream["default"](inStream, outStream);
out.buffer = function () {
return (0, _BufferStream["default"])(outStream);
};
return out;
}
//# sourceMappingURL=parseOne.js.map