{"version":3,"sources":["jsdelivr-header.js","/npm/asar@3.1.0/lib/asar.js"],"names":[],"mappings":"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","file":"/npm/asar@3.1.0/lib/asar.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/asar@3.1.0/lib/asar.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict'\n\nconst fs = require('./wrapped-fs')\nconst path = require('path')\nconst minimatch = require('minimatch')\n\nconst Filesystem = require('./filesystem')\nconst disk = require('./disk')\nconst crawlFilesystem = require('./crawlfs')\n\n/**\n * Whether a directory should be excluded from packing due to the `--unpack-dir\" option.\n *\n * @param {string} dirPath - directory path to check\n * @param {string} pattern - literal prefix [for backward compatibility] or glob pattern\n * @param {array} unpackDirs - Array of directory paths previously marked as unpacked\n */\nfunction isUnpackedDir (dirPath, pattern, unpackDirs) {\n  if (dirPath.startsWith(pattern) || minimatch(dirPath, pattern)) {\n    if (!unpackDirs.includes(dirPath)) {\n      unpackDirs.push(dirPath)\n    }\n    return true\n  } else {\n    return unpackDirs.some(unpackDir => dirPath.startsWith(unpackDir))\n  }\n}\n\nmodule.exports.createPackage = async function (src, dest) {\n  return module.exports.createPackageWithOptions(src, dest, {})\n}\n\nmodule.exports.createPackageWithOptions = async function (src, dest, options) {\n  const globOptions = options.globOptions ? options.globOptions : {}\n  globOptions.dot = options.dot === undefined ? true : options.dot\n\n  const pattern = src + (options.pattern ? options.pattern : '/**/*')\n\n  const [filenames, metadata] = await crawlFilesystem(pattern, globOptions)\n  return module.exports.createPackageFromFiles(src, dest, filenames, metadata, options)\n}\n\n/**\n * Create an ASAR archive from a list of filenames.\n *\n * @param {string} src: Base path. All files are relative to this.\n * @param {string} dest: Archive filename (& path).\n * @param {array} filenames: List of filenames relative to src.\n * @param {object} metadata: Object with filenames as keys and {type='directory|file|link', stat: fs.stat} as values. (Optional)\n * @param {object} options: Options passed to `createPackageWithOptions`.\n*/\nmodule.exports.createPackageFromFiles = async function (src, dest, filenames, metadata, options) {\n  if (typeof metadata === 'undefined' || metadata === null) { metadata = {} }\n  if (typeof options === 'undefined' || options === null) { options = {} }\n\n  src = path.normalize(src)\n  dest = path.normalize(dest)\n  filenames = filenames.map(function (filename) { return path.normalize(filename) })\n\n  const filesystem = new Filesystem(src)\n  const files = []\n  const unpackDirs = []\n\n  let filenamesSorted = []\n  if (options.ordering) {\n    const orderingFiles = (await fs.readFile(options.ordering)).toString().split('\\n').map(line => {\n      if (line.includes(':')) { line = line.split(':').pop() }\n      line = line.trim()\n      if (line.startsWith('/')) { line = line.slice(1) }\n      return line\n    })\n\n    const ordering = []\n    for (const file of orderingFiles) {\n      const pathComponents = file.split(path.sep)\n      let str = src\n      for (const pathComponent of pathComponents) {\n        str = path.join(str, pathComponent)\n        ordering.push(str)\n      }\n    }\n\n    let missing = 0\n    const total = filenames.length\n\n    for (const file of ordering) {\n      if (!filenamesSorted.includes(file) && filenames.includes(file)) {\n        filenamesSorted.push(file)\n      }\n    }\n\n    for (const file of filenames) {\n      if (!filenamesSorted.includes(file)) {\n        filenamesSorted.push(file)\n        missing += 1\n      }\n    }\n\n    console.log(`Ordering file has ${((total - missing) / total) * 100}% coverage.`)\n  } else {\n    filenamesSorted = filenames\n  }\n\n  const handleFile = async function (filename) {\n    if (!metadata[filename]) {\n      metadata[filename] = await crawlFilesystem.determineFileType(filename)\n    }\n    const file = metadata[filename]\n\n    let shouldUnpack\n    switch (file.type) {\n      case 'directory':\n        if (options.unpackDir) {\n          shouldUnpack = isUnpackedDir(path.relative(src, filename), options.unpackDir, unpackDirs)\n        } else {\n          shouldUnpack = false\n        }\n        filesystem.insertDirectory(filename, shouldUnpack)\n        break\n      case 'file':\n        shouldUnpack = false\n        if (options.unpack) {\n          shouldUnpack = minimatch(filename, options.unpack, { matchBase: true })\n        }\n        if (!shouldUnpack && options.unpackDir) {\n          const dirName = path.relative(src, path.dirname(filename))\n          shouldUnpack = isUnpackedDir(dirName, options.unpackDir, unpackDirs)\n        }\n        files.push({ filename: filename, unpack: shouldUnpack })\n        return filesystem.insertFile(filename, shouldUnpack, file, options)\n      case 'link':\n        filesystem.insertLink(filename)\n        break\n    }\n    return Promise.resolve()\n  }\n\n  const insertsDone = async function () {\n    await fs.mkdirp(path.dirname(dest))\n    return disk.writeFilesystem(dest, filesystem, files, metadata)\n  }\n\n  const names = filenamesSorted.slice()\n\n  const next = async function (name) {\n    if (!name) { return insertsDone() }\n\n    await handleFile(name)\n    return next(names.shift())\n  }\n\n  return next(names.shift())\n}\n\nmodule.exports.statFile = function (archive, filename, followLinks) {\n  const filesystem = disk.readFilesystemSync(archive)\n  return filesystem.getFile(filename, followLinks)\n}\n\nmodule.exports.getRawHeader = function (archive) {\n  return disk.readArchiveHeaderSync(archive)\n}\n\nmodule.exports.listPackage = function (archive, options) {\n  return disk.readFilesystemSync(archive).listFiles(options)\n}\n\nmodule.exports.extractFile = function (archive, filename) {\n  const filesystem = disk.readFilesystemSync(archive)\n  return disk.readFileSync(filesystem, filename, filesystem.getFile(filename))\n}\n\nmodule.exports.extractAll = function (archive, dest) {\n  const filesystem = disk.readFilesystemSync(archive)\n  const filenames = filesystem.listFiles()\n\n  // under windows just extract links as regular files\n  const followLinks = process.platform === 'win32'\n\n  // create destination directory\n  fs.mkdirpSync(dest)\n\n  for (const fullPath of filenames) {\n    // Remove leading slash\n    const filename = fullPath.substr(1)\n    const destFilename = path.join(dest, filename)\n    const file = filesystem.getFile(filename, followLinks)\n    if (file.files) {\n      // it's a directory, create it and continue with the next entry\n      fs.mkdirpSync(destFilename)\n    } else if (file.link) {\n      // it's a symlink, create a symlink\n      const linkSrcPath = path.dirname(path.join(dest, file.link))\n      const linkDestPath = path.dirname(destFilename)\n      const relativePath = path.relative(linkDestPath, linkSrcPath)\n      // try to delete output file, because we can't overwrite a link\n      try {\n        fs.unlinkSync(destFilename)\n      } catch {}\n      const linkTo = path.join(relativePath, path.basename(file.link))\n      fs.symlinkSync(linkTo, destFilename)\n    } else {\n      // it's a file, extract it\n      const content = disk.readFileSync(filesystem, filename, file)\n      fs.writeFileSync(destFilename, content)\n      if (file.executable) {\n        fs.chmodSync(destFilename, '755')\n      }\n    }\n  }\n}\n\nmodule.exports.uncache = function (archive) {\n  return disk.uncacheFilesystem(archive)\n}\n\nmodule.exports.uncacheAll = function () {\n  disk.uncacheAll()\n}\n"]}