UNPKG

txho

Version:

Get a Bitcoin transaction as JSON for CLI and node

54 lines (53 loc) 2.25 kB
"use strict"; exports.__esModule = true; var recursiveCloneAndFilter = function (object, predicate, objectPath, knownObjects) { if (objectPath === void 0) { objectPath = []; } if (knownObjects === void 0) { knownObjects = []; } if (object && !knownObjects.includes(object) && typeof object === 'object') { if (object.constructor && object.constructor.name === 'Object') { var currentknownObjects_1 = knownObjects.concat([object]); var copy_1 = {}; Object.keys(object).forEach(function (key) { var value = object[key]; var currentPath = objectPath.concat(key); if (predicate(currentPath, value)) { copy_1[key] = recursiveCloneAndFilter(value, predicate, currentPath, currentknownObjects_1); } }); return copy_1; } else if (Array.isArray(object)) { var copy_2 = []; object.forEach(function (value, index) { copy_2[index] = recursiveCloneAndFilter(value, predicate, objectPath, knownObjects); }); return copy_2; } } return object; }; var arrayStartsWithArray = function (a, b) { return (b.filter(function (element, index) { return a[index] !== b[index]; }).length === 0); }; exports["default"] = (function (object, projection) { var defaultPredicate = !Object.values(projection).includes(1); return recursiveCloneAndFilter(object, function (cpath) { var filteredPaths = Object.keys(projection).filter(function (ppathString) { var cpathString = cpath.join('.'); var ppath = ppathString.split('.'); if (arrayStartsWithArray(ppath, cpath) || arrayStartsWithArray(cpath, ppath)) { if (defaultPredicate) { return ppathString === cpathString && !projection[ppathString] === defaultPredicate; } return ppathString === cpathString || !projection[ppathString] === defaultPredicate; } return false; }); if (filteredPaths.length) { return !defaultPredicate; } return defaultPredicate; }); });