| "use strict"; |
| const taskManager = require("./managers/tasks"); |
| 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) { |
| FastGlob.glob = FastGlob; |
| FastGlob.globSync = sync; |
| FastGlob.globStream = stream; |
| FastGlob.async = 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 = [].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; |
| function convertPathToPattern(source) { |
| assertPatternsInput(source); |
| return utils.path.convertPathToPattern(source); |
| } |
| FastGlob.convertPathToPattern = convertPathToPattern; |
| let posix; |
| (function (posix) { |
| function escapePath(source) { |
| assertPatternsInput(source); |
| return utils.path.escapePosixPath(source); |
| } |
| posix.escapePath = escapePath; |
| function convertPathToPattern(source) { |
| assertPatternsInput(source); |
| return utils.path.convertPosixPathToPattern(source); |
| } |
| posix.convertPathToPattern = convertPathToPattern; |
| })(posix = FastGlob.posix || (FastGlob.posix = {})); |
| let win32; |
| (function (win32) { |
| function escapePath(source) { |
| assertPatternsInput(source); |
| return utils.path.escapeWindowsPath(source); |
| } |
| win32.escapePath = escapePath; |
| function convertPathToPattern(source) { |
| assertPatternsInput(source); |
| return utils.path.convertWindowsPathToPattern(source); |
| } |
| win32.convertPathToPattern = convertPathToPattern; |
| })(win32 = FastGlob.win32 || (FastGlob.win32 = {})); |
| })(FastGlob || (FastGlob = {})); |
| function getWorks(source, _Provider, options) { |
| const patterns = [].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; |