| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| var optionsManager = require("./managers/options"); |
| var taskManager = require("./managers/tasks"); |
| var reader_async_1 = require("./providers/reader-async"); |
| var reader_stream_1 = require("./providers/reader-stream"); |
| var reader_sync_1 = require("./providers/reader-sync"); |
| var arrayUtils = require("./utils/array"); |
| var streamUtils = require("./utils/stream"); |
| /** |
| * Synchronous API. |
| */ |
| function sync(source, opts) { |
| assertPatternsInput(source); |
| var works = getWorks(source, reader_sync_1.default, opts); |
| return arrayUtils.flatten(works); |
| } |
| exports.sync = sync; |
| /** |
| * Asynchronous API. |
| */ |
| function async(source, opts) { |
| try { |
| assertPatternsInput(source); |
| } |
| catch (error) { |
| return Promise.reject(error); |
| } |
| var works = getWorks(source, reader_async_1.default, opts); |
| return Promise.all(works).then(arrayUtils.flatten); |
| } |
| exports.async = async; |
| /** |
| * Stream API. |
| */ |
| function stream(source, opts) { |
| assertPatternsInput(source); |
| var works = getWorks(source, reader_stream_1.default, opts); |
| return streamUtils.merge(works); |
| } |
| exports.stream = stream; |
| /** |
| * Return a set of tasks based on provided patterns. |
| */ |
| function generateTasks(source, opts) { |
| assertPatternsInput(source); |
| var patterns = [].concat(source); |
| var options = optionsManager.prepare(opts); |
| return taskManager.generate(patterns, options); |
| } |
| exports.generateTasks = generateTasks; |
| /** |
| * Returns a set of works based on provided tasks and class of the reader. |
| */ |
| function getWorks(source, _Reader, opts) { |
| var patterns = [].concat(source); |
| var options = optionsManager.prepare(opts); |
| var tasks = taskManager.generate(patterns, options); |
| var reader = new _Reader(options); |
| return tasks.map(reader.read, reader); |
| } |
| function assertPatternsInput(source) { |
| if ([].concat(source).every(isString)) { |
| return; |
| } |
| throw new TypeError('Patterns must be a string or an array of strings'); |
| } |
| function isString(source) { |
| /* tslint:disable-next-line strict-type-predicates */ |
| return typeof source === 'string'; |
| } |