From 9e90c5c89a155e5e2d1ade6c2a14a3c31ea8a1c2 Mon Sep 17 00:00:00 2001 From: SomaticIT Date: Tue, 16 Sep 2014 01:44:27 +0200 Subject: [PATCH 1/6] Add node tar definitions --- node-tar/node-tar.d.ts | 218 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 node-tar/node-tar.d.ts diff --git a/node-tar/node-tar.d.ts b/node-tar/node-tar.d.ts new file mode 100644 index 000000000..4f3d6278f --- /dev/null +++ b/node-tar/node-tar.d.ts @@ -0,0 +1,218 @@ +// Type definitions for node-tar v1.0.1 +// Project: https://github.com/npm/node-tar +// Definitions by: Maxime LUCE +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module "tar" { + import stream = require("stream"); + + //#region Interfaces + + export interface HeaderProperties { + path?: string; + mode?: number; + uid?: number; + gid?: number; + size?: number; + mtime?: number; + uname?: string; + gname?: string; + devmaj?: number; + devmin?: number; + } + + export interface ExtractOptions { + type?: string; + Directory?: boolean; + path?: string; + strip?: number; + } + + export interface ParseStream extends stream.Stream { + writable: boolean; + readable: boolean; + position: number; + + _stream: stream.Stream; + _ended: boolean; + + write(c: Buffer): boolean; + end(c: Buffer): void; + + _streamEnd(): void; + _read(): void; + _process(c: Buffer): void; + _startEntry(c: Buffer): void; + } + + export interface PackStream extends stream.Stream { + writable: boolean; + readable: boolean; + + _noProprietary: boolean; + _global: HeaderProperties; + _buffer: stream.Stream[]; + _currentEntry: any; + _processing: boolean; + _pipeRoot: stream.Stream; + _needDrain: boolean; + _paused: boolean; + + addGlobal(props: HeaderProperties): void; + add(stream: stream.Stream): boolean; + pause(): void; + resume(): void; + destroy(): void; + write(): void; + + _process(): void; + } + + export interface ExtractStream extends ParseStream { + } + + //#endregion + + //#region Enums + + export var fields: { + path: number; + mode: number; + uid: number; + gid: number; + size: number; + mtime: number; + cksum: number; + type: number; + linkpath: number; + ustar: number; + ustarvar: number; + uname: number; + gname: number; + devmaj: number; + devmin: number; + prefix: number; + fill: number; + }; + + export var fieldSize: number[]; + export var fieldOffs: number[]; + export var fieldEnds: number[]; + + /** + * Different values of the 'type' field + * paths match the values of Stats.isX() functions, where appropriate + */ + export var types: { + 0: string; + "\0": string; + "": string; + 1: string; + 2: string; + 3: string; + 4: string; + 5: string; + 6: string; + 7: string; + g: string; + x: string; + A: string; + D: string; + I: string; + K: string; + L: string; + M: string; + N: string; + S: string; + V: string; + X: string; + File: string; + OldFile: string; + Link: string; + SymbolicLick: string; + CharacterDevice: string; + BlockDevice: string; + Directory: string; + FIFO: string; + ContiguousFile: string; + GlobalExtendedHeader: string; + ExtendedHeader: string; + SolarisACL: string; + GNUDumpDir: string; + INode: string; + NextFileHasLonLinkPath: string; + NextFileHasLongPath: string; + ContinuationFile: string; + TapeVolumeHeader: string; + OldExtendedHeader: string; + }; + + /** + * Values for the mode field + */ + export var modes: { + suid: number; + sgid: number; + svtx: number; + uread: number; + uwrite: number; + uexec: number; + gread: number; + gwrite: number; + gexec: number; + oread: number; + owrite: number; + oexec: number; + }; + + export var numeric: { + mode: boolean; + uid: boolean; + gid: boolean; + size: boolean; + mtime: boolean; + devmaj: boolean; + devmin: boolean; + cksum: boolean; + atime: boolean; + ctime: boolean; + dev: boolean; + ino: boolean; + nlink: boolean; + }; + + export var knownExtended: { + atime: boolean; + charset: boolean; + comment: boolean; + ctime: boolean; + gid: boolean; + gname: boolean; + linkpat: boolean; + mtime: boolean; + path: boolean; + realtime: boolean; + security: boolean; + size: boolean; + uid: boolean; + uname: boolean; + }; + + export var headerSize: number; + export var blockSize: number; + + //#endregion + + //#region Global Methods + + export function Parse(): ParseStream; + + export function Pack(props: HeaderProperties): PackStream; + + export function Extract(path: string): ExtractStream; + export function Extract(opts: ExtractOptions): ExtractStream; + + //#endregion +} \ No newline at end of file From ab98ab4feecb134c1d3751eb2398b8b1880cd5c2 Mon Sep 17 00:00:00 2001 From: SomaticIT Date: Tue, 16 Sep 2014 01:55:33 +0200 Subject: [PATCH 2/6] Add node-tar test suite --- node-tar/node-tar-tests.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 node-tar/node-tar-tests.ts diff --git a/node-tar/node-tar-tests.ts b/node-tar/node-tar-tests.ts new file mode 100644 index 000000000..0a526faca --- /dev/null +++ b/node-tar/node-tar-tests.ts @@ -0,0 +1,28 @@ +/** +* Test suite created by Maxime LUCE +* +* Created by using code samples from https://github.com/npm/node-tar. +*/ + +/// +/// + +import tar = require("tar"); +import fs = require("fs"); + +/** + * Quick Extract + */ +fs.createReadStream("path/to/file.tar").pipe(tar.Extract("path/to/extract")); + +/** + * Use with events + */ +var readStream = fs.createReadStream("/path/to/file.tar"); +var extract = tar.Extract("/path/to/target"); + +readStream.pipe(extract); + +extract.on("entry", (entry: any) => { + +}); From 93b8b97b402bd96ba869d1f85b2ec420028d37f9 Mon Sep 17 00:00:00 2001 From: SomaticIT Date: Tue, 16 Sep 2014 02:04:53 +0200 Subject: [PATCH 3/6] Fix some stream related issues --- node-tar/node-tar-tests.ts | 2 +- node-tar/node-tar.d.ts | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/node-tar/node-tar-tests.ts b/node-tar/node-tar-tests.ts index 0a526faca..727dbc08c 100644 --- a/node-tar/node-tar-tests.ts +++ b/node-tar/node-tar-tests.ts @@ -5,7 +5,7 @@ */ /// -/// +/// import tar = require("tar"); import fs = require("fs"); diff --git a/node-tar/node-tar.d.ts b/node-tar/node-tar.d.ts index 4f3d6278f..06bc61f37 100644 --- a/node-tar/node-tar.d.ts +++ b/node-tar/node-tar.d.ts @@ -30,24 +30,20 @@ declare module "tar" { strip?: number; } - export interface ParseStream extends stream.Stream { - writable: boolean; - readable: boolean; + export interface ParseStream extends NodeJS.ReadableStream { } + export interface ParseStream extends NodeJS.WritableStream { position: number; _stream: stream.Stream; _ended: boolean; - write(c: Buffer): boolean; - end(c: Buffer): void; - _streamEnd(): void; - _read(): void; _process(c: Buffer): void; _startEntry(c: Buffer): void; } - export interface PackStream extends stream.Stream { + export interface PackStream extends NodeJS.ReadableStream { } + export interface PackStream extends NodeJS.WritableStream { writable: boolean; readable: boolean; @@ -62,10 +58,7 @@ declare module "tar" { addGlobal(props: HeaderProperties): void; add(stream: stream.Stream): boolean; - pause(): void; - resume(): void; destroy(): void; - write(): void; _process(): void; } From e761aa1248be400e1dd802445fb0a8411c1a1bf8 Mon Sep 17 00:00:00 2001 From: SomaticIT Date: Tue, 16 Sep 2014 04:15:51 +0200 Subject: [PATCH 4/6] Optimize streams definitions by extending NodeNS.ReadWriteStream --- node-tar/node-tar.d.ts | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/node-tar/node-tar.d.ts b/node-tar/node-tar.d.ts index 06bc61f37..fc9bf3256 100644 --- a/node-tar/node-tar.d.ts +++ b/node-tar/node-tar.d.ts @@ -30,8 +30,7 @@ declare module "tar" { strip?: number; } - export interface ParseStream extends NodeJS.ReadableStream { } - export interface ParseStream extends NodeJS.WritableStream { + export interface ParseStream extends NodeJS.ReadWriteStream { position: number; _stream: stream.Stream; @@ -42,8 +41,7 @@ declare module "tar" { _startEntry(c: Buffer): void; } - export interface PackStream extends NodeJS.ReadableStream { } - export interface PackStream extends NodeJS.WritableStream { + export interface PackStream extends NodeJS.ReadWriteStream { writable: boolean; readable: boolean; From 217920c5b59fe506df4328ef85e20a08f8203971 Mon Sep 17 00:00:00 2001 From: SomaticIT Date: Tue, 16 Sep 2014 04:27:57 +0200 Subject: [PATCH 5/6] Add node-tar to contributors.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index eb9f9b64e..e3ba0b3ba 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -278,6 +278,7 @@ All definitions files include a header with the author and editors, so at some p * [nodeunit](https://github.com/caolan/nodeunit) (by [Jeff Goddard](https://github.com/jedigo)) * [node_zeromq](https://github.com/JustinTulloss/zeromq.node) (by [Dave McKeown](https://github.com/davemckeown)) * [node-sqlserver](https://github.com/WindowsAzure/node-sqlserver) (by [Boris Yankov](https://github.com/borisyankov)) +* [node-tar](https://github.com/npm/node-tar) (by [Maxime LUCE](https://github.com/SomaticIT)) * [node-uuid](https://github.com/broofa/node-uuid) (by [Jeff May](https://github.com/jeffmay)) * [notify.js](https://github.com/alexgibson/notify.js) (by [soundTricker](https://github.com/soundTricker)) * [NProgress](https://github.com/rstacruz/nprogress) (by [Judah Gabriel Himango](https://github.com/judahgabriel)) From 7c74debc97a95abad3a97aa9854d35a91c10895b Mon Sep 17 00:00:00 2001 From: SomaticIT Date: Wed, 24 Sep 2014 16:33:48 +0200 Subject: [PATCH 6/6] Rename 'node-tar' to 'tar' to match npm package name --- node-tar/node-tar-tests.ts => tar/tar-tests.ts | 2 +- node-tar/node-tar.d.ts => tar/tar.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename node-tar/node-tar-tests.ts => tar/tar-tests.ts (93%) rename node-tar/node-tar.d.ts => tar/tar.d.ts (99%) diff --git a/node-tar/node-tar-tests.ts b/tar/tar-tests.ts similarity index 93% rename from node-tar/node-tar-tests.ts rename to tar/tar-tests.ts index 727dbc08c..3a7783d52 100644 --- a/node-tar/node-tar-tests.ts +++ b/tar/tar-tests.ts @@ -5,7 +5,7 @@ */ /// -/// +/// import tar = require("tar"); import fs = require("fs"); diff --git a/node-tar/node-tar.d.ts b/tar/tar.d.ts similarity index 99% rename from node-tar/node-tar.d.ts rename to tar/tar.d.ts index fc9bf3256..6b25a02a7 100644 --- a/node-tar/node-tar.d.ts +++ b/tar/tar.d.ts @@ -1,4 +1,4 @@ -// Type definitions for node-tar v1.0.1 +// Type definitions for tar v1.0.1 // Project: https://github.com/npm/node-tar // Definitions by: Maxime LUCE // Definitions: https://github.com/borisyankov/DefinitelyTyped