unix-permissions
Version:
Swiss Army knife for Unix permissions
40 lines (26 loc) • 754 B
JavaScript
import{SPECIAL_PERMISSIONS}from"../../constants.js";
import{getNodesMap,NODES_MAP}from"../../nodes.js";
import{contractSpecial}from"./tokenize.js";
export const serialize=(nodes)=>{
const addedNodes=getAddedNodes({nodes});
const stat=Object.entries(NODES_MAP).
map(([nodeKey,node])=>serializeNode({node,nodeKey,addedNodes})).
join("");
const statA=contractSpecial(stat);
return statA
};
const getAddedNodes=({nodes})=>{
const nodesA=nodes.filter(hasAdd);
return getNodesMap(nodesA)
};
const hasAdd=({add})=>add===true;
const serializeNode=({node:{permission},nodeKey,addedNodes})=>{
if(addedNodes[nodeKey]!==undefined){
return permission
}
if(SPECIAL_PERMISSIONS.has(permission)){
return""
}
return NO_PERMISSION
};
const NO_PERMISSION="-";