| "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'; | 
| } |