{"action":"created","comment":{"url":"https://api.github.com/repos/ably/ably-js/pulls/comments/92015264","pull_request_review_id":12524516,"id":92015264,"diff_hunk":"@@ -0,0 +1,457 @@\n+//declare module Ably {\n+\n+  namespace ChannelState {\n+    export type INITIALIZED = 'initialized';\n+    export type ATTACHING = 'attaching';\n+    export type ATTACHED = \"attached\";\n+    export type DETACHING = \"detaching\";\n+    export type DETACHED = \"detached\";\n+    export type SUSPENDED = \"suspended\";\n+    export type FAILED = \"failed\";\n+  }\n+  type ChannelState = ChannelState.FAILED | ChannelState.INITIALIZED | ChannelState.SUSPENDED | ChannelState.ATTACHED | ChannelState.ATTACHING | ChannelState.DETACHED | ChannelState.DETACHING;\n+\n+  namespace ConnectionState {\n+    export type INITIALIZED = \"initialized\";\n+    export type CONNECTING = \"connecting\";\n+    export type CONNECTED = \"connected\";\n+    export type DISCONNECTED = \"disconnected\";\n+    export type SUSPENDED = \"suspended\";\n+    export type CLOSING = \"closing\";\n+    export type CLOSED = \"closed\";\n+    export type FAILED = \"failed\";\n+  }\n+  type ConnectionState = ConnectionState.INITIALIZED | ConnectionState.CONNECTED | ConnectionState.CONNECTING | ConnectionState.DISCONNECTED | ConnectionState.SUSPENDED | ConnectionState.CLOSED | ConnectionState.CLOSING | ConnectionState.FAILED;\n+\n+  namespace ConnectionEvent {\n+    export type INITIALIZED = \"initialized\";\n+    export type CONNECTING = \"connecting\";\n+    export type CONNECTED = \"connected\";\n+    export type DISCONNECTED = \"disconnected\";\n+    export type SUSPENDED = \"suspended\";\n+    export type CLOSING = \"closing\";\n+    export type CLOSED = \"closed\";\n+    export type FAILED = \"failed\";\n+    export type UPDATE = \"update\";\n+  }\n+  type ConnectionEvent = ConnectionEvent.INITIALIZED | ConnectionEvent.CONNECTED | ConnectionEvent.CONNECTING | ConnectionEvent.DISCONNECTED | ConnectionEvent.SUSPENDED | ConnectionEvent.CLOSED | ConnectionEvent.CLOSING | ConnectionEvent.FAILED | ConnectionEvent.UPDATE;\n+\n+  namespace PresenceAction {\n+    export type ABSENT = \"absent\";\n+    export type PRESENT = \"present\";\n+    export type ENTER = \"enter\";\n+    export type LEAVE = \"leave\";\n+    export type UPDATE = \"update\";\n+  }\n+  type PresenceAction = PresenceAction.ABSENT | PresenceAction.PRESENT | PresenceAction.ENTER | PresenceAction.LEAVE | PresenceAction.UPDATE;\n+\n+  namespace StatsIntervalGranularity {\n+    export type MINUTE = \"minute\";\n+    export type HOUR = \"hour\";\n+    export type DAY = \"day\";\n+    export type MONTH = \"month\";\n+  }\n+  type StatsIntervalGranularity = StatsIntervalGranularity.MINUTE | StatsIntervalGranularity.HOUR | StatsIntervalGranularity.DAY | StatsIntervalGranularity.MONTH;\n+\n+  namespace ProtocolMessageAction {\n+    export type HEARTBEAT = \"heartbeat\";\n+    export type ACK = \"ack\";\n+    export type NACK = \"nack\";\n+    export type CONNECT = \"connect\";\n+    export type CONNECTED = \"connected\";\n+    export type DISCONNECT = \"disconnect\";\n+    export type DISCONNECTED = \"disconnected\";\n+    export type CLOSE = \"close\";\n+    export type CLOSED = \"closed\";\n+    export type ERROR = \"error\";\n+    export type ATTACH = \"attach\";\n+    export type ATTACHED = \"attached\";\n+    export type DETACH = \"detach\";\n+    export type DETACHED = \"detached\";\n+    export type PRESENCE = \"presence\";\n+    export type MESSAGE = \"message\";\n+    export type SYNC = \"sync\";\n+    export type AUTH = \"auth\";\n+  }\n+  type ProtocolMessageAction = ProtocolMessageAction.ACK | ProtocolMessageAction.ATTACH | ProtocolMessageAction.ATTACHED | ProtocolMessageAction.AUTH | ProtocolMessageAction.CLOSE | ProtocolMessageAction.CLOSED | ProtocolMessageAction.CONNECT | ProtocolMessageAction.CONNECTED | ProtocolMessageAction.DETACH | ProtocolMessageAction.DETACHED | ProtocolMessageAction.DISCONNECT | ProtocolMessageAction.DISCONNECTED | ProtocolMessageAction.ERROR | ProtocolMessageAction.HEARTBEAT | ProtocolMessageAction.MESSAGE | ProtocolMessageAction.NACK | ProtocolMessageAction.PRESENCE | ProtocolMessageAction.SYNC;\n+\n+\n+  // Interfaces\n+  interface AuthDetails {\n+    accessToken: String;\n+  }\n+\n+  interface ClientOptions extends AuthOptions {\n+    autoConnect?: boolean;\n+    clientId?: String;\n+    defaultTokenParams?: TokenParams;\n+    echoMessages?: boolean;\n+    environment?: String;\n+    logHandler?: any;\n+    logLevel?: any;\n+    port?: number;\n+    queueMessages?: boolean;\n+    restHost?: String;\n+    realtimeHost?: String;\n+    fallbackHosts?: Array<String>\n+    recover?: String\n+    tls?: boolean;\n+    tlsPort?: number;\n+    useBinaryProtocol?: boolean;\n+    disconnectedRetryTimeout?: number;\n+    suspendedRetryTimeout?: number;\n+    channelRetryTimeout?: number;\n+    httpOpenTimeout?: number;\n+    httpRequestTimeout?: number;\n+    httpMaxRetryCount?: number;\n+    httpMaxRetryDuration?: number;\n+  }\n+\n+  interface AuthOptions {\n+    authCallback?: (data: String | TokenDetails | TokenRequest) => void;\n+    authHeaders?: Array<any>;\n+    authMethod?: String;\n+    authParams?: Array<any>;\n+    authUrl?: String;\n+    key?: String;\n+    queryTime?: boolean;\n+    token?: String | TokenDetails;\n+    tokenDetails?: TokenDetails;\n+    useTokenAuth?: boolean;\n+  }\n+\n+  interface TokenParams {\n+    capability: String;\n+    clientId?: String;\n+    nonce?: String;\n+    timestamp: Number;   // Time?\n+    ttl: Number;\n+  }\n+\n+  interface CipherParams {\n+    algorithm: String;\n+    key: any;\n+    keyLength: number;\n+    mode: String;\n+  }\n+\n+  interface ErrorInfo {\n+    code: number;\n+    message: String;\n+    statusCode: number;\n+  }\n+\n+  interface ConnectionDetails {\n+    clientId: String;\n+    connectionKey: String;\n+    connectionStateTtl: number;\n+    maxFrameSize: number;\n+    maxInboundRate: number;\n+    maxMessageSize: number;\n+    serverId: String;\n+    maxIdleInterval: number;\n+  }\n+\n+  interface StatsMessageTypes {\n+    all: number,\n+    messages: number,\n+    presence: number;\n+  }\n+\n+  interface StatsRequestCount {\n+    failed: number,\n+    refused: number,\n+    succeeded: number\n+  }\n+\n+  interface StatsResourceCount {\n+    mean: number,\n+    min: number,\n+    opened: number,\n+    peak: number,\n+    refused: number\n+  }\n+\n+  interface StatsConnectionTypes {\n+    all: number,\n+    plain: number,\n+    tls: number\n+  }\n+\n+  interface StatsMessageTraffic {\n+    all: number,\n+    realtime: number,\n+    rest: number,\n+    webhook: number\n+  }\n+\n+  // Listeners\n+  type ListenerFn = (...args: Array<any>) => void;\n+\n+\n+  // Internal Classes\n+  declare class EventEmitter {\n+    on: (eventOrCallback: String | ListenerFn, callback?: ListenerFn) => void;\n+\n+    once: (eventOrCallback: String | ListenerFn, callback?: ListenerFn) => void;\n+\n+    off: (eventOrCallback?: String | ListenerFn, callback?: ListenerFn) => void;\n+\n+    emit: (Event: String, ...args: Array<any>) => void;\n+  }\n+\n+  // Classes\n+  export declare class Auth {\n+    clientId: String;\n+    authorize: (tokenParams?: TokenParams, authOptions?: AuthOptions) => TokenDetails;\n+    createTokenRequest: (tokenParams?: TokenParams, authOptions?: AuthOptions) => TokenRequest;\n+    requestToken: (TokenParams?: TokenParams, authOptions?: AuthOptions) => TokenDetails;\n+  }\n+\n+  export declare class TokenDetails {\n+    fromJson: (JsonData: string) => TokenDetails;\n+    capability: String;\n+    clientId: String;\n+    expires: number; // Time\n+    issued: number; // Time\n+    token: String;\n+  }\n+\n+  export declare class TokenRequest {\n+    fromJson: (JsonData: String) => TokenRequest;\n+    capability: String;\n+    clientId: String;\n+    keyName: String;\n+    mac: String;\n+    nonce: String;\n+    timestamp: number; // Time\n+    ttl: number;\n+  }\n+\n+  export declare class ChannelOptions {\n+    withCipherKey: (key: any) => ChannelOptions;\n+    cipher: (params: CipherParams) => void;\n+  }\n+\n+  export declare class RestPresence {\n+    get: (limit: number, clientId?: String, connectionId?: String) => PaginatedResult;\n+\n+    history: (start: number, end: number, direction: String, limit: number) => PaginatedResult;\n+  }\n+\n+  export declare class RealtimePresence {\n+    syncComplete: boolean;\n+\n+    get: (waitForSync: boolean, clientId?: String, connectionId?: String) => PresenceMessage;\n+\n+    history: (start: number, end: number, direction: string, limit: number, untilAttach: boolean) => PaginatedResult;\n+\n+    subscribe: (presense: PresenceMessage | PresenceAction, presenceMessage?: PresenceMessage) => void;\n+\n+    unsubscribe: (presense?: PresenceMessage | PresenceAction, presenceMessage?: PresenceMessage) => void;\n+\n+    enter: (Data: any) => void;\n+\n+    update: (Data: any) => void;\n+\n+    leave: (Data: any) => void;\n+\n+    enterClient: (clientId: String, Data: any) => void;\n+\n+    updateClient: (clientId: String, Data: any) => void;\n+\n+    leaveClient: (clientId: String, Data: any) => void;\n+  }\n+\n+  type MessageFn = (msg: Message) => void;\n+\n+  export declare class RestChannel {\n+    name: String;\n+    presence: RestPresence;\n+    history: (start: number, // TIME\n+              end: number, // time\n+              direction: String,\n+              limit: number) => PaginatedResult;\n+\n+    publish: (name?: Array<String> | String, data?: any, clientId?: String, extras?: any) => any;\n+  }\n+\n+  export declare class RealtimeChannel extends EventEmitter {\n+    name: String;\n+    errorReason: ErrorInfo;\n+    state: ChannelState;\n+    presence: RealtimePresence;\n+\n+    attach: () => any;\n+\n+    detach:() => any;\n+\n+    history: (start: number,\n+            end: number,\n+            direction: String,\n+            limit: number,\n+            untilAttach: boolean) => PaginatedResult;\n+\n+    subscribe: (Msg: String | Message | MessageFn, ExtraMsg?: Message) => any;\n+\n+    unsubscribe: (Msg?: String | Message | MessageFn, ExtraMsg?: Message) => any;\n+\n+    publish: (name?: Array<String> | String, data?: any, clientId?: String, extras?: any) => any;\n+\n+  }\n+\n+  export declare class Channels {\n+    exists: (name: String) => boolean;\n+\n+    get: (name: String, channelOptions?: ChannelOptions) => RealtimeChannel;\n+    iterate: () => RealtimeChannel;\n+\n+    release: (name: String) => void;\n+  }\n+\n+  export declare class Message {\n+    constructor(name?: String, data?: any, clientId?: String);\n+\n+    fromEncoded: (JsonObject: String, channelOptions: ChannelOptions) => Message;\n+\n+    fromEncodedArray: (JsonArray: String, channelOptions: ChannelOptions) => Message;\n+\n+    clientId: String;\n+    connectionId: String;\n+    data: any;\n+    encoding: String;\n+    extras: String;\n+    id: String;\n+    name: String;\n+    timestamp: number; // Time\n+  }\n+\n+  export declare class PresenceMessage {\n+    fromEncoded: (JsonObject: any, channelOptions?: ChannelOptions) => PresenceMessage;\n+\n+    fromEncodedArray: (JsonArray: Array<any>, channelOptions?: ChannelOptions) => Array<PresenceMessage>;\n+\n+    action: PresenceAction;\n+    clientId: String;\n+    connectionId: String;\n+    data: any;\n+    encoding: String;\n+    id: String;\n+    timestamp: number; // Time\n+    memberKey: () => String;\n+  }\n+\n+  export declare class ProtocolMessage {\n+    action: ProtocolMessageAction;\n+    auth: AuthDetails;\n+    channel: String;\n+    channelSerial: String;\n+    connectionDetails: ConnectionDetails;\n+    connectionId: String;\n+    connectionKey: String;\n+    connectionSerial: number;\n+    count: number;\n+    error: ErrorInfo;\n+    flags: String;\n+    id: String;\n+    messages: Array<Message>;\n+    msgSerial: number;\n+    presence: Array<PresenceMessage>\n+    timestamp: number; // Time\n+  }\n+\n+  export declare class Rest {\n+    constructor(options: String | ClientOptions);\n+    auth: Auth;\n+    channels: Channels;\n+    request: (method: string, path: string, parmas?: any, body?: Array<any> | any, headers?: any) => HttpPaginatedResponse;\n+    stats: ( start: number, // Time\n+           end: number, // Time\n+           direction: String,\n+           limit: number,\n+           unit: String) => PaginatedResult;\n+    time: () => number; // time\n+  }\n+\n+  export declare class Realtime {\n+    constructor(options: String | ClientOptions);\n+\n+    auth: Auth;\n+    channels: Channels;\n+    clientId: String;\n+    connection: Connection;\n+\n+    request: (method: string, path: string, parmas?: any, body?: Array<any> | any, headers?: any) => HttpPaginatedResponse;\n+\n+    stats: (start: number, // Time\n+          end: number, // Time\n+          direction: String,\n+          limit: number,\n+          unit: String) => PaginatedResult;\n+\n+    close: () => void;\n+\n+    connect: () => void;\n+\n+    time: () => number;\n+\n+  }\n+\n+  export declare class Connection extends EventEmitter {\n+    errorReason: ErrorInfo;\n+    id: String;\n+    key: String;\n+    recoveryKey: String;\n+    serial: number;\n+    state: ConnectionState;\n+\n+    close: () => void;\n+\n+    connect: () => void;\n+\n+    ping: () => void;\n+  }\n+\n+  export declare class Stats {\n+    all: StatsMessageTypes;\n+    apiRequests: StatsRequestCount;\n+    channels: StatsResourceCount;\n+    connections: StatsConnectionTypes;\n+    inbound: StatsMessageTraffic;\n+    intervalGranularity: StatsIntervalGranularity;\n+    intervalId: String;\n+    intervalTime: number; // type\n+    outbound: StatsMessageTraffic;\n+    persisted: StatsMessageTypes;\n+    tokenRequests: StatsRequestCount;\n+  }\n+\n+  export declare class ConnectionStateChange {\n+  current: ConnectionState;\n+  previous: ConnectionState;\n+  reason?: ErrorInfo;\n+  retryIn: number;\n+}\n+\n+  export declare class PaginatedResult {\n+    items: Array<any>;\n+\n+    first: () => any;","path":"ably.ts.d","position":439,"original_position":439,"commit_id":"370eb579734323fba18b323b56de49bb2fc0d7b5","original_commit_id":"370eb579734323fba18b323b56de49bb2fc0d7b5","user":{"login":"NathanaelA","id":850871,"avatar_url":"https://avatars.githubusercontent.com/u/850871?v=3","gravatar_id":"","url":"https://api.github.com/users/NathanaelA","html_url":"https://github.com/NathanaelA","followers_url":"https://api.github.com/users/NathanaelA/followers","following_url":"https://api.github.com/users/NathanaelA/following{/other_user}","gists_url":"https://api.github.com/users/NathanaelA/gists{/gist_id}","starred_url":"https://api.github.com/users/NathanaelA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NathanaelA/subscriptions","organizations_url":"https://api.github.com/users/NathanaelA/orgs","repos_url":"https://api.github.com/users/NathanaelA/repos","events_url":"https://api.github.com/users/NathanaelA/events{/privacy}","received_events_url":"https://api.github.com/users/NathanaelA/received_events","type":"User","site_admin":false},"body":"Agreed, I misread the IDL.  I've fixed in the next push.","created_at":"2016-12-12T19:02:03Z","updated_at":"2016-12-12T19:02:03Z","html_url":"https://github.com/ably/ably-js/pull/359#discussion_r92015264","pull_request_url":"https://api.github.com/repos/ably/ably-js/pulls/359","_links":{"self":{"href":"https://api.github.com/repos/ably/ably-js/pulls/comments/92015264"},"html":{"href":"https://github.com/ably/ably-js/pull/359#discussion_r92015264"},"pull_request":{"href":"https://api.github.com/repos/ably/ably-js/pulls/359"}}},"pull_request":{"url":"https://api.github.com/repos/ably/ably-js/pulls/359","id":97600057,"html_url":"https://github.com/ably/ably-js/pull/359","diff_url":"https://github.com/ably/ably-js/pull/359.diff","patch_url":"https://github.com/ably/ably-js/pull/359.patch","issue_url":"https://api.github.com/repos/ably/ably-js/issues/359","number":359,"state":"open","locked":false,"title":"Add TypeScript typings support","user":{"login":"NathanaelA","id":850871,"avatar_url":"https://avatars.githubusercontent.com/u/850871?v=3","gravatar_id":"","url":"https://api.github.com/users/NathanaelA","html_url":"https://github.com/NathanaelA","followers_url":"https://api.github.com/users/NathanaelA/followers","following_url":"https://api.github.com/users/NathanaelA/following{/other_user}","gists_url":"https://api.github.com/users/NathanaelA/gists{/gist_id}","starred_url":"https://api.github.com/users/NathanaelA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NathanaelA/subscriptions","organizations_url":"https://api.github.com/users/NathanaelA/orgs","repos_url":"https://api.github.com/users/NathanaelA/repos","events_url":"https://api.github.com/users/NathanaelA/events{/privacy}","received_events_url":"https://api.github.com/users/NathanaelA/received_events","type":"User","site_admin":false},"body":"Added Typings file; ably.ts.d, updated package.json to point to it and updated docs on how to use it.","created_at":"2016-12-12T17:46:09Z","updated_at":"2016-12-12T19:02:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"85daa1153eefffa3cbe5de0e491155e8c08732fd","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/ably/ably-js/pulls/359/commits","review_comments_url":"https://api.github.com/repos/ably/ably-js/pulls/359/comments","review_comment_url":"https://api.github.com/repos/ably/ably-js/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ably/ably-js/issues/359/comments","statuses_url":"https://api.github.com/repos/ably/ably-js/statuses/370eb579734323fba18b323b56de49bb2fc0d7b5","head":{"label":"NathanaelA:0-9-typings","ref":"0-9-typings","sha":"370eb579734323fba18b323b56de49bb2fc0d7b5","user":{"login":"NathanaelA","id":850871,"avatar_url":"https://avatars.githubusercontent.com/u/850871?v=3","gravatar_id":"","url":"https://api.github.com/users/NathanaelA","html_url":"https://github.com/NathanaelA","followers_url":"https://api.github.com/users/NathanaelA/followers","following_url":"https://api.github.com/users/NathanaelA/following{/other_user}","gists_url":"https://api.github.com/users/NathanaelA/gists{/gist_id}","starred_url":"https://api.github.com/users/NathanaelA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NathanaelA/subscriptions","organizations_url":"https://api.github.com/users/NathanaelA/orgs","repos_url":"https://api.github.com/users/NathanaelA/repos","events_url":"https://api.github.com/users/NathanaelA/events{/privacy}","received_events_url":"https://api.github.com/users/NathanaelA/received_events","type":"User","site_admin":false},"repo":{"id":72975523,"name":"ably-js","full_name":"NathanaelA/ably-js","owner":{"login":"NathanaelA","id":850871,"avatar_url":"https://avatars.githubusercontent.com/u/850871?v=3","gravatar_id":"","url":"https://api.github.com/users/NathanaelA","html_url":"https://github.com/NathanaelA","followers_url":"https://api.github.com/users/NathanaelA/followers","following_url":"https://api.github.com/users/NathanaelA/following{/other_user}","gists_url":"https://api.github.com/users/NathanaelA/gists{/gist_id}","starred_url":"https://api.github.com/users/NathanaelA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NathanaelA/subscriptions","organizations_url":"https://api.github.com/users/NathanaelA/orgs","repos_url":"https://api.github.com/users/NathanaelA/repos","events_url":"https://api.github.com/users/NathanaelA/events{/privacy}","received_events_url":"https://api.github.com/users/NathanaelA/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/NathanaelA/ably-js","description":"Ably Realtime Messaging Javascript library to connect from your browser or Node.js","fork":true,"url":"https://api.github.com/repos/NathanaelA/ably-js","forks_url":"https://api.github.com/repos/NathanaelA/ably-js/forks","keys_url":"https://api.github.com/repos/NathanaelA/ably-js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NathanaelA/ably-js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NathanaelA/ably-js/teams","hooks_url":"https://api.github.com/repos/NathanaelA/ably-js/hooks","issue_events_url":"https://api.github.com/repos/NathanaelA/ably-js/issues/events{/number}","events_url":"https://api.github.com/repos/NathanaelA/ably-js/events","assignees_url":"https://api.github.com/repos/NathanaelA/ably-js/assignees{/user}","branches_url":"https://api.github.com/repos/NathanaelA/ably-js/branches{/branch}","tags_url":"https://api.github.com/repos/NathanaelA/ably-js/tags","blobs_url":"https://api.github.com/repos/NathanaelA/ably-js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NathanaelA/ably-js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NathanaelA/ably-js/git/refs{/sha}","trees_url":"https://api.github.com/repos/NathanaelA/ably-js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NathanaelA/ably-js/statuses/{sha}","languages_url":"https://api.github.com/repos/NathanaelA/ably-js/languages","stargazers_url":"https://api.github.com/repos/NathanaelA/ably-js/stargazers","contributors_url":"https://api.github.com/repos/NathanaelA/ably-js/contributors","subscribers_url":"https://api.github.com/repos/NathanaelA/ably-js/subscribers","subscription_url":"https://api.github.com/repos/NathanaelA/ably-js/subscription","commits_url":"https://api.github.com/repos/NathanaelA/ably-js/commits{/sha}","git_commits_url":"https://api.github.com/repos/NathanaelA/ably-js/git/commits{/sha}","comments_url":"https://api.github.com/repos/NathanaelA/ably-js/comments{/number}","issue_comment_url":"https://api.github.com/repos/NathanaelA/ably-js/issues/comments{/number}","contents_url":"https://api.github.com/repos/NathanaelA/ably-js/contents/{+path}","compare_url":"https://api.github.com/repos/NathanaelA/ably-js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NathanaelA/ably-js/merges","archive_url":"https://api.github.com/repos/NathanaelA/ably-js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NathanaelA/ably-js/downloads","issues_url":"https://api.github.com/repos/NathanaelA/ably-js/issues{/number}","pulls_url":"https://api.github.com/repos/NathanaelA/ably-js/pulls{/number}","milestones_url":"https://api.github.com/repos/NathanaelA/ably-js/milestones{/number}","notifications_url":"https://api.github.com/repos/NathanaelA/ably-js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NathanaelA/ably-js/labels{/name}","releases_url":"https://api.github.com/repos/NathanaelA/ably-js/releases{/id}","deployments_url":"https://api.github.com/repos/NathanaelA/ably-js/deployments","created_at":"2016-11-06T07:07:29Z","updated_at":"2016-11-06T07:07:31Z","pushed_at":"2016-12-12T17:44:48Z","git_url":"git://github.com/NathanaelA/ably-js.git","ssh_url":"git@github.com:NathanaelA/ably-js.git","clone_url":"https://github.com/NathanaelA/ably-js.git","svn_url":"https://github.com/NathanaelA/ably-js","homepage":null,"size":14491,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"ably:0-9-spec","ref":"0-9-spec","sha":"ebb290c603bec199174b69efac8254832e17923f","user":{"login":"ably","id":1859245,"avatar_url":"https://avatars.githubusercontent.com/u/1859245?v=3","gravatar_id":"","url":"https://api.github.com/users/ably","html_url":"https://github.com/ably","followers_url":"https://api.github.com/users/ably/followers","following_url":"https://api.github.com/users/ably/following{/other_user}","gists_url":"https://api.github.com/users/ably/gists{/gist_id}","starred_url":"https://api.github.com/users/ably/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ably/subscriptions","organizations_url":"https://api.github.com/users/ably/orgs","repos_url":"https://api.github.com/users/ably/repos","events_url":"https://api.github.com/users/ably/events{/privacy}","received_events_url":"https://api.github.com/users/ably/received_events","type":"Organization","site_admin":false},"repo":{"id":6676523,"name":"ably-js","full_name":"ably/ably-js","owner":{"login":"ably","id":1859245,"avatar_url":"https://avatars.githubusercontent.com/u/1859245?v=3","gravatar_id":"","url":"https://api.github.com/users/ably","html_url":"https://github.com/ably","followers_url":"https://api.github.com/users/ably/followers","following_url":"https://api.github.com/users/ably/following{/other_user}","gists_url":"https://api.github.com/users/ably/gists{/gist_id}","starred_url":"https://api.github.com/users/ably/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ably/subscriptions","organizations_url":"https://api.github.com/users/ably/orgs","repos_url":"https://api.github.com/users/ably/repos","events_url":"https://api.github.com/users/ably/events{/privacy}","received_events_url":"https://api.github.com/users/ably/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ably/ably-js","description":"Ably Realtime Messaging Javascript library to connect from your browser or Node.js","fork":false,"url":"https://api.github.com/repos/ably/ably-js","forks_url":"https://api.github.com/repos/ably/ably-js/forks","keys_url":"https://api.github.com/repos/ably/ably-js/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ably/ably-js/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ably/ably-js/teams","hooks_url":"https://api.github.com/repos/ably/ably-js/hooks","issue_events_url":"https://api.github.com/repos/ably/ably-js/issues/events{/number}","events_url":"https://api.github.com/repos/ably/ably-js/events","assignees_url":"https://api.github.com/repos/ably/ably-js/assignees{/user}","branches_url":"https://api.github.com/repos/ably/ably-js/branches{/branch}","tags_url":"https://api.github.com/repos/ably/ably-js/tags","blobs_url":"https://api.github.com/repos/ably/ably-js/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ably/ably-js/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ably/ably-js/git/refs{/sha}","trees_url":"https://api.github.com/repos/ably/ably-js/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ably/ably-js/statuses/{sha}","languages_url":"https://api.github.com/repos/ably/ably-js/languages","stargazers_url":"https://api.github.com/repos/ably/ably-js/stargazers","contributors_url":"https://api.github.com/repos/ably/ably-js/contributors","subscribers_url":"https://api.github.com/repos/ably/ably-js/subscribers","subscription_url":"https://api.github.com/repos/ably/ably-js/subscription","commits_url":"https://api.github.com/repos/ably/ably-js/commits{/sha}","git_commits_url":"https://api.github.com/repos/ably/ably-js/git/commits{/sha}","comments_url":"https://api.github.com/repos/ably/ably-js/comments{/number}","issue_comment_url":"https://api.github.com/repos/ably/ably-js/issues/comments{/number}","contents_url":"https://api.github.com/repos/ably/ably-js/contents/{+path}","compare_url":"https://api.github.com/repos/ably/ably-js/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ably/ably-js/merges","archive_url":"https://api.github.com/repos/ably/ably-js/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ably/ably-js/downloads","issues_url":"https://api.github.com/repos/ably/ably-js/issues{/number}","pulls_url":"https://api.github.com/repos/ably/ably-js/pulls{/number}","milestones_url":"https://api.github.com/repos/ably/ably-js/milestones{/number}","notifications_url":"https://api.github.com/repos/ably/ably-js/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ably/ably-js/labels{/name}","releases_url":"https://api.github.com/repos/ably/ably-js/releases{/id}","deployments_url":"https://api.github.com/repos/ably/ably-js/deployments","created_at":"2012-11-13T19:41:13Z","updated_at":"2016-12-05T19:21:38Z","pushed_at":"2016-12-12T17:46:09Z","git_url":"git://github.com/ably/ably-js.git","ssh_url":"git@github.com:ably/ably-js.git","clone_url":"https://github.com/ably/ably-js.git","svn_url":"https://github.com/ably/ably-js","homepage":"https://www.ably.io/","size":14751,"stargazers_count":16,"watchers_count":16,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":37,"forks":7,"open_issues":37,"watchers":16,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ably/ably-js/pulls/359"},"html":{"href":"https://github.com/ably/ably-js/pull/359"},"issue":{"href":"https://api.github.com/repos/ably/ably-js/issues/359"},"comments":{"href":"https://api.github.com/repos/ably/ably-js/issues/359/comments"},"review_comments":{"href":"https://api.github.com/repos/ably/ably-js/pulls/359/comments"},"review_comment":{"href":"https://api.github.com/repos/ably/ably-js/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ably/ably-js/pulls/359/commits"},"statuses":{"href":"https://api.github.com/repos/ably/ably-js/statuses/370eb579734323fba18b323b56de49bb2fc0d7b5"}}}}
{"actor":{"display_login":"NathanaelA"}}