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