UNPKG

decode-it

Version:

a simple zero-dependency type safe json decoder for typescript

39 lines 1.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deepEq = exports.shallowEq = exports.objectDeepEqual = exports.arrayDeepEqual = exports.flatObject = void 0; const typeCheckers_1 = require("./typeCheckers"); const flatObject = (obj) => Object.entries(obj).reduce((flattened, prop) => { const [key, value] = prop; if (typeCheckers_1.isObject(value)) { const innerObj = exports.flatObject(value); return flattened.concat(innerObj.map(([innerKey, val]) => [`${key}.${innerKey}`, val])); } return flattened.concat([prop]); }, []); exports.flatObject = flatObject; function arrayDeepEqual(as, bs) { return as.every((a, i) => { const b = bs[i]; if (typeCheckers_1.isObject(a) && typeCheckers_1.isObject(b)) return objectDeepEqual(a, b); if (typeCheckers_1.isArray(a) && typeCheckers_1.isArray(b)) return arrayDeepEqual(a, b); return b === a; }); } exports.arrayDeepEqual = arrayDeepEqual; function objectDeepEqual(a, b) { return arrayDeepEqual(Object.entries(a), Object.entries(b)); } exports.objectDeepEqual = objectDeepEqual; const shallowEq = (a, b) => a === b; exports.shallowEq = shallowEq; const deepEq = (a, b) => { if (typeCheckers_1.isObject(a) && typeCheckers_1.isObject(b)) return objectDeepEqual(a, b); if (typeCheckers_1.isArray(a) && typeCheckers_1.isArray(b)) return arrayDeepEqual(a, b); return exports.shallowEq(a, b); }; exports.deepEq = deepEq; //# sourceMappingURL=utils.js.map