UNPKG

@rxx/core

Version:

React MVI micro framework.

79 lines 5.28 kB
"use strict"; /** * The MIT License (MIT) * Copyright (c) Taketoshi Aono * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * @fileoverview * @author Taketoshi Aono */ Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var advice_1 = require("./advice"); /** * Combine advices and make these to one advice. * In combined advice, MethodInvocation#proceed call next advice, * but other values like args, context etc... is return original value. * @param advices Advice list. * @returns Combined advice. */ function combineAdvice() { var _this = this; var advices = []; for (var _i = 0; _i < arguments.length; _i++) { advices[_i] = arguments[_i]; } /** * Call Advice or AdviceFunction. * @param advice Call target. * @param mi MethodInvocation object. */ function callAdvice(advice, mi, ih) { return typeof advice !== 'function' ? advice.invoke(mi, ih) : advice(mi, ih); } /** * Advice that call other advices. * @param mi MethodInvocation object. * @returns Last advice returned value. */ return function (mi, ih) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var loop, clone; var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: loop = function (next, advices) { return tslib_1.__awaiter(_this, void 0, void 0, function () { var _this = this; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: if (!next) return [3 /*break*/, 2]; return [4 /*yield*/, callAdvice(next, new advice_1.MethodInvocation(function () { return tslib_1.__awaiter(_this, void 0, void 0, function () { return tslib_1.__generator(this, function (_a) { return [2 /*return*/, loop(advices.shift(), advices)]; }); }); }, mi.getContext(), mi.getArguments(), mi.getInstanceName(), mi.getPropertyName()), ih)]; case 1: return [2 /*return*/, _a.sent()]; case 2: return [2 /*return*/, mi.proceed()]; } }); }); }; clone = advices.slice(); return [4 /*yield*/, loop(clone.shift(), clone)]; case 1: return [2 /*return*/, _a.sent()]; } }); }); }; } exports.combineAdvice = combineAdvice; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYmluZS1hZHZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaGFuZGxlci9jb21iaW5lLWFkdmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHOzs7QUFFSCxtQ0FLa0I7QUFHbEI7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsYUFBYTtJQUE3QixpQkE4Q0M7SUE5QzZCLGlCQUE4QjtTQUE5QixVQUE4QixFQUE5QixxQkFBOEIsRUFBOUIsSUFBOEI7UUFBOUIsNEJBQThCOztJQUMxRDs7OztPQUlHO0lBQ0gsU0FBUyxVQUFVLENBQ2pCLE1BQXdCLEVBQ3hCLEVBQW9CLEVBQ3BCLEVBQWlCO1FBRWpCLE9BQU8sT0FBTyxNQUFNLEtBQUssVUFBVTtZQUNqQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsT0FBTyxVQUFPLEVBQW9CLEVBQUUsRUFBaUI7Ozs7OztvQkFDN0MsSUFBSSxHQUFHLFVBQ1gsSUFBa0MsRUFDbEMsT0FBMkI7Ozs7O3lDQUV2QixJQUFJLEVBQUosd0JBQUk7b0NBQ0MscUJBQU0sVUFBVSxDQUNyQixJQUFJLEVBQ0osSUFBSSx5QkFBZ0IsQ0FDbEI7NENBQVksc0JBQUEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBQTtpREFBQSxFQUMxQyxFQUFFLENBQUMsVUFBVSxFQUFFLEVBQ2YsRUFBRSxDQUFDLFlBQVksRUFBRSxFQUNqQixFQUFFLENBQUMsZUFBZSxFQUFFLEVBQ3BCLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FDckIsRUFDRCxFQUFFLENBQ0gsRUFBQTt3Q0FWRCxzQkFBTyxTQVVOLEVBQUM7d0NBR0osc0JBQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFDOzs7eUJBQ3JCLENBQUM7b0JBQ0ksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFFdkIscUJBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBQTt3QkFBdkMsc0JBQU8sU0FBZ0MsRUFBQzs7O1NBQ3pDLENBQUM7QUFDSixDQUFDO0FBOUNELHNDQThDQyJ9