From a9469cdb0422bf5ce51a7feed2e2db2299d8dd30 Mon Sep 17 00:00:00 2001 From: Alvis HT Tang Date: Thu, 8 Nov 2018 16:40:45 +0000 Subject: [PATCH 1/5] feat: add typescript definition --- index.d.ts | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 64 insertions(+) create mode 100644 index.d.ts diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..c418e6a --- /dev/null +++ b/index.d.ts @@ -0,0 +1,63 @@ +declare namespace tarstream { + interface Header { + name: string + size: number + mode: number + mtime: Date + type: string + linkname: string + uid: number + gid: number + uname: string + gname: string + devmajor: number + devminor: number + pax?: object + } + + type HeaderForPack = Partial
& { + name: string + } + + interface Pack extends NodeJS.ReadableStream { + entry(header: HeaderForPack, callback?: (error?: Error) => void): Sink + entry( + header: HeaderForPack, + buffer: string | Buffer, + callback?: (error?: Error) => void + ): Sink + destroy(): void + finalize(): void + } + + interface Sink extends NodeJS.WritableStream { + destroy(): void + } + + interface ExtractOptions { + filenameEncoding?: string + } + + interface Extract extends NodeJS.WritableStream { + on( + event: 'entry', + callback: ( + header: Header, + stream: NodeJS.ReadableStream, + next: () => void + ) => void + ): void + on(event: 'close', callback: () => void) + on(event: 'finish', callback: () => void) + on(event: 'error', callback: (error: Error) => void) + destroy(error?: Error): void + } + + interface Module { + pack(): Pack + extract(options?: ExtractOptions): Extract + } + + export function pack(): Pack + export function extract(options?: ExtractOptions): Extract +} diff --git a/package.json b/package.json index e16048f..88c5e19 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "3.1.6", "description": "tar-stream is a streaming tar parser and generator and nothing else. It operates purely using streams which means you can easily extract/parse tarballs without ever hitting the file system.", "main": "index.js", + "types": "index.d.ts", "files": [ "*.js" ], From 84daa281fa387be8cb67cb80db44b5caadab5d51 Mon Sep 17 00:00:00 2001 From: Alvis HT Tang Date: Fri, 21 Jul 2023 15:25:09 +0100 Subject: [PATCH 2/5] fix: add stricter typing for entry type --- index.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index c418e6a..51b8657 100644 --- a/index.d.ts +++ b/index.d.ts @@ -4,7 +4,7 @@ declare namespace tarstream { size: number mode: number mtime: Date - type: string + type: 'file' | 'link' | 'symlink' | 'directory' | 'block-device' | 'character-device' | 'fifo' | 'contiguous-file' linkname: string uid: number gid: number From 6d9f706bee7736b2bf23015f7fc0706517eb5c2e Mon Sep 17 00:00:00 2001 From: Alvis HT Tang Date: Fri, 21 Jul 2023 15:26:17 +0100 Subject: [PATCH 3/5] fix: remove types that no longer exist --- index.d.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 51b8657..58244f8 100644 --- a/index.d.ts +++ b/index.d.ts @@ -31,7 +31,6 @@ declare namespace tarstream { } interface Sink extends NodeJS.WritableStream { - destroy(): void } interface ExtractOptions { From 69a58387e5f0684b8deae59f2f31df0020568bdc Mon Sep 17 00:00:00 2001 From: Alvis HT Tang Date: Fri, 21 Jul 2023 15:27:51 +0100 Subject: [PATCH 4/5] fix: add back the missing async iterator type --- index.d.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/index.d.ts b/index.d.ts index 58244f8..71822fb 100644 --- a/index.d.ts +++ b/index.d.ts @@ -37,12 +37,17 @@ declare namespace tarstream { filenameEncoding?: string } + interface Source extends NodeJS.ReadableStream { + header: Header + offset: number + } + interface Extract extends NodeJS.WritableStream { on( event: 'entry', callback: ( header: Header, - stream: NodeJS.ReadableStream, + stream: Source, next: () => void ) => void ): void @@ -50,6 +55,7 @@ declare namespace tarstream { on(event: 'finish', callback: () => void) on(event: 'error', callback: (error: Error) => void) destroy(error?: Error): void + [Symbol.asyncIterator](): AsyncIterableIterator } interface Module { From a51277e2ac7120a6a2e7086449b538f100e20a37 Mon Sep 17 00:00:00 2001 From: Alvis HT Tang Date: Wed, 26 Jul 2023 04:42:21 +0100 Subject: [PATCH 5/5] fix: remove unnecessary namespace --- index.d.ts | 118 ++++++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 60 deletions(-) diff --git a/index.d.ts b/index.d.ts index 71822fb..26296b5 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,68 +1,66 @@ -declare namespace tarstream { - interface Header { - name: string - size: number - mode: number - mtime: Date - type: 'file' | 'link' | 'symlink' | 'directory' | 'block-device' | 'character-device' | 'fifo' | 'contiguous-file' - linkname: string - uid: number - gid: number - uname: string - gname: string - devmajor: number - devminor: number - pax?: object - } - - type HeaderForPack = Partial
& { - name: string - } +interface Header { + name: string + size: number + mode: number + mtime: Date + type: 'file' | 'link' | 'symlink' | 'directory' | 'block-device' | 'character-device' | 'fifo' | 'contiguous-file' + linkname: string + uid: number + gid: number + uname: string + gname: string + devmajor: number + devminor: number + pax?: object +} - interface Pack extends NodeJS.ReadableStream { - entry(header: HeaderForPack, callback?: (error?: Error) => void): Sink - entry( - header: HeaderForPack, - buffer: string | Buffer, - callback?: (error?: Error) => void - ): Sink - destroy(): void - finalize(): void - } +type HeaderForPack = Partial
& { + name: string +} - interface Sink extends NodeJS.WritableStream { - } +interface Pack extends NodeJS.ReadableStream { + entry(header: HeaderForPack, callback?: (error?: Error) => void): Sink + entry( + header: HeaderForPack, + buffer: string | Buffer, + callback?: (error?: Error) => void + ): Sink + destroy(): void + finalize(): void +} - interface ExtractOptions { - filenameEncoding?: string - } +interface Sink extends NodeJS.WritableStream { +} - interface Source extends NodeJS.ReadableStream { - header: Header - offset: number - } +interface ExtractOptions { + filenameEncoding?: string +} - interface Extract extends NodeJS.WritableStream { - on( - event: 'entry', - callback: ( - header: Header, - stream: Source, - next: () => void - ) => void - ): void - on(event: 'close', callback: () => void) - on(event: 'finish', callback: () => void) - on(event: 'error', callback: (error: Error) => void) - destroy(error?: Error): void - [Symbol.asyncIterator](): AsyncIterableIterator - } +interface Source extends NodeJS.ReadableStream { + header: Header + offset: number +} - interface Module { - pack(): Pack - extract(options?: ExtractOptions): Extract - } +interface Extract extends NodeJS.WritableStream { + on( + event: 'entry', + callback: ( + header: Header, + stream: Source, + next: () => void + ) => void + ): void + on(event: 'close', callback: () => void) + on(event: 'finish', callback: () => void) + on(event: 'error', callback: (error: Error) => void) + destroy(error?: Error): void + [Symbol.asyncIterator](): AsyncIterableIterator +} - export function pack(): Pack - export function extract(options?: ExtractOptions): Extract +interface Module { + pack(): Pack + extract(options?: ExtractOptions): Extract } + +export function pack(): Pack +export function extract(options?: ExtractOptions): Extract