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