UNPKG

jsonrpc-websocket-client

Version:
84 lines (64 loc) 3.24 kB
"use strict"; 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