@stryke/helpers
Version:
A package containing miscellaneous helper functions that are used across many different Storm Software projects.
43 lines (42 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getField = getField;
var _toStringKey = require("@stryke/convert/to-string-key");
var _isDeepKey = require("@stryke/type-checks/is-deep-key");
var _isNumber = require("@stryke/type-checks/is-number");
var _toPath = require("./to-path.cjs");
function getField(t, e, d) {
if (t === null) return d;
switch (typeof e) {
case "string":
{
const n = t[e];
return n === void 0 ? (0, _isDeepKey.isDeepKey)(e) ? getField(t, (0, _toPath.toPath)(e), d) : d : n;
}
case "number":
case "symbol":
{
(0, _isNumber.isNumber)(e) && (e = (0, _toStringKey.toStringKey)(e));
const n = Array.isArray(e) ? void 0 : t[e];
return n === void 0 ? d : n;
}
default:
{
if (Array.isArray(e)) return u(t, e, d);
e = Object.is(e?.valueOf(), -0) ? "-0" : String(e);
const n = t[e];
return n === void 0 ? d : n;
}
}
}
function u(t, e, d) {
if (e.length === 0) return d;
let n = t;
for (const i of e) {
if (n === null) return d;
n = n[i];
}
return n === void 0 ? d : n;
}