123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- // Type definitions for JSZip 3.1
- // Project: http://stuk.github.com/jszip/, https://github.com/stuk/jszip
- // Definitions by: mzeiher <https://github.com/mzeiher>, forabi <https://github.com/forabi>
- // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
- // TypeScript Version: 2.3
- /// <reference types="node" />
- interface JSZipSupport {
- arraybuffer: boolean;
- uint8array: boolean;
- blob: boolean;
- nodebuffer: boolean;
- }
- type Compression = 'STORE' | 'DEFLATE';
- interface Metadata {
- percent: number;
- currentFile: string;
- }
- type OnUpdateCallback = (metadata: Metadata) => void;
- interface InputByType {
- base64: string;
- string: string;
- text: string;
- binarystring: string;
- array: number[];
- uint8array: Uint8Array;
- arraybuffer: ArrayBuffer;
- blob: Blob;
- stream: NodeJS.ReadableStream;
- }
- interface OutputByType {
- base64: string;
- string: string;
- text: string;
- binarystring: string;
- array: number[];
- uint8array: Uint8Array;
- arraybuffer: ArrayBuffer;
- blob: Blob;
- nodebuffer: Buffer;
- }
- // This private `_data` property on a JSZipObject uses this interface.
- // If/when it is made public this should be uncommented.
- // interface CompressedObject {
- // compressedSize: number;
- // uncompressedSize: number;
- // crc32: number;
- // compression: object;
- // compressedContent: string|ArrayBuffer|Uint8Array|Buffer;
- // }
- type InputFileFormat = InputByType[keyof InputByType];
- declare namespace JSZip {
- type InputType = keyof InputByType;
- type OutputType = keyof OutputByType;
- interface JSZipObject {
- name: string;
- dir: boolean;
- date: Date;
- comment: string;
- /** The UNIX permissions of the file, if any. */
- unixPermissions: number | string | null;
- /** The UNIX permissions of the file, if any. */
- dosPermissions: number | null;
- options: JSZipObjectOptions;
- /**
- * Prepare the content in the asked type.
- * @param type the type of the result.
- * @param onUpdate a function to call on each internal update.
- * @return Promise the promise of the result.
- */
- async<T extends OutputType>(type: T, onUpdate?: OnUpdateCallback): Promise<OutputByType[T]>;
- nodeStream(type?: 'nodebuffer', onUpdate?: OnUpdateCallback): NodeJS.ReadableStream;
- }
- interface JSZipFileOptions {
- /** Set to `true` if the data is `base64` encoded. For example image data from a `<canvas>` element. Plain text and HTML do not need this option. */
- base64?: boolean;
- /**
- * Set to `true` if the data should be treated as raw content, `false` if this is a text. If `base64` is used,
- * this defaults to `true`, if the data is not a `string`, this will be set to `true`.
- */
- binary?: boolean;
- /**
- * The last modification date, defaults to the current date.
- */
- date?: Date;
- compression?: string;
- comment?: string;
- /** Set to `true` if (and only if) the input is a "binary string" and has already been prepared with a `0xFF` mask. */
- optimizedBinaryString?: boolean;
- /** Set to `true` if folders in the file path should be automatically created, otherwise there will only be virtual folders that represent the path to the file. */
- createFolders?: boolean;
- /** Set to `true` if this is a directory and content should be ignored. */
- dir?: boolean;
- /** 6 bits number. The DOS permissions of the file, if any. */
- dosPermissions?: number | null;
- /**
- * 16 bits number. The UNIX permissions of the file, if any.
- * Also accepts a `string` representing the octal value: `"644"`, `"755"`, etc.
- */
- unixPermissions?: number | string | null;
- }
- interface JSZipObjectOptions {
- compression: Compression;
- }
- interface JSZipGeneratorOptions<T extends OutputType = OutputType> {
- compression?: Compression;
- compressionOptions?: null | {
- level: number;
- };
- type?: T;
- comment?: string;
- /**
- * mime-type for the generated file.
- * Useful when you need to generate a file with a different extension, ie: “.ods”.
- * @default 'application/zip'
- */
- mimeType?: string;
- encodeFileName?(filename: string): string;
- /** Stream the files and create file descriptors */
- streamFiles?: boolean;
- /** DOS (default) or UNIX */
- platform?: 'DOS' | 'UNIX';
- }
- interface JSZipLoadOptions {
- base64?: boolean;
- checkCRC32?: boolean;
- optimizedBinaryString?: boolean;
- createFolders?: boolean;
- }
- }
- interface JSZip {
- files: {[key: string]: JSZip.JSZipObject};
- /**
- * Get a file from the archive
- *
- * @param Path relative path to file
- * @return File matching path, null if no file found
- */
- file(path: string): JSZip.JSZipObject | null;
- /**
- * Get files matching a RegExp from archive
- *
- * @param path RegExp to match
- * @return Return all matching files or an empty array
- */
- file(path: RegExp): JSZip.JSZipObject[];
- /**
- * Add a file to the archive
- *
- * @param path Relative path to file
- * @param data Content of the file
- * @param options Optional information about the file
- * @return JSZip object
- */
- file<T extends JSZip.InputType>(path: string, data: InputByType[T] | Promise<InputByType[T]>, options?: JSZip.JSZipFileOptions): this;
- file<T extends JSZip.InputType>(path: string, data: null, options?: JSZip.JSZipFileOptions & { dir: true }): this;
- /**
- * Returns an new JSZip instance with the given folder as root
- *
- * @param name Name of the folder
- * @return New JSZip object with the given folder as root or null
- */
- folder(name: string): JSZip | null;
- /**
- * Returns new JSZip instances with the matching folders as root
- *
- * @param name RegExp to match
- * @return New array of JSZipFile objects which match the RegExp
- */
- folder(name: RegExp): JSZip.JSZipObject[];
- /**
- * Call a callback function for each entry at this folder level.
- *
- * @param callback function
- */
- forEach(callback: (relativePath: string, file: JSZip.JSZipObject) => void): void;
- /**
- * Get all files which match the given filter function
- *
- * @param predicate Filter function
- * @return Array of matched elements
- */
- filter(predicate: (relativePath: string, file: JSZip.JSZipObject) => boolean): JSZip.JSZipObject[];
- /**
- * Removes the file or folder from the archive
- *
- * @param path Relative path of file or folder
- * @return Returns the JSZip instance
- */
- remove(path: string): JSZip;
- /**
- * Generates a new archive asynchronously
- *
- * @param options Optional options for the generator
- * @param onUpdate The optional function called on each internal update with the metadata.
- * @return The serialized archive
- */
- generateAsync<T extends JSZip.OutputType>(options?: JSZip.JSZipGeneratorOptions<T>, onUpdate?: OnUpdateCallback): Promise<OutputByType[T]>;
- /**
- * Generates a new archive asynchronously
- *
- * @param options Optional options for the generator
- * @param onUpdate The optional function called on each internal update with the metadata.
- * @return A Node.js `ReadableStream`
- */
- generateNodeStream(options?: JSZip.JSZipGeneratorOptions<'nodebuffer'>, onUpdate?: OnUpdateCallback): NodeJS.ReadableStream;
- /**
- * Deserialize zip file asynchronously
- *
- * @param data Serialized zip file
- * @param options Options for deserializing
- * @return Returns promise
- */
- loadAsync(data: InputFileFormat, options?: JSZip.JSZipLoadOptions): Promise<JSZip>;
- /**
- * Create JSZip instance
- */
- /**
- * Create JSZip instance
- * If no parameters given an empty zip archive will be created
- *
- * @param data Serialized zip archive
- * @param options Description of the serialized zip archive
- */
- new (data?: InputFileFormat, options?: JSZip.JSZipLoadOptions): this;
- (): JSZip;
- prototype: JSZip;
- support: JSZipSupport;
- external: {
- Promise: PromiseConstructorLike;
- };
- version: string;
- }
- declare var JSZip: JSZip;
- export = JSZip;
|