jsonrpc-websocket-client
Version:
JSON-RPC 2 over WebSocket
84 lines (64 loc) • 3.24 kB
JavaScript
exports.__esModule = true;
exports.createBackoff = exports.JsonRpcWebSocketClient = void 0;
var _jsonRpcPeer = _interopRequireWildcard(require("json-rpc-peer"));
var _iterableBackoff = require("iterable-backoff");
var _parseUrl = _interopRequireDefault(require("./parse-url"));
var _websocketClient = _interopRequireWildcard(require("./websocket-client"));
exports.ConnectionError = _websocketClient.ConnectionError;
exports.AbortedConnection = _websocketClient.AbortedConnection;
exports.CLOSED = _websocketClient.CLOSED;
exports.CONNECTING = _websocketClient.CONNECTING;
exports.OPEN = _websocketClient.OPEN;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const createBackoff = function (tries) {
if (tries === void 0) {
tries = 10;
}
return (0, _iterableBackoff.fibonacci)().addNoise().toMs().take(tries);
};
exports.createBackoff = createBackoff;
class JsonRpcWebSocketClient extends _websocketClient.default {
constructor(opts) {
{
let url, protocols;
if (!opts) {
opts = {};
} else if (typeof opts === "string") {
url = opts;
opts = {};
} else {
({
url,
protocols = [],
...opts
} = opts);
}
super((0, _parseUrl.default)(url), protocols, opts);
}
const peer = this._peer = new _jsonRpcPeer.default(message => {
if (message.type !== "notification") {
throw new _jsonRpcPeer.MethodNotFound();
}
this.emit("notification", message);
}).on("data", message => {
this.send(message);
});
this.on(_websocketClient.CLOSED, () => {
peer.failPendingRequests(new _websocketClient.ConnectionError("connection has been closed"));
});
this.on(_websocketClient.MESSAGE, message => {
peer.write(message);
});
}
call(method, params) {
return this._peer.request(method, params);
}
notify(method, params) {
return this._peer.notify(method, params);
}
}
exports.JsonRpcWebSocketClient = JsonRpcWebSocketClient;
//# sourceMappingURL=index.js.map
;