UNPKG

sec-edgar-api

Version:

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

62 lines (61 loc) 2.95 kB
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 {};