sec-edgar-api
Version:
Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.
77 lines (76 loc) • 3.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseCurrentFilings = void 0;
function parseCurrentFilings(params) {
var xml = params.xml;
var indexTitle = xml.indexOf('<title>') + 7;
var indexTitleEnd = xml.indexOf('</title>', indexTitle);
var indexId = xml.indexOf('<id>', indexTitleEnd + 8) + 4;
var indexIdEnd = xml.indexOf('</id>', indexId);
var indexUpdated = xml.indexOf('<updated>', indexIdEnd + 5) + 9;
var indexUpdatedEnd = xml.indexOf('</updated>', indexUpdated);
var indexEntries = xml.indexOf('<entry>', indexUpdatedEnd + 10);
var title = xml.substring(indexTitle, indexTitleEnd);
var id = xml.substring(indexId, indexIdEnd);
var updated = xml.substring(indexUpdated, indexUpdatedEnd);
// Entry example:
// <title>10-K - Galaxy Enterprises Inc. /WY/ (0001871890) (Filer)</title>
// <link rel="alternate" type="text/html" href="https://www.sec.gov/Archives/edgar/data/1871890/000139390524000423/0001393905-24-000423-index.htm"/>
// <summary type="html">
// <b>Filed:</b> 2024-12-13 <b>AccNo:</b> 0001393905-24-000423 <b>Size:</b> 1 MB
// </summary>
// <updated>2024-12-13T15:51:46-05:00</updated>
// <category scheme="https://www.sec.gov/" label="form type" term="10-K"/>
// <id>urn:tag:sec.gov,2008:accession-number=0001393905-24-000423</id>
// </entry>
var entries = [];
for (var i = indexEntries; i < xml.length; i++) {
var entryTitle = xml.indexOf('<title>', i) + 7;
var entryTitleEnd = xml.indexOf('</title>', entryTitle);
var entryLink = xml.indexOf('href="', entryTitleEnd) + 6;
var entryLinkEnd = xml.indexOf('"', entryLink);
var entryFiled = xml.indexOf('> ', entryLinkEnd) + 5;
var entryFiledEnd = xml.indexOf(' <', entryFiled);
var entryAccNo = xml.indexOf('AccNo:</b> ', entryFiledEnd) + 17;
var entryAccNoEnd = xml.indexOf(' <', entryAccNo);
var entrySize = xml.indexOf('Size:</b> ', entryAccNoEnd) + 16;
var entrySizeEnd = xml.indexOf('\n', entrySize);
var entryUpdated = xml.indexOf('<updated>', entrySizeEnd) + 9;
var entryUpdatedEnd = xml.indexOf('</updated>', entryUpdated);
var entryForm = xml.indexOf('term="', entryUpdatedEnd) + 6;
var entryFormEnd = xml.indexOf('"', entryForm);
i = xml.indexOf('<entry>', entryFormEnd);
var title_1 = xml.substring(entryTitle, entryTitleEnd);
var link = xml.substring(entryLink, entryLinkEnd);
var filingDate = xml.substring(entryFiled, entryFiledEnd);
var accessionNumber = xml.substring(entryAccNo, entryAccNoEnd);
var size = xml.substring(entrySize, entrySizeEnd);
var updated_1 = xml.substring(entryUpdated, entryUpdatedEnd);
var form = xml.substring(entryForm, entryFormEnd);
var url = "".concat(link.substring(0, link.lastIndexOf('/')), "/").concat(accessionNumber, ".txt");
var cikStart = link.indexOf('data/') + 5;
var cikEnd = link.indexOf('/', cikStart);
var cik = Number(link.substring(cikStart, cikEnd)) || 0;
entries.push({
title: title_1,
cik: cik,
link: link,
accessionNumber: accessionNumber,
filingDate: filingDate,
form: form,
size: size,
updated: updated_1,
url: url,
});
if (i === -1) {
break;
}
}
return {
title: title,
id: id,
updated: updated,
entries: entries,
};
}
exports.parseCurrentFilings = parseCurrentFilings;