unix-permissions
Version:
Swiss Army knife for Unix permissions
44 lines (28 loc) • 971 B
JavaScript
import{excludeKeys}from"filter-obj";
import{variableMap}from"../helpers.js";
import{mapValues}from"../utils.js";
const minMaxMap=(values,nodesMap,nodesMapA)=>{
const mergedNodes={...nodesMap,...nodesMapA};
const nodesMapB=mapValues(mergedNodes,(node,nodeKey)=>
findNode({values,nodesMap,nodesMapA,nodeKey})
);
const nodesMapC=excludeKeys(nodesMapB,isUndefined);
return nodesMapC
};
const findNode=({values,nodesMap,nodesMapA,nodeKey})=>{
const[nodeB]=values.
flatMap((value)=>[
[nodesMap[nodeKey],value],
[nodesMapA[nodeKey],value]]
).
find(hasValue);
return nodeB
};
const hasValue=([{add}={},value])=>add===value;
const isUndefined=(key,value)=>value===undefined;
const MIN_VALUES=[false,undefined,true];
const minMap=minMaxMap.bind(undefined,MIN_VALUES);
export const min=variableMap.bind(undefined,minMap);
const MAX_VALUES=[true,undefined,false];
const maxMap=minMaxMap.bind(undefined,MAX_VALUES);
export const max=variableMap.bind(undefined,maxMap);