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