sec-edgar-toolkit
Version:
Open source toolkit to facilitate working with the SEC EDGAR database
64 lines • 2.57 kB
JavaScript
;
/**
* 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