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.
		
		
		
		
		
			
		
			
				
					
					
						
							331 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
	
	
							331 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;
 |