Merge pull request #190 from smithkl42/master

Minor updates for Sammy
This commit is contained in:
Boris Yankov
2013-01-17 09:56:48 -08:00
6 changed files with 457 additions and 2 deletions
+3 -2
View File
@@ -4,7 +4,7 @@
// Definitions: https://github.com/borisyankov/DefinitelyTyped
/// <reference path="../jquery/jquery-1.9.d.ts"/>
/// <reference path="../jquery/jquery.d.ts"/>
module Sammy {
export function (): Sammy.Application;
@@ -101,7 +101,7 @@ module Sammy {
route(verb: string, path: string, callback: Function): Application;
route(verb: string, path: RegExp, callback: Function): Application;
run(start_url?: string): Application;
runRoute(verb: string, path: string, params: any, target: any): any;
runRoute(verb: string, path?: string, params?: any, target?: any): any;
setLocation(new_location: string): string;
setLocationProxy(new_proxy: DataLocationProxy): void;
swap(content: any, callback: Function): string;
@@ -136,6 +136,7 @@ module Sammy {
loadPartials(partials);
notFound(): any;
partial(location: string, data: any, callback: Function, partials): RenderContext;
params: Object;
redirect(...params: any[]): void;
render(location: string, data: any, callback: Function, partials): RenderContext;
renderEach(location: any, name?: string, data?: any, callback?: Function): RenderContext;
+32
View File
@@ -0,0 +1,32 @@
///<reference path="MediaStream.d.ts" />
var mediaStreamConstraints: MediaStreamConstraints = { audio: true, video: true };
var mediaTrackConstraintSet: MediaTrackConstraintSet = {};
var mediaTrackConstraintArray: MediaTrackConstraint[] = [];
var mediaTrackConstraints: MediaTrackConstraints = { mandatory: mediaTrackConstraintSet, optional: mediaTrackConstraintArray }
navigator.getUserMedia(mediaStreamConstraints,
stream => {
console.log('label:' + stream.label);
console.log('ended:' + stream.ended);
stream.onended = event => console.log('Stream ended');
var objectUrl = URL.createObjectURL(stream);
var wkObjectUrl = webkitURL.createObjectURL(stream);
},
error => {
console.log('Error message: ' + error.message);
console.log('Error name: ' + error.name);
});
navigator.webkitGetUserMedia(mediaStreamConstraints,
stream => {
console.log('label:' + stream.label);
console.log('ended:' + stream.ended);
stream.onended = event => console.log('Stream ended');
var objectUrl = URL.createObjectURL(stream);
var wkObjectUrl = webkitURL.createObjectURL(stream);
},
error => {
console.log('Error message: ' + error.message);
console.log('Error name: ' + error.name);
});
+136
View File
@@ -0,0 +1,136 @@
// Type definitions take from http://dev.w3.org/2011/webrtc/editor/getusermedia.html
interface MediaStreamConstraints {
audio: bool;
video: bool;
}
declare var MediaStreamConstraints: {
prototype: MediaStreamConstraints;
new (): MediaStreamConstraints;
}
interface MediaTrackConstraints {
mandatory: MediaTrackConstraintSet;
optional: MediaTrackConstraint[];
}
declare var MediaTrackConstraints: {
prototype: MediaTrackConstraints;
new (): MediaTrackConstraints;
}
// ks - Not defined in the source doc.
interface MediaTrackConstraintSet {
}
declare var MediaTrackConstraintSet: {
prototype: MediaTrackConstraintSet;
new (): MediaTrackConstraintSet;
}
// ks - Not defined in the source doc.
interface MediaTrackConstraint {
}
declare var MediaTrackConstraint: {
prototype: MediaTrackConstraint;
new (): MediaTrackConstraints;
}
interface Navigator {
getUserMedia(constraints: MediaStreamConstraints, successCallback: (stream: LocalMediaStream) => void , errorCallback: (error: Error) => void );
webkitGetUserMedia(constraints: MediaStreamConstraints, successCallback: (stream: LocalMediaStream) => void , errorCallback: (error: Error) => void );
}
interface EventHandler { (event: Event): void; }
interface NavigatorUserMediaSuccessCallback { (stream: LocalMediaStream): void; }
interface NavigatorUserMediaError {
PERMISSION_DENIED: number; // = 1;
code: number;
}
declare var NavigatorUserMediaError: {
prototype: NavigatorUserMediaError;
new (): NavigatorUserMediaError;
PERMISSION_DENIED: number; // = 1;
}
interface NavigatorUserMediaErrorCallback { (error: NavigatorUserMediaError): void; }
interface MediaStreamTrackList {
length: number;
item: MediaStreamTrack;
add(track: MediaStreamTrack): void;
remove(track: MediaStreamTrack): void;
onaddtrack: (event: Event) => void;
onremovetrack: (event: Event) => void;
}
declare var MediaStreamTrackList: {
prototype: MediaStreamTrackList;
new (): MediaStreamTrackList;
}
declare var webkitMediaStreamTrackList: {
prototype: MediaStreamTrackList;
new (): MediaStreamTrackList;
}
interface MediaStream {
label: string;
audioTracks: MediaStreamTrackList;
videoTracks: MediaStreamTrackList;
ended: bool;
onended: (event: Event) => void;
}
declare var MediaStream: {
prototype: MediaStream;
new (): MediaStream;
new (trackContainers: MediaStream[]): MediaStream;
new (trackContainers: MediaStreamTrackList[]): MediaStream;
new (trackContainers: MediaStreamTrack[]): MediaStream;
}
declare var webkitMediaStream: {
prototype: MediaStream;
new (): MediaStream;
new (trackContainers: MediaStream[]): MediaStream;
new (trackContainers: MediaStreamTrackList[]): MediaStream;
new (trackContainers: MediaStreamTrack[]): MediaStream;
}
interface LocalMediaStream extends MediaStream {
stop(): void;
}
interface MediaStreamTrack {
kind: string;
label: string;
enabled: bool;
LIVE: number; // = 0;
MUTED: number; // = 1;
ENDED: number; // = 2;
readyState: number;
onmute: (event: Event) => void;
onunmute: (event: Event) => void;
onended: (event: Event) => void;
}
var MediaStramTrack: {
prototype: MediaStreamTrack;
new (): MediaStreamTrack;
LIVE: number; // = 0;
MUTED: number; // = 1;
ENDED: number; // = 2;
}
interface URL {
createObjectURL(stream: MediaStream): string;
}
var URL: {
prototype: MediaStreamTrack;
new (): URL;
createObjectURL(stream: MediaStream): string;
}
interface WebkitURL extends URL {
}
var webkitURL: {
prototype: WebkitURL;
new (): URL;
createObjectURL(stream: MediaStream): string;
}
+51
View File
@@ -0,0 +1,51 @@
/// <reference path="MediaStream.d.ts" />
/// <reference path="RTCPeerConnection.d.ts" />
var config: RTCConfiguration = { iceServers: [{ url: "stun.l.google.com:19302" }] };
var constraints: MediaConstraints = { mandatory: { OfferToReceiveAudio: true, OfferToReceiveVideo: true } };
var peerConnection: RTCPeerConnection = new RTCPeerConnection(config, constraints);
navigator.getUserMedia({ audio: true, video: true },
stream => {
peerConnection.addStream(stream);
},
error => {
console.log('Error message: ' + error.message);
console.log('Error name: ' + error.name);
});
peerConnection.onaddstream = ev => console.log(ev.type);
peerConnection.ondatachannel = ev => console.log(ev.type);
peerConnection.onicechange = ev => console.log(ev.type);
peerConnection.onnegotiationneeded = ev => console.log(ev.type);
peerConnection.onopen = ev => console.log(ev.type);
peerConnection.onicecandidate = ev => console.log(ev.type);
peerConnection.onremovestream = ev => console.log(ev.type);
peerConnection.onstatechange = ev => console.log(ev.type);
peerConnection.createOffer(
offer => {
peerConnection.setLocalDescription(offer,
() => console.log("set local description"),
error => console.log("Error setting local description: " + error));
},
error => console.log("Error creating offer: " + error));
var type: RTCSdpType = RTCSdpType.offer;
var offer: RTCSessionDescriptionInit = { type: type, sdp: "some sdp" };
var sessionDescription = new RTCSessionDescription(offer);
peerConnection.setRemoteDescription(sessionDescription, () => {
peerConnection.createAnswer(
answer => {
peerConnection.setLocalDescription(answer,
() => console.log('Set local description'),
error => console.log("Error setting local description from created answer: " + error + "; answer.sdp=" + answer.sdp));
},
error => console.log("Error creating answer: " + error));
},
error => console.log('Error setting remote description: ' + error + "; offer.sdp=" + offer.sdp));
var wkPeerConnection: webkitRTCPeerConnection = new webkitRTCPeerConnection(config, constraints);
+221
View File
@@ -0,0 +1,221 @@
/// <reference path="MediaStream.d.ts" />
// These are TypeScript definitions to support static typing in TypeScript when interacting with WebRtc.
// Definitions taken from http://dev.w3.org/2011/webrtc/editor/webrtc.html
interface RTCConfiguration {
iceServers: RTCIceServer[];
}
var RTCConfiguration: {
prototype: RTCConfiguration;
new (): RTCConfiguration;
}
interface RTCIceServer {
url: string;
credential?: string;
}
var RTCIceServer: {
prototype: RTCIceServer;
new (): RTCIceServer;
}
interface webkitRTCPeerConnection extends RTCPeerConnection {
}
var webkitRTCPeerConnection: {
prototype: webkitRTCPeerConnection;
new (settings: RTCPeerConnectionConfig, constraints?:MediaConstraints): webkitRTCPeerConnection;
}
interface IceState {
}
var IceState: {
prototype: IceState;
new (): IceState;
}
// ks 12/20/12 - There's more here that doesn't seem to be documented very well yet.
interface MediaConstraints {
mandatory: MediaOfferConstraints;
}
interface MediaOfferConstraints {
OfferToReceiveAudio: bool;
OfferToReceiveVideo: bool;
}
interface RTCSessionDescription {
type?: RTCSdpType;
sdp?: string;
}
var RTCSessionDescription: {
prototype: RTCSessionDescription;
new (descriptionInitDict?: RTCSessionDescriptionInit): RTCSessionDescription;
}
interface RTCSessionDescriptionInit {
type: RTCSdpType;
sdp: string;
}
var RTCSessionDescriptionInit: {
prototype: RTCSessionDescriptionInit;
new (): RTCSessionDescriptionInit;
}
interface SdpType {
}
interface RTCPeerState {
}
interface RTCDataChannelInit {
reliable: bool;
}
enum RTCSdpType {
offer,
pranswer,
answer
}
enum RTCDataChannelState {
connecting,
open,
closing,
closed
}
interface RTCDataChannel extends EventTarget {
label: string;
reliable: bool;
readyState: RTCDataChannelState;
bufferedAmount: number;
onopen: (event: Event)=> void;
onerror: (event: Event)=> void;
onclose: (event: Event)=> void;
close(): void;
onmessage: (event: Event)=> void;
binaryType: string;
send(data: string);
send(data: ArrayBuffer);
send(data: Blob);
}
declare var RTCDataChannel: {
prototype: RTCDataChannel;
new (): RTCDataChannel;
}
interface RTCDataChannelEvent extends Event {
constructor (eventInitDict: RTCDataChannelEventInit);
channel: RTCDataChannel;
}
var RTCDataChannelEvent: {
prototype: RTCDataChannelEvent;
new (eventInitDict: RTCDataChannelEventInit);
}
interface RTCIceCandidateEvent extends Event{
candidate: RTCIceCandidate;
}
interface RTCMediaStreamEvent extends Event {
stream: MediaStream;
}
interface EventInit {
}
interface RTCDataChannelEventInit extends EventInit {
channel: RTCDataChannel;
}
interface RTCVoidCallback {
(): void;
}
interface RTCSessionDescriptionCallback {
(sdp: RTCSessionDescription): void;
}
interface RTCPeerConnectionErrorCallback {
(errorInformation: string): void;
}
// This should be an enum
interface RTCGatheringState {
string;
}
// This should be an enum
interface RTCIceState {
string;
}
interface RTCPeerConnection {
createOffer(successCallback: RTCSessionDescriptionCallback, failureCallback?: RTCPeerConnectionErrorCallback, constraints?: MediaConstraints): void;
createAnswer(successCallback: RTCSessionDescriptionCallback, failureCallback?: RTCPeerConnectionErrorCallback, constraints?: MediaConstraints): void;
setLocalDescription(description: RTCSessionDescription, successCallback?: RTCVoidCallback, failureCallback?: RTCPeerConnectionErrorCallback): void;
localDescription: RTCSessionDescription;
setRemoteDescription(description: RTCSessionDescription, successCallback?: RTCVoidCallback, failureCallback?: RTCPeerConnectionErrorCallback): void;
remoteDescription: RTCSessionDescription;
readyState: RTCPeerState;
updateIce(configuration?: RTCConfiguration, constraints?: MediaConstraints): void;
addIceCandidate(candidate: RTCIceCandidate): void;
iceGatheringState: RTCGatheringState;
iceState: RTCIceState;
localStreams: MediaStream[];
remoteStreams: MediaStream[];
createDataChannel(label?: string, dataChannelDict?: RTCDataChannelInit): RTCDataChannel;
ondatachannel: (event: Event)=> void;
addStream(stream: MediaStream, constraints?: MediaConstraints): void;
removeStream(stream: MediaStream): void;
close(): void;
onnegotiationneeded: (event: Event)=> void;
onconnecting: (event: Event)=> void;
onopen: (event: Event)=> void;
onaddstream: (event: RTCMediaStreamEvent)=> void;
onremovestream: (event: RTCMediaStreamEvent)=> void;
onstatechange: (event: Event)=> void;
onicechange: (event: Event)=> void;
onicecandidate: (event: RTCIceCandidateEvent)=> void;
onidentityresult: (event: Event)=> void;
}
var RTCPeerConnection: {
prototype: RTCPeerConnection;
new (configuration: RTCConfiguration, constraints?: MediaConstraints): RTCPeerConnection;
}
interface RTCIceCandidate {
candidate?: string;
sdpMid?: string;
sdpMLineIndex?: number;
}
var RTCIceCandidate: {
prototype: RTCIceCandidate;
new (candidateInitDict?: RTCIceCandidate);
}
interface RTCIceCandidateInit {
candidate: string;
sdpMid: string;
sdpMLineIndex: number;
}
var RTCIceCandidateInit:{
prototype: RTCIceCandidateInit;
new (): RTCIceCandidateInit;
}
interface PeerConnectionIceEvent {
peer: RTCPeerConnection;
candidate: RTCIceCandidate;
}
var PeerConnectionIceEvent: {
prototype: PeerConnectionIceEvent;
new (): PeerConnectionIceEvent;
}
interface RTCPeerConnectionConfig {
iceServers: RTCIceServer[];
}
var RTCPeerConnectionConfig: {
prototype: RTCPeerConnectionConfig;
new (): RTCPeerConnectionConfig;
}
+14
View File
@@ -0,0 +1,14 @@
# WebRTC Definition Notes
## The WebRTC specification
The WebRTC specification is currently a work in progress, but it has been implemented at a basic level in recent versions of Chrome, Opera and (to a lesser extent) Firefox.
The latest version of the specification can be found at http://dev.w3.org/2011/webrtc/editor/webrtc.html.
This particular set of definitions has been annotated with the vendor-specific prefixes for Chrome (e.g., `webitkit`),
but anyone who wants, feel free to add the Mozilla-specific prefixes.
### Adding the reference to your project
/// <reference path="MediaStream.d.ts" />
/// <reference path="RTCPeerConnection.d.ts" />