add types for sails.io.js 1.0.1

This commit is contained in:
Alexandro
2016-11-16 03:47:22 +07:00
parent c6f86d519c
commit c582efde16
3 changed files with 209 additions and 0 deletions

101
sails.io.js/index.d.ts vendored Normal file
View File

@@ -0,0 +1,101 @@
// Type definitions for sails.io.js 1.0.1
// Project: http://sailsjs.org/documentation/reference/web-sockets/socket-client
// Definitions by: Arvitaly <https://github.com/arvitaly/>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference path="./../socket.io-client/index.d.ts"/>
declare namespace SailsIOJS {
export interface SDKInfo {
version?: string;
language?: string;
platform?: "browser" | "node";
versionString?: string;
}
export interface ClientSails {
url?: string;
autoConnect?: boolean;
headers?: { [index: string]: string };
transports?: Array<"websocket" | "polling">;
rejectUnauthorized?: boolean;
reconnection?: boolean;
reconnectionAttempts?: number;
reconnectionDelay?: number;
reconnectionDelayMax?: number;
useCORSRouteToGetCookie?: boolean;
query?: string;
path?: string;
// All logs are disabled when `io.sails.environment = 'production'`
environment?: "production" | string;
connect(url?: string, config?: ConnectConfig): Socket;
initialConnectionHeaders?: InitialConnectionHeaders;
strict?: boolean;
sdk?: SDKInfo;
}
export interface ConnectConfig {
initialConnectionHeaders?: InitialConnectionHeaders
}
export interface InitialConnectionHeaders {
nosession?: boolean;
}
export interface Client {
socket: Socket;
sails: ClientSails;
}
export interface Headers { [index: string]: string }
export interface RequestOptions {
url: string;
method?: string;
headers?: Headers;
params?: any;
data?: any;
}
export interface JWR {
headers: Headers;
statusCode: number;
body: any;
error?: Error;
toString: () => string;
toPOJO: () => {
body: any;
headers: Headers;
statusCode: number;
}
pipe: () => Error;
}
export type RequestCallback = {
(body: any, jwr: JWR): any;
}
export type Data = Object;
export interface Socket {
get(url: string, data?: Data): void;
get(url: string, cb?: RequestCallback): void;
get(url: string, data: Data, cb: RequestCallback): void;
post(url: string, data?: Data): void;
post(url: string, cb?: RequestCallback): void;
post(url: string, data: Data, cb: RequestCallback): void;
put(url: string, data?: Data): void;
put(url: string, cb?: RequestCallback): void;
put(url: string, data: Data, cb: RequestCallback): void;
delete(url: string, data?: Data): void;
delete(url: string, cb?: RequestCallback): void;
delete(url: string, data: Data, cb: RequestCallback): void;
request(options: RequestOptions, cb?: RequestCallback): void;
on(event: string, cb: (...args: Array<any>) => any): Socket;
on(event: "connect", cb: () => any): Socket;
on(event: "disconnect", cb: () => any): Socket;
on(event: "reconnecting", cb: (numAttempts: number) => any): Socket;
on(event: "reconnect", cb: (transport: string, numAttempts: number) => any): Socket;
on(event: "error", cb: (err: any) => any): Socket;
off(event: string, cb: () => any): Socket
removeAllListeners(): Socket;
isConnecting(): boolean;
isConnected(): boolean;
reconnect(): Socket;
mightBeAboutToAutoConnect(): boolean;
replay(): Socket;
}
}
declare function SailsIOJS(client: SocketIOClientStatic): SailsIOJS.Client;
declare module 'sails.io.js' {
export = SailsIOJS;
}

View File

@@ -0,0 +1,89 @@
/// <reference path="./index.d.ts"/>
import * as SocketIO from 'socket.io-client';
import * as SailsIOJS from 'sails.io.js';
const io = SailsIOJS(SocketIO);
io.sails.autoConnect = true;
io.sails.connect();
io.sails.connect("url");
io.sails.connect("url", {});
io.sails.connect("url", {
initialConnectionHeaders: {
nosession: true
}
});
io.sails.environment = "production";
io.sails.headers = { "test": "1" };
io.sails.initialConnectionHeaders = { nosession: false };
io.sails.path = "path";
io.sails.query = "query";
io.sails.reconnection = true;
io.sails.reconnectionAttempts = 5;
io.sails.reconnectionDelay = 1;
io.sails.reconnectionDelayMax = 5;
io.sails.rejectUnauthorized = true;
io.sails.sdk = {
language: "lang",
platform: "node",
version: "1.0",
versionString: "1.0"
}
io.sails.strict = true;
io.sails.transports = ["websocket", "polling"];
io.sails.url = "url1";
io.sails.useCORSRouteToGetCookie = true;
io.socket.get("p");
io.socket.get("p", {});
io.socket.get("p", "test", (data: Date, jwr: any) => {
data.getDate();
const a: SailsIOJS.JWR = jwr;
});
io.socket.post("p");
io.socket.post("p", { val: 1 });
io.socket.put("p", "test", (data: number, jwr: any) => {
data.toFixed();
const a: SailsIOJS.JWR = jwr;
});
io.socket.put("p");
io.socket.put("p", {});
io.socket.post("p", "test", (data, jwr) => {
const a: SailsIOJS.JWR = jwr;
});
io.socket.delete("p");
io.socket.delete("p", {});
io.socket.delete("p", "test", (data, jwr) => {
const a: SailsIOJS.JWR = jwr;
});
io.socket.request({ url: "url" });
io.socket.request({ url: "url" }, (data: number, jwr: any) => {
data.toExponential();
jwr.body.toExponential();
jwr.error.message;
jwr.pipe.apply(this);
jwr.statusCode.toFixed();
const podo = jwr.toPOJO();
podo.body.toExponential();
podo.headers["test"] = "15";
podo.statusCode = 200;
jwr.toString().charAt(0);
})
io.socket.isConnected() === true;
io.socket.isConnecting() === true;
io.socket.mightBeAboutToAutoConnect() === false;
io.socket.on("connect", () => { })
.on("disconnect", () => {
})
.on("reconnecting", (num) => {
num = 15;
})
.on("reconnect", (transport, num) => {
transport.toLowerCase();
num = 16;
})
.on("error", (err) => { })
.on("any", (a, b, c) => {
})
.removeAllListeners()
.off("error", () => { })
.replay();

19
sails.io.js/tsconfig.json Normal file
View File

@@ -0,0 +1,19 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"noImplicitAny": true,
"strictNullChecks": true,
"baseUrl": "../",
"typeRoots": [
"../"
],
"types": [],
"noEmit": true,
"forceConsistentCasingInFileNames": true
},
"files": [
"index.d.ts",
"sails.io.js-tests.ts"
]
}