UNPKG

@rxx/worker

Version:

React MVI micro framework.

125 lines 8.19 kB
"use strict"; /** * @fileoverview * @author Taketoshi Aono */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var handler_1 = require("./handler"); var advice_1 = require("./advice"); var utils_1 = require("../utils"); /** * StateHandler Registry. */ var stateHandlerRegistry = {}; /** * Get registered stateHandlerRegistry. */ function getHandlers() { return stateHandlerRegistry; } exports.getHandlers = getHandlers; /** * Register StateHandler to handler map. * @param newHandlers Handler map. */ function registerHandlers(newHandlers) { var invalidTargetKey = ''; if (!utils_1.every(newHandlers, function (h, k) { var result = h instanceof StateHandler; if (!result) { invalidTargetKey = k; } return result; })) { throw new Error(invalidTargetKey + " is not valid state handler."); } var sources = (stateHandlerRegistry = tslib_1.__assign({}, stateHandlerRegistry, newHandlers)); return utils_1.mapValues(sources, function (v, k) { return v.response; }); } exports.registerHandlers = registerHandlers; /** * Remove specified handler from registry. * @param key Key or keys of target handler. */ function removeHandler(key) { stateHandlerRegistry = utils_1.omit(stateHandlerRegistry, key); } exports.removeHandler = removeHandler; var StateHandler = /** @class */ (function () { function StateHandler(advices, cutPoints) { if (advices === void 0) { advices = {}; } if (cutPoints === void 0) { cutPoints = {}; } var _this = this; /** * Subject for exported stream. */ this.store = new handler_1.StreamStore(); this.advices = advices; this.cutPoints = cutPoints; this.handlerResponse = new handler_1.HandlerResponse(this.store); utils_1.forIn(advices, function (advice, name) { var cutPoint = cutPoints[name]; cutPoint = utils_1.isArray(cutPoint) ? cutPoint : [cutPoint]; if (!cutPoint) { throw new Error("Cut point " + name + " does not exists"); } cutPoint.forEach(function (name) { if (typeof _this[name] !== 'function') { throw new Error('Advice only applyable to Function.'); } var method = _this[name]; _this[name] = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var proceed = function () { return method.apply(_this, args); }; var mi = new advice_1.MethodInvocation(proceed, _this, args, _this.constructor.displayName || _this.constructor.name, name); /*tslint:disable:no-string-literal*/ return advice['invoke'] ? advice.invoke(mi, _this.intent) : advice(mi, _this.intent); /*tslint:enable:no-string-literal*/ }; }); }); } StateHandler.prototype.setState = function (state) { this.state = state; }; StateHandler.prototype.setIntent = function (intent) { this.intentHandler = intent; }; StateHandler.prototype.setSubject = function (subject) { this.subject = subject; }; Object.defineProperty(StateHandler.prototype, "intent", { get: function () { return this.intentHandler; }, enumerable: true, configurable: true }); Object.defineProperty(StateHandler.prototype, "response", { /** * Return response representation of stream. * @return Representation of stream response. */ get: function () { return this.handlerResponse; }, enumerable: true, configurable: true }); /** * @inheritDocs */ StateHandler.prototype.callback = function (key, value) { var _this = this; return function (args) { return _this.push(key, value !== undefined ? value : args); }; }; return StateHandler; }()); exports.StateHandler = StateHandler; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVyL3N0YXRlLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBR0gscUNBTW1CO0FBQ25CLG1DQUtrQjtBQUNsQixrQ0FBa0U7QUFRbEU7O0dBRUc7QUFDSCxJQUFJLG9CQUFvQixHQUFvQixFQUFFLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxTQUFnQixXQUFXO0lBQ3pCLE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQztBQUZELGtDQUVDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLFdBQTRCO0lBRTVCLElBQUksZ0JBQWdCLEdBQW9CLEVBQUUsQ0FBQztJQUUzQyxJQUNFLENBQUMsYUFBSyxDQUFDLFdBQVcsRUFBRSxVQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLElBQU0sTUFBTSxHQUFHLENBQUMsWUFBWSxZQUFZLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLGdCQUFnQixHQUFHLENBQUMsQ0FBQztTQUN0QjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUMsQ0FBQyxFQUNGO1FBQ0EsTUFBTSxJQUFJLEtBQUssQ0FBSSxnQkFBZ0IsaUNBQThCLENBQUMsQ0FBQztLQUNwRTtJQUNELElBQU0sT0FBTyxHQUFHLENBQUMsb0JBQW9CLHdCQUNoQyxvQkFBb0IsRUFDcEIsV0FBVyxDQUNmLENBQUMsQ0FBQztJQUVILE9BQU8saUJBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBQyxDQUFDLEVBQUUsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLFFBQVEsRUFBVixDQUFVLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBdkJELDRDQXVCQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxHQUFzQjtJQUNsRCxvQkFBb0IsR0FBRyxZQUFJLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELHNDQUVDO0FBRUQ7SUFvQ0Usc0JBQW1CLE9BQXFCLEVBQUUsU0FBeUI7UUFBaEQsd0JBQUEsRUFBQSxZQUFxQjtRQUFFLDBCQUFBLEVBQUEsY0FBeUI7UUFBbkUsaUJBa0NDO1FBckVEOztXQUVHO1FBQ2dCLFVBQUssR0FBRyxJQUFJLHFCQUFXLEVBQUUsQ0FBQztRQWlDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFFM0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLHlCQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELGFBQUssQ0FBQyxPQUFPLEVBQUUsVUFBQyxNQUFNLEVBQUUsSUFBSTtZQUMxQixJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDL0IsUUFBUSxHQUFHLGVBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFhLElBQUkscUJBQWtCLENBQUMsQ0FBQzthQUN0RDtZQUNELFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBQSxJQUFJO2dCQUNuQixJQUFJLE9BQU8sS0FBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFVBQVUsRUFBRTtvQkFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2lCQUN2RDtnQkFDRCxJQUFNLE1BQU0sR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzFCLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRztvQkFBQyxjQUFPO3lCQUFQLFVBQU8sRUFBUCxxQkFBTyxFQUFQLElBQU87d0JBQVAseUJBQU87O29CQUNuQixJQUFNLE9BQU8sR0FBRyxjQUFNLE9BQUEsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFJLEVBQUUsSUFBSSxDQUFDLEVBQXhCLENBQXdCLENBQUM7b0JBQy9DLElBQU0sRUFBRSxHQUFHLElBQUkseUJBQWdCLENBQzdCLE9BQU8sRUFDUCxLQUFJLEVBQ0osSUFBSSxFQUNILEtBQUksQ0FBQyxXQUFtQixDQUFDLFdBQVcsSUFBSSxLQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFDOUQsSUFBSSxDQUNMLENBQUM7b0JBRUYsb0NBQW9DO29CQUNwQyxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUM7d0JBQ3JCLENBQUMsQ0FBRSxNQUFpQixDQUFDLE1BQU8sQ0FBQyxFQUFFLEVBQUUsS0FBSSxDQUFDLE1BQU0sQ0FBQzt3QkFDN0MsQ0FBQyxDQUFFLE1BQXlCLENBQUMsRUFBRSxFQUFFLEtBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDaEQsbUNBQW1DO2dCQUNyQyxDQUFDLENBQUM7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQWxETSwrQkFBUSxHQUFmLFVBQWdCLEtBQVU7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVNLGdDQUFTLEdBQWhCLFVBQWlCLE1BQXNCO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFTSxpQ0FBVSxHQUFqQixVQUFrQixPQUFvQjtRQUNwQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsc0JBQVcsZ0NBQU07YUFBakI7WUFDRSxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDNUIsQ0FBQzs7O09BQUE7SUFvREQsc0JBQVcsa0NBQVE7UUFKbkI7OztXQUdHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDOUIsQ0FBQzs7O09BQUE7SUFPRDs7T0FFRztJQUNJLCtCQUFRLEdBQWYsVUFDRSxHQUFXLEVBQ1gsS0FBVztRQUZiLGlCQUtDO1FBREMsT0FBTyxVQUFDLElBQVUsSUFBSyxPQUFBLEtBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQWxELENBQWtELENBQUM7SUFDNUUsQ0FBQztJQUNILG1CQUFDO0FBQUQsQ0FBQyxBQXhHRCxJQXdHQztBQXhHcUIsb0NBQVkifQ==