Comparing version 5.0.0-beta.2 to 5.0.0-beta.3
@@ -5,3 +5,3 @@ import { ConnectOptions, EndpointDescription, HistoricalFilter, News } from "./types"; | ||
private apikey; | ||
websocketEndpoint: string; | ||
private endpoint; | ||
restEndpoint: string; | ||
@@ -8,0 +8,0 @@ constructor(apikey: string, endpoint?: EndpointDescription); |
@@ -17,3 +17,2 @@ "use strict"; | ||
const enums_1 = require("./enums"); | ||
const isomorphic_ws_1 = __importDefault(require("isomorphic-ws")); | ||
const wsclient_1 = require("./wsclient"); | ||
@@ -24,10 +23,7 @@ const isomorphic_fetch_1 = __importDefault(require("isomorphic-fetch")); | ||
this.apikey = apikey; | ||
this.websocketEndpoint = endpoint.websocketProtocol + "://" + endpoint.host; | ||
this.endpoint = endpoint; | ||
this.restEndpoint = endpoint.restProtocol + "://" + endpoint.host; | ||
} | ||
getWsClient(options) { | ||
const urlParams = new URLSearchParams({ | ||
apikey: this.apikey, | ||
}); | ||
return new wsclient_1.WsClient(new isomorphic_ws_1.default(`${this.websocketEndpoint}/v2/ws?${urlParams.toString()}`), options); | ||
return new wsclient_1.WsClient(this.apikey, options, this.endpoint); | ||
} | ||
@@ -34,0 +30,0 @@ search(filter) { |
export { or, and, text } from "./queries"; | ||
export { Api } from "./api"; | ||
export { WsClient } from "./wsclient"; | ||
export { News, Filter, TextOptions, WebsocketResponse, WebsocketErrorResponse } from "./types"; | ||
export { News, Filter, TextOptions, WebsocketResponse, WebsocketErrorResponse, ConnectOptions } from "./types"; | ||
export { Source, WebsocketMethod, WebsocketResponseType } from "./enums"; |
/// <reference types="ws" /> | ||
import { ConnectOptions, SubscribeOptions, WebsocketRequest } from "./types"; | ||
import { ConnectOptions, EndpointDescription, SubscribeOptions, WebsocketRequest } from "./types"; | ||
import WebSocket from "isomorphic-ws"; | ||
export declare class WsClient { | ||
private socket; | ||
private reconnectMessages; | ||
constructor(socket: WebSocket, options: ConnectOptions); | ||
subscribe(options: SubscribeOptions): void; | ||
private apikey; | ||
private readonly websocketEndpoint; | ||
socket: WebSocket; | ||
reconnectMessages: WebsocketRequest[]; | ||
constructor(apikey: string, options: ConnectOptions, endpoint: EndpointDescription); | ||
connect(options: ConnectOptions): void; | ||
subscribe(options: SubscribeOptions, resubscribeOnReconnect?: boolean): void; | ||
unsubscribe(subscriptionId: string): void; | ||
sendSocketMessage(message: WebsocketRequest): void; | ||
sendSocketMessage(message: WebsocketRequest, resendOnReconnect?: boolean): void; | ||
} |
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.WsClient = void 0; | ||
const isomorphic_ws_1 = __importDefault(require("isomorphic-ws")); | ||
const enums_1 = require("./enums"); | ||
class WsClient { | ||
constructor(socket, options) { | ||
this.socket = socket; | ||
constructor(apikey, options, endpoint) { | ||
this.apikey = apikey; | ||
this.reconnectMessages = []; | ||
this.websocketEndpoint = endpoint.websocketProtocol + "://" + endpoint.host; | ||
this.connect(options); | ||
} | ||
connect(options) { | ||
options.automaticReconnect = options.automaticReconnect === undefined ? true : options.automaticReconnect; | ||
const urlParams = new URLSearchParams({ | ||
apikey: this.apikey, | ||
}); | ||
this.socket = new isomorphic_ws_1.default(`${this.websocketEndpoint}/v2/ws?${urlParams.toString()}`); | ||
this.socket.onmessage = (event) => { | ||
@@ -49,9 +62,7 @@ const response = JSON.parse(event.data.toString()); | ||
setTimeout(() => { | ||
for (const reconnectMessage of this.reconnectMessages) { | ||
this.sendSocketMessage(reconnectMessage); | ||
} | ||
}, 1000); | ||
this.connect(options); | ||
}, 200); | ||
}; | ||
} | ||
subscribe(options) { | ||
subscribe(options, resubscribeOnReconnect = true) { | ||
const message = { | ||
@@ -62,4 +73,3 @@ method: enums_1.WebsocketMethod.SUBSCRIBE, | ||
}; | ||
this.reconnectMessages.push(message); | ||
this.sendSocketMessage(message); | ||
this.sendSocketMessage(message, resubscribeOnReconnect); | ||
} | ||
@@ -75,5 +85,8 @@ unsubscribe(subscriptionId) { | ||
this.sendSocketMessage(message); | ||
this.reconnectMessages = this.reconnectMessages.filter((message) => message.id !== subscriptionId); | ||
} | ||
sendSocketMessage(message) { | ||
sendSocketMessage(message, resendOnReconnect = false) { | ||
this.socket.send(JSON.stringify(message)); | ||
if (resendOnReconnect) | ||
this.reconnectMessages.push(message); | ||
} | ||
@@ -80,0 +93,0 @@ } |
{ | ||
"name": "newsware", | ||
"version": "5.0.0-beta.2", | ||
"version": "5.0.0-beta.3", | ||
"description": "Typescript client for interacting with the Newsware API", | ||
@@ -5,0 +5,0 @@ "main": "lib/src/index.js", |
import {ConnectOptions, EndpointDescription, HistoricalFilter, News, RestResponse} from "./types" | ||
import {Endpoint} from "./enums" | ||
import WebSocket from "isomorphic-ws" | ||
import {WsClient} from "./wsclient" | ||
@@ -8,3 +7,2 @@ import fetch from "isomorphic-fetch" | ||
export class Api { | ||
websocketEndpoint: string | ||
restEndpoint: string | ||
@@ -14,5 +12,4 @@ | ||
private apikey: string, | ||
endpoint: EndpointDescription = Endpoint.PRODUCTION | ||
private endpoint: EndpointDescription = Endpoint.PRODUCTION | ||
) { | ||
this.websocketEndpoint = endpoint.websocketProtocol + "://" + endpoint.host | ||
this.restEndpoint = endpoint.restProtocol + "://" + endpoint.host | ||
@@ -22,7 +19,3 @@ } | ||
getWsClient(options: ConnectOptions): WsClient { | ||
const urlParams = new URLSearchParams({ | ||
apikey: this.apikey, | ||
}) | ||
return new WsClient(new WebSocket(`${this.websocketEndpoint}/v2/ws?${urlParams.toString()}`), options) | ||
return new WsClient(this.apikey, options, this.endpoint) | ||
} | ||
@@ -29,0 +22,0 @@ |
@@ -5,4 +5,4 @@ export {or, and, text} from "./queries"; | ||
export { | ||
News, Filter, TextOptions, WebsocketResponse, WebsocketErrorResponse | ||
News, Filter, TextOptions, WebsocketResponse, WebsocketErrorResponse, ConnectOptions | ||
} from "./types" | ||
export {Source, WebsocketMethod, WebsocketResponseType} from "./enums" |
@@ -1,2 +0,2 @@ | ||
import {ConnectOptions, SubscribeOptions, WebsocketRequest, WebsocketResponse,} from "./types"; | ||
import {ConnectOptions, EndpointDescription, SubscribeOptions, WebsocketRequest, WebsocketResponse,} from "./types"; | ||
import WebSocket, {CloseEvent, ErrorEvent, MessageEvent} from "isomorphic-ws" | ||
@@ -6,8 +6,23 @@ import {WebsocketMethod, WebsocketResponseType} from "./enums"; | ||
export class WsClient { | ||
private reconnectMessages: WebsocketRequest[] = [] | ||
private readonly websocketEndpoint: string | ||
socket!: WebSocket | ||
reconnectMessages: WebsocketRequest[] = [] | ||
constructor( | ||
private socket: WebSocket, | ||
options: ConnectOptions | ||
private apikey: string, | ||
options: ConnectOptions, | ||
endpoint: EndpointDescription | ||
) { | ||
this.websocketEndpoint = endpoint.websocketProtocol + "://" + endpoint.host | ||
this.connect(options) | ||
} | ||
connect(options: ConnectOptions) { | ||
options.automaticReconnect = options.automaticReconnect === undefined ? true : options.automaticReconnect | ||
const urlParams = new URLSearchParams({ | ||
apikey: this.apikey, | ||
}) | ||
this.socket = new WebSocket(`${this.websocketEndpoint}/v2/ws?${urlParams.toString()}`) | ||
this.socket.onmessage = (event: MessageEvent) => { | ||
@@ -55,10 +70,8 @@ const response = JSON.parse(event.data.toString()) as WebsocketResponse | ||
setTimeout(() => { | ||
for (const reconnectMessage of this.reconnectMessages) { | ||
this.sendSocketMessage(reconnectMessage) | ||
} | ||
}, 1000) | ||
this.connect(options) | ||
}, 200) | ||
} | ||
} | ||
subscribe(options: SubscribeOptions) { | ||
subscribe(options: SubscribeOptions, resubscribeOnReconnect: boolean = true) { | ||
const message: WebsocketRequest = { | ||
@@ -69,4 +82,3 @@ method: WebsocketMethod.SUBSCRIBE, | ||
} | ||
this.reconnectMessages.push(message) | ||
this.sendSocketMessage(message) | ||
this.sendSocketMessage(message, resubscribeOnReconnect) | ||
} | ||
@@ -83,7 +95,10 @@ | ||
this.sendSocketMessage(message) | ||
this.reconnectMessages = this.reconnectMessages.filter((message) => message.id !== subscriptionId) | ||
} | ||
sendSocketMessage(message: WebsocketRequest) { | ||
sendSocketMessage(message: WebsocketRequest, resendOnReconnect: boolean = false) { | ||
this.socket.send(JSON.stringify(message)) | ||
if (resendOnReconnect) | ||
this.reconnectMessages.push(message) | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
54311
1118