UNPKG

@stryke/json

Version:

A package containing JSON parsing/stringify utilities used by Storm Software.

39 lines (38 loc) 1.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isObjectReference = exports.isArrayReference = exports.isArrayEnd = exports.find = void 0; var _isSetObject = require("@stryke/type-checks/is-set-object"); var _isString = require("@stryke/type-checks/is-string"); const { isArray: i } = Array; const find = (e, t) => { const f = t.length; if (!f) return { val: e }; let r, n; for (let o = 0; o < f; o++) if (r = e, n = t[o], i(r)) { const y = r.length; if (n === "-") n = y;else if ((0, _isString.isString)(n)) { const c = Math.trunc(n); if (String(c) !== n) throw new Error("INVALID_INDEX"); if (n = c, n < 0) throw new Error("INVALID_INDEX"); } n && (e = r[n]); } else if ((0, _isSetObject.isSetObject)(r)) e = n in r ? r[n] : void 0;else throw new Error("NOT_FOUND"); return { val: e, obj: r, key: n }; }, isArrayReference = e => i(e.obj) && typeof e.key == "number", isArrayEnd = e => e.obj.length === e.key, isObjectReference = e => typeof e.obj == "object" && typeof e.key == "string"; exports.isObjectReference = isObjectReference; exports.isArrayEnd = isArrayEnd; exports.isArrayReference = isArrayReference; exports.find = find;