blob: ce704218bf44f98f0bcd5443ae90758d56714763 [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var optionsManager = require("./managers/options");
4var taskManager = require("./managers/tasks");
5var reader_async_1 = require("./providers/reader-async");
6var reader_stream_1 = require("./providers/reader-stream");
7var reader_sync_1 = require("./providers/reader-sync");
8var arrayUtils = require("./utils/array");
9var streamUtils = require("./utils/stream");
10/**
11 * Synchronous API.
12 */
13function sync(source, opts) {
14 assertPatternsInput(source);
15 var works = getWorks(source, reader_sync_1.default, opts);
16 return arrayUtils.flatten(works);
17}
18exports.sync = sync;
19/**
20 * Asynchronous API.
21 */
22function async(source, opts) {
23 try {
24 assertPatternsInput(source);
25 }
26 catch (error) {
27 return Promise.reject(error);
28 }
29 var works = getWorks(source, reader_async_1.default, opts);
30 return Promise.all(works).then(arrayUtils.flatten);
31}
32exports.async = async;
33/**
34 * Stream API.
35 */
36function stream(source, opts) {
37 assertPatternsInput(source);
38 var works = getWorks(source, reader_stream_1.default, opts);
39 return streamUtils.merge(works);
40}
41exports.stream = stream;
42/**
43 * Return a set of tasks based on provided patterns.
44 */
45function generateTasks(source, opts) {
46 assertPatternsInput(source);
47 var patterns = [].concat(source);
48 var options = optionsManager.prepare(opts);
49 return taskManager.generate(patterns, options);
50}
51exports.generateTasks = generateTasks;
52/**
53 * Returns a set of works based on provided tasks and class of the reader.
54 */
55function getWorks(source, _Reader, opts) {
56 var patterns = [].concat(source);
57 var options = optionsManager.prepare(opts);
58 var tasks = taskManager.generate(patterns, options);
59 var reader = new _Reader(options);
60 return tasks.map(reader.read, reader);
61}
62function assertPatternsInput(source) {
63 if ([].concat(source).every(isString)) {
64 return;
65 }
66 throw new TypeError('Patterns must be a string or an array of strings');
67}
68function isString(source) {
69 /* tslint:disable-next-line strict-type-predicates */
70 return typeof source === 'string';
71}