sec-edgar-api 0.3.4 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/build/services/DocumentParser/DocumentParser.d.ts +18 -1
  2. package/build/services/DocumentParser/DocumentParser.js +17 -2
  3. package/build/services/DocumentParser/DocumentXmlSplitter.d.ts +17 -0
  4. package/build/services/DocumentParser/DocumentXmlSplitter.js +38 -0
  5. package/build/services/DocumentParser/ObjectUtil.d.ts +20 -0
  6. package/build/services/DocumentParser/ObjectUtil.js +60 -0
  7. package/build/services/DocumentParser/XBRLParser/HeaderParser.d.ts +38 -0
  8. package/build/services/DocumentParser/XBRLParser/HeaderParser.js +138 -0
  9. package/build/services/DocumentParser/XBRLParser/InstanceParser.d.ts +6 -0
  10. package/build/services/DocumentParser/XBRLParser/InstanceParser.js +107 -0
  11. package/build/services/DocumentParser/XBRLParser/LinkbaseParser.d.ts +13 -0
  12. package/build/services/DocumentParser/XBRLParser/LinkbaseParser.js +99 -0
  13. package/build/services/DocumentParser/XBRLParser/SchemaParser.d.ts +11 -0
  14. package/build/services/DocumentParser/XBRLParser/SchemaParser.js +144 -0
  15. package/build/services/DocumentParser/XBRLParser/XBRLParser.d.ts +34 -0
  16. package/build/services/DocumentParser/XBRLParser/XBRLParser.js +64 -0
  17. package/build/services/DocumentParser/XBRLParser/util-type.d.ts +15 -0
  18. package/build/services/DocumentParser/XBRLParser/util-type.js +34 -0
  19. package/build/services/DocumentParser/XMLParser.d.ts +9 -38
  20. package/build/services/DocumentParser/XMLParser.js +87 -280
  21. package/build/services/DocumentParser/XMLParserLegacy.d.ts +43 -0
  22. package/build/services/DocumentParser/XMLParserLegacy.js +308 -0
  23. package/build/services/DocumentParser/parsers/index.d.ts +10 -0
  24. package/build/services/DocumentParser/parsers/index.js +10 -0
  25. package/build/services/DocumentParser/parsers/parse-companies.d.ts +5 -0
  26. package/build/services/DocumentParser/parsers/parse-companies.js +52 -0
  27. package/build/services/DocumentParser/parsers/parse-current-filings-xbrl.d.ts +2 -0
  28. package/build/services/DocumentParser/parsers/parse-current-filings-xbrl.js +104 -0
  29. package/build/services/DocumentParser/parsers/parse-current-filings.d.ts +2 -0
  30. package/build/services/DocumentParser/parsers/parse-current-filings.js +76 -0
  31. package/build/services/DocumentParser/parsers/parse-form-10k.d.ts +1 -1
  32. package/build/services/DocumentParser/parsers/parse-form-10k.js +2 -2
  33. package/build/services/DocumentParser/parsers/parse-form-13g.d.ts +1 -1
  34. package/build/services/DocumentParser/parsers/parse-form-13g.js +2 -2
  35. package/build/services/DocumentParser/parsers/parse-form-4.d.ts +1 -1
  36. package/build/services/DocumentParser/parsers/parse-form-4.js +2 -2
  37. package/build/services/DocumentParser/parsers/parse-form-def14a.d.ts +1 -1
  38. package/build/services/DocumentParser/parsers/parse-form-def14a.js +2 -2
  39. package/build/services/DocumentParser/parsers/parse-insider-transaction.d.ts +7 -0
  40. package/build/services/DocumentParser/parsers/parse-insider-transaction.js +199 -0
  41. package/build/services/DocumentParser/parsers/parse-xbrl.d.ts +8 -0
  42. package/build/services/DocumentParser/parsers/parse-xbrl.js +171 -0
  43. package/build/services/HtmlTableExtractor/HtmlTableExtractor.d.ts +45 -0
  44. package/build/services/HtmlTableExtractor/HtmlTableExtractor.js +430 -0
  45. package/build/services/HtmlTableExtractor/index.d.ts +2 -0
  46. package/build/services/HtmlTableExtractor/index.js +4 -0
  47. package/build/services/ReportRawBuilder/FactGrouper.js +6 -6
  48. package/build/services/SecEdgarApi/SecEdgarApi.d.ts +60 -1
  49. package/build/services/SecEdgarApi/SecEdgarApi.js +147 -2
  50. package/build/types/company-search.type.d.ts +5 -0
  51. package/build/types/company-search.type.js +2 -0
  52. package/build/types/current-filings.type.d.ts +57 -0
  53. package/build/types/current-filings.type.js +2 -0
  54. package/build/types/index.d.ts +3 -0
  55. package/build/types/index.js +3 -0
  56. package/build/types/insider-transaction.type.d.ts +32 -0
  57. package/build/types/insider-transaction.type.js +2 -0
  58. package/build/types/parsed-filings.type.d.ts +3 -3
  59. package/build/types/xbrl.type.d.ts +155 -0
  60. package/build/types/xbrl.type.js +2 -0
  61. package/package.json +1 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var XMLParser_1 = require("../XMLParser");
