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
			| 
											2 years ago
										 | // 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; |