@clxrity/zip
Version:
A React zip utility library
64 lines (59 loc) • 2.48 kB
TypeScript
import { ComponentProps, JSX } from 'react';
interface UnzipClientOptions {
onEachFile?: (file: File) => void | Promise<void>;
onComplete?: (files: File[]) => void | Promise<void>;
}
/**
* Unzips a zip file in the client browser.
* - It reads the zip file as a Blob, extracts its contents,
* and returns an array of File objects.
* @example
* ```tsx
* import { unzipFileClient } from "@clxrity/zip";
*
* const handleZipFile = async (zipBlob: Blob) => {
* const files = await unzipFileClient(zipBlob, {
* onEachFile: (file) => {
* console.log("Unzipped file:", file.name);
* },
* onComplete: (files) => {
* console.log("All files unzipped:", files);
* },
* });
* console.log("Unzipped files:", files);
* };
* ```
*/
declare function unzipFileClient(blob: Blob, options?: UnzipClientOptions): Promise<File[]>;
interface ZipClientOptions {
onBeforeZip?: (files: File[]) => Promise<File[]> | File[];
onAfterZip?: (blob: Blob) => void | Promise<void>;
}
declare function zipFilesClient(files: File[], options?: ZipClientOptions): Promise<Blob>;
interface FileUploadProps extends ComponentProps<'input'> {
mode?: 'zip' | 'unzip';
onBeforeZip?: ZipClientOptions['onBeforeZip'];
onAfterZip?: ZipClientOptions['onAfterZip'];
onEachUnzippedFile?: UnzipClientOptions['onEachFile'];
onUnzipComplete?: UnzipClientOptions['onComplete'];
onError?: (error: unknown) => void;
}
/**
* FileUpload component allows users to upload files for zipping or unzipping.
* - In "zip" mode, it zips multiple files into a single zip file.
* - In "unzip" mode, it unzips a single zip file and processes each file.
* It provides callbacks for before and after zipping, processing each unzipped file, and handling errors.
* @example
* ```tsx
* <FileUpload
* mode="zip"
* onBeforeZip={(files) => console.log("Zipping files:", files)}
* onAfterZip={(zipFile) => console.log("Zipped file:", zipFile)}
* onEachUnzippedFile={(file) => console.log("Unzipped file:", file)}
* onUnzipComplete={(files) => console.log("Unzipping complete", files)}
* onError={(error) => console.error("Error:", error)}
* />
* ```
*/
declare function FileUpload({ mode, onBeforeZip, onAfterZip, onEachUnzippedFile, onUnzipComplete, onError, ...props }: FileUploadProps): JSX.Element;
export { FileUpload, type FileUploadProps, type UnzipClientOptions, type ZipClientOptions, unzipFileClient, zipFilesClient };