typescript-closure-tools
Version:
Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files
258 lines (214 loc) • 7.9 kB
TypeScript
// Type definitions for Q-io
// Project:https://github.com/kriskowal/q-io
// Definitions by:Bart van der Schoor <https://github.com/Bartvds>
// Definitions:https://github.com/borisyankov/DefinitelyTyped
///<reference path="../node/node.d.ts" />
///<reference path="../q/Q.d.ts" />
//TODO add support for q-io/http-apps
//TODO add verified support for q-io/fs-mock
//TODO fix Readers/Writers properly
//TODO find solution for overloaded return types (QioFS.open/QioFS.read)
// for some ideas see https://typescript.codeplex.com/discussions/461587#post1105930
declare module QioFS {
//TODO how to define the multiple return types? use any for now?
export function open(path:string, options?:any):Q.Promise<any>;
//export function open(path:string, options?:any):Q.Promise<Qio.Reader>;
//export function open(path:string, options?:any):Q.Promise<Qio.Writer>;
//export function open(path:string, options?:any):Q.Promise<Buffer>;
//TODO how to define the multiple return types? use any for now?
export function read(path:string, options?:any):Q.Promise<any>;
//export function read(path:string, options?:any):Q.Promise<string>;
//export function read(path:string, options?:any):Q.Promise<Buffer>;
export function write(path:string, content:Buffer, options?:any):Q.Promise<void>;
export function write(path:string, content:string, options?:any):Q.Promise<void>;
export function append(path:string, content:Buffer, options?:any):Q.Promise<void>;
export function append(path:string, content:string, options?:any):Q.Promise<void>;
export function copy(source:string, target:string):Q.Promise<void>;
export function copyTree(source:string, target:string):Q.Promise<void>;
export function list(path:string):Q.Promise<string[]>;
export function listTree(path:string, guard?:(path:string, stat:any) => boolean):Q.Promise<string[]>;
export function listDirectoryTree(path:string):Q.Promise<string[]>;
export function makeDirectory(path:string, mode?:string):Q.Promise<void>;
export function makeDirectory(path:string, mode?:number):Q.Promise<void>;
export function makeTree(path:string, mode?:string):Q.Promise<void>;
export function makeTree(path:string, mode?:number):Q.Promise<void>;
export function remove(path:string):Q.Promise<void>;
export function removeTree(path:string):Q.Promise<void>;
export function rename(source:string, target:string):Q.Promise<void>;
export function move(source:string, target:string):Q.Promise<void>;
export function link(source:string, target:any):Q.Promise<void>;
export function symbolicCopy(source:string, target:string, type:string):Q.Promise<void>;
export function symbolicLink(target:string, link:string, type:string):Q.Promise<void>;
export function chown(path:string, uid:number, gid:number):Q.Promise<void>;
export function chmod(path:string, mode?:string):Q.Promise<void>;
export function chmod(path:string, mode?:number):Q.Promise<void>;
export function stat(path:string):Q.Promise<Stats>;
export function statLink(path:string):Q.Promise<Stats>;
export function statFd(fd:number):Q.Promise<Stats>;
export function exists(path:string):Q.Promise<boolean>;
export function isFile(path:string):Q.Promise<boolean>;
export function isDirectory(path:string):Q.Promise<boolean>;
export function isSymbolicLink(path:string):Q.Promise<boolean>;
export function lastModified(path:string):Q.Promise<Date>;
export function lastAccessed(path:string):Q.Promise<Date>;
export function split(path:string):string[];
export function join(...paths:string[]):string;
export function join(paths:string[]):string;
export function resolve(...path:string[]):string;
export function resolve(paths:string[]):string;
export function normal(...path:string[]):string;
export function normal(paths:string[]):string;
export function absolute(path:string):string;
export function canonical(path:string):Q.Promise<string>;
export function readLink(path:string):Q.Promise<string>;
export function contains(parent:string, child:string):boolean;
export function relative(source:string, target:string):Q.Promise<string>;
export function relativeFromFile(source:string, target:string):string;
export function relativeFromDirectory(source:string, target:string):string;
export function isAbsolute(path:string):boolean;
export function isRelative(path:string):boolean;
export function isRoot(path:string):boolean;
export function root(path:string):string;
export function directory(path:string):string;
export function base(path:string, extension:string):string;
export function extension(path:string):string;
//this should return a q-io/fs-mock MockFS
export function reroot(path:string):typeof QioFS;
export function toObject(path:string):{[path:string]:Buffer};
//listed but not implemented by Q-io
//export function glob(pattern):Q.Promise<string[]>;
//export function match(pattern, path:string):Q.Promise<string[]>;
//TODO link this to node.js FS module (no lazy clones)
interface Stats {
node:NodeStats;
size:number;
}
interface NodeStats {
isFile():boolean;
isDirectory():boolean;
isBlockDevice():boolean;
isCharacterDevice():boolean;
isSymbolicLink():boolean;
isFIFO():boolean;
isSocket():boolean;
node:NodeStats;
dev:number;
ino:number;
mode:number;
nlink:number;
uid:number;
gid:number;
rdev:number;
size:number;
blksize:number;
blocks:number;
atime:Date;
mtime:Date;
ctime:Date;
}
}
declare module QioHTTP {
export function request(request:Request):Q.Promise<Response>;
export function request(url:string):Q.Promise<Response>;
export function read(request:Request):Q.Promise<string>;
export function read(url:string):Q.Promise<string >;
export function normalizeRequest(request:Request):Request;
export function normalizeRequest(url:string):Request;
export function normalizeResponse(response:Response):Response;
interface Request {
url:string;
path:string;
scriptName:string;
pathInfo:string;
version:string[];
method:string;
scheme:string;
host:string;
port:number;
remoteHost:string;
remotePort:number;
headers:Headers;
agent:any;
body:any;
node:any;
}
interface Response {
status:number;
headers:Headers;
body:Qio.Reader
onclose:() => void;
node:any;
}
interface Headers {
[name:string]:any;
// [name:string]:any[];
}
interface Body extends Qio.Stream {
}
interface Application {
(req:Request):Q.Promise<any>;
}
}
declare module Qio {
interface ForEachCallback {
(chunk:Buffer):Q.Promise<any>;
(chunk:string):Q.Promise<any>;
}
interface ForEach {
forEach(callback:ForEachCallback):Q.Promise<void>;
}
interface Reader extends ForEach {
read(charset:string):Q.Promise<string>;
read():Q.Promise<Buffer>;
close():void;
node: NodeJS.ReadableStream;
}
interface Writer {
write(content:string):void;
write(content:Buffer):void;
flush():Q.Promise<void>;
close():void;
destroy():void;
node: NodeJS.WritableStream;
}
interface Stream {
read(charset:string):Q.Promise<string>;
read():Q.Promise<Buffer>;
write(content:string):void;
write(content:Buffer):void;
flush():Q.Promise<void>;
close():void;
destroy():void;
node:any;
}
interface BufferReader extends QioBufferReader {
}
}
interface QioBufferReader {
new ():Qio.Reader;
read(stream:Qio.Reader, charset:string):string;
read(stream:Qio.Reader):Buffer;
join(buffers:Buffer[]):Buffer;
}
interface QioBufferWriter {
(writer:Buffer):Qio.Writer;
Writer:Qio.Writer;
}
interface QioBufferStream {
(buffer:Buffer, encoding:string):Qio.Stream
}
declare module "q-io/http" {
export = QioHTTP;
}
declare module "q-io/fs" {
export = QioFS;
}
declare module "q-io/reader" {
export = QioBufferReader;
}
declare module "q-io/writer" {
export = QioBufferWriter;
}
declare module "q-io/buffer-stream" {
export = QioBufferStream;
}