{
  "version": 3,
  "file": "jsenv_util.cjs",
  "sources": [
    "../../src/internal/ensureUrlTrailingSlash.js",
    "../../src/isFileSystemPath.js",
    "../../src/fileSystemPathToUrl.js",
    "../../src/assertAndNormalizeDirectoryUrl.js",
    "../../src/assertAndNormalizeFileUrl.js",
    "../../src/internal/statsToType.js",
    "../../src/urlToFileSystemPath.js",
    "../../src/internal/permissions.js",
    "../../src/writeFileSystemNodePermissions.js",
    "../../src/readFileSystemNodeStat.js",
    "../../src/assertDirectoryPresence.js",
    "../../src/assertFilePresence.js",
    "../../src/bufferToEtag.js",
    "../../src/readDirectory.js",
    "../../src/internal/getCommonPathname.js",
    "../../src/internal/pathnameToParentPathname.js",
    "../../src/urlToRelativeUrl.js",
    "../../src/comparePathnames.js",
    "../../src/collectDirectoryMatchReport.js",
    "../../src/collectFiles.js",
    "../../src/writeDirectory.js",
    "../../src/resolveUrl.js",
    "../../src/removeFileSystemNode.js",
    "../../src/ensureEmptyDirectory.js",
    "../../src/ensureParentDirectories.js",
    "../../src/ensureWindowsDriveLetter.js",
    "../../src/internal/urlTargetsSameFileSystemPath.js",
    "../../src/writeFileSystemNodeModificationTime.js",
    "../../src/internal/replaceBackSlashesWithSlashes.js",
    "../../src/readSymbolicLink.js",
    "../../src/writeSymbolicLink.js",
    "../../src/urlIsInsideOf.js",
    "../../src/copyFileSystemNode.js",
    "../../src/readFileSystemNodePermissions.js",
    "../../src/grantPermissionsOnFileSystemNode.js",
    "../../src/memoize.js",
    "../../src/moveFileSystemNode.js",
    "../../src/moveDirectoryContent.js",
    "../../src/readFile.js",
    "../../src/readFileSystemNodeModificationTime.js",
    "../../src/internal/fileSystemNodeToTypeOrNull.js",
    "../../src/internal/createWatcher.js",
    "../../src/internal/trackRessources.js",
    "../../src/registerDirectoryLifecycle.js",
    "../../src/registerFileLifecycle.js",
    "../../src/resolveDirectoryUrl.js",
    "../../src/testFileSystemNodePermissions.js",
    "../../src/urlToScheme.js",
    "../../src/urlToRessource.js",
    "../../src/urlToPathname.js",
    "../../src/urlToFilename.js",
    "../../src/urlToBasename.js",
    "../../src/urlToExtension.js",
    "../../src/urlToOrigin.js",
    "../../src/urlToParentUrl.js",
    "../../src/writeFile.js"
  ],
  "sourcesContent": [
    "export const ensureUrlTrailingSlash = (url) => {\n  return url.endsWith(\"/\") ? url : `${url}/`\n}\n",
    "export const isFileSystemPath = (value) => {\n  if (typeof value !== \"string\") {\n    throw new TypeError(`isFileSystemPath first arg must be a string, got ${value}`)\n  }\n\n  if (value[0] === \"/\") return true\n  return startsWithWindowsDriveLetter(value)\n}\n\nconst startsWithWindowsDriveLetter = (string) => {\n  const firstChar = string[0]\n  if (!/[a-zA-Z]/.test(firstChar)) return false\n\n  const secondChar = string[1]\n  if (secondChar !== \":\") return false\n\n  return true\n}\n",
    "import { pathToFileURL } from \"url\"\nimport { isFileSystemPath } from \"./isFileSystemPath.js\"\n\nexport const fileSystemPathToUrl = (value) => {\n  if (!isFileSystemPath(value)) {\n    throw new Error(`received an invalid value for fileSystemPath: ${value}`)\n  }\n  return String(pathToFileURL(value))\n}\n",
    "import { ensureUrlTrailingSlash } from \"./internal/ensureUrlTrailingSlash.js\"\nimport { isFileSystemPath } from \"./isFileSystemPath.js\"\nimport { fileSystemPathToUrl } from \"./fileSystemPathToUrl.js\"\n\nexport const assertAndNormalizeDirectoryUrl = (value) => {\n  let urlString\n\n  if (value instanceof URL) {\n    urlString = value.href\n  } else if (typeof value === \"string\") {\n    if (isFileSystemPath(value)) {\n      urlString = fileSystemPathToUrl(value)\n    } else {\n      try {\n        urlString = String(new URL(value))\n      } catch (e) {\n        throw new TypeError(`directoryUrl must be a valid url, received ${value}`)\n      }\n    }\n  } else {\n    throw new TypeError(`directoryUrl must be a string or an url, received ${value}`)\n  }\n\n  if (!urlString.startsWith(\"file://\")) {\n    throw new Error(`directoryUrl must starts with file://, received ${value}`)\n  }\n\n  return ensureUrlTrailingSlash(urlString)\n}\n",
    "import { isFileSystemPath } from \"./isFileSystemPath.js\"\nimport { fileSystemPathToUrl } from \"./fileSystemPathToUrl.js\"\n\nexport const assertAndNormalizeFileUrl = (value, baseUrl) => {\n  let urlString\n\n  if (value instanceof URL) {\n    urlString = value.href\n  } else if (typeof value === \"string\") {\n    if (isFileSystemPath(value)) {\n      urlString = fileSystemPathToUrl(value)\n    } else {\n      try {\n        urlString = String(new URL(value, baseUrl))\n      } catch (e) {\n        throw new TypeError(`fileUrl must be a valid url, received ${value}`)\n      }\n    }\n  } else {\n    throw new TypeError(`fileUrl must be a string or an url, received ${value}`)\n  }\n\n  if (!urlString.startsWith(\"file://\")) {\n    throw new Error(`fileUrl must starts with file://, received ${value}`)\n  }\n\n  return urlString\n}\n",
    "export const statsToType = (stats) => {\n  if (stats.isFile()) return \"file\"\n  if (stats.isDirectory()) return \"directory\"\n  if (stats.isSymbolicLink()) return \"symbolic-link\"\n  if (stats.isFIFO()) return \"fifo\"\n  if (stats.isSocket()) return \"socket\"\n  if (stats.isCharacterDevice()) return \"character-device\"\n  if (stats.isBlockDevice()) return \"block-device\"\n  return undefined\n}\n",
    "import { fileURLToPath } from \"url\"\n\nexport const urlToFileSystemPath = (fileUrl) => {\n  if (fileUrl[fileUrl.length - 1] === \"/\") {\n    // remove trailing / so that nodejs path becomes predictable otherwise it logs\n    // the trailing slash on linux but does not on windows\n    fileUrl = fileUrl.slice(0, -1)\n  }\n  const fileSystemPath = fileURLToPath(fileUrl)\n  return fileSystemPath\n}\n",
    "// https://github.com/coderaiser/cloudcmd/issues/63#issuecomment-195478143\n// https://nodejs.org/api/fs.html#fs_file_modes\n// https://github.com/TooTallNate/stat-mode\n\n// cannot get from fs.constants because they are not available on windows\nconst S_IRUSR = 256 /* 0000400 read permission, owner */\nconst S_IWUSR = 128 /* 0000200 write permission, owner */\nconst S_IXUSR = 64 /* 0000100 execute/search permission, owner */\nconst S_IRGRP = 32 /* 0000040 read permission, group */\nconst S_IWGRP = 16 /* 0000020 write permission, group */\nconst S_IXGRP = 8 /* 0000010 execute/search permission, group */\nconst S_IROTH = 4 /* 0000004 read permission, others */\nconst S_IWOTH = 2 /* 0000002 write permission, others */\nconst S_IXOTH = 1 /* 0000001 execute/search permission, others */\n\n/*\nhere we could warn that on windows only 0o444 or 0o666 will work\n\n0o444 (readonly)\n{\n  owner: {read: true, write: false, execute: false},\n  group: {read: true, write: false, execute: false},\n  others: {read: true, write: false, execute: false},\n}\n\n0o666 (read and write)\n{\n  owner: {read: true, write: true, execute: false},\n  group: {read: true, write: true, execute: false},\n  others: {read: true, write: true, execute: false},\n}\n*/\nexport const binaryFlagsToPermissions = (binaryFlags) => {\n  const owner = {\n    read: Boolean(binaryFlags & S_IRUSR),\n    write: Boolean(binaryFlags & S_IWUSR),\n    execute: Boolean(binaryFlags & S_IXUSR),\n  }\n\n  const group = {\n    read: Boolean(binaryFlags & S_IRGRP),\n    write: Boolean(binaryFlags & S_IWGRP),\n    execute: Boolean(binaryFlags & S_IXGRP),\n  }\n\n  const others = {\n    read: Boolean(binaryFlags & S_IROTH),\n    write: Boolean(binaryFlags & S_IWOTH),\n    execute: Boolean(binaryFlags & S_IXOTH),\n  }\n\n  return {\n    owner,\n    group,\n    others,\n  }\n}\n\nexport const permissionsToBinaryFlags = ({ owner, group, others }) => {\n  let binaryFlags = 0\n\n  if (owner.read) binaryFlags |= S_IRUSR\n  if (owner.write) binaryFlags |= S_IWUSR\n  if (owner.execute) binaryFlags |= S_IXUSR\n\n  if (group.read) binaryFlags |= S_IRGRP\n  if (group.write) binaryFlags |= S_IWGRP\n  if (group.execute) binaryFlags |= S_IXGRP\n\n  if (others.read) binaryFlags |= S_IROTH\n  if (others.write) binaryFlags |= S_IWOTH\n  if (others.execute) binaryFlags |= S_IXOTH\n\n  return binaryFlags\n}\n",
    "import { chmod } from \"fs\"\nimport { permissionsToBinaryFlags } from \"./internal/permissions.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nexport const writeFileSystemNodePermissions = async (source, permissions) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  let binaryFlags\n  if (typeof permissions === \"object\") {\n    permissions = {\n      owner: {\n        read: getPermissionOrComputeDefault(\"read\", \"owner\", permissions),\n        write: getPermissionOrComputeDefault(\"write\", \"owner\", permissions),\n        execute: getPermissionOrComputeDefault(\"execute\", \"owner\", permissions),\n      },\n      group: {\n        read: getPermissionOrComputeDefault(\"read\", \"group\", permissions),\n        write: getPermissionOrComputeDefault(\"write\", \"group\", permissions),\n        execute: getPermissionOrComputeDefault(\"execute\", \"group\", permissions),\n      },\n      others: {\n        read: getPermissionOrComputeDefault(\"read\", \"others\", permissions),\n        write: getPermissionOrComputeDefault(\"write\", \"others\", permissions),\n        execute: getPermissionOrComputeDefault(\"execute\", \"others\", permissions),\n      },\n    }\n    binaryFlags = permissionsToBinaryFlags(permissions)\n  } else {\n    binaryFlags = permissions\n  }\n\n  return chmodNaive(sourcePath, binaryFlags)\n}\n\nconst chmodNaive = (fileSystemPath, binaryFlags) => {\n  return new Promise((resolve, reject) => {\n    chmod(fileSystemPath, binaryFlags, (error) => {\n      if (error) {\n        reject(error)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\n\nconst actionLevels = { read: 0, write: 1, execute: 2 }\nconst subjectLevels = { others: 0, group: 1, owner: 2 }\n\nconst getPermissionOrComputeDefault = (action, subject, permissions) => {\n  if (subject in permissions) {\n    const subjectPermissions = permissions[subject]\n    if (action in subjectPermissions) {\n      return subjectPermissions[action]\n    }\n\n    const actionLevel = actionLevels[action]\n    const actionFallback = Object.keys(actionLevels).find(\n      (actionFallbackCandidate) =>\n        actionLevels[actionFallbackCandidate] > actionLevel &&\n        actionFallbackCandidate in subjectPermissions,\n    )\n    if (actionFallback) {\n      return subjectPermissions[actionFallback]\n    }\n  }\n\n  const subjectLevel = subjectLevels[subject]\n  // do we have a subject with a stronger level (group or owner)\n  // where we could read the action permission ?\n  const subjectFallback = Object.keys(subjectLevels).find(\n    (subjectFallbackCandidate) =>\n      subjectLevels[subjectFallbackCandidate] > subjectLevel &&\n      subjectFallbackCandidate in permissions,\n  )\n  if (subjectFallback) {\n    const subjectPermissions = permissions[subjectFallback]\n    return action in subjectPermissions\n      ? subjectPermissions[action]\n      : getPermissionOrComputeDefault(action, subjectFallback, permissions)\n  }\n\n  return false\n}\n",
    "import { lstat, stat } from \"fs\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { writeFileSystemNodePermissions } from \"./writeFileSystemNodePermissions.js\"\n\nconst isWindows = process.platform === \"win32\"\n\nexport const readFileSystemNodeStat = async (\n  source,\n  { nullIfNotFound = false, followLink = true } = {},\n) => {\n  if (source.endsWith(\"/\")) source = source.slice(0, -1)\n\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const handleNotFoundOption = nullIfNotFound\n    ? {\n        handleNotFoundError: () => null,\n      }\n    : {}\n\n  return readStat(sourcePath, {\n    followLink,\n    ...handleNotFoundOption,\n    ...(isWindows\n      ? {\n          // Windows can EPERM on stat\n          handlePermissionDeniedError: async (error) => {\n            console.error(`trying to fix windows EPERM after stats on ${sourcePath}`)\n\n            try {\n              // unfortunately it means we mutate the permissions\n              // without being able to restore them to the previous value\n              // (because reading current permission would also throw)\n              await writeFileSystemNodePermissions(sourceUrl, 0o666)\n              const stats = await readStat(sourcePath, {\n                followLink,\n                ...handleNotFoundOption,\n                // could not fix the permission error, give up and throw original error\n                handlePermissionDeniedError: () => {\n                  console.error(`still got EPERM after stats on ${sourcePath}`)\n                  throw error\n                },\n              })\n              return stats\n            } catch (e) {\n              console.error(\n                `error while trying to fix windows EPERM after stats on ${sourcePath}: ${e.stack}`,\n              )\n              throw error\n            }\n          },\n        }\n      : {}),\n  })\n}\n\nconst readStat = (\n  sourcePath,\n  { followLink, handleNotFoundError = null, handlePermissionDeniedError = null } = {},\n) => {\n  const nodeMethod = followLink ? stat : lstat\n\n  return new Promise((resolve, reject) => {\n    nodeMethod(sourcePath, (error, statsObject) => {\n      if (error) {\n        if (handleNotFoundError && error.code === \"ENOENT\") {\n          resolve(handleNotFoundError(error))\n        } else if (\n          handlePermissionDeniedError &&\n          (error.code === \"EPERM\" || error.code === \"EACCES\")\n        ) {\n          resolve(handlePermissionDeniedError(error))\n        } else {\n          reject(error)\n        }\n      } else {\n        resolve(statsObject)\n      }\n    })\n  })\n}\n",
    "import { statsToType } from \"./internal/statsToType.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\n\nexport const assertDirectoryPresence = async (source) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n    nullIfNotFound: true,\n  })\n  if (!sourceStats) {\n    throw new Error(`directory not found at ${sourcePath}`)\n  }\n  if (!sourceStats.isDirectory()) {\n    throw new Error(\n      `directory expected at ${sourcePath} and found ${statsToType(sourceStats)} instead`,\n    )\n  }\n}\n",
    "import { statsToType } from \"./internal/statsToType.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\n\nexport const assertFilePresence = async (source) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n    nullIfNotFound: true,\n  })\n  if (!sourceStats) {\n    throw new Error(`file not found at ${sourcePath}`)\n  }\n  if (!sourceStats.isFile()) {\n    throw new Error(`file expected at ${sourcePath} and found ${statsToType(sourceStats)} instead`)\n  }\n}\n",
    "import { createHash } from \"crypto\"\n\nconst ETAG_FOR_EMPTY_CONTENT = '\"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk\"'\n\nexport const bufferToEtag = (buffer) => {\n  if (!Buffer.isBuffer(buffer)) {\n    throw new TypeError(`buffer expected, got ${buffer}`)\n  }\n\n  if (buffer.length === 0) {\n    return ETAG_FOR_EMPTY_CONTENT\n  }\n\n  const hash = createHash(\"sha1\")\n  hash.update(buffer, \"utf8\")\n\n  const hashBase64String = hash.digest(\"base64\")\n  const hashBase64StringSubset = hashBase64String.slice(0, 27)\n  const length = buffer.length\n\n  return `\"${length.toString(16)}-${hashBase64StringSubset}\"`\n}\n",
    "import { readdir } from \"fs\"\nimport { assertAndNormalizeDirectoryUrl } from \"./assertAndNormalizeDirectoryUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nexport const readDirectory = async (url, { emfileMaxWait = 1000 } = {}) => {\n  const directoryUrl = assertAndNormalizeDirectoryUrl(url)\n  const directoryPath = urlToFileSystemPath(directoryUrl)\n  const startMs = Date.now()\n  let attemptCount = 0\n\n  const attempt = () => {\n    return readdirNaive(directoryPath, {\n      handleTooManyFilesOpenedError: async (error) => {\n        attemptCount++\n        const nowMs = Date.now()\n        const timeSpentWaiting = nowMs - startMs\n        if (timeSpentWaiting > emfileMaxWait) {\n          throw error\n        }\n\n        return new Promise((resolve) => {\n          setTimeout(() => {\n            resolve(attempt())\n          }, attemptCount)\n        })\n      },\n    })\n  }\n\n  return attempt()\n}\n\nconst readdirNaive = (directoryPath, { handleTooManyFilesOpenedError = null } = {}) => {\n  return new Promise((resolve, reject) => {\n    readdir(directoryPath, (error, names) => {\n      if (error) {\n        // https://nodejs.org/dist/latest-v13.x/docs/api/errors.html#errors_common_system_errors\n        if (handleTooManyFilesOpenedError && (error.code === \"EMFILE\" || error.code === \"ENFILE\")) {\n          resolve(handleTooManyFilesOpenedError(error))\n        } else {\n          reject(error)\n        }\n      } else {\n        resolve(names)\n      }\n    })\n  })\n}\n",
    "export const getCommonPathname = (pathname, otherPathname) => {\n  const firstDifferentCharacterIndex = findFirstDifferentCharacterIndex(pathname, otherPathname)\n\n  // pathname and otherpathname are exactly the same\n  if (firstDifferentCharacterIndex === -1) {\n    return pathname\n  }\n\n  const commonString = pathname.slice(0, firstDifferentCharacterIndex + 1)\n\n  // the first different char is at firstDifferentCharacterIndex\n  if (pathname.charAt(firstDifferentCharacterIndex) === \"/\") {\n    return commonString\n  }\n\n  if (otherPathname.charAt(firstDifferentCharacterIndex) === \"/\") {\n    return commonString\n  }\n\n  const firstDifferentSlashIndex = commonString.lastIndexOf(\"/\")\n  return pathname.slice(0, firstDifferentSlashIndex + 1)\n}\n\nconst findFirstDifferentCharacterIndex = (string, otherString) => {\n  const maxCommonLength = Math.min(string.length, otherString.length)\n  let i = 0\n  while (i < maxCommonLength) {\n    const char = string.charAt(i)\n    const otherChar = otherString.charAt(i)\n    if (char !== otherChar) {\n      return i\n    }\n    i++\n  }\n  if (string.length === otherString.length) {\n    return -1\n  }\n  // they differ at maxCommonLength\n  return maxCommonLength\n}\n",
    "export const pathnameToParentPathname = (pathname) => {\n  const slashLastIndex = pathname.lastIndexOf(\"/\")\n  if (slashLastIndex === -1) {\n    return \"/\"\n  }\n\n  return pathname.slice(0, slashLastIndex + 1)\n}\n",
    "import { getCommonPathname } from \"./internal/getCommonPathname.js\"\nimport { pathnameToParentPathname } from \"./internal/pathnameToParentPathname.js\"\n\nexport const urlToRelativeUrl = (urlArg, baseUrlArg) => {\n  const url = new URL(urlArg)\n  const baseUrl = new URL(baseUrlArg)\n\n  if (url.protocol !== baseUrl.protocol) {\n    return urlArg\n  }\n\n  if (url.username !== baseUrl.username || url.password !== baseUrl.password) {\n    return urlArg.slice(url.protocol.length)\n  }\n\n  if (url.host !== baseUrl.host) {\n    return urlArg.slice(url.protocol.length)\n  }\n\n  const { pathname, hash, search } = url\n  if (pathname === \"/\") {\n    return baseUrl.pathname.slice(1)\n  }\n\n  const { pathname: basePathname } = baseUrl\n\n  const commonPathname = getCommonPathname(pathname, basePathname)\n  if (!commonPathname) {\n    return urlArg\n  }\n\n  const specificPathname = pathname.slice(commonPathname.length)\n  const baseSpecificPathname = basePathname.slice(commonPathname.length)\n  if (baseSpecificPathname.includes(\"/\")) {\n    const baseSpecificParentPathname = pathnameToParentPathname(baseSpecificPathname)\n    const relativeDirectoriesNotation = baseSpecificParentPathname.replace(/.*?\\//g, \"../\")\n    return `${relativeDirectoriesNotation}${specificPathname}${search}${hash}`\n  }\n  return `${specificPathname}${search}${hash}`\n}\n",
    "export const comparePathnames = (leftPathame, rightPathname) => {\n  const leftPartArray = leftPathame.split(\"/\")\n  const rightPartArray = rightPathname.split(\"/\")\n\n  const leftLength = leftPartArray.length\n  const rightLength = rightPartArray.length\n\n  const maxLength = Math.max(leftLength, rightLength)\n  let i = 0\n  while (i < maxLength) {\n    const leftPartExists = i in leftPartArray\n    const rightPartExists = i in rightPartArray\n\n    // longer comes first\n    if (!leftPartExists) {\n      return +1\n    }\n    if (!rightPartExists) {\n      return -1\n    }\n\n    const leftPartIsLast = i === leftPartArray.length - 1\n    const rightPartIsLast = i === rightPartArray.length - 1\n    // folder comes first\n    if (leftPartIsLast && !rightPartIsLast) {\n      return +1\n    }\n    if (!leftPartIsLast && rightPartIsLast) {\n      return -1\n    }\n\n    const leftPart = leftPartArray[i]\n    const rightPart = rightPartArray[i]\n    i++\n    // local comparison comes first\n    const comparison = leftPart.localeCompare(rightPart)\n    if (comparison !== 0) {\n      return comparison\n    }\n  }\n\n  if (leftLength < rightLength) {\n    return +1\n  }\n  if (leftLength > rightLength) {\n    return -1\n  }\n  return 0\n}\n",
    "import { createCancellationToken, createOperation } from \"@jsenv/cancellation\"\nimport { normalizeStructuredMetaMap, urlCanContainsMetaMatching, urlToMeta } from \"@jsenv/url-meta\"\nimport { ensureUrlTrailingSlash } from \"./internal/ensureUrlTrailingSlash.js\"\nimport { assertAndNormalizeDirectoryUrl } from \"./assertAndNormalizeDirectoryUrl.js\"\nimport { readDirectory } from \"./readDirectory.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { urlToRelativeUrl } from \"./urlToRelativeUrl.js\"\nimport { comparePathnames } from \"./comparePathnames.js\"\n\nexport const collectDirectoryMatchReport = async ({\n  cancellationToken = createCancellationToken(),\n  directoryUrl,\n  structuredMetaMap,\n  predicate,\n}) => {\n  const matchingArray = []\n  const ignoredArray = []\n\n  const rootDirectoryUrl = assertAndNormalizeDirectoryUrl(directoryUrl)\n  if (typeof predicate !== \"function\") {\n    throw new TypeError(`predicate must be a function, got ${predicate}`)\n  }\n  const structuredMetaMapNormalized = normalizeStructuredMetaMap(\n    structuredMetaMap,\n    rootDirectoryUrl,\n  )\n\n  const visitDirectory = async (directoryUrl) => {\n    const directoryItems = await createOperation({\n      cancellationToken,\n      start: () => readDirectory(directoryUrl),\n    })\n\n    await Promise.all(\n      directoryItems.map(async (directoryItem) => {\n        const directoryChildNodeUrl = `${directoryUrl}${directoryItem}`\n        const relativeUrl = urlToRelativeUrl(directoryChildNodeUrl, rootDirectoryUrl)\n\n        const directoryChildNodeStats = await createOperation({\n          cancellationToken,\n          start: () =>\n            readFileSystemNodeStat(directoryChildNodeUrl, {\n              // we ignore symlink because recursively traversed\n              // so symlinked file will be discovered.\n              // Moreover if they lead outside of directoryPath it can become a problem\n              // like infinite recursion of whatever.\n              // that we could handle using an object of pathname already seen but it will be useless\n              // because directoryPath is recursively traversed\n              followLink: false,\n            }),\n        })\n\n        if (directoryChildNodeStats.isDirectory()) {\n          const subDirectoryUrl = `${directoryChildNodeUrl}/`\n\n          if (\n            !urlCanContainsMetaMatching({\n              url: subDirectoryUrl,\n              structuredMetaMap: structuredMetaMapNormalized,\n              predicate,\n            })\n          ) {\n            ignoredArray.push({\n              relativeUrl: ensureUrlTrailingSlash(relativeUrl),\n              fileStats: directoryChildNodeStats,\n            })\n\n            return\n          }\n\n          await visitDirectory(subDirectoryUrl)\n          return\n        }\n\n        if (directoryChildNodeStats.isFile()) {\n          const meta = urlToMeta({\n            url: directoryChildNodeUrl,\n            structuredMetaMap: structuredMetaMapNormalized,\n          })\n          if (!predicate(meta)) {\n            ignoredArray.push({ relativeUrl, meta, fileStats: directoryChildNodeStats })\n            return\n          }\n\n          matchingArray.push({ relativeUrl, meta, fileStats: directoryChildNodeStats })\n          return\n        }\n      }),\n    )\n  }\n  await visitDirectory(rootDirectoryUrl)\n\n  return {\n    matchingArray: sortByRelativeUrl(matchingArray),\n    ignoredArray: sortByRelativeUrl(ignoredArray),\n  }\n}\n\nconst sortByRelativeUrl = (array) =>\n  array.sort((left, right) => {\n    return comparePathnames(left.relativeUrl, right.relativeUrl)\n  })\n",
    "import { createCancellationToken, createOperation } from \"@jsenv/cancellation\"\nimport { normalizeStructuredMetaMap, urlCanContainsMetaMatching, urlToMeta } from \"@jsenv/url-meta\"\nimport { assertAndNormalizeDirectoryUrl } from \"./assertAndNormalizeDirectoryUrl.js\"\nimport { readDirectory } from \"./readDirectory.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { urlToRelativeUrl } from \"./urlToRelativeUrl.js\"\nimport { comparePathnames } from \"./comparePathnames.js\"\n\nexport const collectFiles = async ({\n  cancellationToken = createCancellationToken(),\n  directoryUrl,\n  structuredMetaMap,\n  predicate,\n  matchingFileOperation = () => null,\n}) => {\n  const rootDirectoryUrl = assertAndNormalizeDirectoryUrl(directoryUrl)\n  if (typeof predicate !== \"function\") {\n    throw new TypeError(`predicate must be a function, got ${predicate}`)\n  }\n  if (typeof matchingFileOperation !== \"function\") {\n    throw new TypeError(`matchingFileOperation must be a function, got ${matchingFileOperation}`)\n  }\n  const structuredMetaMapNormalized = normalizeStructuredMetaMap(\n    structuredMetaMap,\n    rootDirectoryUrl,\n  )\n\n  const matchingFileResultArray = []\n  const visitDirectory = async (directoryUrl) => {\n    const directoryItems = await createOperation({\n      cancellationToken,\n      start: () => readDirectory(directoryUrl),\n    })\n\n    await Promise.all(\n      directoryItems.map(async (directoryItem) => {\n        const directoryChildNodeUrl = `${directoryUrl}${directoryItem}`\n\n        const directoryChildNodeStats = await createOperation({\n          cancellationToken,\n          start: () =>\n            readFileSystemNodeStat(directoryChildNodeUrl, {\n              // we ignore symlink because recursively traversed\n              // so symlinked file will be discovered.\n              // Moreover if they lead outside of directoryPath it can become a problem\n              // like infinite recursion of whatever.\n              // that we could handle using an object of pathname already seen but it will be useless\n              // because directoryPath is recursively traversed\n              followLink: false,\n            }),\n        })\n\n        if (directoryChildNodeStats.isDirectory()) {\n          const subDirectoryUrl = `${directoryChildNodeUrl}/`\n\n          if (\n            !urlCanContainsMetaMatching({\n              url: subDirectoryUrl,\n              structuredMetaMap: structuredMetaMapNormalized,\n              predicate,\n            })\n          ) {\n            return\n          }\n\n          await visitDirectory(subDirectoryUrl)\n          return\n        }\n\n        if (directoryChildNodeStats.isFile()) {\n          const meta = urlToMeta({\n            url: directoryChildNodeUrl,\n            structuredMetaMap: structuredMetaMapNormalized,\n          })\n          if (!predicate(meta)) return\n\n          const relativeUrl = urlToRelativeUrl(directoryChildNodeUrl, rootDirectoryUrl)\n          const operationResult = await createOperation({\n            cancellationToken,\n            start: () =>\n              matchingFileOperation({\n                cancellationToken,\n                relativeUrl,\n                meta,\n                fileStats: directoryChildNodeStats,\n              }),\n          })\n          matchingFileResultArray.push({\n            relativeUrl,\n            meta,\n            fileStats: directoryChildNodeStats,\n            operationResult,\n          })\n          return\n        }\n      }),\n    )\n  }\n  await visitDirectory(rootDirectoryUrl)\n\n  // When we operate on thoose files later it feels more natural\n  // to perform operation in the same order they appear in the filesystem.\n  // It also allow to get a predictable return value.\n  // For that reason we sort matchingFileResultArray\n  matchingFileResultArray.sort((leftFile, rightFile) => {\n    return comparePathnames(leftFile.relativeUrl, rightFile.relativeUrl)\n  })\n  return matchingFileResultArray\n}\n",
    "import { promises } from \"fs\"\nimport { statsToType } from \"./internal/statsToType.js\"\nimport { assertAndNormalizeDirectoryUrl } from \"./assertAndNormalizeDirectoryUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\n\n// https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fspromises_mkdir_path_options\nconst { mkdir } = promises\n\nexport const writeDirectory = async (\n  destination,\n  { recursive = true, allowUseless = false } = {},\n) => {\n  const destinationUrl = assertAndNormalizeDirectoryUrl(destination)\n  const destinationPath = urlToFileSystemPath(destinationUrl)\n\n  const destinationStats = await readFileSystemNodeStat(destinationUrl, {\n    nullIfNotFound: true,\n    followLink: false,\n  })\n\n  if (destinationStats) {\n    if (destinationStats.isDirectory()) {\n      if (allowUseless) {\n        return\n      }\n      throw new Error(`directory already exists at ${destinationPath}`)\n    }\n\n    const destinationType = statsToType(destinationStats)\n    throw new Error(\n      `cannot write directory at ${destinationPath} because there is a ${destinationType}`,\n    )\n  }\n\n  try {\n    await mkdir(destinationPath, { recursive })\n  } catch (error) {\n    if (allowUseless && error.code === \"EEXIST\") {\n      return\n    }\n    throw error\n  }\n}\n",
    "export const resolveUrl = (specifier, baseUrl) => {\n  if (typeof baseUrl === \"undefined\") {\n    throw new TypeError(`baseUrl missing to resolve ${specifier}`)\n  }\n\n  return String(new URL(specifier, baseUrl))\n}\n",
    "import { unlink, rmdir, openSync, closeSync } from \"fs\"\nimport { ensureUrlTrailingSlash } from \"./internal/ensureUrlTrailingSlash.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { readDirectory } from \"./readDirectory.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\n\nexport const removeFileSystemNode = async (\n  source,\n  {\n    allowUseless = false,\n    recursive = false,\n    maxRetries = 3,\n    retryDelay = 100,\n    onlyContent = false,\n  } = {},\n) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n\n  const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n    nullIfNotFound: true,\n    followLink: false,\n  })\n  if (!sourceStats) {\n    if (allowUseless) {\n      return\n    }\n    throw new Error(`nothing to remove at ${urlToFileSystemPath(sourceUrl)}`)\n  }\n\n  // https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_class_fs_stats\n  // FIFO and socket are ignored, not sure what they are exactly and what to do with them\n  // other libraries ignore them, let's do the same.\n  if (\n    sourceStats.isFile() ||\n    sourceStats.isSymbolicLink() ||\n    sourceStats.isCharacterDevice() ||\n    sourceStats.isBlockDevice()\n  ) {\n    await removeNonDirectory(sourceUrl.endsWith(\"/\") ? sourceUrl.slice(0, -1) : sourceUrl, {\n      maxRetries,\n      retryDelay,\n    })\n  } else if (sourceStats.isDirectory()) {\n    await removeDirectory(ensureUrlTrailingSlash(sourceUrl), {\n      recursive,\n      maxRetries,\n      retryDelay,\n      onlyContent,\n    })\n  }\n}\n\nconst removeNonDirectory = (sourceUrl, { maxRetries, retryDelay }) => {\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  let retryCount = 0\n  const attempt = () => {\n    return unlinkNaive(sourcePath, {\n      ...(retryCount >= maxRetries\n        ? {}\n        : {\n            handleTemporaryError: async () => {\n              retryCount++\n              return new Promise((resolve) => {\n                setTimeout(() => {\n                  resolve(attempt())\n                }, retryCount * retryDelay)\n              })\n            },\n          }),\n    })\n  }\n  return attempt()\n}\n\nconst unlinkNaive = (sourcePath, { handleTemporaryError = null } = {}) => {\n  return new Promise((resolve, reject) => {\n    unlink(sourcePath, (error) => {\n      if (error) {\n        if (error.code === \"ENOENT\") {\n          resolve()\n        } else if (\n          handleTemporaryError &&\n          (error.code === \"EBUSY\" ||\n            error.code === \"EMFILE\" ||\n            error.code === \"ENFILE\" ||\n            error.code === \"ENOENT\")\n        ) {\n          resolve(handleTemporaryError(error))\n        } else {\n          reject(error)\n        }\n      } else {\n        resolve()\n      }\n    })\n  })\n}\n\nconst removeDirectory = async (\n  rootDirectoryUrl,\n  { maxRetries, retryDelay, recursive, onlyContent },\n) => {\n  const visit = async (sourceUrl) => {\n    const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n      nullIfNotFound: true,\n      followLink: false,\n    })\n\n    // file/directory not found\n    if (sourceStats === null) {\n      return\n    }\n\n    if (sourceStats.isFile() || sourceStats.isCharacterDevice() || sourceStats.isBlockDevice()) {\n      await visitFile(sourceUrl)\n    } else if (sourceStats.isSymbolicLink()) {\n      await visitSymbolicLink(sourceUrl)\n    } else if (sourceStats.isDirectory()) {\n      await visitDirectory(`${sourceUrl}/`)\n    }\n  }\n\n  const visitDirectory = async (directoryUrl) => {\n    const directoryPath = urlToFileSystemPath(directoryUrl)\n    const optionsFromRecursive = recursive\n      ? {\n          handleNotEmptyError: async () => {\n            await removeDirectoryContent(directoryUrl)\n            await visitDirectory(directoryUrl)\n          },\n        }\n      : {}\n    await removeDirectoryNaive(directoryPath, {\n      ...optionsFromRecursive,\n      // Workaround for https://github.com/joyent/node/issues/4337\n      ...(process.platform === \"win32\"\n        ? {\n            handlePermissionError: async (error) => {\n              console.error(`trying to fix windows EPERM after readir on ${directoryPath}`)\n\n              let openOrCloseError\n              try {\n                const fd = openSync(directoryPath)\n                closeSync(fd)\n              } catch (e) {\n                openOrCloseError = e\n              }\n\n              if (openOrCloseError) {\n                if (openOrCloseError.code === \"ENOENT\") {\n                  return\n                }\n                console.error(\n                  `error while trying to fix windows EPERM after readir on ${directoryPath}: ${openOrCloseError.stack}`,\n                )\n                throw error\n              }\n\n              await removeDirectoryNaive(directoryPath, { ...optionsFromRecursive })\n            },\n          }\n        : {}),\n    })\n  }\n\n  const removeDirectoryContent = async (directoryUrl) => {\n    const names = await readDirectory(directoryUrl)\n    await Promise.all(\n      names.map(async (name) => {\n        const url = resolveUrl(name, directoryUrl)\n        await visit(url)\n      }),\n    )\n  }\n\n  const visitFile = async (fileUrl) => {\n    await removeNonDirectory(fileUrl, { maxRetries, retryDelay })\n  }\n\n  const visitSymbolicLink = async (symbolicLinkUrl) => {\n    await removeNonDirectory(symbolicLinkUrl, { maxRetries, retryDelay })\n  }\n\n  if (onlyContent) {\n    await removeDirectoryContent(rootDirectoryUrl)\n  } else {\n    await visitDirectory(rootDirectoryUrl)\n  }\n}\n\nconst removeDirectoryNaive = (\n  directoryPath,\n  { handleNotEmptyError = null, handlePermissionError = null } = {},\n) => {\n  return new Promise((resolve, reject) => {\n    rmdir(directoryPath, (error, lstatObject) => {\n      if (error) {\n        if (handlePermissionError && error.code === \"EPERM\") {\n          resolve(handlePermissionError(error))\n        } else if (error.code === \"ENOENT\") {\n          resolve()\n        } else if (\n          handleNotEmptyError &&\n          // linux os\n          (error.code === \"ENOTEMPTY\" ||\n            // SunOS\n            error.code === \"EEXIST\")\n        ) {\n          resolve(handleNotEmptyError(error))\n        } else {\n          reject(error)\n        }\n      } else {\n        resolve(lstatObject)\n      }\n    })\n  })\n}\n",
    "import { statsToType } from \"./internal/statsToType.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { writeDirectory } from \"./writeDirectory.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { removeFileSystemNode } from \"./removeFileSystemNode.js\"\n\nexport const ensureEmptyDirectory = async (source) => {\n  const stats = await readFileSystemNodeStat(source, { nullIfNotFound: true, followLink: false })\n  if (stats === null) {\n    // if there is nothing, create a directory\n    return writeDirectory(source, { allowUseless: true })\n  }\n  if (stats.isDirectory()) {\n    // if there is a directory remove its content and done\n    return removeFileSystemNode(source, {\n      allowUseless: true,\n      recursive: true,\n      onlyContent: true,\n    })\n  }\n\n  const sourceType = statsToType(stats)\n  const sourcePath = urlToFileSystemPath(assertAndNormalizeFileUrl(source))\n  throw new Error(\n    `ensureEmptyDirectory expect directory at ${sourcePath}, found ${sourceType} instead`,\n  )\n}\n",
    "import { dirname } from \"path\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { writeDirectory } from \"./writeDirectory.js\"\n\nexport const ensureParentDirectories = async (destination) => {\n  const destinationUrl = assertAndNormalizeFileUrl(destination)\n  const destinationPath = urlToFileSystemPath(destinationUrl)\n  const destinationParentPath = dirname(destinationPath)\n\n  return writeDirectory(destinationParentPath, { recursive: true, allowUseless: true })\n}\n",
    "import { fileSystemPathToUrl } from \"./fileSystemPathToUrl.js\"\n\nconst isWindows = process.platform === \"win32\"\nconst baseUrlFallback = fileSystemPathToUrl(process.cwd())\n\n/**\n * Some url might be resolved or remapped to url without the windows drive letter.\n * For instance\n * new URL('/foo.js', 'file:///C:/dir/file.js')\n * resolves to\n * 'file:///foo.js'\n *\n * But on windows it becomes a problem because we need the drive letter otherwise\n * url cannot be converted to a filesystem path.\n *\n * ensureWindowsDriveLetter ensure a resolved url still contains the drive letter.\n */\n\nexport const ensureWindowsDriveLetter = (url, baseUrl) => {\n  try {\n    url = String(new URL(url))\n  } catch (e) {\n    throw new Error(`absolute url expected but got ${url}`)\n  }\n\n  if (!isWindows) {\n    return url\n  }\n\n  try {\n    baseUrl = String(new URL(baseUrl))\n  } catch (e) {\n    throw new Error(\n      `absolute baseUrl expected but got ${baseUrl} to ensure windows drive letter on ${url}`,\n    )\n  }\n\n  if (!url.startsWith(\"file://\")) {\n    return url\n  }\n  const afterProtocol = url.slice(\"file://\".length)\n  // we still have the windows drive letter\n  if (extractDriveLetter(afterProtocol)) {\n    return url\n  }\n\n  // drive letter was lost, restore it\n  const baseUrlOrFallback = baseUrl.startsWith(\"file://\") ? baseUrl : baseUrlFallback\n  const driveLetter = extractDriveLetter(baseUrlOrFallback.slice(\"file://\".length))\n  if (!driveLetter) {\n    throw new Error(\n      `drive letter expected on baseUrl but got ${baseUrl} to ensure windows drive letter on ${url}`,\n    )\n  }\n  return `file:///${driveLetter}:${afterProtocol}`\n}\n\nconst extractDriveLetter = (ressource) => {\n  // we still have the windows drive letter\n  if (/[a-zA-Z]/.test(ressource[1]) && ressource[2] === \":\") {\n    return ressource[1]\n  }\n  return null\n}\n",
    "export const urlTargetsSameFileSystemPath = (leftUrl, rightUrl) => {\n  if (leftUrl.endsWith(\"/\")) leftUrl = leftUrl.slice(0, -1)\n  if (rightUrl.endsWith(\"/\")) rightUrl = rightUrl.slice(0, -1)\n  return leftUrl === rightUrl\n}\n",
    "import { utimes } from \"fs\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nexport const writeFileSystemNodeModificationTime = (source, mtime) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n  const mtimeValue = typeof mtime === \"number\" ? new Date(Math.floor(mtime)) : mtime\n  // reading atime mutates its value so there is no use case I can think of\n  // where we want to modify it\n  const atimeValue = mtimeValue\n\n  return new Promise((resolve, reject) => {\n    utimes(sourcePath, atimeValue, mtimeValue, (error) => {\n      if (error) {\n        reject(error)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\n",
    "export const replaceBackSlashesWithSlashes = (string) => string.replace(/\\\\/g, \"/\")\n",
    "import { readlink } from \"fs\"\nimport { replaceBackSlashesWithSlashes } from \"./internal/replaceBackSlashesWithSlashes.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { fileSystemPathToUrl } from \"./fileSystemPathToUrl.js\"\nimport { isFileSystemPath } from \"./isFileSystemPath.js\"\n\nexport const readSymbolicLink = (url) => {\n  const symbolicLinkUrl = assertAndNormalizeFileUrl(url)\n  const symbolicLinkPath = urlToFileSystemPath(symbolicLinkUrl)\n\n  return new Promise((resolve, reject) => {\n    readlink(symbolicLinkPath, (error, resolvedPath) => {\n      if (error) {\n        reject(error)\n      } else {\n        resolve(\n          isFileSystemPath(resolvedPath)\n            ? fileSystemPathToUrl(resolvedPath)\n            : replaceBackSlashesWithSlashes(resolvedPath),\n        )\n      }\n    })\n  })\n}\n",
    "import { promises } from \"fs\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { isFileSystemPath } from \"./isFileSystemPath.js\"\nimport { ensureParentDirectories } from \"./ensureParentDirectories.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\n\n// https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fspromises_symlink_target_path_type\nconst { symlink } = promises\nconst isWindows = process.platform === \"win32\"\n\nexport const writeSymbolicLink = async (destination, target, { type } = {}) => {\n  const destinationUrl = assertAndNormalizeFileUrl(destination)\n\n  let targetValue\n  if (typeof target === \"string\") {\n    // absolute filesystem path\n    if (isFileSystemPath(target)) {\n      targetValue = target\n    }\n    // relative url\n    else if (target.startsWith(\"./\") || target.startsWith(\"../\")) {\n      targetValue = target\n    }\n    // absolute url\n    else {\n      const targetUrl = String(new URL(target, destinationUrl))\n      targetValue = urlToFileSystemPath(targetUrl)\n    }\n  } else if (target instanceof URL) {\n    targetValue = urlToFileSystemPath(target)\n  } else {\n    throw new TypeError(`symbolic link target must be a string or an url, received ${target}`)\n  }\n\n  if (isWindows && typeof type === \"undefined\") {\n    // without this if you write a symbolic link without specifying the type on windows\n    // you later get EPERM when doing stat on the symlink\n    const targetUrl = resolveUrl(targetValue, destinationUrl)\n    const targetStats = await readFileSystemNodeStat(targetUrl, { nullIfNotFound: true })\n    type = targetStats && targetStats.isDirectory() ? \"dir\" : \"file\"\n  }\n\n  const symbolicLinkPath = urlToFileSystemPath(destinationUrl)\n  try {\n    await symlink(targetValue, symbolicLinkPath, type)\n  } catch (error) {\n    if (error.code === \"ENOENT\") {\n      await ensureParentDirectories(destinationUrl)\n      await symlink(targetValue, symbolicLinkPath, type)\n      return\n    }\n    throw error\n  }\n}\n",
    "export const urlIsInsideOf = (urlValue, otherUrlValue) => {\n  const url = new URL(urlValue)\n  const otherUrl = new URL(otherUrlValue)\n\n  if (url.origin !== otherUrl.origin) {\n    return false\n  }\n\n  const urlPathname = url.pathname\n  const otherUrlPathname = otherUrl.pathname\n  if (urlPathname === otherUrlPathname) {\n    return false\n  }\n\n  return urlPathname.startsWith(otherUrlPathname)\n}\n",
    "/* eslint-disable import/max-dependencies */\nimport { copyFile as copyFileNode } from \"fs\"\nimport { urlTargetsSameFileSystemPath } from \"./internal/urlTargetsSameFileSystemPath.js\"\nimport { statsToType } from \"./internal/statsToType.js\"\nimport { ensureUrlTrailingSlash } from \"./internal/ensureUrlTrailingSlash.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { binaryFlagsToPermissions } from \"./internal/permissions.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { writeDirectory } from \"./writeDirectory.js\"\nimport { urlToRelativeUrl } from \"./urlToRelativeUrl.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { ensureParentDirectories } from \"./ensureParentDirectories.js\"\nimport { writeFileSystemNodePermissions } from \"./writeFileSystemNodePermissions.js\"\nimport { writeFileSystemNodeModificationTime } from \"./writeFileSystemNodeModificationTime.js\"\nimport { readDirectory } from \"./readDirectory.js\"\nimport { readSymbolicLink } from \"./readSymbolicLink.js\"\nimport { writeSymbolicLink } from \"./writeSymbolicLink.js\"\nimport { urlIsInsideOf } from \"./urlIsInsideOf.js\"\nimport { removeFileSystemNode } from \"./removeFileSystemNode.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nexport const copyFileSystemNode = async (\n  source,\n  destination,\n  {\n    overwrite = false,\n    preserveStat = true,\n    preserveMtime = preserveStat,\n    preservePermissions = preserveStat,\n    allowUseless = false,\n    followLink = true,\n  } = {},\n) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  let destinationUrl = assertAndNormalizeFileUrl(destination)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n    nullIfNotFound: true,\n    followLink: false,\n  })\n  if (!sourceStats) {\n    throw new Error(`nothing to copy at ${sourcePath}`)\n  }\n\n  let destinationStats = await readFileSystemNodeStat(destinationUrl, {\n    nullIfNotFound: true,\n    // we force false here but in fact we will follow the destination link\n    // to know where we will actually move and detect useless move overrite etc..\n    followLink: false,\n  })\n\n  if (followLink && destinationStats && destinationStats.isSymbolicLink()) {\n    const target = await readSymbolicLink(destinationUrl)\n    destinationUrl = resolveUrl(target, destinationUrl)\n    destinationStats = await readFileSystemNodeStat(destinationUrl, { nullIfNotFound: true })\n  }\n  const destinationPath = urlToFileSystemPath(destinationUrl)\n\n  if (urlTargetsSameFileSystemPath(sourceUrl, destinationUrl)) {\n    if (allowUseless) {\n      return\n    }\n    throw new Error(`cannot copy ${sourcePath} because destination and source are the same`)\n  }\n\n  if (destinationStats) {\n    const sourceType = statsToType(sourceStats)\n    const destinationType = statsToType(destinationStats)\n\n    if (sourceType !== destinationType) {\n      throw new Error(\n        `cannot copy ${sourceType} from ${sourcePath} to ${destinationPath} because destination exists and is not a ${sourceType} (it's a ${destinationType})`,\n      )\n    }\n    if (!overwrite) {\n      throw new Error(\n        `cannot copy ${sourceType} from ${sourcePath} to ${destinationPath} because destination exists and overwrite option is disabled`,\n      )\n    }\n\n    // remove file, link, directory...\n    await removeFileSystemNode(destinationUrl, { recursive: true, allowUseless: true })\n  } else {\n    await ensureParentDirectories(destinationUrl)\n  }\n\n  if (sourceStats.isDirectory()) {\n    destinationUrl = ensureUrlTrailingSlash(destinationUrl)\n  }\n\n  const visit = async (url, stats) => {\n    if (stats.isFile() || stats.isCharacterDevice() || stats.isBlockDevice()) {\n      await visitFile(url, stats)\n    } else if (stats.isSymbolicLink()) {\n      await visitSymbolicLink(url, stats)\n    } else if (stats.isDirectory()) {\n      await visitDirectory(ensureUrlTrailingSlash(url), stats)\n    }\n  }\n\n  const visitFile = async (fileUrl, fileStats) => {\n    const fileRelativeUrl = urlToRelativeUrl(fileUrl, sourceUrl)\n    const fileCopyUrl = resolveUrl(fileRelativeUrl, destinationUrl)\n\n    await copyFileContentNaive(urlToFileSystemPath(fileUrl), urlToFileSystemPath(fileCopyUrl))\n    await copyStats(fileCopyUrl, fileStats)\n  }\n\n  const visitSymbolicLink = async (symbolicLinkUrl) => {\n    const symbolicLinkRelativeUrl = urlToRelativeUrl(symbolicLinkUrl, sourceUrl)\n    const symbolicLinkTarget = await readSymbolicLink(symbolicLinkUrl)\n    const symbolicLinkTargetUrl = resolveUrl(symbolicLinkTarget, symbolicLinkUrl)\n    const linkIsRelative =\n      symbolicLinkTarget.startsWith(\"./\") || symbolicLinkTarget.startsWith(\"../\")\n\n    let symbolicLinkCopyTarget\n    if (symbolicLinkTargetUrl === sourceUrl) {\n      symbolicLinkCopyTarget = linkIsRelative ? symbolicLinkTarget : destinationUrl\n    } else if (urlIsInsideOf(symbolicLinkTargetUrl, sourceUrl)) {\n      // symbolic link targets something inside the directory we want to copy\n      // reflects it inside the copied directory structure\n      const linkCopyTargetRelative = urlToRelativeUrl(symbolicLinkTargetUrl, sourceUrl)\n      symbolicLinkCopyTarget = linkIsRelative\n        ? `./${linkCopyTargetRelative}`\n        : resolveUrl(linkCopyTargetRelative, destinationUrl)\n    } else {\n      // symbolic link targets something outside the directory we want to copy\n      symbolicLinkCopyTarget = symbolicLinkTarget\n    }\n\n    // we must guess ourself the type of the symlink\n    // because the destination might not exists because not yet copied\n    // https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fs_symlink_target_path_type_callback\n    const targetStats = await readFileSystemNodeStat(symbolicLinkTargetUrl, {\n      nullIfNotFound: true,\n      followLink: false,\n    })\n    const linkType = targetStats && targetStats.isDirectory() ? \"dir\" : \"file\"\n\n    const symbolicLinkCopyUrl = resolveUrl(symbolicLinkRelativeUrl, destinationUrl)\n    await writeSymbolicLink(symbolicLinkCopyUrl, symbolicLinkCopyTarget, { type: linkType })\n  }\n\n  const copyStats = async (destinationUrl, stats) => {\n    if (preservePermissions || preserveMtime) {\n      const { mode, mtimeMs } = stats\n      if (preservePermissions) {\n        await writeFileSystemNodePermissions(destinationUrl, binaryFlagsToPermissions(mode))\n      }\n      if (preserveMtime) {\n        await writeFileSystemNodeModificationTime(destinationUrl, mtimeMs)\n      }\n    }\n  }\n\n  const visitDirectory = async (directoryUrl, directoryStats) => {\n    const directoryRelativeUrl = urlToRelativeUrl(directoryUrl, sourceUrl)\n    const directoryCopyUrl = resolveUrl(directoryRelativeUrl, destinationUrl)\n\n    await writeDirectory(directoryCopyUrl)\n    await copyDirectoryContent(directoryUrl)\n    await copyStats(directoryCopyUrl, directoryStats)\n  }\n\n  const copyDirectoryContent = async (directoryUrl) => {\n    const names = await readDirectory(directoryUrl)\n    await Promise.all(\n      names.map(async (name) => {\n        const fileSystemNodeUrl = resolveUrl(name, directoryUrl)\n        const stats = await readFileSystemNodeStat(fileSystemNodeUrl, { followLink: false })\n        await visit(fileSystemNodeUrl, stats)\n      }),\n    )\n  }\n\n  await visit(sourceUrl, sourceStats)\n}\n\nconst copyFileContentNaive = (filePath, fileDestinationPath) => {\n  return new Promise((resolve, reject) => {\n    copyFileNode(filePath, fileDestinationPath, (error) => {\n      if (error) {\n        reject(error)\n      } else {\n        resolve()\n      }\n    })\n  })\n}\n",
    "import { promises } from \"fs\"\nimport { binaryFlagsToPermissions } from \"./internal/permissions.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nconst { stat } = promises\n\nexport const readFileSystemNodePermissions = async (source) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const { mode } = await stat(sourcePath)\n  return binaryFlagsToPermissions(mode)\n}\n",
    "import { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { readFileSystemNodePermissions } from \"./readFileSystemNodePermissions.js\"\nimport { writeFileSystemNodePermissions } from \"./writeFileSystemNodePermissions.js\"\n\nexport const grantPermissionsOnFileSystemNode = async (\n  source,\n  { read = false, write = false, execute = false },\n) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n\n  const filePermissions = await readFileSystemNodePermissions(sourceUrl)\n  await writeFileSystemNodePermissions(sourceUrl, {\n    owner: { read, write, execute },\n    group: { read, write, execute },\n    others: { read, write, execute },\n  })\n  return async () => {\n    await writeFileSystemNodePermissions(sourceUrl, filePermissions)\n  }\n}\n",
    "export const memoize = (compute) => {\n  let memoized = false\n  let memoizedValue\n\n  const fnWithMemoization = (...args) => {\n    if (memoized) {\n      return memoizedValue\n    }\n    // if compute is recursive wait for it to be fully done before storing the value\n    // so set memoized boolean after the call\n    memoizedValue = compute(...args)\n    memoized = true\n    return memoizedValue\n  }\n\n  fnWithMemoization.forget = () => {\n    const value = memoizedValue\n    memoized = false\n    memoizedValue = undefined\n    return value\n  }\n\n  return fnWithMemoization\n}\n",
    "/* eslint-disable import/max-dependencies */\nimport { rename } from \"fs\"\nimport { urlTargetsSameFileSystemPath } from \"./internal/urlTargetsSameFileSystemPath.js\"\nimport { statsToType } from \"./internal/statsToType.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { ensureParentDirectories } from \"./ensureParentDirectories.js\"\nimport { removeFileSystemNode } from \"./removeFileSystemNode.js\"\nimport { copyFileSystemNode } from \"./copyFileSystemNode.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { readSymbolicLink } from \"./readSymbolicLink.js\"\n\nexport const moveFileSystemNode = async (\n  source,\n  destination,\n  { overwrite = false, allowUseless = false, followLink = true } = {},\n) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  let destinationUrl = assertAndNormalizeFileUrl(destination)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n    nullIfNotFound: true,\n    followLink: false,\n  })\n  if (!sourceStats) {\n    throw new Error(`nothing to move from ${sourcePath}`)\n  }\n\n  let destinationStats = await readFileSystemNodeStat(destinationUrl, {\n    nullIfNotFound: true,\n    // we force false here but in fact we will follow the destination link\n    // to know where we will actually move and detect useless move overrite etc..\n    followLink: false,\n  })\n\n  if (followLink && destinationStats && destinationStats.isSymbolicLink()) {\n    const target = await readSymbolicLink(destinationUrl)\n    destinationUrl = resolveUrl(target, destinationUrl)\n    destinationStats = await readFileSystemNodeStat(destinationUrl, { nullIfNotFound: true })\n  }\n  const destinationPath = urlToFileSystemPath(destinationUrl)\n\n  if (urlTargetsSameFileSystemPath(sourceUrl, destinationUrl)) {\n    if (allowUseless) {\n      return\n    }\n    throw new Error(`no move needed for ${sourcePath} because destination and source are the same`)\n  }\n\n  if (destinationStats) {\n    const sourceType = statsToType(sourceStats)\n    const destinationType = statsToType(destinationStats)\n\n    if (sourceType !== destinationType) {\n      throw new Error(\n        `cannot move ${sourceType} from ${sourcePath} to ${destinationPath} because destination exists and is not a ${sourceType} (it's a ${destinationType})`,\n      )\n    }\n    if (!overwrite) {\n      throw new Error(\n        `cannot move ${sourceType} from ${sourcePath} to ${destinationPath} because destination exists and overwrite option is disabled`,\n      )\n    }\n\n    // remove file, link, directory...\n    await removeFileSystemNode(destinationUrl, { recursive: true })\n  } else {\n    await ensureParentDirectories(destinationUrl)\n  }\n\n  await moveNaive(sourcePath, destinationPath, {\n    handleCrossDeviceError: async () => {\n      await copyFileSystemNode(sourceUrl, destinationUrl, { preserveStat: true })\n      await removeFileSystemNode(sourceUrl, { recursive: true })\n    },\n  })\n}\n\nconst moveNaive = (sourcePath, destinationPath, { handleCrossDeviceError = null } = {}) => {\n  return new Promise((resolve, reject) => {\n    rename(sourcePath, destinationPath, (error) => {\n      if (error) {\n        if (handleCrossDeviceError && error.code === \"EXDEV\") {\n          resolve(handleCrossDeviceError(error))\n        } else {\n          reject(error)\n        }\n      } else {\n        resolve()\n      }\n    })\n  })\n}\n",
    "import { assertAndNormalizeDirectoryUrl } from \"./assertAndNormalizeDirectoryUrl.js\"\nimport { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { readSymbolicLink } from \"./readSymbolicLink.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { readDirectory } from \"./readDirectory.js\"\nimport { moveFileSystemNode } from \"./moveFileSystemNode.js\"\n\nimport { urlTargetsSameFileSystemPath } from \"./internal/urlTargetsSameFileSystemPath.js\"\nimport { statsToType } from \"./internal/statsToType.js\"\n\nexport const moveDirectoryContent = async (\n  source,\n  destination,\n  { overwrite, followLink = true } = {},\n) => {\n  const sourceUrl = assertAndNormalizeDirectoryUrl(source)\n  let destinationUrl = assertAndNormalizeDirectoryUrl(destination)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n\n  const sourceStats = await readFileSystemNodeStat(sourceUrl, {\n    nullIfNotFound: true,\n    followLink: false,\n  })\n  if (!sourceStats) {\n    throw new Error(`no directory to move content from at ${sourcePath}`)\n  }\n  if (!sourceStats.isDirectory()) {\n    const sourceType = statsToType(sourceStats)\n    throw new Error(`found a ${sourceType} instead of a directory at ${sourcePath}`)\n  }\n\n  let destinationStats = await readFileSystemNodeStat(destinationUrl, {\n    nullIfNotFound: true,\n    // we force false here but in fact we will follow the destination link\n    // to know where we will actually move and detect useless move overrite etc..\n    followLink: false,\n  })\n  if (followLink && destinationStats && destinationStats.isSymbolicLink()) {\n    const target = await readSymbolicLink(destinationUrl)\n    destinationUrl = resolveUrl(target, destinationUrl)\n    destinationStats = await readFileSystemNodeStat(destinationUrl, { nullIfNotFound: true })\n  }\n  const destinationPath = urlToFileSystemPath(destinationUrl)\n  if (destinationStats === null) {\n    throw new Error(`no directory to move content into at ${destinationPath}`)\n  }\n  if (!destinationStats.isDirectory()) {\n    const destinationType = statsToType(destinationStats)\n    throw new Error(\n      `destination leads to a ${destinationType} instead of a directory at ${destinationPath}`,\n    )\n  }\n\n  if (urlTargetsSameFileSystemPath(sourceUrl, destinationUrl)) {\n    throw new Error(\n      `cannot move directory content, source and destination are the same (${sourcePath})`,\n    )\n  }\n\n  const directoryEntries = await readDirectory(sourceUrl)\n  await Promise.all(\n    directoryEntries.map(async (directoryEntry) => {\n      const from = resolveUrl(directoryEntry, sourceUrl)\n      const to = resolveUrl(directoryEntry, destinationUrl)\n      await moveFileSystemNode(from, to, { overwrite, followLink })\n    }),\n  )\n}\n",
    "import { promisify } from \"util\"\nimport { readFile as readFileNode } from \"fs\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nconst readFilePromisified = promisify(readFileNode)\nexport const readFile = async (value, { as = \"string\" } = {}) => {\n  const fileUrl = assertAndNormalizeFileUrl(value)\n  const filePath = urlToFileSystemPath(fileUrl)\n  const buffer = await readFilePromisified(filePath)\n  if (as === \"buffer\") {\n    return buffer\n  }\n  if (as === \"string\") {\n    return buffer.toString()\n  }\n  if (as === \"json\") {\n    return JSON.parse(buffer.toString())\n  }\n  throw new Error(`as must be one of buffer,string,json, received ${as}.`)\n}\n",
    "import { readFileSystemNodeStat } from \"./readFileSystemNodeStat.js\"\n\nexport const readFileSystemNodeModificationTime = async (source) => {\n  const stats = await readFileSystemNodeStat(source)\n  return Math.floor(stats.mtimeMs)\n}\n",
    "import { statSync } from \"fs\"\nimport { urlToFileSystemPath } from \"../urlToFileSystemPath.js\"\nimport { statsToType } from \"./statsToType.js\"\n\nexport const fileSystemNodeToTypeOrNull = (url) => {\n  const path = urlToFileSystemPath(url)\n  try {\n    const stats = statSync(path)\n    return statsToType(stats)\n  } catch (e) {\n    if (e.code === \"ENOENT\") {\n      return null\n    }\n    throw e\n  }\n}\n",
    "import { watch, openSync, closeSync } from \"fs\"\n\nconst isWindows = process.platform === \"win32\"\n\nexport const createWatcher = (sourcePath, options) => {\n  const watcher = watch(sourcePath, options)\n\n  if (isWindows) {\n    watcher.on(\"error\", async (error) => {\n      // https://github.com/joyent/node/issues/4337\n      if (error.code === \"EPERM\") {\n        try {\n          const fd = openSync(sourcePath, \"r\")\n          closeSync(fd)\n        } catch (e) {\n          if (e.code === \"ENOENT\") {\n            return\n          }\n          console.error(`error while fixing windows eperm: ${e.stack}`)\n          throw error\n        }\n      } else {\n        throw error\n      }\n    })\n  }\n\n  return watcher\n}\n",
    "export const trackRessources = () => {\n  const callbackArray = []\n\n  const registerCleanupCallback = (callback) => {\n    if (typeof callback !== \"function\")\n      throw new TypeError(`callback must be a function\ncallback: ${callback}`)\n    callbackArray.push(callback)\n    return () => {\n      const index = callbackArray.indexOf(callback)\n      if (index > -1) callbackArray.splice(index, 1)\n    }\n  }\n\n  const cleanup = async (reason) => {\n    const localCallbackArray = callbackArray.slice()\n    await Promise.all(localCallbackArray.map((callback) => callback(reason)))\n  }\n\n  return { registerCleanupCallback, cleanup }\n}\n",
    "/* eslint-disable import/max-dependencies */\nimport { readdirSync } from \"fs\"\nimport { normalizeStructuredMetaMap, urlCanContainsMetaMatching, urlToMeta } from \"@jsenv/url-meta\"\nimport { replaceBackSlashesWithSlashes } from \"./internal/replaceBackSlashesWithSlashes.js\"\nimport { fileSystemNodeToTypeOrNull } from \"./internal/fileSystemNodeToTypeOrNull.js\"\nimport { createWatcher } from \"./internal/createWatcher.js\"\nimport { trackRessources } from \"./internal/trackRessources.js\"\nimport { ensureUrlTrailingSlash } from \"./internal/ensureUrlTrailingSlash.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { urlToRelativeUrl } from \"./urlToRelativeUrl.js\"\n\nconst isLinux = process.platform === \"linux\"\n// linux does not support recursive option\nconst fsWatchSupportsRecursive = !isLinux\n\nexport const registerDirectoryLifecycle = (\n  source,\n  {\n    added,\n    updated,\n    removed,\n    watchDescription = {\n      \"./**/*\": true,\n    },\n    notifyExistent = false,\n    keepProcessAlive = true,\n    recursive = false,\n  },\n) => {\n  const sourceUrl = ensureUrlTrailingSlash(assertAndNormalizeFileUrl(source))\n  if (!undefinedOrFunction(added)) {\n    throw new TypeError(`added must be a function or undefined, got ${added}`)\n  }\n  if (!undefinedOrFunction(updated)) {\n    throw new TypeError(`updated must be a function or undefined, got ${updated}`)\n  }\n  if (!undefinedOrFunction(removed)) {\n    throw new TypeError(`removed must be a function or undefined, got ${removed}`)\n  }\n\n  const structuredMetaMap = normalizeStructuredMetaMap({ watch: watchDescription }, sourceUrl)\n  const entryShouldBeWatched = ({ relativeUrl, type }) => {\n    const entryUrl = resolveUrl(relativeUrl, sourceUrl)\n\n    if (type === \"directory\") {\n      const canContainEntryToWatch = urlCanContainsMetaMatching({\n        url: `${entryUrl}/`,\n        structuredMetaMap,\n        predicate: ({ watch }) => watch,\n      })\n      return canContainEntryToWatch\n    }\n\n    const entryMeta = urlToMeta({\n      url: entryUrl,\n      structuredMetaMap,\n    })\n\n    return entryMeta.watch\n  }\n\n  const tracker = trackRessources()\n\n  const contentMap = new Map()\n\n  const handleDirectoryEvent = ({ directoryRelativeUrl, filename, eventType }) => {\n    if (filename) {\n      if (directoryRelativeUrl) {\n        handleChange(`${directoryRelativeUrl}/${filename}`)\n      } else {\n        handleChange(`${filename}`)\n      }\n    } else if ((removed || added) && eventType === \"rename\") {\n      // we might receive `rename` without filename\n      // in that case we try to find ourselves which file was removed.\n\n      let relativeUrlCandidateArray = Array.from(contentMap.keys())\n\n      if (recursive && !fsWatchSupportsRecursive) {\n        relativeUrlCandidateArray = relativeUrlCandidateArray.filter((relativeUrlCandidate) => {\n          if (!directoryRelativeUrl) {\n            // ensure entry is top level\n            if (relativeUrlCandidate.includes(\"/\")) return false\n            return true\n          }\n\n          // entry not inside this directory\n          if (!relativeUrlCandidate.startsWith(directoryRelativeUrl)) return false\n\n          const afterDirectory = relativeUrlCandidate.slice(directoryRelativeUrl.length + 1)\n          // deep inside this directory\n          if (afterDirectory.includes(\"/\")) return false\n\n          return true\n        })\n      }\n\n      const removedEntryRelativeUrl = relativeUrlCandidateArray.find((relativeUrlCandidate) => {\n        const entryUrl = resolveUrl(relativeUrlCandidate, sourceUrl)\n        const type = fileSystemNodeToTypeOrNull(entryUrl)\n        return type === null\n      })\n\n      if (removedEntryRelativeUrl) {\n        handleEntryLost({\n          relativeUrl: removedEntryRelativeUrl,\n          type: contentMap.get(removedEntryRelativeUrl),\n        })\n      }\n    }\n  }\n\n  const handleChange = (relativeUrl) => {\n    const entryUrl = resolveUrl(relativeUrl, sourceUrl)\n    const previousType = contentMap.get(relativeUrl)\n    const type = fileSystemNodeToTypeOrNull(entryUrl)\n\n    if (!entryShouldBeWatched({ relativeUrl, type })) {\n      return\n    }\n\n    // it's something new\n    if (!previousType) {\n      if (type !== null) {\n        handleEntryFound({ relativeUrl, type, existent: false })\n      }\n      return\n    }\n\n    // it existed but now it's not here anymore\n    if (type === null) {\n      handleEntryLost({ relativeUrl, type: previousType })\n      return\n    }\n\n    // it existed and was replaced by something else\n    // we don't handle this as an update. We rather say the ressource\n    // is lost and something else is found (call removed() then added())\n    if (previousType !== type) {\n      handleEntryLost({ relativeUrl, type: previousType })\n      handleEntryFound({ relativeUrl, type })\n      return\n    }\n\n    // a directory cannot really be updated in way that matters for us\n    // filesystem is trying to tell us the directory content have changed\n    // but we don't care about that\n    // we'll already be notified about what has changed\n    if (type === \"directory\") {\n      return\n    }\n\n    // something has changed at this relativeUrl (the file existed and was not deleted)\n    // it's possible to get there and there is no real update\n    // (file content is the same and file mtime is the same).\n    // In short filesystem is sometimes \"lying\"\n    // Not trying to guard against that because:\n    // - hurt perfs a lot\n    // - it happens very rarely\n    // - it's not really a concern in practice\n    // - filesystem did not send an event out of nowhere:\n    // something occured but we don't know what with the information we have.\n    if (updated) {\n      updated({ relativeUrl, type })\n    }\n  }\n\n  const handleEntryFound = ({ relativeUrl, type, existent }) => {\n    if (!entryShouldBeWatched({ relativeUrl, type })) {\n      return\n    }\n\n    contentMap.set(relativeUrl, type)\n\n    const entryUrl = resolveUrl(relativeUrl, sourceUrl)\n\n    if (type === \"directory\") {\n      visitDirectory({\n        directoryUrl: `${entryUrl}/`,\n        entryFound: (entry) => {\n          handleEntryFound({\n            relativeUrl: `${relativeUrl}/${entry.relativeUrl}`,\n            type: entry.type,\n            existent,\n          })\n        },\n      })\n    }\n\n    if (added) {\n      if (existent) {\n        if (notifyExistent) {\n          added({ relativeUrl, type, existent: true })\n        }\n      } else {\n        added({ relativeUrl, type })\n      }\n    }\n\n    // we must watch manually every directory we find\n    if (!fsWatchSupportsRecursive && type === \"directory\") {\n      const watcher = createWatcher(urlToFileSystemPath(entryUrl), { persistent: keepProcessAlive })\n      tracker.registerCleanupCallback(() => {\n        watcher.close()\n      })\n      watcher.on(\"change\", (eventType, filename) => {\n        handleDirectoryEvent({\n          directoryRelativeUrl: relativeUrl,\n          filename: filename ? replaceBackSlashesWithSlashes(filename) : \"\",\n          eventType,\n        })\n      })\n    }\n  }\n\n  const handleEntryLost = ({ relativeUrl, type }) => {\n    contentMap.delete(relativeUrl)\n    if (removed) {\n      removed({ relativeUrl, type })\n    }\n  }\n\n  visitDirectory({\n    directoryUrl: sourceUrl,\n    entryFound: ({ relativeUrl, type }) => {\n      handleEntryFound({ relativeUrl, type, existent: true })\n    },\n  })\n\n  const watcher = createWatcher(urlToFileSystemPath(sourceUrl), {\n    recursive: recursive && fsWatchSupportsRecursive,\n    persistent: keepProcessAlive,\n  })\n  tracker.registerCleanupCallback(() => {\n    watcher.close()\n  })\n  watcher.on(\"change\", (eventType, fileSystemPath) => {\n    handleDirectoryEvent({\n      ...fileSystemPathToDirectoryRelativeUrlAndFilename(fileSystemPath),\n      eventType,\n    })\n  })\n\n  return tracker.cleanup\n}\n\nconst undefinedOrFunction = (value) => typeof value === \"undefined\" || typeof value === \"function\"\n\nconst visitDirectory = ({ directoryUrl, entryFound }) => {\n  const directoryPath = urlToFileSystemPath(directoryUrl)\n  readdirSync(directoryPath).forEach((entry) => {\n    const entryUrl = resolveUrl(entry, directoryUrl)\n    const type = fileSystemNodeToTypeOrNull(entryUrl)\n    if (type === null) {\n      return\n    }\n\n    const relativeUrl = urlToRelativeUrl(entryUrl, directoryUrl)\n    entryFound({\n      relativeUrl,\n      type,\n    })\n  })\n}\n\nconst fileSystemPathToDirectoryRelativeUrlAndFilename = (path) => {\n  if (!path) {\n    return {\n      directoryRelativeUrl: \"\",\n      filename: \"\",\n    }\n  }\n\n  const normalizedPath = replaceBackSlashesWithSlashes(path)\n  const slashLastIndex = normalizedPath.lastIndexOf(\"/\")\n  if (slashLastIndex === -1) {\n    return {\n      directoryRelativeUrl: \"\",\n      filename: normalizedPath,\n    }\n  }\n\n  const directoryRelativeUrl = normalizedPath.slice(0, slashLastIndex)\n  const filename = normalizedPath.slice(slashLastIndex + 1)\n  return {\n    directoryRelativeUrl,\n    filename,\n  }\n}\n",
    "import { dirname, basename } from \"path\"\nimport { fileSystemNodeToTypeOrNull } from \"./internal/fileSystemNodeToTypeOrNull.js\"\nimport { createWatcher } from \"./internal/createWatcher.js\"\nimport { trackRessources } from \"./internal/trackRessources.js\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nexport const registerFileLifecycle = (\n  source,\n  { added, updated, removed, notifyExistent = false, keepProcessAlive = true },\n) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  if (!undefinedOrFunction(added)) {\n    throw new TypeError(`added must be a function or undefined, got ${added}`)\n  }\n  if (!undefinedOrFunction(updated)) {\n    throw new TypeError(`updated must be a function or undefined, got ${updated}`)\n  }\n  if (!undefinedOrFunction(removed)) {\n    throw new TypeError(`removed must be a function or undefined, got ${removed}`)\n  }\n\n  const tracker = trackRessources()\n\n  const handleFileFound = ({ existent }) => {\n    const fileMutationStopWatching = watchFileMutation(sourceUrl, {\n      updated,\n      removed: () => {\n        fileMutationStopTracking()\n        watchFileAdded()\n        if (removed) {\n          removed()\n        }\n      },\n      keepProcessAlive,\n    })\n    const fileMutationStopTracking = tracker.registerCleanupCallback(fileMutationStopWatching)\n\n    if (added) {\n      if (existent) {\n        if (notifyExistent) {\n          added({ existent: true })\n        }\n      } else {\n        added({})\n      }\n    }\n  }\n\n  const watchFileAdded = () => {\n    const fileCreationStopWatching = watchFileCreation(\n      sourceUrl,\n      () => {\n        fileCreationgStopTracking()\n        handleFileFound({ existent: false })\n      },\n      keepProcessAlive,\n    )\n    const fileCreationgStopTracking = tracker.registerCleanupCallback(fileCreationStopWatching)\n  }\n\n  const sourceType = fileSystemNodeToTypeOrNull(sourceUrl)\n  if (sourceType === null) {\n    if (added) {\n      watchFileAdded()\n    } else {\n      throw new Error(`${urlToFileSystemPath(sourceUrl)} must lead to a file, found nothing`)\n    }\n  } else if (sourceType === \"file\") {\n    handleFileFound({ existent: true })\n  } else {\n    throw new Error(`${urlToFileSystemPath(sourceUrl)} must lead to a file, type found instead`)\n  }\n\n  return tracker.cleanup\n}\n\nconst undefinedOrFunction = (value) => typeof value === \"undefined\" || typeof value === \"function\"\n\nconst watchFileCreation = (source, callback, keepProcessAlive) => {\n  const sourcePath = urlToFileSystemPath(source)\n  const sourceFilename = basename(sourcePath)\n  const directoryPath = dirname(sourcePath)\n  let directoryWatcher = createWatcher(directoryPath, { persistent: keepProcessAlive })\n  directoryWatcher.on(\"change\", (eventType, filename) => {\n    if (filename && filename !== sourceFilename) return\n\n    const type = fileSystemNodeToTypeOrNull(source)\n    // ignore if something else with that name gets created\n    // we are only interested into files\n    if (type !== \"file\") return\n\n    directoryWatcher.close()\n    directoryWatcher = undefined\n    callback()\n  })\n\n  return () => {\n    if (directoryWatcher) {\n      directoryWatcher.close()\n    }\n  }\n}\n\nconst watchFileMutation = (sourceUrl, { updated, removed, keepProcessAlive }) => {\n  let watcher = createWatcher(urlToFileSystemPath(sourceUrl), { persistent: keepProcessAlive })\n\n  watcher.on(\"change\", () => {\n    const sourceType = fileSystemNodeToTypeOrNull(sourceUrl)\n\n    if (sourceType === null) {\n      watcher.close()\n      watcher = undefined\n      if (removed) {\n        removed()\n      }\n    } else if (sourceType === \"file\") {\n      if (updated) {\n        updated()\n      }\n    }\n  })\n\n  return () => {\n    if (watcher) {\n      watcher.close()\n    }\n  }\n}\n",
    "import { ensureUrlTrailingSlash } from \"./internal/ensureUrlTrailingSlash.js\"\nimport { resolveUrl } from \"./resolveUrl.js\"\n\nexport const resolveDirectoryUrl = (specifier, baseUrl) => {\n  const url = resolveUrl(specifier, baseUrl)\n  return ensureUrlTrailingSlash(url)\n}\n",
    "import { promises, constants } from \"fs\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\n\nconst { access } = promises\nconst {\n  // F_OK,\n  R_OK,\n  W_OK,\n  X_OK,\n} = constants\n\nexport const testFileSystemNodePermissions = async (\n  source,\n  { read = false, write = false, execute = false, allowedIfNotFound = false } = {},\n) => {\n  const sourceUrl = assertAndNormalizeFileUrl(source)\n  const sourcePath = urlToFileSystemPath(sourceUrl)\n  let binaryFlags = 0\n\n  // if (visible) binaryFlags |= F_OK\n  if (read) binaryFlags |= R_OK\n  if (write) binaryFlags |= W_OK\n  if (execute) binaryFlags |= X_OK\n\n  try {\n    await access(sourcePath, binaryFlags)\n    return true\n  } catch (error) {\n    if (error.code === \"ENOENT\") {\n      if (allowedIfNotFound) {\n        return true\n      }\n      throw error\n    }\n    return false\n  }\n}\n",
    "export const urlToScheme = (urlString) => {\n  const colonIndex = urlString.indexOf(\":\")\n  if (colonIndex === -1) {\n    return \"\"\n  }\n\n  const scheme = urlString.slice(0, colonIndex)\n  return scheme\n}\n",
    "import { urlToScheme } from \"./urlToScheme.js\"\n\nexport const urlToRessource = (urlString) => {\n  const scheme = urlToScheme(urlString)\n\n  if (scheme === \"file\") {\n    return urlString.slice(\"file://\".length)\n  }\n\n  if (scheme === \"https\" || scheme === \"http\") {\n    // remove origin\n    const afterProtocol = urlString.slice(scheme.length + \"://\".length)\n    const pathnameSlashIndex = afterProtocol.indexOf(\"/\", \"://\".length)\n    return afterProtocol.slice(pathnameSlashIndex)\n  }\n\n  return urlString.slice(scheme.length + 1)\n}\n",
    "import { urlToRessource } from \"./urlToRessource.js\"\n\nexport const urlToPathname = (urlString) => {\n  const ressource = urlToRessource(urlString)\n  const pathname = ressourceToPathname(ressource)\n  return pathname\n}\n\nconst ressourceToPathname = (ressource) => {\n  const searchSeparatorIndex = ressource.indexOf(\"?\")\n  return searchSeparatorIndex === -1 ? ressource : ressource.slice(0, searchSeparatorIndex)\n}\n",
    "import { urlToPathname } from \"./urlToPathname.js\"\n\nexport const urlToFilename = (url) => {\n  const pathname = urlToPathname(url)\n  const pathnameBeforeLastSlash = pathname.endsWith(\"/\") ? pathname.slice(0, -1) : pathname\n  const slashLastIndex = pathnameBeforeLastSlash.lastIndexOf(\"/\")\n  const filename =\n    slashLastIndex === -1\n      ? pathnameBeforeLastSlash\n      : pathnameBeforeLastSlash.slice(slashLastIndex + 1)\n  return filename\n}\n",
    "import { urlToFilename } from \"./urlToFilename.js\"\n\nexport const urlToBasename = (url) => {\n  const filename = urlToFilename(url)\n  const dotLastIndex = filename.lastIndexOf(\".\")\n  const basename = dotLastIndex === -1 ? filename : filename.slice(0, dotLastIndex)\n  return basename\n}\n",
    "import { urlToPathname } from \"./urlToPathname.js\"\n\nexport const urlToExtension = (url) => {\n  const pathname = urlToPathname(url)\n  return pathnameToExtension(pathname)\n}\n\nconst pathnameToExtension = (pathname) => {\n  const slashLastIndex = pathname.lastIndexOf(\"/\")\n  if (slashLastIndex !== -1) {\n    pathname = pathname.slice(slashLastIndex + 1)\n  }\n\n  const dotLastIndex = pathname.lastIndexOf(\".\")\n  if (dotLastIndex === -1) return \"\"\n  // if (dotLastIndex === pathname.length - 1) return \"\"\n  const extension = pathname.slice(dotLastIndex)\n  return extension\n}\n",
    "export const urlToOrigin = (url) => {\n  if (url.startsWith(\"file://\")) {\n    return `file://`\n  }\n  return new URL(url).origin\n}\n",
    "import { urlToOrigin } from \"./urlToOrigin.js\"\nimport { urlToRessource } from \"./urlToRessource.js\"\n\nexport const urlToParentUrl = (url) => {\n  const ressource = urlToRessource(url)\n  const slashLastIndex = ressource.lastIndexOf(\"/\")\n  if (slashLastIndex === -1) {\n    return url\n  }\n\n  const lastCharacterIndex = ressource.length - 1\n  if (slashLastIndex === lastCharacterIndex) {\n    const slashPreviousIndex = ressource.lastIndexOf(\"/\", lastCharacterIndex - 1)\n    if (slashPreviousIndex === -1) {\n      return url\n    }\n\n    const origin = urlToOrigin(url)\n    return `${origin}${ressource.slice(0, slashPreviousIndex + 1)}`\n  }\n\n  const origin = urlToOrigin(url)\n\n  return `${origin}${ressource.slice(0, slashLastIndex + 1)}`\n}\n",
    "import { promises } from \"fs\"\nimport { assertAndNormalizeFileUrl } from \"./assertAndNormalizeFileUrl.js\"\nimport { urlToFileSystemPath } from \"./urlToFileSystemPath.js\"\nimport { ensureParentDirectories } from \"./ensureParentDirectories.js\"\n\n// https://nodejs.org/dist/latest-v13.x/docs/api/fs.html#fs_fspromises_writefile_file_data_options\nconst { writeFile: writeFileNode } = promises\n\nexport const writeFile = async (destination, content = \"\") => {\n  const destinationUrl = assertAndNormalizeFileUrl(destination)\n\n  const destinationPath = urlToFileSystemPath(destinationUrl)\n  try {\n    await writeFileNode(destinationPath, content)\n  } catch (error) {\n    if (error.code === \"ENOENT\") {\n      await ensureParentDirectories(destinationUrl)\n      await writeFileNode(destinationPath, content)\n      return\n    }\n    throw error\n  }\n}\n"
  ],
  "names": [
    "ensureUrlTrailingSlash",
    "url",
    "endsWith",
    "isFileSystemPath",
    "value",
    "TypeError",
    "startsWithWindowsDriveLetter",
    "string",
    "firstChar",
    "test",
    "secondChar",
    "fileSystemPathToUrl",
    "Error",
    "String",
    "pathToFileURL",
    "assertAndNormalizeDirectoryUrl",
    "urlString",
    "URL",
    "href",
    "e",
    "startsWith",
    "assertAndNormalizeFileUrl",
    "baseUrl",
    "statsToType",
    "stats",
    "isFile",
    "isDirectory",
    "isSymbolicLink",
    "isFIFO",
    "isSocket",
    "isCharacterDevice",
    "isBlockDevice",
    "undefined",
    "urlToFileSystemPath",
    "fileUrl",
    "length",
    "slice",
    "fileSystemPath",
    "fileURLToPath",
    "S_IRUSR",
    "S_IWUSR",
    "S_IXUSR",
    "S_IRGRP",
    "S_IWGRP",
    "S_IXGRP",
    "S_IROTH",
    "S_IWOTH",
    "S_IXOTH",
    "binaryFlagsToPermissions",
    "binaryFlags",
    "owner",
    "read",
    "Boolean",
    "write",
    "execute",
    "group",
    "others",
    "permissionsToBinaryFlags",
    "writeFileSystemNodePermissions",
    "source",
    "permissions",
    "sourceUrl",
    "sourcePath",
    "getPermissionOrComputeDefault",
    "chmodNaive",
    "Promise",
    "resolve",
    "reject",
    "chmod",
    "error",
    "actionLevels",
    "subjectLevels",
    "action",
    "subject",
    "subjectPermissions",
    "actionLevel",
    "actionFallback",
    "Object",
    "keys",
    "find",
    "actionFallbackCandidate",
    "subjectLevel",
    "subjectFallback",
    "subjectFallbackCandidate",
    "isWindows",
    "process",
    "platform",
    "readFileSystemNodeStat",
    "nullIfNotFound",
    "followLink",
    "handleNotFoundOption",
    "handleNotFoundError",
    "readStat",
    "handlePermissionDeniedError",
    "console",
    "stack",
    "nodeMethod",
    "stat",
    "lstat",
    "statsObject",
    "code",
    "assertDirectoryPresence",
    "sourceStats",
    "assertFilePresence",
    "ETAG_FOR_EMPTY_CONTENT",
    "bufferToEtag",
    "buffer",
    "Buffer",
    "isBuffer",
    "hash",
    "createHash",
    "update",
    "hashBase64String",
    "digest",
    "hashBase64StringSubset",
    "toString",
    "readDirectory",
    "emfileMaxWait",
    "directoryUrl",
    "directoryPath",
    "startMs",
    "Date",
    "now",
    "attemptCount",
    "attempt",
    "readdirNaive",
    "handleTooManyFilesOpenedError",
    "nowMs",
    "timeSpentWaiting",
    "setTimeout",
    "readdir",
    "names",
    "getCommonPathname",
    "pathname",
    "otherPathname",
    "firstDifferentCharacterIndex",
    "findFirstDifferentCharacterIndex",
    "commonString",
    "charAt",
    "firstDifferentSlashIndex",
    "lastIndexOf",
    "otherString",
    "maxCommonLength",
    "Math",
    "min",
    "i",
    "char",
    "otherChar",
    "pathnameToParentPathname",
    "slashLastIndex",
    "urlToRelativeUrl",
    "urlArg",
    "baseUrlArg",
    "protocol",
    "username",
    "password",
    "host",
    "search",
    "basePathname",
    "commonPathname",
    "specificPathname",
    "baseSpecificPathname",
    "includes",
    "baseSpecificParentPathname",
    "relativeDirectoriesNotation",
    "replace",
    "comparePathnames",
    "leftPathame",
    "rightPathname",
    "leftPartArray",
    "split",
    "rightPartArray",
    "leftLength",
    "rightLength",
    "maxLength",
    "max",
    "leftPartExists",
    "rightPartExists",
    "leftPartIsLast",
    "rightPartIsLast",
    "leftPart",
    "rightPart",
    "comparison",
    "localeCompare",
    "collectDirectoryMatchReport",
    "cancellationToken",
    "createCancellationToken",
    "structuredMetaMap",
    "predicate",
    "matchingArray",
    "ignoredArray",
    "rootDirectoryUrl",
    "structuredMetaMapNormalized",
    "normalizeStructuredMetaMap",
    "visitDirectory",
    "directoryItems",
    "createOperation",
    "start",
    "all",
    "map",
    "directoryItem",
    "directoryChildNodeUrl",
    "relativeUrl",
    "directoryChildNodeStats",
    "subDirectoryUrl",
    "urlCanContainsMetaMatching",
    "push",
    "fileStats",
    "meta",
    "urlToMeta",
    "sortByRelativeUrl",
    "array",
    "sort",
    "left",
    "right",
    "collectFiles",
    "matchingFileOperation",
    "matchingFileResultArray",
    "operationResult",
    "leftFile",
    "rightFile",
    "mkdir",
    "promises",
    "writeDirectory",
    "destination",
    "recursive",
    "allowUseless",
    "destinationUrl",
    "destinationPath",
    "destinationStats",
    "destinationType",
    "resolveUrl",
    "specifier",
    "removeFileSystemNode",
    "maxRetries",
    "retryDelay",
    "onlyContent",
    "removeNonDirectory",
    "removeDirectory",
    "retryCount",
    "unlinkNaive",
    "handleTemporaryError",
    "unlink",
    "visit",
    "visitFile",
    "visitSymbolicLink",
    "optionsFromRecursive",
    "handleNotEmptyError",
    "removeDirectoryContent",
    "removeDirectoryNaive",
    "handlePermissionError",
    "openOrCloseError",
    "fd",
    "openSync",
    "closeSync",
    "name",
    "symbolicLinkUrl",
    "rmdir",
    "lstatObject",
    "ensureEmptyDirectory",
    "sourceType",
    "ensureParentDirectories",
    "destinationParentPath",
    "dirname",
    "baseUrlFallback",
    "cwd",
    "ensureWindowsDriveLetter",
    "afterProtocol",
    "extractDriveLetter",
    "baseUrlOrFallback",
    "driveLetter",
    "ressource",
    "urlTargetsSameFileSystemPath",
    "leftUrl",
    "rightUrl",
    "writeFileSystemNodeModificationTime",
    "mtime",
    "mtimeValue",
    "floor",
    "atimeValue",
    "utimes",
    "replaceBackSlashesWithSlashes",
    "readSymbolicLink",
    "symbolicLinkPath",
    "readlink",
    "resolvedPath",
    "symlink",
    "writeSymbolicLink",
    "target",
    "type",
    "targetValue",
    "targetUrl",
    "targetStats",
    "urlIsInsideOf",
    "urlValue",
    "otherUrlValue",
    "otherUrl",
    "origin",
    "urlPathname",
    "otherUrlPathname",
    "copyFileSystemNode",
    "overwrite",
    "preserveStat",
    "preserveMtime",
    "preservePermissions",
    "fileRelativeUrl",
    "fileCopyUrl",
    "copyFileContentNaive",
    "copyStats",
    "symbolicLinkRelativeUrl",
    "symbolicLinkTarget",
    "symbolicLinkTargetUrl",
    "linkIsRelative",
    "symbolicLinkCopyTarget",
    "linkCopyTargetRelative",
    "linkType",
    "symbolicLinkCopyUrl",
    "mode",
    "mtimeMs",
    "directoryStats",
    "directoryRelativeUrl",
    "directoryCopyUrl",
    "copyDirectoryContent",
    "fileSystemNodeUrl",
    "filePath",
    "fileDestinationPath",
    "copyFileNode",
    "readFileSystemNodePermissions",
    "grantPermissionsOnFileSystemNode",
    "filePermissions",
    "memoize",
    "compute",
    "memoized",
    "memoizedValue",
    "fnWithMemoization",
    "args",
    "forget",
    "moveFileSystemNode",
    "moveNaive",
    "handleCrossDeviceError",
    "rename",
    "moveDirectoryContent",
    "directoryEntries",
    "directoryEntry",
    "from",
    "to",
    "readFilePromisified",
    "promisify",
    "readFileNode",
    "readFile",
    "as",
    "JSON",
    "parse",
    "readFileSystemNodeModificationTime",
    "fileSystemNodeToTypeOrNull",
    "path",
    "statSync",
    "createWatcher",
    "options",
    "watcher",
    "watch",
    "on",
    "trackRessources",
    "callbackArray",
    "registerCleanupCallback",
    "callback",
    "index",
    "indexOf",
    "splice",
    "cleanup",
    "reason",
    "localCallbackArray",
    "isLinux",
    "fsWatchSupportsRecursive",
    "registerDirectoryLifecycle",
    "added",
    "updated",
    "removed",
    "watchDescription",
    "notifyExistent",
    "keepProcessAlive",
    "undefinedOrFunction",
    "entryShouldBeWatched",
    "entryUrl",
    "canContainEntryToWatch",
    "entryMeta",
    "tracker",
    "contentMap",
    "Map",
    "handleDirectoryEvent",
    "filename",
    "eventType",
    "handleChange",
    "relativeUrlCandidateArray",
    "Array",
    "filter",
    "relativeUrlCandidate",
    "afterDirectory",
    "removedEntryRelativeUrl",
    "handleEntryLost",
    "get",
    "previousType",
    "handleEntryFound",
    "existent",
    "set",
    "entryFound",
    "entry",
    "persistent",
    "close",
    "delete",
    "fileSystemPathToDirectoryRelativeUrlAndFilename",
    "readdirSync",
    "forEach",
    "normalizedPath",
    "registerFileLifecycle",
    "handleFileFound",
    "fileMutationStopWatching",
    "watchFileMutation",
    "fileMutationStopTracking",
    "watchFileAdded",
    "fileCreationStopWatching",
    "watchFileCreation",
    "fileCreationgStopTracking",
    "sourceFilename",
    "basename",
    "directoryWatcher",
    "resolveDirectoryUrl",
    "access",
    "R_OK",
    "W_OK",
    "X_OK",
    "constants",
    "testFileSystemNodePermissions",
    "allowedIfNotFound",
    "urlToScheme",
    "colonIndex",
    "scheme",
    "urlToRessource",
    "pathnameSlashIndex",
    "urlToPathname",
    "ressourceToPathname",
    "searchSeparatorIndex",
    "urlToFilename",
    "pathnameBeforeLastSlash",
    "urlToBasename",
    "dotLastIndex",
    "urlToExtension",
    "pathnameToExtension",
    "extension",
    "urlToOrigin",
    "urlToParentUrl",
    "lastCharacterIndex",
    "slashPreviousIndex",
    "writeFile",
    "writeFileNode",
    "content"
  ],
  "mappings": "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"
}