sec-edgar-api
Version:
Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.
41 lines (40 loc) • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var _ReportTranslatedProxy = /** @class */ (function () {
function _ReportTranslatedProxy(report) {
this.changedKeys = new Set();
var reportKeys = new Set(Object.keys(report));
return new Proxy(this, {
// when accessing property of report, return the value of the report instead of the wrapper
get: function (target, key, receiver) {
return reportKeys.has(String(key)) ? Reflect.get(report, key) : Reflect.get(target, key, receiver);
},
// record changed properties
set: function (target, key, value, receiver) {
if (reportKeys.has(String(key))) {
target.changedKeys.add(String(key));
return Reflect.set(report, key, value);
}
return Reflect.set(target, key, value, receiver);
},
// makes Object.keys return report keys
ownKeys: function () {
return Reflect.ownKeys(report);
},
getOwnPropertyDescriptor: function (target, key) {
return reportKeys.has(String(key))
? Reflect.getOwnPropertyDescriptor(report, key)
: Reflect.getOwnPropertyDescriptor(target, key);
},
});
}
_ReportTranslatedProxy.prototype.getChangedKeys = function () {
return Array.from(this.changedKeys);
};
return _ReportTranslatedProxy;
}());
/**
* Used to make ReportWrapper implement ReportTranslated interface via proxy
*/
var ReportTranslatedProxy = _ReportTranslatedProxy;
exports.default = ReportTranslatedProxy;