UNPKG

get-or-throw

Version:

A convenience function for safely getting values from dynamic objects and arrays

42 lines (41 loc) 1.05 kB
// src/get-or-throw.ts function getOrThrow(objOrArr, keyOrIndex, errorMessage) { if (Array.isArray(objOrArr)) { const length = objOrArr.length; let index = keyOrIndex; if (index < 0) { index = length + index; } if (index >= 0 && index < length) { const value = objOrArr[index]; if (value === void 0) { throw new Error( errorMessage ?? `Value at index ${String(keyOrIndex)} is undefined.` ); } return value; } else { throw new Error( errorMessage ?? `Index ${String(keyOrIndex)} is out of bounds.` ); } } else { if (keyOrIndex in objOrArr) { const value = objOrArr[keyOrIndex]; if (value === void 0) { throw new Error( errorMessage ?? `Value at key "${String(keyOrIndex)}" is undefined.` ); } return value; } else { throw new Error( errorMessage ?? `Key "${String(keyOrIndex)}" does not exist in the object.` ); } } } export { getOrThrow, getOrThrow as got };