{"version":3,"sources":["jsdelivr-header.js","/npm/@dr.pogodin/react-native-fs@2.37.0/lib/module/index.js"],"names":[],"mappings":"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","file":"/npm/@dr.pogodin/react-native-fs@2.37.0/lib/module/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@dr.pogodin/react-native-fs@2.37.0/lib/module/index.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\nimport { getReasonPhrase } from 'http-status-codes';\nimport RNFS from \"./NativeReactNativeFs.js\";\nimport { decode, encode, normalizeFilePath, readFileGeneric, toEncoding } from \"./utils.js\";\nlet lastJobId = 0;\n\n// Internal functions.\n\n/**\n * Generic function used by readDir and readDirAssets.\n */\nasync function readDirGeneric(dirpath, command) {\n  const files = await command(normalizeFilePath(dirpath));\n  const {\n    FileTypeDirectory,\n    FileTypeRegular\n  } = RNFS.getConstants();\n  return files.map(file => ({\n    ctime: file.ctime && new Date(file.ctime * 1000) || null,\n    mtime: file.mtime && new Date(file.mtime * 1000) || null,\n    name: file.name,\n    path: file.path,\n    size: file.size,\n    isFile: () => file.type === FileTypeRegular,\n    isDirectory: () => file.type === FileTypeDirectory\n  }));\n}\n\n// Common exports.\n\nexport function appendFile(filepath, contents, encodingOrOptions) {\n  const b64 = encode(contents, toEncoding(encodingOrOptions));\n  return RNFS.appendFile(normalizeFilePath(filepath), b64);\n}\nexport function copyFile(from, into, options = {}) {\n  return RNFS.copyFile(normalizeFilePath(from), normalizeFilePath(into), options);\n}\nexport function downloadFile(options) {\n  if (typeof options !== 'object') {\n    throw new Error('downloadFile: Invalid value for argument `options`');\n  }\n  if (typeof options.fromUrl !== 'string') {\n    throw new Error('downloadFile: Invalid value for property `fromUrl`');\n  }\n  if (typeof options.toFile !== 'string') {\n    throw new Error('downloadFile: Invalid value for property `toFile`');\n  }\n  if (options.headers && typeof options.headers !== 'object') {\n    throw new Error('downloadFile: Invalid value for property `headers`');\n  }\n  if (options.background && typeof options.background !== 'boolean') {\n    throw new Error('downloadFile: Invalid value for property `background`');\n  }\n  if (options.progressDivider && typeof options.progressDivider !== 'number') {\n    throw new Error('downloadFile: Invalid value for property `progressDivider`');\n  }\n  if (options.progressInterval && typeof options.progressInterval !== 'number') {\n    throw new Error('downloadFile: Invalid value for property `progressInterval`');\n  }\n  if (options.readTimeout && typeof options.readTimeout !== 'number') {\n    throw new Error('downloadFile: Invalid value for property `readTimeout`');\n  }\n  if (options.connectionTimeout && typeof options.connectionTimeout !== 'number') {\n    throw new Error('downloadFile: Invalid value for property `connectionTimeout`');\n  }\n  if (options.backgroundTimeout && typeof options.backgroundTimeout !== 'number') {\n    throw new Error('downloadFile: Invalid value for property `backgroundTimeout`');\n  }\n  const jobId = ++lastJobId;\n  const subscriptions = [];\n  if (options.begin) {\n    subscriptions.push(RNFS.onDownloadBegin(res => {\n      if (res.jobId === jobId && options.begin) options.begin(res);\n    }));\n  }\n  if (options.progress) {\n    subscriptions.push(RNFS.onDownloadProgress(res => {\n      if (res.jobId === jobId && options.progress) options.progress(res);\n    }));\n  }\n  if (options.resumable) {\n    subscriptions.push(RNFS.onDownloadResumable(res => {\n      if (res.jobId === jobId && options.resumable) options.resumable(res);\n    }));\n  }\n  var nativeOptions = {\n    jobId: jobId,\n    fromUrl: options.fromUrl,\n    toFile: normalizeFilePath(options.toFile),\n    background: !!options.background,\n    backgroundTimeout: options.backgroundTimeout || 3600000,\n    // 1 hour\n    cacheable: options.cacheable ?? true,\n    connectionTimeout: options.connectionTimeout || 5000,\n    discretionary: !!options.discretionary,\n    headers: options.headers || {},\n    progressDivider: options.progressDivider || 0,\n    progressInterval: options.progressInterval || 0,\n    readTimeout: options.readTimeout || 15000,\n    hasBeginCallback: !!options.begin,\n    hasProgressCallback: !!options.progress,\n    hasResumableCallback: !!options.resumable\n  };\n  return {\n    jobId,\n    promise: (async () => {\n      try {\n        return await RNFS.downloadFile(nativeOptions);\n      } finally {\n        subscriptions.forEach(sub => sub.remove());\n      }\n    })()\n  };\n}\nexport function exists(filepath) {\n  return RNFS.exists(normalizeFilePath(filepath));\n}\nexport const getFSInfo = RNFS.getFSInfo;\nexport const isResumable = RNFS.isResumable;\nexport function mkdir(path, options = {}) {\n  return RNFS.mkdir(normalizeFilePath(path), options);\n}\nexport function moveFile(filepath, destPath, options = {}) {\n  return RNFS.moveFile(normalizeFilePath(filepath), normalizeFilePath(destPath), options);\n}\nexport function pickFile(options = {}) {\n  return RNFS.pickFile({\n    mimeTypes: options.mimeTypes || ['*/*'],\n    pickerType: options.pickerType || 'singleFile',\n    fileExtensions: options.fileExtensions || []\n  });\n}\nexport async function read(path,\n// TODO: It would make more sense to read entire file by the default,\n// or, if the position is given, to read from that position to the end.\nlength = 0, position = 0, encodingOrOptions) {\n  const b64 = await RNFS.read(normalizeFilePath(path), length, position);\n  return decode(b64, toEncoding(encodingOrOptions));\n}\nexport function readFile(path, encodingOrOptions) {\n  return readFileGeneric(path, encodingOrOptions, RNFS.readFile);\n}\nexport function readDir(dirpath) {\n  return readDirGeneric(dirpath, RNFS.readDir);\n}\n\n// Node style version (lowercase d). Returns just the names\nexport async function readdir(dirpath) {\n  const files = await RNFS.readDir(normalizeFilePath(dirpath));\n  return files.map(file => file.name || '');\n}\nexport async function stat(filepath) {\n  const result = await RNFS.stat(normalizeFilePath(filepath));\n  const {\n    FileTypeDirectory,\n    FileTypeRegular\n  } = RNFS.getConstants();\n  return {\n    path: filepath,\n    ctime: new Date(result.ctime * 1000),\n    mtime: new Date(result.mtime * 1000),\n    size: result.size,\n    mode: result.mode,\n    originalFilepath: result.originalFilepath,\n    isFile: () => result.type === FileTypeRegular,\n    isDirectory: () => result.type === FileTypeDirectory\n  };\n}\nexport const stopDownload = RNFS.stopDownload;\nexport function touch(filepath, mtime, ctime) {\n  if (ctime && !(ctime instanceof Date)) {\n    throw new Error('touch: Invalid value for argument `ctime`');\n  }\n  if (mtime && !(mtime instanceof Date)) {\n    throw new Error('touch: Invalid value for argument `mtime`');\n  }\n  return RNFS.touch(normalizeFilePath(filepath), {\n    ctime: ctime && ctime.getTime(),\n    mtime: mtime && mtime.getTime()\n  });\n}\nexport function unlink(path) {\n  return RNFS.unlink(normalizeFilePath(path));\n}\nexport function uploadFiles(options) {\n  const jobId = ++lastJobId;\n  const subscriptions = [];\n  if (typeof options !== 'object') {\n    throw new Error('uploadFiles: Invalid value for argument `options`');\n  }\n  if (typeof options.toUrl !== 'string') {\n    throw new Error('uploadFiles: Invalid value for property `toUrl`');\n  }\n  if (!Array.isArray(options.files)) {\n    throw new Error('uploadFiles: Invalid value for property `files`');\n  }\n  if (options.headers && typeof options.headers !== 'object') {\n    throw new Error('uploadFiles: Invalid value for property `headers`');\n  }\n  if (options.fields && typeof options.fields !== 'object') {\n    throw new Error('uploadFiles: Invalid value for property `fields`');\n  }\n  if (options.method && typeof options.method !== 'string') {\n    throw new Error('uploadFiles: Invalid value for property `method`');\n  }\n  if (options.begin) {\n    subscriptions.push(RNFS.onUploadBegin(options.begin));\n\n    // TODO: Deprecated, will be removed in a future release.\n  } else if (options.beginCallback) {\n    subscriptions.push(RNFS.onUploadBegin(options.beginCallback));\n  }\n  if (options.progress) {\n    subscriptions.push(RNFS.onUploadProgress(options.progress));\n\n    // TODO: Deprecated, will be removed in a future release.\n  } else if (options.progressCallback) {\n    subscriptions.push(RNFS.onUploadProgress(options.progressCallback));\n  }\n  const files = options.files.map(item => ({\n    ...item,\n    name: item.name ?? item.filename\n  }));\n  var nativeOptions = {\n    jobId: jobId,\n    toUrl: options.toUrl,\n    files,\n    binaryStreamOnly: options.binaryStreamOnly || false,\n    headers: options.headers || {},\n    fields: options.fields || {},\n    method: options.method || 'POST',\n    hasBeginCallback: options.begin instanceof Function || options.beginCallback instanceof Function,\n    hasProgressCallback: options.progress instanceof Function || options.progressCallback instanceof Function\n  };\n  return {\n    jobId,\n    promise: RNFS.uploadFiles(nativeOptions).then(res => {\n      subscriptions.forEach(sub => sub.remove());\n      if (res.statusCode >= 400) {\n        const error = Error(getReasonPhrase(res.statusCode));\n        error.result = res;\n        throw error;\n      }\n      return res;\n    })\n  };\n}\nexport function write(filepath, contents, position = -1, encodingOrOptions) {\n  const b64 = encode(contents, toEncoding(encodingOrOptions));\n  return RNFS.write(normalizeFilePath(filepath), b64, position);\n}\nexport function writeFile(path, content, encodingOrOptions) {\n  const b64 = encode(content, toEncoding(encodingOrOptions));\n  return RNFS.writeFile(normalizeFilePath(path), b64, typeof encodingOrOptions === 'object' ? encodingOrOptions : {});\n}\n\n// Android-specific.\n\nexport function copyFileAssets(from, into) {\n  return RNFS.copyFileAssets(normalizeFilePath(from), normalizeFilePath(into));\n}\nexport function copyFileRes(from, into) {\n  return RNFS.copyFileRes(from, normalizeFilePath(into));\n}\nexport function existsAssets(filepath) {\n  return RNFS.existsAssets(filepath);\n}\nexport function existsRes(filename) {\n  return RNFS.existsRes(filename);\n}\nexport const getAllExternalFilesDirs = RNFS.getAllExternalFilesDirs;\n\n// TODO: algorithm should have a dedicated type, effectively enumerating all\n// correct values.\nexport function hash(filepath, algorithm) {\n  return RNFS.hash(normalizeFilePath(filepath), algorithm);\n}\nexport async function readDirAssets(path) {\n  const res = await readDirGeneric(path, RNFS.readDirAssets);\n  return res;\n}\nexport function readFileAssets(path, encodingOrOptions) {\n  return readFileGeneric(path, encodingOrOptions, RNFS.readFileAssets);\n}\nexport function readFileRes(filename, encodingOrOptions) {\n  return readFileGeneric(filename, encodingOrOptions, RNFS.readFileRes);\n}\nexport const scanFile = RNFS.scanFile;\n\n// TODO: Not documented!\n// setReadable for Android\nexport const setReadable = RNFS.setReadable;\n\n// iOS-specific\n\nexport const completeHandlerIOS = RNFS.completeHandlerIOS;\n\n// iOS only\n// Copies fotos from asset-library (camera-roll) to a specific location\n// with a given width or height\n// @see: https://developer.apple.com/reference/photos/phimagemanager/1616964-requestimageforasset\nexport function copyAssetsFileIOS(imageUri, destPath, width, height, scale = 1.0, compression = 1.0, resizeMode = 'contain') {\n  return RNFS.copyAssetsFileIOS(imageUri, destPath, width, height, scale, compression, resizeMode);\n}\n\n// iOS only\n// Copies fotos from asset-library (camera-roll) to a specific location\n// with a given width or height\n// @see: https://developer.apple.com/reference/photos/phimagemanager/1616964-requestimageforasset\nexport const copyAssetsVideoIOS = RNFS.copyAssetsVideoIOS;\n\n// TODO: This is presumably iOS-specific, it is not documented,\n// so it should be double-checked, what it does.\nexport const pathForBundle = RNFS.pathForBundle;\nexport const pathForGroup = RNFS.pathForGroup;\nexport const resumeDownload = RNFS.resumeDownload;\nexport const stopUpload = RNFS.stopUpload;\n\n// Windows-specific.\n\n// Windows workaround for slow copying of large folders of files\nexport function copyFolder(from, into) {\n  return RNFS.copyFolder(normalizeFilePath(from), normalizeFilePath(into));\n}\nconst {\n  MainBundlePath,\n  CachesDirectoryPath,\n  ExternalCachesDirectoryPath,\n  DocumentDirectoryPath,\n  DownloadDirectoryPath,\n  ExternalDirectoryPath,\n  ExternalStorageDirectoryPath,\n  TemporaryDirectoryPath,\n  LibraryDirectoryPath,\n  PicturesDirectoryPath,\n  // For Windows\n  FileProtectionKeys,\n  RoamingDirectoryPath // For Windows\n} = RNFS.getConstants();\nexport { MainBundlePath, CachesDirectoryPath, ExternalCachesDirectoryPath, DocumentDirectoryPath, DownloadDirectoryPath, ExternalDirectoryPath, ExternalStorageDirectoryPath, TemporaryDirectoryPath, LibraryDirectoryPath, PicturesDirectoryPath,\n// For Windows\nFileProtectionKeys, RoamingDirectoryPath // For Windows\n};\n"]}