sec-edgar-api
Version:
Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.
62 lines (61 loc) • 2.95 kB
TypeScript
import type { CalculationMap, CompanyFactListData, ReportRaw, ReportTranslated } from '../../types';
import ReportRawBuilder from '../ReportRawBuilder';
import { BuildReportsParams } from '../ReportRawBuilder/ReportRawBuilder';
import PropertyResolver from './PropertyResolver';
import ReportWrapper from './ReportWrapper';
interface ReportParserArgs {
reportBuilder?: ReportRawBuilder;
propertyResolver?: PropertyResolver;
keyTranslator?: Record<string, string[]>;
defaultCalculationMap?: CalculationMap<ReportTranslated>;
}
type TranslateRawReportsCallback<T> = (report: T extends undefined ? ReportTranslated : Record<keyof T, string | number>, reportRaw: ReportRaw, keyTranslator: T) => ReportTranslated | ReportRaw | Record<string, string | number | null>;
/**
* Takes company facts data from the SEC and translates them to reports as json objects.
*/
export default class ReportParser {
private readonly keyTranslator;
private readonly propertyResolver;
private readonly reportBuilder;
private defaultCalculationMap;
constructor(args?: ReportParserArgs);
/**
* Same as parseReports but accepts ReportRaw[] instead of CompanyFactListData
*
* @deprecated Formerly parseReportsFromRaw. Will be removed in future version.
*/
parseReportsFromRawLegacy(params: {
reportsRaw: ReportRaw[];
usePropertyResolver?: boolean;
}): ReportWrapper[];
/**
* Same as parseReports but accepts ReportRaw[] instead of CompanyFactListData
*/
translateReport<T = ReportTranslated>(params: {
report: ReportRaw;
calculationMap?: CalculationMap<T>;
}): ReportRaw & T;
/**
* Parse raw reports
*
* @see https://www.sec.gov/edgar/sec-api-documentation
*/
parseReportsRaw(companyFactListData: CompanyFactListData, options?: Omit<BuildReportsParams, 'facts'> & {
includeNamePrefix?: boolean;
}): ReportRaw[];
/**
* Builds ReportRaw[] from facts
*/
buildReports(params: BuildReportsParams): ReportRaw[];
/**
* @deprecated use translateReport
*
* Translate ReportRaw to ReportTranslated by default, but can be used to translate to any object using both the callback and keyTranslator
*
* @param reportsRaw this is the output of parseReportsRaw
* @param callback this is called for each report and can be used to modify the report. This gets the report built by keyTranslator if provided, otherwise ReportTranslated
* @param keyTranslator this is iterated through to build the report using the keys. If the ReportRaw has a key that matches a key in the keyTranslator, the value is used. if not, the value is null
*/
translateReportsRaw<C extends TranslateRawReportsCallback<T>, T extends undefined | object = undefined>(reportsRaw: ReportRaw[], callback?: C, keyTranslator?: T): C extends unknown ? ReportTranslated[] : ReturnType<C>[];
}
export {};