UNPKG

unix-permissions

Version:
48 lines (33 loc) 1.04 kB
import{LONG_CATEGORIES}from"../../constants.js"; import{getNodeKey}from"../../nodes.js"; import{groupBy,mapValues}from"../../utils.js"; import{ LONG_PERMISSIONS, SERIALIZE_SPECIAL, SPECIAL_CATEGORY}from "./constants.js"; import{compareNodes}from"./sort.js"; export const serialize=(nodes)=>{ const nodesA=nodes.map(serializeNode).sort(compareNodes); const object=groupBy(nodesA,"category"); const objectA=mapValues(object,mergePerms); return objectA }; const serializeNode=(node)=>{ const specialPerm=getSpecialPerm({node}); if(specialPerm!==undefined){ return{...node,category:SPECIAL_CATEGORY,permission:specialPerm} } const category=LONG_CATEGORIES[node.category]; const permission=LONG_PERMISSIONS[node.permission]; return{...node,category,permission} }; const getSpecialPerm=({node})=>{ const nodeKey=getNodeKey(node); return SERIALIZE_SPECIAL[nodeKey] }; const mergePerms=(perms)=>{ const permsA=perms.map(normalizePerm); return Object.assign({},...permsA) }; const normalizePerm=({permission,add})=>({[permission]:add});