UNPKG

sec-edgar-toolkit

Version:

Open source toolkit to facilitate working with the SEC EDGAR database

64 lines 2.57 kB
"use strict"; /** * Filing endpoints for SEC EDGAR API */ Object.defineProperty(exports, "__esModule", { value: true }); exports.FilingsEndpoints = void 0; const SEC_BASE_URL = 'https://data.sec.gov'; class FilingsEndpoints { constructor(httpClient) { this.httpClient = httpClient; } async getCompanySubmissions(cik, options = {}) { const cikStr = typeof cik === 'number' ? cik.toString().padStart(10, '0') : cik.padStart(10, '0'); const url = `${SEC_BASE_URL}/submissions/CIK${cikStr}.json`; let submissions = await this.httpClient.get(url); // Apply filters if provided if (options.submissionType || options.fromDate || options.toDate) { submissions = this.filterSubmissions(submissions, options); } return submissions; } async getFiling(cik, accessionNumber) { const cikStr = typeof cik === 'number' ? cik.toString().padStart(10, '0') : cik.padStart(10, '0'); const accessionFormatted = accessionNumber.replace(/-/g, ''); const url = `${SEC_BASE_URL}/Archives/edgar/data/${parseInt(cikStr)}/${accessionFormatted}/${accessionNumber}-index.json`; return await this.httpClient.get(url); } filterSubmissions(submissions, options) { if (!submissions.filings || !submissions.filings.recent) { return submissions; } const { recent } = submissions.filings; let indices = recent.accessionNumber.map((_, index) => index); // Filter by submission type if (options.submissionType) { indices = indices.filter((i) => recent.form[i] === options.submissionType); } // Filter by date range if (options.fromDate || options.toDate) { indices = indices.filter((i) => { const filingDate = recent.filingDate[i]; if (options.fromDate && filingDate < options.fromDate) return false; if (options.toDate && filingDate > options.toDate) return false; return true; }); } // Create filtered results const filteredRecent = {}; Object.keys(recent).forEach(key => { filteredRecent[key] = indices.map((i) => recent[key][i]); }); return { ...submissions, filings: { ...submissions.filings, recent: filteredRecent } }; } } exports.FilingsEndpoints = FilingsEndpoints; //# sourceMappingURL=filings.js.map