use-stomp
Version:
react provider, class decorator, and a hook for websockets using the stomp protocol
123 lines (105 loc) • 12.9 kB
JavaScript
;
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