apeman-react-mixins
Version:
React mixin set of apeman.
102 lines (81 loc) • 6.83 kB
JavaScript
/**
* Server mixin.
* @module ApServerMixin
*
* Generated by coz on 3/6/2016,
* from a template provided by apeman-bud-react.
*
* @see https://facebook.github.io/react/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defaults = require('defaults');
var _defaults2 = _interopRequireDefault(_defaults);
var _assert = require('assert');
var _assert2 = _interopRequireDefault(_assert);
var _apemanpromise = require('apemanpromise');
var _apemanpromise2 = _interopRequireDefault(_apemanpromise);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/** @lends ApServerMixin */
var ApServerMixin = {
// --------------------
// Custom
// --------------------
$apServerMixed: true,
// --------------------
// Lifecycle
// --------------------
componentWillMount: function componentWillMount() {
var s = this;
(0, _assert2.default)(s.getServerEventSource, '.getServerEventSource() is required.');
(0, _assert2.default)(s.getServerPollingConfig, '.getServerPollingConfig() is required.');
(0, _assert2.default)(s.knockServer, '.knockServer() is required.');
var noop = function noop(value) {
return value;
};
(0, _defaults2.default)(s, {
serverWillRestart: noop,
serverDidRestart: noop,
serverDidGone: noop
});
},
componentDidMount: function componentDidMount() {
var s = this;
var es = s.getServerEventSource();
if (es) {
es.addEventListener('server:restart', s.handleServerRestart);
s._serverES = es;
}
},
componentWillUnmount: function componentWillUnmount() {
var s = this;
var es = s._serverES;
if (es) {
es.removeEventListener('server:restart', s.handleServerRestart);
es.close();
}
},
// --------------------
// Custom
// --------------------
handleServerRestart: function handleServerRestart(e) {
var s = this;
s.serverWillRestart();
var pollingConfig = s.getServerPollingConfig();
(0, _apemanpromise.untilResolved)(function () {
return _apemanpromise2.default.resolve(s.knockServer());
}, pollingConfig).then(function (res) {
s.serverDidRestart();
}).catch(function (err) {
s.serverDidGone();
});
},
// --------------------
// Private
// --------------------
_serverES: undefined
};
exports.default = Object.freeze(ApServerMixin);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX3NlcnZlcl9taXhpbi5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBU0E7Ozs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7OztBQUdBLElBQUksZ0JBQWdCOzs7OztBQUtsQixrQkFBZ0IsSUFMRTs7Ozs7O0FBV2xCLG9CQVhrQixnQ0FXSTtBQUNwQixRQUFNLElBQUksSUFBVjtBQUNBLDBCQUFPLEVBQUUsb0JBQVQsRUFBK0Isc0NBQS9CO0FBQ0EsMEJBQU8sRUFBRSxzQkFBVCxFQUFpQyx3Q0FBakM7QUFDQSwwQkFBTyxFQUFFLFdBQVQsRUFBc0IsNkJBQXRCO0FBQ0EsUUFBSSxPQUFPLFNBQVAsSUFBTyxDQUFDLEtBQUQ7QUFBQSxhQUFXLEtBQVg7QUFBQSxLQUFYO0FBQ0EsNEJBQVMsQ0FBVCxFQUFZO0FBQ1YseUJBQW1CLElBRFQ7QUFFVix3QkFBa0IsSUFGUjtBQUdWLHFCQUFlO0FBSEwsS0FBWjtBQUtELEdBdEJpQjtBQXdCbEIsbUJBeEJrQiwrQkF3Qkc7QUFDbkIsUUFBTSxJQUFJLElBQVY7O0FBRUEsUUFBSSxLQUFLLEVBQUUsb0JBQUYsRUFBVDtBQUNBLFFBQUksRUFBSixFQUFRO0FBQ04sU0FBRyxnQkFBSCxDQUFvQixnQkFBcEIsRUFBc0MsRUFBRSxtQkFBeEM7QUFDQSxRQUFFLFNBQUYsR0FBYyxFQUFkO0FBQ0Q7QUFDRixHQWhDaUI7QUFrQ2xCLHNCQWxDa0Isa0NBa0NNO0FBQ3RCLFFBQU0sSUFBSSxJQUFWO0FBQ0EsUUFBSSxLQUFLLEVBQUUsU0FBWDtBQUNBLFFBQUksRUFBSixFQUFRO0FBQ04sU0FBRyxtQkFBSCxDQUF1QixnQkFBdkIsRUFBeUMsRUFBRSxtQkFBM0M7QUFDQSxTQUFHLEtBQUg7QUFDRDtBQUNGLEdBekNpQjs7Ozs7OztBQStDbEIscUJBL0NrQiwrQkErQ0csQ0EvQ0gsRUErQ007QUFDdEIsUUFBTSxJQUFJLElBQVY7QUFDQSxNQUFFLGlCQUFGO0FBQ0EsUUFBSSxnQkFBZ0IsRUFBRSxzQkFBRixFQUFwQjtBQUNBLHNDQUNFO0FBQUEsYUFBTSx3QkFBUSxPQUFSLENBQWdCLEVBQUUsV0FBRixFQUFoQixDQUFOO0FBQUEsS0FERixFQUVFLGFBRkYsRUFJRyxJQUpILENBSVEsVUFBQyxHQUFELEVBQVM7QUFDYixRQUFFLGdCQUFGO0FBQ0QsS0FOSCxFQU9HLEtBUEgsQ0FPUyxVQUFDLEdBQUQsRUFBUztBQUNkLFFBQUUsYUFBRjtBQUNELEtBVEg7QUFVRCxHQTdEaUI7Ozs7Ozs7QUFtRWxCLGFBQVc7O0FBbkVPLENBQXBCOztrQkF1RWUsT0FBTyxNQUFQLENBQWMsYUFBZCxDIiwiZmlsZSI6ImFwX3NlcnZlcl9taXhpbi5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvb2t1bmlzaGluaXNoaS9Qcm9qZWN0cy9hcGVtYW4tcHJvamVjdHMvYXBlbWFuLXJlYWN0LW1peGlucy9saWIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlcnZlciBtaXhpbi5cbiAqIEBtb2R1bGUgQXBTZXJ2ZXJNaXhpblxuICpcbiAqIEdlbmVyYXRlZCBieSBjb3ogb24gMy82LzIwMTYsXG4gKiBmcm9tIGEgdGVtcGxhdGUgcHJvdmlkZWQgYnkgYXBlbWFuLWJ1ZC1yZWFjdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L1xuICovXG4ndXNlIHN0cmljdCdcblxuaW1wb3J0IGRlZmF1bHRzIGZyb20gJ2RlZmF1bHRzJ1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnXG5pbXBvcnQgUHJvbWlzZSwge3VudGlsUmVzb2x2ZWR9IGZyb20gJ2FwZW1hbnByb21pc2UnXG5cbi8qKiBAbGVuZHMgQXBTZXJ2ZXJNaXhpbiAqL1xubGV0IEFwU2VydmVyTWl4aW4gPSB7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gQ3VzdG9tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICRhcFNlcnZlck1peGVkOiB0cnVlLFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIExpZmVjeWNsZVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGNvbXBvbmVudFdpbGxNb3VudCAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBhc3NlcnQocy5nZXRTZXJ2ZXJFdmVudFNvdXJjZSwgJy5nZXRTZXJ2ZXJFdmVudFNvdXJjZSgpIGlzIHJlcXVpcmVkLicpXG4gICAgYXNzZXJ0KHMuZ2V0U2VydmVyUG9sbGluZ0NvbmZpZywgJy5nZXRTZXJ2ZXJQb2xsaW5nQ29uZmlnKCkgaXMgcmVxdWlyZWQuJylcbiAgICBhc3NlcnQocy5rbm9ja1NlcnZlciwgJy5rbm9ja1NlcnZlcigpIGlzIHJlcXVpcmVkLicpXG4gICAgbGV0IG5vb3AgPSAodmFsdWUpID0+IHZhbHVlXG4gICAgZGVmYXVsdHMocywge1xuICAgICAgc2VydmVyV2lsbFJlc3RhcnQ6IG5vb3AsXG4gICAgICBzZXJ2ZXJEaWRSZXN0YXJ0OiBub29wLFxuICAgICAgc2VydmVyRGlkR29uZTogbm9vcFxuICAgIH0pXG4gIH0sXG5cbiAgY29tcG9uZW50RGlkTW91bnQgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG5cbiAgICBsZXQgZXMgPSBzLmdldFNlcnZlckV2ZW50U291cmNlKClcbiAgICBpZiAoZXMpIHtcbiAgICAgIGVzLmFkZEV2ZW50TGlzdGVuZXIoJ3NlcnZlcjpyZXN0YXJ0Jywgcy5oYW5kbGVTZXJ2ZXJSZXN0YXJ0KVxuICAgICAgcy5fc2VydmVyRVMgPSBlc1xuICAgIH1cbiAgfSxcblxuICBjb21wb25lbnRXaWxsVW5tb3VudCAoKSB7XG4gICAgY29uc3QgcyA9IHRoaXNcbiAgICBsZXQgZXMgPSBzLl9zZXJ2ZXJFU1xuICAgIGlmIChlcykge1xuICAgICAgZXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2VydmVyOnJlc3RhcnQnLCBzLmhhbmRsZVNlcnZlclJlc3RhcnQpXG4gICAgICBlcy5jbG9zZSgpXG4gICAgfVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEN1c3RvbVxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGhhbmRsZVNlcnZlclJlc3RhcnQgKGUpIHtcbiAgICBjb25zdCBzID0gdGhpc1xuICAgIHMuc2VydmVyV2lsbFJlc3RhcnQoKVxuICAgIGxldCBwb2xsaW5nQ29uZmlnID0gcy5nZXRTZXJ2ZXJQb2xsaW5nQ29uZmlnKClcbiAgICB1bnRpbFJlc29sdmVkKFxuICAgICAgKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHMua25vY2tTZXJ2ZXIoKSksXG4gICAgICBwb2xsaW5nQ29uZmlnXG4gICAgKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBzLnNlcnZlckRpZFJlc3RhcnQoKVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHMuc2VydmVyRGlkR29uZSgpXG4gICAgICB9KVxuICB9LFxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIFByaXZhdGVcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBfc2VydmVyRVM6IHVuZGVmaW5lZFxuXG59XG5cbmV4cG9ydCBkZWZhdWx0IE9iamVjdC5mcmVlemUoQXBTZXJ2ZXJNaXhpbilcbiJdfQ==