{"version":3,"file":"file.cjs","sources":["../../src/include/file.ts"],"sourcesContent":["export function getChunkSize(fileSize: number): number {\n   // fileSize in bytes\n   const MB = 1024 * 1024;\n\n   if (fileSize <= 1 * MB) {\n      // Very small files (<1MB): single small chunk\n      return 64 * 1024; // 64 KB\n   } else if (fileSize <= 10 * MB) {\n      // Small files (1–10MB): medium chunks\n      return 256 * 1024; // 256 KB\n   } else if (fileSize <= 100 * MB) {\n      // Medium files (10–100MB): faster upload, moderate size\n      return 512 * 1024; // 512 KB\n   } else if (fileSize <= 500 * MB) {\n      // Large files (100–500MB): larger chunks to reduce overhead\n      return 1 * MB; // 1 MB\n   } else if (fileSize <= 2 * 1024 * MB) {\n      // Very large files (500MB–2GB): fewer but larger parts\n      return 2 * MB; // 2 MB\n   } else {\n      // Extremely large files (>2GB)\n      return 4 * MB; // 4 MB max chunk size\n   }\n}\n\nexport const totalChunks = (file: File, chunkSize?: number) => Math.ceil(file.size / (chunkSize || getChunkSize(file.size)));\n\nexport async function* chunkFile(file: File, chunkSize?: number) {\n   const fileSize = file.size;\n   chunkSize = chunkSize || getChunkSize(fileSize);\n   let offset = 0;\n\n   while (offset < fileSize) {\n      const chunk = file.slice(offset, offset + chunkSize);\n      const buffer = new Uint8Array(await chunk.arrayBuffer());\n      yield { chunk: buffer, chunkIndex: Math.floor(offset / chunkSize) };\n      offset += chunkSize;\n   }\n}\n\nexport function generateFileId(str: string) {\n   let h1 = 0xdeadbeef ^ str.length\n   let h2 = 0x41c6ce57 ^ str.length\n\n   for (let i = 0; i < str.length; i++) {\n      const ch = str.charCodeAt(i)\n      h1 = Math.imul(h1 ^ ch, 2654435761)\n      h2 = Math.imul(h2 ^ ch, 1597334677)\n   }\n\n   h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507)\n   h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909)\n\n   h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507)\n   h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909)\n\n   const hex =\n      (h1 >>> 0).toString(16).padStart(8, \"0\") +\n      (h2 >>> 0).toString(16).padStart(8, \"0\") +\n      ((h1 ^ h2) >>> 0).toString(16).padStart(8, \"0\") +\n      ((h1 + h2) >>> 0).toString(16).padStart(8, \"0\")\n\n   return hex.slice(0, 32)\n}\n\nexport async function getFileId(file: File): Promise<string> {\n   let data: any[] = [];\n   if (typeof window !== 'undefined') {\n      data = [\n         navigator.userAgent,\n         navigator.language,\n         screen.width,\n         screen.height,\n         screen.colorDepth,\n         new Date().getTimezoneOffset(),\n         Intl.DateTimeFormat().resolvedOptions().timeZone || \"\"\n      ]\n   }\n\n   const meta = `${file.name}||${file.size}||${file.lastModified}||${data.join(\"||\")}`\n   const ext = file.name.split('.').pop() || ''\n   const id = generateFileId(meta);\n   return `${id}.${ext}`;\n}"],"names":["__await"],"mappings":"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"}