[6a3a178] | 1 | "use strict";
|
---|
| 2 | Object.defineProperty(exports, "__esModule", { value: true });
|
---|
| 3 | const stream_1 = require("stream");
|
---|
| 4 | const fsStat = require("@nodelib/fs.stat");
|
---|
| 5 | const fsWalk = require("@nodelib/fs.walk");
|
---|
| 6 | const reader_1 = require("./reader");
|
---|
| 7 | class ReaderStream extends reader_1.default {
|
---|
| 8 | constructor() {
|
---|
| 9 | super(...arguments);
|
---|
| 10 | this._walkStream = fsWalk.walkStream;
|
---|
| 11 | this._stat = fsStat.stat;
|
---|
| 12 | }
|
---|
| 13 | dynamic(root, options) {
|
---|
| 14 | return this._walkStream(root, options);
|
---|
| 15 | }
|
---|
| 16 | static(patterns, options) {
|
---|
| 17 | const filepaths = patterns.map(this._getFullEntryPath, this);
|
---|
| 18 | const stream = new stream_1.PassThrough({ objectMode: true });
|
---|
| 19 | stream._write = (index, _enc, done) => {
|
---|
| 20 | return this._getEntry(filepaths[index], patterns[index], options)
|
---|
| 21 | .then((entry) => {
|
---|
| 22 | if (entry !== null && options.entryFilter(entry)) {
|
---|
| 23 | stream.push(entry);
|
---|
| 24 | }
|
---|
| 25 | if (index === filepaths.length - 1) {
|
---|
| 26 | stream.end();
|
---|
| 27 | }
|
---|
| 28 | done();
|
---|
| 29 | })
|
---|
| 30 | .catch(done);
|
---|
| 31 | };
|
---|
| 32 | for (let i = 0; i < filepaths.length; i++) {
|
---|
| 33 | stream.write(i);
|
---|
| 34 | }
|
---|
| 35 | return stream;
|
---|
| 36 | }
|
---|
| 37 | _getEntry(filepath, pattern, options) {
|
---|
| 38 | return this._getStat(filepath)
|
---|
| 39 | .then((stats) => this._makeEntry(stats, pattern))
|
---|
| 40 | .catch((error) => {
|
---|
| 41 | if (options.errorFilter(error)) {
|
---|
| 42 | return null;
|
---|
| 43 | }
|
---|
| 44 | throw error;
|
---|
| 45 | });
|
---|
| 46 | }
|
---|
| 47 | _getStat(filepath) {
|
---|
| 48 | return new Promise((resolve, reject) => {
|
---|
| 49 | this._stat(filepath, this._fsStatSettings, (error, stats) => {
|
---|
| 50 | return error === null ? resolve(stats) : reject(error);
|
---|
| 51 | });
|
---|
| 52 | });
|
---|
| 53 | }
|
---|
| 54 | }
|
---|
| 55 | exports.default = ReaderStream;
|
---|