diff --git a/pako/index.d.ts b/pako/index.d.ts index 2838272dbf..7f9b31f2b9 100644 --- a/pako/index.d.ts +++ b/pako/index.d.ts @@ -1,61 +1,84 @@ -// Type definitions for pako 0.2.8 +// Type definitions for pako 1.0.4 // Project: https://github.com/nodeca/pako -// Definitions by: Denis Cappellin +// Definitions by: Denis Cappellin , Caleb Eggensperger // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped export = Pako; export as namespace pako; declare namespace Pako { + export interface DeflateOptions { + level?: number; + windowBits?: number; + memLevel?: number; + strategy?: number; + dictionary?: any; + raw?: boolean; + to?: 'string'; + } + + export interface InflateOptions { + windowBits?: number; + raw?: boolean; + to?: 'string'; + } + + export type Data = Uint8Array | Array | string; + /** * Compress data with deflate algorithm and options. */ - export function deflate( data: Uint8Array | Array | string, options?: any ): string; + export function deflate( data: Data, options: DeflateOptions & {to: 'string'} ): string; + export function deflate( data: Data, options?: DeflateOptions ): Uint8Array; + /** * The same as deflate, but creates raw data, without wrapper (header and adler32 crc). */ - export function deflateRaw( data: Uint8Array | Array | string, options?: any ): string; + export function deflateRaw( data: Data, options: DeflateOptions & {to: 'string'} ): string; + export function deflateRaw( data: Data, options?: DeflateOptions ): Uint8Array; + /** * The same as deflate, but create gzip wrapper instead of deflate one. */ - export function gzip( data: Uint8Array | Array | string, options?: any ): string; + export function gzip( data: Data, options: DeflateOptions & {to: 'string'} ): string; + export function gzip( data: Data, options?: DeflateOptions ): Uint8Array; + /** * Decompress data with inflate/ungzip and options. Autodetect format via wrapper header * by default. That's why we don't provide separate ungzip method. */ - export function inflate( data: Uint8Array | Array | string, options?: any ): Uint8Array; - export function inflate( data: Uint8Array | Array | string, options?: any ): Array; - export function inflate( data: Uint8Array | Array | string, options?: any ): String; + export function inflate( data: Data, options: InflateOptions & {to: 'string'} ): string; + export function inflate( data: Data, options?: InflateOptions ): Uint8Array; + /** * The same as inflate, but creates raw data, without wrapper (header and adler32 crc). */ - export function inflateRaw( data: Uint8Array | Array | string, options?: any ): Uint8Array; - export function inflateRaw( data: Uint8Array | Array | string, options?: any ): Array; - export function inflateRaw( data: Uint8Array | Array | string, options?: any ): string; + export function inflateRaw( data: Data, options: InflateOptions & {to: 'string'} ): string; + export function inflateRaw( data: Data, options?: InflateOptions ): Uint8Array; + /** * Just shortcut to inflate, because it autodetects format by header.content. Done for convenience. */ - export function ungzip( data: Uint8Array | Array | string, options?: any ): Uint8Array; - export function ungzip( data: Uint8Array | Array | string, options?: any ): Array; - export function ungzip( data: Uint8Array | Array | string, options?: any ): string; + export function ungzip( data: Data, options: InflateOptions & {to: 'string'} ): string; + export function ungzip( data: Data, options?: InflateOptions ): Uint8Array; export class Deflate { - constructor( options?: any ); + constructor( options?: DeflateOptions ); err: number; msg: string; result: Uint8Array | Array; - onData( chunk: Uint8Array | Array | string ): void; + onData( chunk: Data ): void; onEnd( status: number ): void; - push( data: Uint8Array | Array | ArrayBuffer | string, mode?: number | boolean ): boolean; + push( data: Data | ArrayBuffer, mode?: number | boolean ): boolean; } export class Inflate { - constructor( options?: any ); + constructor( options?: InflateOptions ); err: number; msg: string; - result: Uint8Array | Array | string; - onData( chunk: Uint8Array | Array | string ): void; + result: Data; + onData( chunk: Data ): void; onEnd( status: number ): void; - push( data: Uint8Array | Array | ArrayBuffer | string, mode?: number | boolean ): boolean; + push( data: Data | ArrayBuffer, mode?: number | boolean ): boolean; } } diff --git a/pako/pako-tests.ts b/pako/pako-tests.ts index e928fba9dc..5e5a6c3eef 100644 --- a/pako/pako-tests.ts +++ b/pako/pako-tests.ts @@ -5,13 +5,20 @@ import pako = require("pako"); var chunk1 = new Uint8Array([1,2,3,4,5,6,7,8,9]) var chunk2 = new Uint8Array([10,11,12,13,14,15,16,17,18,19]); -var deflate = new pako.Deflate({ level: 3}); +var deflate = new pako.Deflate({ level: 3 }); deflate.push(chunk1, false); deflate.push(chunk2, true); // true -> last chunk -if (deflate.err) { - throw new Error( deflate.err.toString() ); +if (deflate.err) { + throw new Error( deflate.err.toString() ); } -console.log(deflate.result); \ No newline at end of file +console.log(deflate.result); + +let str: string = pako.deflate('1234', {to: 'string'}); +let arr: Uint8Array = pako.deflate('1234'); + +let str2: string = pako.inflate('1234', {to: 'string'}); +let arr2: Uint8Array = pako.inflate('1234'); +