UNPKG

sec-edgar-api

Version:

Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.

77 lines (76 loc) 3.7 kB
"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"> // &lt;b&gt;Filed:&lt;/b&gt; 2024-12-13 &lt;b&gt;AccNo:&lt;/b&gt; 0001393905-24-000423 &lt;b&gt;Size:&lt;/b&gt; 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('&gt; ', entryLinkEnd) + 5; var entryFiledEnd = xml.indexOf(' &lt;', entryFiled); var entryAccNo = xml.indexOf('AccNo:&lt;/b&gt; ', entryFiledEnd) + 17; var entryAccNoEnd = xml.indexOf(' &lt;', entryAccNo); var entrySize = xml.indexOf('Size:&lt;/b&gt; ', 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;