UNPKG

use-stomp

Version:

react provider, class decorator, and a hook for websockets using the stomp protocol

123 lines (105 loc) 12.9 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); require("core-js/modules/es.object.get-own-property-descriptor"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _notistack = require("notistack"); var _react = _interopRequireWildcard(require("react")); var _context = _interopRequireDefault(require("./context")); var _useToggle3 = _interopRequireDefault(require("./useToggle")); var _webSocketWorker = _interopRequireDefault(require("./webSocketWorker")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var UseStompNotificationsProvider = /*#__PURE__*/_react.default.memo(function (name, callable) { callable.displayName = name; Object.defineProperty(callable, "name", _objectSpread(_objectSpread({}, Object.getOwnPropertyDescriptor(callable, "name")), {}, { value: name })); return callable; }("UseStompNotificationsProvider", function (_ref) { var authHeader = _ref.authHeader, headers = _ref.headers, reconnectInterval = _ref.reconnectInterval, reconnectMaxAttempts = _ref.reconnectMaxAttempts, testReconnect = _ref.testReconnect, url = _ref.url, props = (0, _objectWithoutProperties2.default)(_ref, ["authHeader", "headers", "reconnectInterval", "reconnectMaxAttempts", "testReconnect", "url"]); var _useToggle = (0, _useToggle3.default)(false), _useToggle2 = (0, _slicedToArray2.default)(_useToggle, 2), connected = _useToggle2[0], toggleConnected = _useToggle2[1]; var worker = (0, _react.useMemo)(function (name, callable) { callable.displayName = name; Object.defineProperty(callable, "name", _objectSpread(_objectSpread({}, Object.getOwnPropertyDescriptor(callable, "name")), {}, { value: name })); return callable; }("worker", function () { return new _webSocketWorker.default({ onConnected: toggleConnected, onDisconnected: toggleConnected, reconnectInterval: reconnectInterval, reconnectMaxAttempts: reconnectMaxAttempts, url: url }); }), []); (0, _react.useEffect)(function () { if (authHeader) { worker.setAuthHeader(authHeader); worker.connect(); } }, [authHeader]); (0, _react.useEffect)(function () { return function () { worker.destroy(); }; }, []); var ctx = (0, _react.useMemo)(function (name, callable) { callable.displayName = name; Object.defineProperty(callable, "name", _objectSpread(_objectSpread({}, Object.getOwnPropertyDescriptor(callable, "name")), {}, { value: name })); return callable; }("ctx", function () { return { connected: connected, dismiss: worker.dismiss, send: worker.send, subscribe: worker.subscribe, subscribeSync: worker.subscribeSync }; }), [connected, worker.dismiss, worker.send, worker.subscribe, worker.subscribeSync]); (0, _react.useEffect)(function () { if (connected && testReconnect) { var timeout = setTimeout(function (name, callable) { callable.displayName = name; Object.defineProperty(callable, "name", _objectSpread(_objectSpread({}, Object.getOwnPropertyDescriptor(callable, "name")), {}, { value: name })); return callable; }("timeout", function () { worker.testDisconnect(); }), 10000); return function () { clearTimeout(timeout); }; } }, [connected, testReconnect]); return /*#__PURE__*/_react.default.createElement(_context.default.Provider, { value: ctx }, /*#__PURE__*/_react.default.createElement(_notistack.SnackbarProvider, props, props.children)); })); UseStompNotificationsProvider.defaultProps = { maxSnack: 3, reconnectInterval: 10000, reconnectMaxAttempts: 10 }; var _default = UseStompNotificationsProvider; exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy91c2VTdG9tcE5vdGlmaWNhdGlvbnNQcm92aWRlci50c3giXSwibmFtZXMiOlsiVXNlU3RvbXBOb3RpZmljYXRpb25zUHJvdmlkZXIiLCJSZWFjdCIsIm1lbW8iLCJhdXRoSGVhZGVyIiwiaGVhZGVycyIsInJlY29ubmVjdEludGVydmFsIiwicmVjb25uZWN0TWF4QXR0ZW1wdHMiLCJ0ZXN0UmVjb25uZWN0IiwidXJsIiwicHJvcHMiLCJjb25uZWN0ZWQiLCJ0b2dnbGVDb25uZWN0ZWQiLCJ3b3JrZXIiLCJXZWJTb2NrZXRXb3JrZXIiLCJvbkNvbm5lY3RlZCIsIm9uRGlzY29ubmVjdGVkIiwic2V0QXV0aEhlYWRlciIsImNvbm5lY3QiLCJkZXN0cm95IiwiY3R4IiwiZGlzbWlzcyIsInNlbmQiLCJzdWJzY3JpYmUiLCJzdWJzY3JpYmVTeW5jIiwidGltZW91dCIsInNldFRpbWVvdXQiLCJ0ZXN0RGlzY29ubmVjdCIsImNsZWFyVGltZW91dCIsImNoaWxkcmVuIiwiZGVmYXVsdFByb3BzIiwibWF4U25hY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7O0FBNkJBLElBQU1BLDZCQUEyRSxnQkFBR0MsZUFBTUMsSUFBTjtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQ0FDaEYsZ0JBUU07QUFBQSxNQVBGQyxVQU9FLFFBUEZBLFVBT0U7QUFBQSxNQU5GQyxPQU1FLFFBTkZBLE9BTUU7QUFBQSxNQUxGQyxpQkFLRSxRQUxGQSxpQkFLRTtBQUFBLE1BSkZDLG9CQUlFLFFBSkZBLG9CQUlFO0FBQUEsTUFIRkMsYUFHRSxRQUhGQSxhQUdFO0FBQUEsTUFGRkMsR0FFRSxRQUZGQSxHQUVFO0FBQUEsTUFEQ0MsS0FDRDs7QUFBQSxtQkFDbUMseUJBQVUsS0FBVixDQURuQztBQUFBO0FBQUEsTUFDS0MsU0FETDtBQUFBLE1BQ2dCQyxlQURoQjs7QUFHRixNQUFNQyxNQUFNLEdBQUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsY0FDWDtBQUFBLFdBQ0ksSUFBSUMsd0JBQUosQ0FBb0I7QUFDaEJDLE1BQUFBLFdBQVcsRUFBRUgsZUFERztBQUVoQkksTUFBQUEsY0FBYyxFQUFFSixlQUZBO0FBR2hCTixNQUFBQSxpQkFBaUIsRUFBakJBLGlCQUhnQjtBQUloQkMsTUFBQUEsb0JBQW9CLEVBQXBCQSxvQkFKZ0I7QUFLaEJFLE1BQUFBLEdBQUcsRUFBRUE7QUFMVyxLQUFwQixDQURKO0FBQUEsR0FEVyxHQVNYLEVBVFcsQ0FBZjtBQVlBLHdCQUFVLFlBQU07QUFDWixRQUFJTCxVQUFKLEVBQWdCO0FBQ1pTLE1BQUFBLE1BQU0sQ0FBQ0ksYUFBUCxDQUFxQmIsVUFBckI7QUFDQVMsTUFBQUEsTUFBTSxDQUFDSyxPQUFQO0FBQ0g7QUFDSixHQUxELEVBS0csQ0FBQ2QsVUFBRCxDQUxIO0FBT0Esd0JBQVUsWUFBTTtBQUNaLFdBQU8sWUFBTTtBQUNUUyxNQUFBQSxNQUFNLENBQUNNLE9BQVA7QUFDSCxLQUZEO0FBR0gsR0FKRCxFQUlHLEVBSkg7QUFNQSxNQUFNQyxHQUFHLEdBQUc7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsV0FDUjtBQUFBLFdBQU87QUFDSFQsTUFBQUEsU0FBUyxFQUFUQSxTQURHO0FBRUhVLE1BQUFBLE9BQU8sRUFBRVIsTUFBTSxDQUFDUSxPQUZiO0FBR0hDLE1BQUFBLElBQUksRUFBRVQsTUFBTSxDQUFDUyxJQUhWO0FBSUhDLE1BQUFBLFNBQVMsRUFBRVYsTUFBTSxDQUFDVSxTQUpmO0FBS0hDLE1BQUFBLGFBQWEsRUFBRVgsTUFBTSxDQUFDVztBQUxuQixLQUFQO0FBQUEsR0FEUSxHQVFSLENBQ0liLFNBREosRUFFSUUsTUFBTSxDQUFDUSxPQUZYLEVBR0lSLE1BQU0sQ0FBQ1MsSUFIWCxFQUlJVCxNQUFNLENBQUNVLFNBSlgsRUFLSVYsTUFBTSxDQUFDVyxhQUxYLENBUlEsQ0FBWjtBQWlCQSx3QkFBVSxZQUFNO0FBQ1osUUFBSWIsU0FBUyxJQUFJSCxhQUFqQixFQUFnQztBQUM1QixVQUFNaUIsT0FBTyxHQUFHQyxVQUFVO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFDLFlBQU07QUFDN0JiLFFBQUFBLE1BQU0sQ0FBQ2MsY0FBUDtBQUNILE9BRnlCLEdBRXZCLEtBRnVCLENBQTFCO0FBSUEsYUFBTyxZQUFNO0FBQ1RDLFFBQUFBLFlBQVksQ0FBQ0gsT0FBRCxDQUFaO0FBQ0gsT0FGRDtBQUdIO0FBQ0osR0FWRCxFQVVHLENBQUNkLFNBQUQsRUFBWUgsYUFBWixDQVZIO0FBWUEsc0JBQ0ksNkJBQUMsZ0JBQUQsQ0FBYSxRQUFiO0FBQXNCLElBQUEsS0FBSyxFQUFFWTtBQUE3QixrQkFDSSw2QkFBQywyQkFBRCxFQUFzQlYsS0FBdEIsRUFBOEJBLEtBQUssQ0FBQ21CLFFBQXBDLENBREosQ0FESjtBQUtILENBdkUrRSxFQUFwRjs7QUEwRUE1Qiw2QkFBNkIsQ0FBQzZCLFlBQTlCLEdBQTZDO0FBQ3pDQyxFQUFBQSxRQUFRLEVBQUUsQ0FEK0I7QUFFekN6QixFQUFBQSxpQkFBaUIsRUFBRSxLQUZzQjtBQUd6Q0MsRUFBQUEsb0JBQW9CLEVBQUU7QUFIbUIsQ0FBN0M7ZUFNZU4sNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1NuYWNrYmFyUHJvdmlkZXJ9IGZyb20gJ25vdGlzdGFjayc7XG5pbXBvcnQgdHlwZSB7U25hY2tiYXJQcm92aWRlclByb3BzfSBmcm9tICdub3Rpc3RhY2snO1xuaW1wb3J0IFJlYWN0LCB7dXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZX0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgVXNlU3RvbXBDdHggZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCB1c2VUb2dnbGUgZnJvbSAnLi91c2VUb2dnbGUnO1xuaW1wb3J0IFdlYlNvY2tldFdvcmtlciBmcm9tICcuL3dlYlNvY2tldFdvcmtlcic7XG5cbmV4cG9ydCB0eXBlIFVzZVN0b21wTm90aWZpY2F0aW9uc1Byb3ZpZGVyUHJvcHMgPSBTbmFja2JhclByb3ZpZGVyUHJvcHMgJiB7XG4gICAgLyoqXG4gICAgICogdXJsIHRvIGNvbm5lY3QgdG8gc3RvbXAgcHJvdG9jb2xcbiAgICAgKi9cbiAgICB1cmw6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiByZXF1ZXN0IGF1dGggaGVhZGVyIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzZXJ2ZXIgb3IgYWdlbnQgdGhyb3VnaCB0aGUgU1RPTVAgY29ubmVjdGlvbiBmcmFtZVxuICAgICAqL1xuICAgIGF1dGhIZWFkZXI/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogcmVxdWVzdCBoZWFkZXIgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIHNlcnZlciBvciBhZ2VudCB0aHJvdWdoIHRoZSBTVE9NUCBjb25uZWN0aW9uIGZyYW1lXG4gICAgICovXG4gICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIC8qKlxuICAgICAqIGludGVydmFsKG1zKSBvZiBhdHRlbXB0cyB0byByZWNvbm5lY3Qgd2hlbiB0aGUgd2Vic29ja2V0IGNvbm5lY3Rpb24gaXMgZHJvcHBlZDsgZGVmYXVsdCBpcyAxMCwwMDBtc1xuICAgICAqL1xuICAgIHJlY29ubmVjdEludGVydmFsPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIG1heCBudW1iZXIgb2YgYXR0ZW1wdHMgdG8gcmVjb25uZWN0IHdoZW4gd2Vic29ja2V0IGNvbm5lY3Rpb24gaXMgZHJvcHBlZDsgZGVmYXVsdCBpcyAxMFxuICAgICAqL1xuICAgIHJlY29ubmVjdE1heEF0dGVtcHRzPzogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIGVuYWJsZSB0ZXN0aW5nIG9mIHJlY29ubmVjdGlvblxuICAgICAqL1xuICAgIHRlc3RSZWNvbm5lY3Q/OiBib29sZWFuO1xufTtcblxuY29uc3QgVXNlU3RvbXBOb3RpZmljYXRpb25zUHJvdmlkZXI6IFJlYWN0LkZDPFVzZVN0b21wTm90aWZpY2F0aW9uc1Byb3ZpZGVyUHJvcHM+ID0gUmVhY3QubWVtbyhcbiAgICAoe1xuICAgICAgICBhdXRoSGVhZGVyLFxuICAgICAgICBoZWFkZXJzLFxuICAgICAgICByZWNvbm5lY3RJbnRlcnZhbCxcbiAgICAgICAgcmVjb25uZWN0TWF4QXR0ZW1wdHMsXG4gICAgICAgIHRlc3RSZWNvbm5lY3QsXG4gICAgICAgIHVybCxcbiAgICAgICAgLi4ucHJvcHNcbiAgICB9KSA9PiB7XG4gICAgICAgIGNvbnN0IFtjb25uZWN0ZWQsIHRvZ2dsZUNvbm5lY3RlZF0gPSB1c2VUb2dnbGUoZmFsc2UpO1xuXG4gICAgICAgIGNvbnN0IHdvcmtlciA9IHVzZU1lbW88V2ViU29ja2V0V29ya2VyPihcbiAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgbmV3IFdlYlNvY2tldFdvcmtlcih7XG4gICAgICAgICAgICAgICAgICAgIG9uQ29ubmVjdGVkOiB0b2dnbGVDb25uZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIG9uRGlzY29ubmVjdGVkOiB0b2dnbGVDb25uZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgIHJlY29ubmVjdEludGVydmFsLFxuICAgICAgICAgICAgICAgICAgICByZWNvbm5lY3RNYXhBdHRlbXB0cyxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFtdXG4gICAgICAgICk7XG5cbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChhdXRoSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgd29ya2VyLnNldEF1dGhIZWFkZXIoYXV0aEhlYWRlcik7XG4gICAgICAgICAgICAgICAgd29ya2VyLmNvbm5lY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW2F1dGhIZWFkZXJdKTtcblxuICAgICAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICB3b3JrZXIuZGVzdHJveSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW10pO1xuXG4gICAgICAgIGNvbnN0IGN0eCA9IHVzZU1lbW8oXG4gICAgICAgICAgICAoKSA9PiAoe1xuICAgICAgICAgICAgICAgIGNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICBkaXNtaXNzOiB3b3JrZXIuZGlzbWlzcyxcbiAgICAgICAgICAgICAgICBzZW5kOiB3b3JrZXIuc2VuZCxcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmU6IHdvcmtlci5zdWJzY3JpYmUsXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlU3luYzogd29ya2VyLnN1YnNjcmliZVN5bmNcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIGNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICB3b3JrZXIuZGlzbWlzcyxcbiAgICAgICAgICAgICAgICB3b3JrZXIuc2VuZCxcbiAgICAgICAgICAgICAgICB3b3JrZXIuc3Vic2NyaWJlLFxuICAgICAgICAgICAgICAgIHdvcmtlci5zdWJzY3JpYmVTeW5jXG4gICAgICAgICAgICBdXG4gICAgICAgICk7XG5cbiAgICAgICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIGlmIChjb25uZWN0ZWQgJiYgdGVzdFJlY29ubmVjdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgd29ya2VyLnRlc3REaXNjb25uZWN0KCk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMDApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtjb25uZWN0ZWQsIHRlc3RSZWNvbm5lY3RdKTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFVzZVN0b21wQ3R4LlByb3ZpZGVyIHZhbHVlPXtjdHh9PlxuICAgICAgICAgICAgICAgIDxTbmFja2JhclByb3ZpZGVyIHsuLi5wcm9wc30+e3Byb3BzLmNoaWxkcmVufTwvU25hY2tiYXJQcm92aWRlcj5cbiAgICAgICAgICAgIDwvVXNlU3RvbXBDdHguUHJvdmlkZXI+XG4gICAgICAgICk7XG4gICAgfVxuKTtcblxuVXNlU3RvbXBOb3RpZmljYXRpb25zUHJvdmlkZXIuZGVmYXVsdFByb3BzID0ge1xuICAgIG1heFNuYWNrOiAzLFxuICAgIHJlY29ubmVjdEludGVydmFsOiAxMDAwMCxcbiAgICByZWNvbm5lY3RNYXhBdHRlbXB0czogMTBcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFVzZVN0b21wTm90aWZpY2F0aW9uc1Byb3ZpZGVyO1xuIl19