get-or-throw
Version:
A convenience function for safely getting values from dynamic objects and arrays
70 lines (67 loc) • 2.09 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
getOrThrow: () => getOrThrow,
got: () => getOrThrow
});
module.exports = __toCommonJS(src_exports);
// 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.`
);
}
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
getOrThrow,
got
});