admin08077/Githubgemini
0
1{"version":3,"file":"fileUtils-DLahR3l0.js","sources":["../../services/fileUtils.ts"],"sourcesContent":["/**\n * @license\n * SPDX-License-Identifier: Apache-2.0\n*/\n\n/**\n * A robust way to convert an ArrayBuffer to a Base64 string.\n * @param buffer The ArrayBuffer to convert.\n * @returns The Base64 encoded string.\n */\nconst arrayBufferToBase64 = (buffer: ArrayBuffer): string => {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n const len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n};\n\n/**\n * Converts a Blob object to a Base64 encoded string.\n * This implementation uses readAsArrayBuffer for greater robustness across environments.\n * @param blob The Blob object to convert.\n * @returns A promise that resolves with the Base64 string.\n */\nexport const blobToBase64 = (blob: Blob): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n resolve(arrayBufferToBase64(reader.result as ArrayBuffer));\n };\n reader.onerror = (error) => reject(error);\n reader.readAsArrayBuffer(blob);\n });\n};\n\n/**\n * Converts a File object to a Base64 encoded string.\n * This function is an alias for blobToBase64.\n * @param file The File object to convert.\n * @returns A promise that resolves with the Base64 string.\n */\nexport const fileToBase64 = (file: File): Promise<string> => {\n return blobToBase64(file);\n};\n\n/**\n * Converts a Blob object to a Data URL string.\n * This implementation uses readAsArrayBuffer for greater robustness across environments.\n * This function keeps the Data URL prefix (e.g., \"data:image/png;base64,\").\n * @param blob The Blob object to convert.\n * @returns A promise that resolves with the Data URL string.\n */\nexport const blobToDataURL = (blob: Blob): Promise<string> => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const base64 = arrayBufferToBase64(reader.result as ArrayBuffer);\n resolve(`data:${blob.type};base64,${base64}`);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsArrayBuffer(blob);\n });\n};\n\n/**\n * Triggers a browser download for the given content.\n * @param content The string content to download.\n * @param filename The name of the file.\n * @param mimeType The MIME type of the file.\n */\nexport const downloadFile = (content: string, filename: string, mimeType: string = 'text/plain') => {\n const blob = new Blob([content], { type: mimeType });\n const url = URL.createObjectURL(blob);\n const a = document.createElement('a');\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(url);\n};\n\n/**\n * Generates and triggers a download for a .env formatted file.\n * @param env A record of key-value pairs for the environment variables.\n */\nexport const downloadEnvFile = (env: Record<string, string>): void => {\n const content = Object.entries(env)\n .map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n .join('\\n');\n downloadFile(content, '.env', 'text/plain');\n};\n\n/**\n * Generates and triggers a download for a JSON file.\n * @param data The JavaScript object to stringify and download.\n * @param filename The name of the file.\n */\nexport const downloadJson = (data: object, filename: string): void => {\n const content = JSON.stringify(data, null, 2);\n downloadFile(content, filename, 'application/json');\n};"],"names":["arrayBufferToBase64","buffer","binary","bytes","len","i","blobToBase64","blob","resolve","reject","reader","error","fileToBase64","file","blobToDataURL","base64","downloadFile","content","filename","mimeType","url","downloadEnvFile","env","key","value","downloadJson","data"],"mappings":"AAAA;AAAA;AAAA;AAAA,EAUA,MAAMA,EAAuBC,GAAgC,CACzD,IAAIC,EAAS,GACb,MAAMC,EAAQ,IAAI,WAAWF,CAAM,EAC7BG,EAAMD,EAAM,WAClB,QAASE,EAAI,EAAGA,EAAID,EAAKC,IACrBH,GAAU,OAAO,aAAaC,EAAME,CAAC,CAAC,EAE1C,OAAO,OAAO,KAAKH,CAAM,CAC7B,EAQaI,EAAgBC,GAClB,IAAI,QAAQ,CAACC,EAASC,IAAW,CACpC,MAAMC,EAAS,IAAI,WACnBA,EAAO,UAAY,IAAM,CACrBF,EAAQR,EAAoBU,EAAO,MAAqB,CAAC,CAC7D,EACAA,EAAO,QAAWC,GAAUF,EAAOE,CAAK,EACxCD,EAAO,kBAAkBH,CAAI,CACjC,CAAC,EASQK,EAAgBC,GAClBP,EAAaO,CAAI,EAUfC,EAAiBP,GACnB,IAAI,QAAQ,CAACC,EAASC,IAAW,CACpC,MAAMC,EAAS,IAAI,WACnBA,EAAO,UAAY,IAAM,CACrB,MAAMK,EAASf,EAAoBU,EAAO,MAAqB,EAC/DF,EAAQ,QAAQD,EAAK,IAAI,WAAWQ,CAAM,EAAE,CAChD,EACAL,EAAO,QAAWC,GAAUF,EAAOE,CAAK,EACxCD,EAAO,kBAAkBH,CAAI,CACjC,CAAC,EASQS,EAAe,CAACC,EAAiBC,EAAkBC,EAAmB,eAAiB,CAChG,MAAMZ,EAAO,IAAI,KAAK,CAACU,CAAO,EAAG,CAAE,KAAME,EAAU,EAC7CC,EAAM,IAAI,gBAAgBb,CAAI,EAC9B,EAAI,SAAS,cAAc,GAAG,EACpC,EAAE,KAAOa,EACT,EAAE,SAAWF,EACb,SAAS,KAAK,YAAY,CAAC,EAC3B,EAAE,MAAA,EACF,SAAS,KAAK,YAAY,CAAC,EAC3B,IAAI,gBAAgBE,CAAG,CAC3B,EAMaC,EAAmBC,GAAsC,CAClE,MAAML,EAAU,OAAO,QAAQK,CAAG,EAC7B,IAAI,CAAC,CAACC,EAAKC,CAAK,IAAM,GAAGD,CAAG,IAAI,KAAK,UAAUC,CAAK,CAAC,EAAE,EACvD,KAAK;AAAA,CAAI,EACdR,EAAaC,EAAS,OAAQ,YAAY,CAC9C,EAOaQ,EAAe,CAACC,EAAcR,IAA2B,CAClE,MAAMD,EAAU,KAAK,UAAUS,EAAM,KAAM,CAAC,EAC5CV,EAAaC,EAASC,EAAU,kBAAkB,CACtD"}