sec-edgar-api
Version:
Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.
35 lines (34 loc) • 2.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseCompanies = void 0;
var XMLParser_1 = require("../XMLParser");
function parseCompanies(params) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
var xml = params.xml;
var parser = new XMLParser_1.default({ textSelectStrategy: 'concatenate', textConcatDivider: '<>' });
var result = parser.parse(xml);
var body = (_b = (_a = result.html) === null || _a === void 0 ? void 0 : _a.body) !== null && _b !== void 0 ? _b : {};
var bodyDivs = Array.isArray(body.div) ? body.div : [body.div].filter(Boolean);
var contentDiv = (_c = bodyDivs.find(function (d) { return d && typeof d === 'object' && d['@_id'] === 'contentDiv'; })) !== null && _c !== void 0 ? _c : {};
var tableDivs = Array.isArray(contentDiv.div) ? contentDiv.div : [contentDiv.div].filter(Boolean);
var tableDiv = (_d = tableDivs.find(function (d) { return d && typeof d === 'object' && d['@_id'] === 'seriesDiv'; })) !== null && _d !== void 0 ? _d : {};
var rows = (_j = (_f = (_e = tableDiv.table) === null || _e === void 0 ? void 0 : _e.tr) !== null && _f !== void 0 ? _f : (_h = (_g = tableDiv.table) === null || _g === void 0 ? void 0 : _g.tbody) === null || _h === void 0 ? void 0 : _h.tr) !== null && _j !== void 0 ? _j : [];
rows = (Array.isArray(rows) ? rows : [rows])
.filter(function (r) { return r === null || r === void 0 ? void 0 : r.td; })
.map(function (r) { return (Array.isArray(r.td) ? r.td : [r.td]).filter(Boolean); });
var items = [];
for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {
var row = rows_1[_i];
var cik = Number((_l = (_k = row[0]) === null || _k === void 0 ? void 0 : _k.a) === null || _l === void 0 ? void 0 : _l['#text']) || 0;
if (!cik)
continue;
var row1Parts = (_o = (((_m = row[1]) === null || _m === void 0 ? void 0 : _m['#text']) || '').split('<>')) !== null && _o !== void 0 ? _o : [];
var sic = Number((_q = (_p = row[1]) === null || _p === void 0 ? void 0 : _p.a) === null || _q === void 0 ? void 0 : _q['#text']) || null;
var companyName = row1Parts[0].trim();
var sicDescription = sic ? ((_r = row1Parts.pop()) === null || _r === void 0 ? void 0 : _r.replace('-', '').trim()) || null : null;
var stateOrCountry = ((_t = (_s = row[2]) === null || _s === void 0 ? void 0 : _s.a) === null || _t === void 0 ? void 0 : _t['#text']) || null;
items.push({ cik: cik, sic: sic, sicDescription: sicDescription, companyName: companyName, stateOrCountry: stateOrCountry });
}
return { items: items };
}
exports.parseCompanies = parseCompanies;