respond-framework
Version:
create as fast you think
72 lines (68 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _reserved = require("./reserved.js");
var _token = require("./selectors/token.js");
var _curr = require("./selectors/curr.js");
const createSelectors = ({
respond,
proto,
state
}, descriptors, propDescriptors) => {
const {
reducers
} = proto;
descriptors = respond.isTop ? {
curr,
...descriptors
} : {
curr,
...builtins,
...descriptors
}; // builtins inherit state from topState reducers
Object.keys(descriptors).forEach(k => {
if (reducers[k]) return; // reducer takes precedence if both exist
const descriptor = descriptors[k];
const {
get,
value: v = get
} = descriptor;
const kind = v.length === 0 ? 'get' : 'value';
Object.defineProperty(proto, k, {
[kind]: v,
configurable: true
});
});
Object.keys(propDescriptors).forEach(k => {
const descriptor = propDescriptors[k];
const {
get,
value: v = get
} = descriptor;
const kind = v.length === 0 ? 'get' : 'value';
const v2 = v.length === 0 ? function () {
return v.call(this[_reserved._parent]);
} : function (...args) {
return v.call(this[_reserved._parent], ...args);
};
Object.defineProperty(proto, k, {
[kind]: v2,
configurable: true
});
if (reducers[k]) respond.overriden.set(reducers[k], true); // disable potential child reducer mock (aka "defaultProp")
if (state.hasOwnProperty(k)) delete state[k]; // delete possible initialState
respond.dependsOnAllAncestors = true;
});
};
var _default = exports.default = createSelectors;
const curr = {
get: _curr.default
};
const builtins = Object.getOwnPropertyDescriptors({
token: _token.default,
userId: _token.userId,
adminUserId: _token.adminUserId,
adminUser: _token.adminUser
});