UNPKG

set-array

Version:
71 lines (48 loc) 984 B
import{groupBy}from"./group.js"; export const concatUpdates=(updates)=>{ if(updates.length===1){ return updates } const updatesA=Object.values(groupBy(updates,"index")).map(concatGroup); return[...updatesA].sort(secondSortFunc) }; const concatGroup=(updates)=>{ if(updates.length===1){ return updates[0] } const[{index,any}]=updates; const updatesA=[...updates].sort(firstSortFunc); const items=updatesA.flatMap(getItems); return{index,any,items} }; const getItems=({items})=>items; const firstSortFunc=(updateA,updateB)=>{ if(updateA.negation<updateB.negation){ return-1 } if(updateA.negation>updateB.negation){ return 1 } if(updateA.fullIndex<updateB.fullIndex){ return-1 } if(updateA.fullIndex>updateB.fullIndex){ return 1 } return 0 }; const secondSortFunc=(updateA,updateB)=>{ if(updateA.any<updateB.any){ return 1 } if(updateA.any>updateB.any){ return-1 } if(updateA.index<updateB.index){ return-1 } if(updateA.index>updateB.index){ return 1 } return 0 };