@aitianyu.cn/tianyu-store
Version:
tianyu storage for nodejs.
117 lines • 4.96 kB
JavaScript
;
/**@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