UNPKG

@aplus-frontend/utils

Version:

Utils for Aplus frontend team.

93 lines (92 loc) 2.66 kB
const createStatusAuth = (statusMap) => { var _a, _b, _c; let authTransMap = {}; let statusTransMap = {}; let authFunMap = {}; const statusLength = (_a = Object.keys(statusMap)) == null ? void 0 : _a.length; if (!statusLength) return authFunMap; const authList = [ ...new Set( ((_b = Object.keys(statusMap)) == null ? void 0 : _b.reduce((c, v) => { c = [...c, ...statusMap[v]]; return c; }, [])) || [] ) ]; const authLength = (authList == null ? void 0 : authList.length) || 0; if (authLength === 0) return authFunMap; authTransMap = authList == null ? void 0 : authList.reduce( (c, v, i) => { const arr = new Array(authLength).fill(0); arr.splice(i, 1, 1); c[v] = Number(`0b${arr.join("")}`); return c; }, {} ); statusTransMap = (_c = Object.keys(statusMap)) == null ? void 0 : _c.reduce( (c, v) => { var _a2; c[v] = (_a2 = [...new Set(statusMap[v])]) == null ? void 0 : _a2.reduce( (cc, vv) => cc + (authTransMap[vv] ?? 0), 0 ); return c; }, {} ); authFunMap = Object.keys(authTransMap).reduce( (c, v) => { c[`${v}Auth`] = (status) => { if (!status) { return false; } return (statusTransMap[status] & authTransMap[v]) === authTransMap[v]; }; return c; }, {} ); return authFunMap; }; const createStatusGroupAuth = (...statusMapList) => { let authFunMap = {}; let statusMapTransList = []; const statusMapListLength = statusMapList == null ? void 0 : statusMapList.length; if (!statusMapListLength) return authFunMap; const authList = [ ...new Set( statusMapList == null ? void 0 : statusMapList.reduce((current, statusMap) => { var _a; current = [ ...current, ...((_a = Object.keys(statusMap)) == null ? void 0 : _a.reduce((c, v) => { c = [...c, ...statusMap[v]]; return c; }, [])) || [] ]; return current; }, []) ) ]; statusMapTransList = statusMapList == null ? void 0 : statusMapList.map( (statusMap) => createStatusAuth(statusMap) ); authFunMap = authList == null ? void 0 : authList.reduce( (c, v) => { c[`${v}Auth`] = (...statusList) => { return statusList.every((status, index) => { var _a, _b; return ((_b = (_a = statusMapTransList[index]) == null ? void 0 : _a[`${v}Auth`]) == null ? void 0 : _b.call(_a, status)) ?? false; }); }; return c; }, {} ); return authFunMap; }; export { createStatusAuth, createStatusGroupAuth };