UNPKG

@aitianyu.cn/tianyu-store

Version:
117 lines 4.96 kB
"use strict"; /**@format */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SelectorFactor = void 0; const SelectorHelper_1 = require("../common/SelectorHelper"); const Message_1 = require("../infra/Message"); /** Tianyu Store Selector Create Factor */ class SelectorFactor { /** * To create a new selector with no parameteres * * @template STATE the type of state * @template RETURN_TYPE type of selector return value * @template EXTERNAL_RESULT the external object handler return value * * @param rawSelector selector raw process function * @param enternal external object handler * @returns return a new selector */ static makeSelector(rawSelector, enternal) { return (0, SelectorHelper_1.selectorCreator)(rawSelector, enternal); } /** * To create a new selector with parameteres * * @template STATE the type of state * @template PARAMETER_TYPE type of selector parameter * @template RETURN_TYPE type of selector return value * @template EXTERNAL_RESULT the external object handler return value * * @param rawSelector selector raw process function * @param enternal external object handler * @returns return a new selector */ static makeParameterSelector(rawSelector, enternal) { return (0, SelectorHelper_1.parameterSelectorCreator)(rawSelector, enternal); } /** * To create a new constant selector to return a value out of store state * * @template RETURN_TYPE type of selector return value * @template PARAMETER_TYPE type of selector parameter (default parameter is void type) * * @param rawSelector selector raw process function * @returns return a new selector */ static makeConstantSelector(rawSelector) { return (0, SelectorHelper_1.parameterSelectorCreator)(rawSelector); } /** To create a new mixing selector */ /* istanbul ignore next */ static makeMixingSelector = SelectorHelper_1.mixingSelectorCreator; /** * To create a new restrict selector * * @template RETURN_TYPE type of selector return value * @template PARAMETER_TYPE type of selector parameter (default parameter is void type) * @template RTo type of first selector generated result and the second selector parameter * * @param restrictSelector a selector to generate an intermediate state as the target selector parameter from input parameter * @param targetSelector a selector receive an intermediate state as parameter and return a result * @returns return a new selector */ static makeRestrictSelector(restrictSelector, targetSelector) { return (0, SelectorHelper_1.restrictSelectorCreator)(restrictSelector, targetSelector); } /** * To create a virtual selector with no parameteres * * @template STATE the type of state * @template RETURN_TYPE type of selector return value * * @returns return a new virtual selector */ static makeVirtualSelector() { return (0, SelectorHelper_1.selectorCreator)(function (_state) { throw new Error(Message_1.MessageBundle.getText("SELECTOR_VIRTUAL_NO_RANNABLE")); }); } /** * To create a virtual selector with parameteres * * @template STATE the type of state * @template PARAMETER_TYPE type of selector parameter * @template RETURN_TYPE type of selector return value * * @returns return a new virtual selector */ static makeVirtualParameterSelector() { return (0, SelectorHelper_1.parameterSelectorCreator)(function (_state, _params) { throw new Error(Message_1.MessageBundle.getText("SELECTOR_VIRTUAL_NO_RANNABLE")); }); } /** * To create a virtual constant selector * * @template RETURN_TYPE type of selector return value * @template PARAMETER_TYPE type of selector parameter (default parameter is void type) * * @returns return a new virtual selector */ static makeVirtualConstantSelector() { return (0, SelectorHelper_1.parameterSelectorCreator)(function (_state, _params) { throw new Error(Message_1.MessageBundle.getText("SELECTOR_VIRTUAL_NO_RANNABLE")); }); } static makeVirtualMxingSelector() { return (0, SelectorHelper_1.mixingSelectorCreator)([], function (_selectors, _params) { throw new Error(Message_1.MessageBundle.getText("SELECTOR_VIRTUAL_NO_RANNABLE")); }); } static makeVirtualRestrictSelector() { return (0, SelectorHelper_1.restrictSelectorCreator)(SelectorFactor.makeVirtualSelector(), SelectorFactor.makeVirtualSelector()); } } exports.SelectorFactor = SelectorFactor; //# sourceMappingURL=SelectorFactor.js.map