4
+ var util_type_1 = require("./util-type");
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ var SchemaParser = /** @class */ (function () {
7
+ function SchemaParser() {
8
+ this.xmlParser = new XMLParser_1.default();
9
+ }
10
+ SchemaParser.prototype.parseAppInfo = function (value) {
11
+ var _this = this;
12
+ value = util_type_1.default.toObject(value);
13
+ var appinfo = {};
14
+ for (var key in value) {
15
+ var parsedKey = util_type_1.default.parseKey(key);
16
+ switch (parsedKey) {
17
+ case 'roleType':
18
+ appinfo.roleType = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseRoleType(v); });
19
+ break;
20
+ case 'linkbaseRef':
21
+ appinfo.linkbaseRef = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseLinkbaseRef(v); });
22
+ break;
23
+ }
24
+ }
25
+ return appinfo;
26
+ };
27
+ SchemaParser.prototype.parseRoleType = function (value) {
28
+ value = util_type_1.default.toObject(value);
29
+ var roleType = {};
30
+ for (var key in value) {
31
+ var parsedKey = util_type_1.default.parseKey(key);
32
+ switch (parsedKey) {
33
+ case 'usedOn':
34
+ roleType[parsedKey] = util_type_1.default.toArray(value[key]).map(function (v) { return util_type_1.default.toString(v['#text']); });
35
+ break;
36
+ default:
37
+ roleType[parsedKey] = util_type_1.default.toString(value[key]);
38
+ break;
39
+ }
40
+ }
41
+ return roleType;
42
+ };
43
+ SchemaParser.prototype.parseLinkbaseRef = function (value) {
44
+ value = util_type_1.default.toObject(value);
45
+ var item = {};
46
+ for (var key in value) {
47
+ var parsedKey = util_type_1.default.parseKey(key);
48
+ item[parsedKey] = util_type_1.default.toString(value[key]);
49
+ }
50
+ return item;
51
+ };
52
+ SchemaParser.prototype.parseAnnotation = function (value) {
53
+ value = util_type_1.default.toObject(value);
54
+ var annotation = {};
55
+ for (var key in value) {
56
+ var parsedKey = util_type_1.default.parseKey(key);
57
+ switch (parsedKey) {
58
+ case 'appinfo':
59
+ annotation.appinfo = this.parseAppInfo(value[key]);
60
+ break;
61
+ case 'documentation':
62
+ annotation.documentation = util_type_1.default.toString(value[key]);
63
+ break;
64
+ }
65
+ }
66
+ return annotation;
67
+ };
68
+ SchemaParser.prototype.parseElement = function (value) {
69
+ value = util_type_1.default.toObject(value);
70
+ var element = {
71
+ id: util_type_1.default.toString(value['@_id']),
72
+ name: util_type_1.default.toString(value['@_name']),
73
+ type: util_type_1.default.toString(value['@_type']),
74
+ };
75
+ for (var key in value) {
76
+ var parsedKey = util_type_1.default.parseKey(key);
77
+ switch (util_type_1.default.parseKey(key)) {
78
+ case 'abstract':
79
+ case 'nillable':
80
+ case 'headUsable':
81
+ element[parsedKey] = util_type_1.default.toBoolean(value[key]);
82
+ break;
83
+ case 'complexType':
84
+ case 'annotation':
85
+ element[parsedKey] = util_type_1.default.toObject(value[key]);
86
+ break;
87
+ default:
88
+ element[parsedKey] = util_type_1.default.toString(value[key]);
89
+ break;
90
+ }
91
+ }
92
+ return element;
93
+ };
94
+ SchemaParser.prototype.parseImport = function (value) {
95
+ value = util_type_1.default.toObject(value);
96
+ return {
97
+ namespace: util_type_1.default.toString(value['@_namespace']),
98
+ schemaLocation: util_type_1.default.toString(value['@_schemaLocation']),
99
+ };
100
+ };
101
+ SchemaParser.prototype.parse = function (xml) {
102
+ var _this = this;
103
+ var _a, _b;
104
+ var parsed = this.xmlParser.parse(xml);
105
+ var xbrl = (_b = (_a = parsed.XBRL) !== null && _a !== void 0 ? _a : parsed.xbrl) !== null && _b !== void 0 ? _b : parsed;
106
+ var schemaRaw = null;
107
+ for (var key in xbrl) {
108
+ if (util_type_1.default.parseKey(key) !== 'schema')
109
+ continue;
110
+ schemaRaw = xbrl[key];
111
+ break;
112
+ }
113
+ var value = schemaRaw === null ? xbrl : schemaRaw;
114
+ var schema = {
115
+ xmlns: util_type_1.default.toString(value['@_xmlns']),
116
+ _xmlnsProps: {},
117
+ };
118
+ for (var key in value) {
119
+ var parsedKey = util_type_1.default.parseKey(key);
120
+ switch (parsedKey) {
121
+ case 'annotation':
122
+ schema.annotation = this.parseAnnotation(value[key]);
123
+ break;
124
+ case 'element':
125
+ schema.element = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseElement(v); });
126
+ break;
127
+ case 'import':
128
+ schema.import = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseImport(v); });
129
+ break;
130
+ default:
131
+ if (key.startsWith('@_xmlns:')) {
132
+ schema._xmlnsProps[parsedKey] = util_type_1.default.toString(value[key]);
133
+ }
134
+ else {
135
+ schema[parsedKey] = util_type_1.default.toString(value[key]);
136
+ }
137
+ break;
138
+ }
139
+ }
140
+ return schema;
141
+ };
142
+ return SchemaParser;
143
+ }());
144
+ exports.default = SchemaParser;
@@ -0,0 +1,34 @@
1
+ import { XbrlInstance, XbrlLinkbase, XbrlSchema } from '../../../types/xbrl.type';
2
+ import { XbrlFormHeader } from './HeaderParser';
3
+ export interface XbrlParseResult {
4
+ header: XbrlFormHeader;
5
+ schema: XbrlDocument<XbrlSchema> | null;
6
+ instance: XbrlDocument<XbrlInstance> | null;
7
+ linkbasePresentation: XbrlDocument<XbrlLinkbase> | null;
8
+ linkbaseCalculation: XbrlDocument<XbrlLinkbase> | null;
9
+ linkbaseDefinition: XbrlDocument<XbrlLinkbase> | null;
10
+ linkbaseLabel: XbrlDocument<XbrlLinkbase> | null;
11
+ }
12
+ interface XbrlDocument<T> {
13
+ description: string;
14
+ fileName: string;
15
+ sequence: number;
16
+ type: string;
17
+ xbrl: T;
18
+ }
19
+ export interface ParseXbrlOptions {
20
+ includeInstance?: boolean;
21
+ includeLinkbases?: boolean;
22
+ includeSchema?: boolean;
23
+ }
24
+ export default class XBRLParser {
25
+ private readonly splitter;
26
+ private readonly headerParser;
27
+ private readonly linkbaseParser;
28
+ private readonly instanceParser;
29
+ private readonly schemaParser;
30
+ private filterDocuments;
31
+ private createXbrlDocument;
32
+ parse(xml: string, options?: ParseXbrlOptions): XbrlParseResult;
33
+ }
34
+ export {};
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var DocumentXmlSplitter_1 = require("../DocumentXmlSplitter");
4
+ var HeaderParser_1 = require("./HeaderParser");
5
+ var InstanceParser_1 = require("./InstanceParser");
6
+ var LinkbaseParser_1 = require("./LinkbaseParser");
7
+ var SchemaParser_1 = require("./SchemaParser");
8
+ var XBRLParser = /** @class */ (function () {
9
+ function XBRLParser() {
10
+ this.splitter = new DocumentXmlSplitter_1.default();
11
+ this.headerParser = new HeaderParser_1.default();
12
+ this.linkbaseParser = new LinkbaseParser_1.default();
13
+ this.instanceParser = new InstanceParser_1.default();
14
+ this.schemaParser = new SchemaParser_1.default();
15
+ }
16
+ XBRLParser.prototype.filterDocuments = function (documents) {
17
+ var _a, _b, _c, _d, _e, _f;
18
+ var xmlDocs = documents.filter(function (doc) { return doc.fileName.endsWith('.xml') || doc.fileName.endsWith('.xsd'); });
19
+ return {
20
+ instanceDoc: (_a = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_htm.xml'); })) !== null && _a !== void 0 ? _a : null,
21
+ schemaDoc: (_b = xmlDocs.find(function (doc) { return doc.fileName.endsWith('.xsd'); })) !== null && _b !== void 0 ? _b : null,
22
+ linkbasePresentationDoc: (_c = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_pre.xml'); })) !== null && _c !== void 0 ? _c : null,
23
+ linkbaseDefinitionDoc: (_d = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_def.xml'); })) !== null && _d !== void 0 ? _d : null,
24
+ linkbaseCalculationDoc: (_e = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_cal.xml'); })) !== null && _e !== void 0 ? _e : null,
25
+ linkbaseLabelDoc: (_f = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_lab.xml'); })) !== null && _f !== void 0 ? _f : null,
26
+ };
27
+ };
28
+ XBRLParser.prototype.createXbrlDocument = function (doc, xbrl) {
29
+ if (!doc)
30
+ return null;
31
+ var description = doc.description, fileName = doc.fileName, sequence = doc.sequence, type = doc.type;
32
+ return xbrl ? { fileName: fileName, description: description, sequence: sequence, type: type, xbrl: xbrl } : null;
33
+ };
34
+ XBRLParser.prototype.parse = function (xml, options) {
35
+ var _a, _b, _c, _d, _e, _f;
36
+ var _g = options !== null && options !== void 0 ? options : {}, _h = _g.includeInstance, includeInstance = _h === void 0 ? true : _h, _j = _g.includeLinkbases, includeLinkbases = _j === void 0 ? true : _j, _k = _g.includeSchema, includeSchema = _k === void 0 ? true : _k;
37
+ var documents = this.splitter.splitDocumentXml({ xml: xml }).documents;
38
+ var _l = this.filterDocuments(documents), instanceDoc = _l.instanceDoc, linkbaseCalculationDoc = _l.linkbaseCalculationDoc, linkbaseDefinitionDoc = _l.linkbaseDefinitionDoc, linkbaseLabelDoc = _l.linkbaseLabelDoc, linkbasePresentationDoc = _l.linkbasePresentationDoc, schemaDoc = _l.schemaDoc;
39
+ var header = this.headerParser.parse(xml);
40
+ var instance = includeInstance ? this.instanceParser.parse((_a = instanceDoc === null || instanceDoc === void 0 ? void 0 : instanceDoc.content) !== null && _a !== void 0 ? _a : '') : null;
41
+ var schema = includeSchema ? this.schemaParser.parse((_b = schemaDoc === null || schemaDoc === void 0 ? void 0 : schemaDoc.content) !== null && _b !== void 0 ? _b : '') : null;
42
+ var linkbasePresentation = includeLinkbases
43
+ ? this.linkbaseParser.parse((_c = linkbasePresentationDoc === null || linkbasePresentationDoc === void 0 ? void 0 : linkbasePresentationDoc.content) !== null && _c !== void 0 ? _c : '')
44
+ : null;
45
+ var linkbaseCalculation = includeLinkbases
46
+ ? this.linkbaseParser.parse((_d = linkbaseCalculationDoc === null || linkbaseCalculationDoc === void 0 ? void 0 : linkbaseCalculationDoc.content) !== null && _d !== void 0 ? _d : '')
47
+ : null;
48
+ var linkbaseDefinition = includeLinkbases
49
+ ? this.linkbaseParser.parse((_e = linkbaseDefinitionDoc === null || linkbaseDefinitionDoc === void 0 ? void 0 : linkbaseDefinitionDoc.content) !== null && _e !== void 0 ? _e : '')
50
+ : null;
51
+ var linkbaseLabel = includeLinkbases ? this.linkbaseParser.parse((_f = linkbaseLabelDoc === null || linkbaseLabelDoc === void 0 ? void 0 : linkbaseLabelDoc.content) !== null && _f !== void 0 ? _f : '') : null;
52
+ return {
53
+ header: header,
54
+ instance: this.createXbrlDocument(instanceDoc, instance),
55
+ schema: this.createXbrlDocument(schemaDoc, schema),
56
+ linkbasePresentation: this.createXbrlDocument(linkbasePresentationDoc, linkbasePresentation),
57
+ linkbaseCalculation: this.createXbrlDocument(linkbaseCalculationDoc, linkbaseCalculation),
58
+ linkbaseDefinition: this.createXbrlDocument(linkbaseDefinitionDoc, linkbaseDefinition),
59
+ linkbaseLabel: this.createXbrlDocument(linkbaseLabelDoc, linkbaseLabel),
60
+ };
61
+ };
62
+ return XBRLParser;
63
+ }());
64
+ exports.default = XBRLParser;
@@ -0,0 +1,15 @@
1
+ declare function toArray<T>(value: T): T;
2
+ declare function toNumber(value: any): number;
3
+ declare function toObject<T>(value: T): T;
4
+ declare function toString(value: any): string;
5
+ declare function toBoolean(value: any): boolean;
6
+ declare function parseKey(key: string): string;
7
+ declare const utilType: {
8
+ toArray: typeof toArray;
9
+ toNumber: typeof toNumber;
10
+ toObject: typeof toObject;
11
+ toString: typeof toString;
12
+ toBoolean: typeof toBoolean;
13
+ parseKey: typeof parseKey;
14
+ };
15
+ export default utilType;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ function toArray(value) {
5
+ return (Array.isArray(value) ? value : [value]).filter(Boolean);
6
+ }
7
+ function toNumber(value) {
8
+ return Number(value);
9
+ }
10
+ function toObject(value) {
11
+ value = Array.isArray(value) ? value[0] : value;
12
+ return (value && typeof value === 'object' ? value : {});
13
+ }
14
+ function toString(value) {
15
+ var _a;
16
+ value = typeof value === 'object' && value !== null ? (_a = value['#text']) !== null && _a !== void 0 ? _a : value : value;
17
+ return String(value || '');
18
+ }
19
+ function toBoolean(value) {
20
+ return typeof value === 'string' ? value.toLowerCase() === 'true' || value === '1' : Boolean(value);
21
+ }
22
+ function parseKey(key) {
23
+ var _a, _b;
24
+ return (_b = (_a = key.split(':').pop()) === null || _a === void 0 ? void 0 : _a.replace('@_', '').replace('#', '')) !== null && _b !== void 0 ? _b : '';
25
+ }
26
+ var utilType = {
27
+ toArray: toArray,
28
+ toNumber: toNumber,
29
+ toObject: toObject,
30
+ toString: toString,
31
+ toBoolean: toBoolean,
32
+ parseKey: parseKey,
33
+ };
34
+ exports.default = utilType;
@@ -1,40 +1,11 @@
1
- import { DocumentNode } from './XMLNode/DocumentNode';
2
- interface OnCharacterData {
3
- char: string;
4
- index: number;
5
- path: string;
6
- pathOccurrenceCount: number;
7
- attributesStr: string;
8
- }
9
- interface ParseTableNodesParams {
10
- xml: string;
11
- }
12
- interface Parse2Params {
13
- xml: string;
14
- onCharacter?: (data: OnCharacterData) => void;
15
- onOpenTag?: (data: OnCharacterData) => void;
16
- onCloseTag?: (data: OnCharacterData) => void;
17
- }
18
- interface IterateTablesParams {
19
- xml: string;
20
- parentPath?: string;
21
- trimSpaces?: boolean;
22
- onCharacter?: (data: OnCharacterData & {
23
- textMap: Map<string, string>;
24
- }) => void;
25
- onOpenTag?: (data: OnCharacterData & {
26
- textMap: Map<string, string>;
27
- }) => void;
28
- onCloseTag?: (data: OnCharacterData & {
29
- textMap: Map<string, string>;
30
- }) => void;
31
- }
32
1
  export default class XMLParser {
33
- iterateXML(params: Parse2Params): string[];
34
- /**
35
- * Returns text in each table cell mapped by `${table}.${row}.${col}`
36
- */
37
- getTableTextMap(params: IterateTablesParams): Map<string, string>;
38
- getDocumentNode(params: ParseTableNodesParams): DocumentNode;
2
+ private readonly selfEnclosingTags;
3
+ mapAttributes(attributes: string[]): Map<string, string>;
4
+ parse(xml: string): Record<string, unknown>;
5
+ iterateXML(params: {
6
+ xml: string;
7
+ onOpenTag?: (tagName: string, attributes: string[], isSelfEnclosing: boolean) => void;
8
+ onCloseTag?: (tagName: string) => void;
9
+ onInnerText?: (text: string) => void;
10
+ }): void;
39
11
  }
40
- export {};