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

var hasRequiredAsync;
function requireAsync() {
  if (hasRequiredAsync) return async;
  hasRequiredAsync = 1;
  Object.defineProperty(async, "__esModule", {
    value: true
  });
  const fsWalk = requireOut();
  const reader_1 = requireReader();
  const stream_1 = requireStream();
  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;
  return async;
}

export { requireAsync as __require };
