UNPKG

@aitianyu.cn/tianyu-store

Version:
84 lines 4.31 kB
"use strict"; /**@format */ Object.defineProperty(exports, "__esModule", { value: true }); exports.restrictSelectorCreator = exports.mixingSelectorCreator = exports.parameterSelectorCreator = exports.selectorCreator = void 0; const types_1 = require("@aitianyu.cn/types"); const Model_1 = require("../types/Model"); const Selector_1 = require("../types/Selector"); const OperatorHelper_1 = require("./OperatorHelper"); function fillSelectorInstanceCaller(type, rawSelector, enternal) { const selectorInstanceCaller = (function (instanceId, params) { return { id: selectorInstanceCaller.selector, selector: selectorInstanceCaller.info.fullName, storeType: selectorInstanceCaller.info.storeType, params: params, instanceId, template: selectorInstanceCaller.info.template, }; }); selectorInstanceCaller.id = (0, types_1.guid)(); selectorInstanceCaller.selector = selectorInstanceCaller.id; selectorInstanceCaller.type = type; selectorInstanceCaller.getter = rawSelector; selectorInstanceCaller.info = (0, OperatorHelper_1.defaultInfoGenerator)(Model_1.OperatorInfoType.SELECTOR); selectorInstanceCaller.external = enternal; return selectorInstanceCaller; } function selectorCreator(rawSelector, enternal) { return fillSelectorInstanceCaller(Selector_1.SelectorType.NORMAL, rawSelector, enternal); } exports.selectorCreator = selectorCreator; function parameterSelectorCreator(rawSelector, enternal) { return fillSelectorInstanceCaller(Selector_1.SelectorType.PARAMETER, rawSelector, enternal); } exports.parameterSelectorCreator = parameterSelectorCreator; const mixingSelectorCreator = (...selectorsAndGenerateFunction) => { const resultGenerator = selectorsAndGenerateFunction.splice(selectorsAndGenerateFunction.length - 1, 1)[0]; const isSelectorArray = selectorsAndGenerateFunction.length === 1 && Array.isArray(selectorsAndGenerateFunction[0]); const selectorProviders = isSelectorArray ? selectorsAndGenerateFunction[0] : selectorsAndGenerateFunction; const selectorInfos = selectorProviders.map((selectorProvider) => selectorProvider.info); const selectorInstanceCaller = (function (instanceId, params) { return { id: selectorInstanceCaller.selector, selector: selectorInstanceCaller.info.fullName, storeType: selectorInstanceCaller.info.storeType, params: params, instanceId, template: selectorInstanceCaller.info.template, }; }); selectorInstanceCaller.id = (0, types_1.guid)(); selectorInstanceCaller.selector = selectorInstanceCaller.id; selectorInstanceCaller.type = Selector_1.SelectorType.MIX; selectorInstanceCaller.getters = selectorInfos; selectorInstanceCaller.info = (0, OperatorHelper_1.defaultInfoGenerator)(Model_1.OperatorInfoType.SELECTOR); selectorInstanceCaller.external = undefined; selectorInstanceCaller.resultGenerator = resultGenerator; return selectorInstanceCaller; }; exports.mixingSelectorCreator = mixingSelectorCreator; function restrictSelectorCreator(restrictSelector, targetSelector) { const selectorInstanceCaller = (function (instanceId, params) { return { id: selectorInstanceCaller.selector, selector: selectorInstanceCaller.info.fullName, storeType: selectorInstanceCaller.info.storeType, params: params, instanceId, template: selectorInstanceCaller.info.template, }; }); selectorInstanceCaller.id = (0, types_1.guid)(); selectorInstanceCaller.selector = selectorInstanceCaller.id; selectorInstanceCaller.type = Selector_1.SelectorType.RESTRICT; selectorInstanceCaller.parameterGenerator = restrictSelector.info; selectorInstanceCaller.resultGenerator = targetSelector.info; selectorInstanceCaller.info = (0, OperatorHelper_1.defaultInfoGenerator)(Model_1.OperatorInfoType.SELECTOR); selectorInstanceCaller.external = undefined; return selectorInstanceCaller; } exports.restrictSelectorCreator = restrictSelectorCreator; //# sourceMappingURL=SelectorHelper.js.map