You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					72 lines
				
				2.1 KiB
			
		
		
			
		
	
	
					72 lines
				
				2.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								"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';
							 | 
						||
| 
								 | 
							
								}
							 |