import { __exports as async } from '../../../../../../../_virtual/async2.mjs';
import '../../../../../@nodelib_fs.walk@1.2.8/node_modules/@nodelib/fs.walk/out/index.mjs';
import './reader.mjs';
import './stream.mjs';
import { __exports as out } from '../../../../../../../_virtual/index4.mjs';
import { __exports as reader } from '../../../../../../../_virtual/reader.mjs';
import { __exports as stream } from '../../../../../../../_virtual/stream2.mjs';

Object.defineProperty(async, "__esModule", {
  value: true
});
const fsWalk = out;
const reader_1 = reader;
const stream_1 = stream;
class ReaderAsync extends reader_1.default {
  constructor() {
    super(...arguments);
    this._walkAsync = fsWalk.walk;
    this._readerStream = new stream_1.default(this._settings);
  }
  dynamic(root, options) {
    return new Promise((resolve, reject) => {
      this._walkAsync(root, options, (error, entries) => {
        if (error === null) {
          resolve(entries);
        } else {
          reject(error);
        }
      });
    });
  }
  async static(patterns, options) {
    const entries = [];
    const stream = this._readerStream.static(patterns, options);
    // After #235, replace it with an asynchronous iterator.
    return new Promise((resolve, reject) => {
      stream.once('error', reject);
      stream.on('data', entry => entries.push(entry));
      stream.once('end', () => resolve(entries));
    });
  }
}
async.default = ReaderAsync;
