You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							330 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							330 lines
						
					
					
						
							11 KiB
						
					
					
				
								// 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';
							 | 
						|
								
							 | 
						|
								/**
							 | 
						|
								 * Depends on the compression type. With `STORE` (no compression), these options are ignored. With
							 | 
						|
								 * `DEFLATE`, you can give the compression level between 1 (best speed) and 9 (best compression).
							 | 
						|
								 */
							 | 
						|
								interface CompressionOptions {
							 | 
						|
								    level: number;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								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] | Promise<InputByType[keyof InputByType]>;
							 | 
						|
								
							 | 
						|
								declare namespace JSZip {
							 | 
						|
								    type InputType = keyof InputByType;
							 | 
						|
								
							 | 
						|
								    type OutputType = keyof OutputByType;
							 | 
						|
								
							 | 
						|
								    interface JSZipMetadata {
							 | 
						|
								        percent: number;
							 | 
						|
								        currentFile: string | null;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    type OnUpdateCallback = (metadata: JSZipMetadata) => void;
							 | 
						|
								
							 | 
						|
								    interface JSZipObject {
							 | 
						|
								        name: string;
							 | 
						|
								        /**
							 | 
						|
								         * Present for files loadded with `loadAsync`. May contain ".." path components that could
							 | 
						|
								         * result in a zip-slip attack. See https://snyk.io/research/zip-slip-vulnerability
							 | 
						|
								         */
							 | 
						|
								        unsafeOriginalName?: 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;
							 | 
						|
								        /**
							 | 
						|
								         * Sets per file compression. The `compressionOptions` parameter depends on the compression type.
							 | 
						|
								         */
							 | 
						|
								        compression?: Compression;
							 | 
						|
								        /**
							 | 
						|
								         * Sets per file compression level for `DEFLATE` compression.
							 | 
						|
								         */
							 | 
						|
								        compressionOptions?: null | CompressionOptions;
							 | 
						|
								        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> {
							 | 
						|
								        /**
							 | 
						|
								         * Sets compression option for all entries that have not specified their own `compression` option
							 | 
						|
								         */
							 | 
						|
								        compression?: Compression;
							 | 
						|
								        /**
							 | 
						|
								         * Sets compression level for `DEFLATE` compression.
							 | 
						|
								         */
							 | 
						|
								        compressionOptions?: null | CompressionOptions;
							 | 
						|
								        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;
							 | 
						|
								        decodeFileName?: (bytes: string[] | Uint8Array | Buffer) => string;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    type DataEventCallback<T> = (dataChunk: T, metadata: JSZipMetadata) => void
							 | 
						|
								    type EndEventCallback = () => void
							 | 
						|
								    type ErrorEventCallback = (error: Error) => void
							 | 
						|
								
							 | 
						|
								    interface JSZipStreamHelper<T> {
							 | 
						|
								        /**
							 | 
						|
								         * Register a listener on an event
							 | 
						|
								         */
							 | 
						|
								        on(event: 'data', callback: DataEventCallback<T>): this;
							 | 
						|
								        on(event: 'end', callback: EndEventCallback): this;
							 | 
						|
								        on(event: 'error', callback: ErrorEventCallback): this;
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Read the whole stream and call a callback with the complete content
							 | 
						|
								         *
							 | 
						|
								         * @param updateCallback The function called every time the stream updates
							 | 
						|
								         * @return A Promise of the full content
							 | 
						|
								         */
							 | 
						|
								        accumulate(updateCallback?: (metadata: JSZipMetadata) => void): Promise<T>;
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Resume the stream if the stream is paused. Once resumed, the stream starts sending data events again
							 | 
						|
								         *
							 | 
						|
								         * @return The current StreamHelper object, for chaining
							 | 
						|
								         */
							 | 
						|
								        resume(): this;
							 | 
						|
								
							 | 
						|
								        /**
							 | 
						|
								         * Pause the stream if the stream is running. Once paused, the stream stops sending data events
							 | 
						|
								         *
							 | 
						|
								         * @return The current StreamHelper object, for chaining
							 | 
						|
								         */
							 | 
						|
								        pause(): this;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								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?: JSZip.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?: JSZip.OnUpdateCallback): NodeJS.ReadableStream;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * Generates the complete zip file with the internal stream implementation
							 | 
						|
								     *
							 | 
						|
								     * @param options Optional options for the generator
							 | 
						|
								     * @return a StreamHelper
							 | 
						|
								     */
							 | 
						|
								    generateInternalStream<T extends JSZip.OutputType>(options?: JSZip.JSZipGeneratorOptions<T>): JSZip.JSZipStreamHelper<OutputByType[T]>;
							 | 
						|
								
							 | 
						|
								    /**
							 | 
						|
								     * 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
							 | 
						|
								     */
							 | 
						|
								    new(): this;
							 | 
						|
								
							 | 
						|
								    (): JSZip;
							 | 
						|
								
							 | 
						|
								    prototype: JSZip;
							 | 
						|
								    support: JSZipSupport;
							 | 
						|
								    external: {
							 | 
						|
								        Promise: PromiseConstructorLike;
							 | 
						|
								    };
							 | 
						|
								    version: string;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								declare var JSZip: JSZip;
							 | 
						|
								
							 | 
						|
								export = JSZip;
							 | 
						|
								
							 |