set-array
Version:
Set array items declaratively
38 lines (23 loc) • 651 B
JavaScript
import isPlainObj from"is-plain-obj";
export const test=(updatesObj)=>testUpdatesObj(updatesObj)===undefined;
export const testUpdatesObj=(updatesObj)=>{
if(!isPlainObj(updatesObj)){
return{error:"plainObj"}
}
for(const key in updatesObj){
if(!isValidKey(key)){
return{error:"key",key}
}
}
return testSymbols(updatesObj)
};
const testSymbols=(updatesObj)=>{
const[symbol]=Object.getOwnPropertySymbols(updatesObj);
if(symbol!==undefined){
return{error:"symbol",symbol}
}
};
const isValidKey=(key)=>key===ANY_KEY||UPDATE_KEY_REGEXP.test(key);
export const ANY_KEY="*";
export const PREPEND_CHAR="+";
const UPDATE_KEY_REGEXP=/^-?\d+\+?$/u;