From e4c947b56a70aaeef3ef4eea8fb9027914292522 Mon Sep 17 00:00:00 2001 From: Nick Veys Date: Fri, 24 Jun 2016 14:26:03 -0500 Subject: [PATCH 1/2] Adding angular-websocket definitions --- angular-websocket/angular-websocket-tests.ts | 25 ++++++ angular-websocket/angular-websocket.d.ts | 86 ++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 angular-websocket/angular-websocket-tests.ts create mode 100644 angular-websocket/angular-websocket.d.ts diff --git a/angular-websocket/angular-websocket-tests.ts b/angular-websocket/angular-websocket-tests.ts new file mode 100644 index 0000000000..30d85aefc7 --- /dev/null +++ b/angular-websocket/angular-websocket-tests.ts @@ -0,0 +1,25 @@ +/// + +let dummySocket: ng.websocket.IWebSocket; + +let provider: ng.websocket.IWebSocketProvider = (url: string) => { + return dummySocket; +} + +let socket = provider("wss://localhost"); + +socket.onOpen((event) => {}) + .onClose((event) => {}) + .onError((event) => {}) + .onMessage((event) => {}); + +socket.onMessage((event) => {}, { filter: /Some Filter/ }) + .onMessage((event) => {}, { filter: 'Some Filter' }) + .onMessage((event) => {}, { filter: 'Some Filter', autoApply: true }) + .onMessage((event) => {}, { autoApply: false }); + +socket.close(true); +socket.close(); + +let promise = socket.send("Some great data here!"); +promise.finally(() => {}); diff --git a/angular-websocket/angular-websocket.d.ts b/angular-websocket/angular-websocket.d.ts new file mode 100644 index 0000000000..ccf09711a5 --- /dev/null +++ b/angular-websocket/angular-websocket.d.ts @@ -0,0 +1,86 @@ +// Type definitions for angular-websocket v2.0 +// Project: https://github.com/AngularClass/angular-websocket +// Definitions by: Nick Veys +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare namespace angular.websocket { + + interface IWebSocketProvider { + /** + * Creates and opens an IWebSocket instance. + * + * @param url url to connect to + * @return websocket instance + */ + (url: string): IWebSocket; + } + + /** Options available to be specified for IWebSocket.onMessage */ + type IWebSocketMessageOptions = { + + /** + * If specified, only messages that match the filter will cause the message event + * to be fired. + */ + filter?: string | RegExp; + + /** If true, each message handled will safely call `$rootScope.$digest()`. */ + autoApply?: boolean; + } + + interface IWebSocket { + + /** + * Adds a callback to be executed each time a socket connection is opened for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onOpen(callback: (event: Event) => void): IWebSocket; + + /** + * Adds a callback to be executed each time a socket connection is closed for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onClose(callback: (event: CloseEvent) => void): IWebSocket; + + /** + * Adds a callback to be executed each time a socket connection is closed for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onError(callback: (event: Event) => void): IWebSocket; + + /** + * Adds a callback to be executed each time a socket connection has an error for + * this instance. + * + * @param event event object + * @returns this instance, for method chaining + */ + onMessage(callback: (event: MessageEvent) => void, options?: IWebSocketMessageOptions): IWebSocket; + + /** + * Closes the underlying socket, as long as no data is still being sent from the client. + * + * @param force if `true`, force close even if data is still being sent + * @returns this instance, for method chaining + */ + close(force?: boolean): IWebSocket; + + /** + * Adds data to a queue, and attempts to send if the socket is ready. + * + * @param data data to send, if this is an object, it will be stringified before sending + */ + send(data: string | Object): ng.IPromise; + } +} From e1f0a41047dcc2b8d3702acb8f9e6cd26cfd148b Mon Sep 17 00:00:00 2001 From: Nick Veys Date: Fri, 24 Jun 2016 14:56:49 -0500 Subject: [PATCH 2/2] Using {} instead of Object in IWebSocket#send --- angular-websocket/angular-websocket-tests.ts | 4 ++-- angular-websocket/angular-websocket.d.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/angular-websocket/angular-websocket-tests.ts b/angular-websocket/angular-websocket-tests.ts index 30d85aefc7..78ba982aa5 100644 --- a/angular-websocket/angular-websocket-tests.ts +++ b/angular-websocket/angular-websocket-tests.ts @@ -21,5 +21,5 @@ socket.onMessage((event) => {}, { filter: /Some Filter/ }) socket.close(true); socket.close(); -let promise = socket.send("Some great data here!"); -promise.finally(() => {}); +socket.send("Some great data here!").finally(() => {}); +socket.send({ list: [1, 2, 3, 4] }); diff --git a/angular-websocket/angular-websocket.d.ts b/angular-websocket/angular-websocket.d.ts index ccf09711a5..04859a7d16 100644 --- a/angular-websocket/angular-websocket.d.ts +++ b/angular-websocket/angular-websocket.d.ts @@ -81,6 +81,6 @@ declare namespace angular.websocket { * * @param data data to send, if this is an object, it will be stringified before sending */ - send(data: string | Object): ng.IPromise; + send(data: string | {}): ng.IPromise; } }