UNPKG

unix-permissions

Version:
48 lines (30 loc) 892 B
import{excludeKeys}from"filter-obj"; import isPlainObj from"is-plain-obj"; import{getNodesMap,NODES_MAP}from"./nodes.js"; import{TYPES}from"./types/main.js"; export const parse=(perm)=>{ const{type,nodes}=TYPES.reduce(parseReduce.bind(undefined,perm),{}); validateNodes({nodes,perm}); const nodesMap=normalizeNodes({nodes}); return{type,nodesMap} }; const parseReduce=(perm,memo,type)=>{ if(memo.nodes!==undefined){ return memo } const nodes=type.parse(perm); return{type,nodes} }; const validateNodes=({nodes,perm})=>{ if(nodes!==undefined){ return } const permA=isPlainObj(perm)?JSON.stringify(perm):perm; throw new Error(`Permissions syntax is invalid: ${permA}`) }; const normalizeNodes=({nodes})=>{ const nodesMap=getNodesMap(nodes); const nodesMapA=excludeKeys(nodesMap,isInvalidNode); return nodesMapA }; const isInvalidNode=(nodeKey)=>NODES_MAP[nodeKey]===undefined;