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