UNPKG

@stryke/json

Version:

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

2 lines (1 loc) 681 B
import{isSetObject as s}from"@stryke/type-checks/is-set-object";import{isString as a}from"@stryke/type-checks/is-string";const{isArray:i}=Array;export 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(a(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(s(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";