From 4279f7cec112394d3426d88a1c29ba30f65f3139 Mon Sep 17 00:00:00 2001 From: Peter Palotas Date: Tue, 23 Dec 2014 21:49:33 +0100 Subject: [PATCH 1/3] Created new type definitions for Backbone.Radio 0.8.3 (https://github.com/marionettejs/backbone.radio) --- backbone-radio/backbone.radio-tests.ts | 104 +++++++++++++++++++++++++ backbone-radio/backbone.radio.d.ts | 92 ++++++++++++++++++++++ 2 files changed, 196 insertions(+) create mode 100644 backbone-radio/backbone.radio-tests.ts create mode 100644 backbone-radio/backbone.radio.d.ts diff --git a/backbone-radio/backbone.radio-tests.ts b/backbone-radio/backbone.radio-tests.ts new file mode 100644 index 000000000..295c552af --- /dev/null +++ b/backbone-radio/backbone.radio-tests.ts @@ -0,0 +1,104 @@ +/// +/// + +class MyCommands extends Backbone.Radio.Commands { + +} + +class MyRequests extends Backbone.Radio.Requests { + +} + +function onRender() : void { + +} + +function onStart(arg1 : string, arg2 : number) : number { + return 0; +} + +function TestCommands() { + var myCommands = new MyCommands(); + + var r: Backbone.Radio.Commands; + r = myCommands.comply('render', onRender); + myCommands.command('render'); + myCommands.command('start', 'pelle', 23); + + r = myCommands.complyOnce('start', onStart); + r = myCommands.complyOnce('start', onStart, myCommands); + + r = myCommands.comply({ + 'render': onRender, + 'start': onStart + }); + + r = myCommands.complyOnce({ + 'render': onRender, + 'start': onStart + }); + + myCommands.stopComplying('render'); + myCommands.stopComplying(null, onStart); + myCommands.stopComplying(null, null, myCommands); +} + +function TestRequests() { + var myRequests = new MyRequests(); + + var r: Backbone.Radio.Requests; + r = myRequests.reply('render', onRender); + + var result: any; + result = myRequests.request('render'); + result = myRequests.request('start', 'pelle', 23); + + r = myRequests.replyOnce('start', onStart); + r = myRequests.replyOnce('start', onStart, myRequests); + + r = myRequests.reply({ + 'render': onRender, + 'start': onStart + }); + + r = myRequests.replyOnce({ + 'render': onRender, + 'start': onStart + }); + + myRequests.stopReplying('render'); + myRequests.stopReplying(null, onStart); + myRequests.stopReplying(null, null, myRequests); +} + +function TestGlobalApiAndChannels() { + var authChannel = Backbone.Radio.channel('auth'); + + // Turn on debug mode + Backbone.Radio.DEBUG = true; + + // This will log a warning to the console if it goes unhandled + authChannel.command('show:view'); + + // Likewise, this will too, helping to prevent memory leaks + authChannel.stopReplying('startTime'); + + var radio: Backbone.Radio = Backbone.Radio.tuneIn('calendar'); + radio.tuneIn('calendar'); + radio = Backbone.Radio.tuneOut('calendar'); + + Backbone.Radio.log('channelName', 'eventName', 42, true); + + // Trigger 'some:event' on the settings channel + Backbone.Radio.trigger('settings', 'some:event'); + + authChannel.reset(); + + var channelName: string = authChannel.channelName; + + Backbone.Radio.command('auth', 'show:view'); + Backbone.Radio.comply('auth', 'show', onRender, authChannel); + + Backbone.Radio.reply('auth', 'authenticate', onStart); + Backbone.Radio.request('auth', 'authenticate', 'pelle', 42); +} \ No newline at end of file diff --git a/backbone-radio/backbone.radio.d.ts b/backbone-radio/backbone.radio.d.ts new file mode 100644 index 000000000..4f3392598 --- /dev/null +++ b/backbone-radio/backbone.radio.d.ts @@ -0,0 +1,92 @@ +// Type definitions for Backbone.Radio v0.8.3 +// Project: https://github.com/marionettejs/backbone.radio +// Definitions by: Peter Palotas +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module Backbone { + interface Radio { + tuneIn(channelName: string): Radio; + tuneOut(channelName: string): Radio; + log(channelName: string, eventName: string, ...args: any[]): void; + channel(channelName: string): Radio.Channel; + } + + module Radio { + var VERSION: string; + var DEBUG: boolean; + + function log(channelName: string, eventName: string, ...args: any[]); + function tuneIn(channelName: string): Radio; + function tuneOut(channelName: string): Radio; + function channel(channelName: string): Channel; + + // Proxy functions for Commands + function command(channelName: string, commandName: string, ...args: any[]): void; + function comply(channelName: string, commandName: string, callback: (...args: any[]) => void, context?: any): Commands; + function comply(channelName: string, commands: { [key: string]: (...args: any[]) => any }, context?: any): Commands; + function complyOnce(channelName: string, commandName: string, callback: (...args: any[]) => void, context?: any): Commands; + function complyOnce(channelName: string, commands: { [key: string]: (...args: any[]) => any }, context?: any): Commands; + function stopComplying(channelName: string, commandName?: string, callback?: (...args: any[]) => void, context?: any): Commands; + + // Proxy functions for Requests + function request(channelName: string, requestName: string, ...args: any[]): any; + function reply(channelName: string, requestName: string, callback: (...args: any[]) => any, context?: any): Requests; + function reply(channelName: string, commands: { [key: string]: (...args: any[]) => any }, context?: any): Requests; + function replyOnce(channelName: string, requestName: string, callback: (...args: any[]) => any, context?: any): Requests; + function replyOnce(channelName: string, commands: { [key: string]: (...args: any[]) => any }, context?: any): Requests; + function stopReplying(channelName: string, commandName?: string, callback?: (...args: any[]) => any, context?: any): Requests; + + // Proxy functions for Backbone.Events + function on(channelName: string, eventName: string, callback?: Function, context?: any): any; + function off(channelName: string, eventName?: string, callback?: Function, context?: any): any; + function trigger(channelName: string, eventName: string, ...args: any[]): any; + function bind(channelName: string, eventName: string, callback: Function, context?: any): any; + function unbind(channelName: string, eventName?: string, callback?: Function, context?: any): any; + + function once(channelName: string, events: string, callback: Function, context?: any): any; + function listenTo(channelName: string, object: any, events: string, callback: Function): any; + function listenToOnce(channelName: string, object: any, events: string, callback: Function): any; + function stopListening(channelName: string, object?: any, events?: string, callback?: Function): any; + + class Commands { + command(commandName: string, ...args: any[]): void; + comply(commandName: string, callback: (...args: any[]) => void, context?: any): Commands; + comply(commands: { [key: string]: (...args: any[]) => any }, context?: any): Commands; + complyOnce(commands: { [key: string]: (...args: any[]) => any }, context?: any): Commands; + complyOnce(commandName: string, callback: (...args: any[]) => void, context?: any): Commands; + stopComplying(commandName?: string, callback?: (...args: any[]) => void, context?: any): Commands; + } + + class Requests { + request(requestName: string, ...args: any[]): any; + reply(requestName: string, callback: (...args: any[]) => any, context?: any): Requests; + reply(commands: { [key: string]: (...args: any[]) => any }, context?: any): Requests; + replyOnce(requestName: string, callback: (...args: any[]) => any, context?: any): Requests; + replyOnce(commands: { [key: string]: (...args: any[]) => any }, context?: any): Requests; + stopReplying(commandName?: string, callback?: (...args: any[]) => any, context?: any): Requests; + } + + class Channel extends Backbone.Events implements Commands, Requests { + channelName: string; + reset(): Channel; + + // Radio.Commands + command(commandName: string, ...args: any[]): void; + comply(commandName: string, callback: (...args: any[]) => void, context?: any): Commands; + comply(commands: { [key: string]: (...args: any[]) => any }, context?: any): Commands; + complyOnce(commandName: string, callback: (...args: any[]) => void, context?: any): Commands; + complyOnce(commands: { [key: string]: (...args: any[]) => any }, context?: any): Commands; + stopComplying(commandName?: string, callback?: (...args: any[]) => void, context?: any): Commands; + + // Radio.Requests + request(requestName: string, ...args: any[]): any; + reply(requestName: string, callback: (...args: any[]) => any, context?: any): Requests; + reply(commands: { [key: string]: (...args: any[]) => any }, context?: any): Requests; + replyOnce(requestName: string, callback: (...args: any[]) => any, context?: any): Requests; + replyOnce(commands: { [key: string]: (...args: any[]) => any }, context?: any): Requests; + stopReplying(commandName?: string, callback?: (...args: any[]) => any, context?: any): Requests; + } + } +} From 4312a067dbb5c7d08707b810d0fbf766259e3db9 Mon Sep 17 00:00:00 2001 From: Peter Palotas Date: Tue, 23 Dec 2014 21:52:17 +0100 Subject: [PATCH 2/3] Created new type definitions for Backbone.Radio 0.8.3 (https://github.com/marionettejs/backbone.radio) (Fixed CI failure) --- backbone-radio/backbone.radio.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backbone-radio/backbone.radio.d.ts b/backbone-radio/backbone.radio.d.ts index 4f3392598..10947fb69 100644 --- a/backbone-radio/backbone.radio.d.ts +++ b/backbone-radio/backbone.radio.d.ts @@ -17,7 +17,7 @@ declare module Backbone { var VERSION: string; var DEBUG: boolean; - function log(channelName: string, eventName: string, ...args: any[]); + function log(channelName: string, eventName: string, ...args: any[]): void; function tuneIn(channelName: string): Radio; function tuneOut(channelName: string): Radio; function channel(channelName: string): Channel; From 1d9ca5e3be9f9797297e48e537d7432bbb84484f Mon Sep 17 00:00:00 2001 From: Peter Palotas Date: Thu, 25 Dec 2014 14:30:22 +0100 Subject: [PATCH 3/3] Renamed backbone-radio folder to backbone.radio --- {backbone-radio => backbone.radio}/backbone.radio-tests.ts | 0 {backbone-radio => backbone.radio}/backbone.radio.d.ts | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename {backbone-radio => backbone.radio}/backbone.radio-tests.ts (100%) rename {backbone-radio => backbone.radio}/backbone.radio.d.ts (100%) diff --git a/backbone-radio/backbone.radio-tests.ts b/backbone.radio/backbone.radio-tests.ts similarity index 100% rename from backbone-radio/backbone.radio-tests.ts rename to backbone.radio/backbone.radio-tests.ts diff --git a/backbone-radio/backbone.radio.d.ts b/backbone.radio/backbone.radio.d.ts similarity index 100% rename from backbone-radio/backbone.radio.d.ts rename to backbone.radio/backbone.radio.d.ts