sec-edgar-api
Version:
Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.
61 lines (60 loc) • 2.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var ObjectUtil = /** @class */ (function () {
function ObjectUtil(args) {
var _a = (args !== null && args !== void 0 ? args : {}).pathSeparator, pathSeparator = _a === void 0 ? '>' : _a;
this.pathSeparator = pathSeparator;
}
ObjectUtil.prototype.iterateKeysDeep = function (obj, cb) {
var _this = this;
var originalObj = obj;
var isBreak = false;
var breakLoop = function () { return (isBreak = true); };
// prevents original object from being modified
var _iterateKeys = function (obj, cb, path) {
var isNextKey = false;
var nextKey = function () { return (isNextKey = true); };
for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {
var key = _a[_i];
isNextKey = false;
var value = obj[key];
var p = path ? "".concat(path).concat(_this.pathSeparator).concat(key) : key;
cb({
key: key,
value: value,
currentObj: obj,
originalObj: originalObj,
pathSeparator: _this.pathSeparator,
path: p,
nextKey: nextKey,
breakLoop: breakLoop,
});
if (isBreak)
return;
if (isNextKey)
continue;
var isObjOrArr = typeof value === 'object' && value !== null;
if (isObjOrArr)
_iterateKeys(obj[key], cb, p);
}
};
_iterateKeys(obj, cb, '');
};
ObjectUtil.prototype.setPath = function (obj, path, value, pathSeparator) {
var _a;
var keys = path.split(pathSeparator !== null && pathSeparator !== void 0 ? pathSeparator : this.pathSeparator);
var ref = obj;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (i === keys.length - 1) {
ref[key] = value;
}
else {
(_a = ref[key]) !== null && _a !== void 0 ? _a : (ref[key] = {});
ref = ref[key];
}
}
};
return ObjectUtil;
}());
exports.default = ObjectUtil;