sec-edgar-toolkit
Version:
Open source toolkit to facilitate working with the SEC EDGAR database
61 lines • 2.34 kB
JavaScript
;
/**
* Company endpoints for SEC EDGAR API
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.CompanyEndpoints = void 0;
const SEC_BASE_URL = 'https://data.sec.gov';
class CompanyEndpoints {
constructor(httpClient) {
this.companyTickersCache = null;
this.httpClient = httpClient;
}
async getCompanyTickers(forceRefresh = false) {
if (!this.companyTickersCache || forceRefresh) {
const url = `${SEC_BASE_URL}/files/company_tickers.json`;
this.companyTickersCache = await this.httpClient.get(url);
}
return this.companyTickersCache;
}
async getCompanyByTicker(ticker) {
const tickers = await this.getCompanyTickers();
const upperTicker = ticker.toUpperCase();
for (const [, company] of Object.entries(tickers)) {
if (typeof company === 'object' && company !== null && 'ticker' in company) {
if (company.ticker?.toUpperCase() === upperTicker) {
return company;
}
}
}
return null;
}
async getCompanyByCik(cik) {
const tickers = await this.getCompanyTickers();
const cikStr = typeof cik === 'number' ? cik.toString().padStart(10, '0') : cik.padStart(10, '0');
for (const [, company] of Object.entries(tickers)) {
if (typeof company === 'object' && company !== null && 'cik_str' in company) {
if (company.cik_str === cikStr) {
return company;
}
}
}
return null;
}
async searchCompanies(query) {
const tickers = await this.getCompanyTickers();
const lowerQuery = query.toLowerCase();
const results = [];
for (const [, company] of Object.entries(tickers)) {
if (typeof company === 'object' && company !== null && 'title' in company) {
const companyData = company;
if (companyData.title?.toLowerCase().includes(lowerQuery) ||
companyData.ticker?.toLowerCase().includes(lowerQuery)) {
results.push(companyData);
}
}
}
return results;
}
}
exports.CompanyEndpoints = CompanyEndpoints;
//# sourceMappingURL=company.js.map