UNPKG

@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
"use strict"; 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; }