| "use strict"; |
| const taskManager = require("./managers/tasks"); |
| const patternManager = require("./managers/patterns"); |
| const async_1 = require("./providers/async"); |
| const stream_1 = require("./providers/stream"); |
| const sync_1 = require("./providers/sync"); |
| const settings_1 = require("./settings"); |
| const utils = require("./utils"); |
| async function FastGlob(source, options) { |
| assertPatternsInput(source); |
| const works = getWorks(source, async_1.default, options); |
| const result = await Promise.all(works); |
| return utils.array.flatten(result); |
| } |
| // https://github.com/typescript-eslint/typescript-eslint/issues/60 |
| // eslint-disable-next-line no-redeclare |
| (function (FastGlob) { |
| function sync(source, options) { |
| assertPatternsInput(source); |
| const works = getWorks(source, sync_1.default, options); |
| return utils.array.flatten(works); |
| } |
| FastGlob.sync = sync; |
| function stream(source, options) { |
| assertPatternsInput(source); |
| const works = getWorks(source, stream_1.default, options); |
| /** |
| * The stream returned by the provider cannot work with an asynchronous iterator. |
| * To support asynchronous iterators, regardless of the number of tasks, we always multiplex streams. |
| * This affects performance (+25%). I don't see best solution right now. |
| */ |
| return utils.stream.merge(works); |
| } |
| FastGlob.stream = stream; |
| function generateTasks(source, options) { |
| assertPatternsInput(source); |
| const patterns = patternManager.transform([].concat(source)); |
| const settings = new settings_1.default(options); |
| return taskManager.generate(patterns, settings); |
| } |
| FastGlob.generateTasks = generateTasks; |
| function isDynamicPattern(source, options) { |
| assertPatternsInput(source); |
| const settings = new settings_1.default(options); |
| return utils.pattern.isDynamicPattern(source, settings); |
| } |
| FastGlob.isDynamicPattern = isDynamicPattern; |
| function escapePath(source) { |
| assertPatternsInput(source); |
| return utils.path.escape(source); |
| } |
| FastGlob.escapePath = escapePath; |
| })(FastGlob || (FastGlob = {})); |
| function getWorks(source, _Provider, options) { |
| const patterns = patternManager.transform([].concat(source)); |
| const settings = new settings_1.default(options); |
| const tasks = taskManager.generate(patterns, settings); |
| const provider = new _Provider(settings); |
| return tasks.map(provider.read, provider); |
| } |
| function assertPatternsInput(input) { |
| const source = [].concat(input); |
| const isValidSource = source.every((item) => utils.string.isString(item) && !utils.string.isEmpty(item)); |
| if (!isValidSource) { |
| throw new TypeError('Patterns must be a string (non empty) or an array of strings'); |
| } |
| } |
| module.exports = FastGlob; |