mirror of
https://github.com/yamadashy/repomix.git
synced 2025-06-11 00:25:54 +03:00
32 lines
940 B
TypeScript
32 lines
940 B
TypeScript
import JSZip from 'jszip';
|
|
|
|
export function useZipProcessor() {
|
|
async function createZipFromFiles(files: File[], folderName: string): Promise<File> {
|
|
try {
|
|
const zip = new JSZip();
|
|
|
|
for (const file of files) {
|
|
const path = file.webkitRelativePath || file.name;
|
|
zip.file(path, file);
|
|
}
|
|
|
|
const zipBlob = await zip.generateAsync({ type: 'blob' });
|
|
return new File([zipBlob], `${folderName}.zip`, { type: 'application/zip' });
|
|
} catch (error) {
|
|
throw new Error(`Failed to create ZIP file: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
}
|
|
}
|
|
|
|
function validateZipFile(file: File): { valid: boolean; error?: string } {
|
|
if (file.type !== 'application/zip' && !file.name.endsWith('.zip')) {
|
|
return { valid: false, error: 'Please upload a ZIP file' };
|
|
}
|
|
return { valid: true };
|
|
}
|
|
|
|
return {
|
|
createZipFromFiles,
|
|
validateZipFile,
|
|
};
|
|
}
|