{"ast":null,"code":"\"use strict\";\n\nconst pathUtil = require(\"path\");\n\nconst treeWalker = require(\"./utils/tree_walker\");\n\nconst inspect = require(\"./inspect\");\n\nconst matcher = require(\"./utils/matcher\");\n\nconst validate = require(\"./utils/validate\");\n\nconst validateInput = (methodName, path, options) => {\n  const methodSignature = `${methodName}([path], options)`;\n  validate.argument(methodSignature, \"path\", path, [\"string\"]);\n  validate.options(methodSignature, \"options\", options, {\n    matching: [\"string\", \"array of string\"],\n    files: [\"boolean\"],\n    directories: [\"boolean\"],\n    recursive: [\"boolean\"],\n    ignoreCase: [\"boolean\"]\n  });\n};\n\nconst normalizeOptions = options => {\n  const opts = options || {}; // defaults:\n\n  if (opts.files === undefined) {\n    opts.files = true;\n  }\n\n  if (opts.ignoreCase === undefined) {\n    opts.ignoreCase = false;\n  }\n\n  if (opts.directories === undefined) {\n    opts.directories = false;\n  }\n\n  if (opts.recursive === undefined) {\n    opts.recursive = true;\n  }\n\n  return opts;\n};\n\nconst processFoundPaths = (foundPaths, cwd) => {\n  return foundPaths.map(path => {\n    return pathUtil.relative(cwd, path);\n  });\n};\n\nconst generatePathDoesntExistError = path => {\n  const err = new Error(`Path you want to find stuff in doesn't exist ${path}`);\n  err.code = \"ENOENT\";\n  return err;\n};\n\nconst generatePathNotDirectoryError = path => {\n  const err = new Error(`Path you want to find stuff in must be a directory ${path}`);\n  err.code = \"ENOTDIR\";\n  return err;\n}; // ---------------------------------------------------------\n// Sync\n// ---------------------------------------------------------\n\n\nconst findSync = (path, options) => {\n  const foundAbsolutePaths = [];\n  const matchesAnyOfGlobs = matcher.create(path, options.matching, options.ignoreCase);\n  let maxLevelsDeep = Infinity;\n\n  if (options.recursive === false) {\n    maxLevelsDeep = 1;\n  }\n\n  treeWalker.sync(path, {\n    maxLevelsDeep,\n    symlinks: \"follow\"\n  }, (itemPath, item) => {\n    if (item && itemPath !== path && matchesAnyOfGlobs(itemPath)) {\n      if (item.type === \"file\" && options.files === true || item.type === \"dir\" && options.directories === true) {\n        foundAbsolutePaths.push(itemPath);\n      }\n    }\n  });\n  return processFoundPaths(foundAbsolutePaths, options.cwd);\n};\n\nconst findSyncInit = (path, options) => {\n  const entryPointInspect = inspect.sync(path, {\n    symlinks: \"follow\"\n  });\n\n  if (entryPointInspect === undefined) {\n    throw generatePathDoesntExistError(path);\n  } else if (entryPointInspect.type !== \"dir\") {\n    throw generatePathNotDirectoryError(path);\n  }\n\n  return findSync(path, normalizeOptions(options));\n}; // ---------------------------------------------------------\n// Async\n// ---------------------------------------------------------\n\n\nconst findAsync = (path, options) => {\n  return new Promise((resolve, reject) => {\n    const foundAbsolutePaths = [];\n    const matchesAnyOfGlobs = matcher.create(path, options.matching, options.ignoreCase);\n    let maxLevelsDeep = Infinity;\n\n    if (options.recursive === false) {\n      maxLevelsDeep = 1;\n    }\n\n    treeWalker.async(path, {\n      maxLevelsDeep,\n      symlinks: \"follow\"\n    }, (itemPath, item) => {\n      if (item && itemPath !== path && matchesAnyOfGlobs(itemPath)) {\n        if (item.type === \"file\" && options.files === true || item.type === \"dir\" && options.directories === true) {\n          foundAbsolutePaths.push(itemPath);\n        }\n      }\n    }, err => {\n      if (err) {\n        reject(err);\n      } else {\n        resolve(processFoundPaths(foundAbsolutePaths, options.cwd));\n      }\n    });\n  });\n};\n\nconst findAsyncInit = (path, options) => {\n  return inspect.async(path, {\n    symlinks: \"follow\"\n  }).then(entryPointInspect => {\n    if (entryPointInspect === undefined) {\n      throw generatePathDoesntExistError(path);\n    } else if (entryPointInspect.type !== \"dir\") {\n      throw generatePathNotDirectoryError(path);\n    }\n\n    return findAsync(path, normalizeOptions(options));\n  });\n}; // ---------------------------------------------------------\n// API\n// ---------------------------------------------------------\n\n\nexports.validateInput = validateInput;\nexports.sync = findSyncInit;\nexports.async = findAsyncInit;","map":{"version":3,"sources":["D:/Development/Work/CENOS/cenos-ui/node_modules/fs-jetpack/lib/find.js"],"names":["pathUtil","require","treeWalker","inspect","matcher","validate","validateInput","methodName","path","options","methodSignature","argument","matching","files","directories","recursive","ignoreCase","normalizeOptions","opts","undefined","processFoundPaths","foundPaths","cwd","map","relative","generatePathDoesntExistError","err","Error","code","generatePathNotDirectoryError","findSync","foundAbsolutePaths","matchesAnyOfGlobs","create","maxLevelsDeep","Infinity","sync","symlinks","itemPath","item","type","push","findSyncInit","entryPointInspect","findAsync","Promise","resolve","reject","async","findAsyncInit","then","exports"],"mappings":"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","sourcesContent":["\"use strict\";\n\nconst pathUtil = require(\"path\");\nconst treeWalker = require(\"./utils/tree_walker\");\nconst inspect = require(\"./inspect\");\nconst matcher = require(\"./utils/matcher\");\nconst validate = require(\"./utils/validate\");\n\nconst validateInput = (methodName, path, options) => {\n  const methodSignature = `${methodName}([path], options)`;\n  validate.argument(methodSignature, \"path\", path, [\"string\"]);\n  validate.options(methodSignature, \"options\", options, {\n    matching: [\"string\", \"array of string\"],\n    files: [\"boolean\"],\n    directories: [\"boolean\"],\n    recursive: [\"boolean\"],\n    ignoreCase: [\"boolean\"]\n  });\n};\n\nconst normalizeOptions = options => {\n  const opts = options || {};\n  // defaults:\n  if (opts.files === undefined) {\n    opts.files = true;\n  }\n  if (opts.ignoreCase === undefined) {\n    opts.ignoreCase = false;\n  }\n  if (opts.directories === undefined) {\n    opts.directories = false;\n  }\n  if (opts.recursive === undefined) {\n    opts.recursive = true;\n  }\n  return opts;\n};\n\nconst processFoundPaths = (foundPaths, cwd) => {\n  return foundPaths.map(path => {\n    return pathUtil.relative(cwd, path);\n  });\n};\n\nconst generatePathDoesntExistError = path => {\n  const err = new Error(`Path you want to find stuff in doesn't exist ${path}`);\n  err.code = \"ENOENT\";\n  return err;\n};\n\nconst generatePathNotDirectoryError = path => {\n  const err = new Error(\n    `Path you want to find stuff in must be a directory ${path}`\n  );\n  err.code = \"ENOTDIR\";\n  return err;\n};\n\n// ---------------------------------------------------------\n// Sync\n// ---------------------------------------------------------\n\nconst findSync = (path, options) => {\n  const foundAbsolutePaths = [];\n  const matchesAnyOfGlobs = matcher.create(\n    path,\n    options.matching,\n    options.ignoreCase\n  );\n\n  let maxLevelsDeep = Infinity;\n  if (options.recursive === false) {\n    maxLevelsDeep = 1;\n  }\n\n  treeWalker.sync(\n    path,\n    { maxLevelsDeep, symlinks: \"follow\" },\n    (itemPath, item) => {\n      if (item && itemPath !== path && matchesAnyOfGlobs(itemPath)) {\n        if (\n          (item.type === \"file\" && options.files === true) ||\n          (item.type === \"dir\" && options.directories === true)\n        ) {\n          foundAbsolutePaths.push(itemPath);\n        }\n      }\n    }\n  );\n\n  return processFoundPaths(foundAbsolutePaths, options.cwd);\n};\n\nconst findSyncInit = (path, options) => {\n  const entryPointInspect = inspect.sync(path, { symlinks: \"follow\" });\n  if (entryPointInspect === undefined) {\n    throw generatePathDoesntExistError(path);\n  } else if (entryPointInspect.type !== \"dir\") {\n    throw generatePathNotDirectoryError(path);\n  }\n\n  return findSync(path, normalizeOptions(options));\n};\n\n// ---------------------------------------------------------\n// Async\n// ---------------------------------------------------------\n\nconst findAsync = (path, options) => {\n  return new Promise((resolve, reject) => {\n    const foundAbsolutePaths = [];\n    const matchesAnyOfGlobs = matcher.create(\n      path,\n      options.matching,\n      options.ignoreCase\n    );\n\n    let maxLevelsDeep = Infinity;\n    if (options.recursive === false) {\n      maxLevelsDeep = 1;\n    }\n\n    treeWalker.async(\n      path,\n      { maxLevelsDeep, symlinks: \"follow\" },\n      (itemPath, item) => {\n        if (item && itemPath !== path && matchesAnyOfGlobs(itemPath)) {\n          if (\n            (item.type === \"file\" && options.files === true) ||\n            (item.type === \"dir\" && options.directories === true)\n          ) {\n            foundAbsolutePaths.push(itemPath);\n          }\n        }\n      },\n      err => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(processFoundPaths(foundAbsolutePaths, options.cwd));\n        }\n      }\n    );\n  });\n};\n\nconst findAsyncInit = (path, options) => {\n  return inspect.async(path, { symlinks: \"follow\" }).then(entryPointInspect => {\n    if (entryPointInspect === undefined) {\n      throw generatePathDoesntExistError(path);\n    } else if (entryPointInspect.type !== \"dir\") {\n      throw generatePathNotDirectoryError(path);\n    }\n    return findAsync(path, normalizeOptions(options));\n  });\n};\n\n// ---------------------------------------------------------\n// API\n// ---------------------------------------------------------\n\nexports.validateInput = validateInput;\nexports.sync = findSyncInit;\nexports.async = findAsyncInit;\n"]},"metadata":{},"sourceType":"script"}