sec-edgar-api 0.3.4 → 0.4.1

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 (64) hide show
  1. package/build/services/DocumentParser/DocumentParser.d.ts +17 -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 +106 -0
  11. package/build/services/DocumentParser/XBRLParser/LinkbaseParser.d.ts +13 -0
  12. package/build/services/DocumentParser/XBRLParser/LinkbaseParser.js +98 -0
  13. package/build/services/DocumentParser/XBRLParser/SchemaParser.d.ts +11 -0
  14. package/build/services/DocumentParser/XBRLParser/SchemaParser.js +142 -0
  15. package/build/services/DocumentParser/XBRLParser/XBRLParser.d.ts +34 -0
  16. package/build/services/DocumentParser/XBRLParser/XBRLParser.js +68 -0
  17. package/build/services/DocumentParser/XBRLParser/util-xbrl.d.ts +17 -0
  18. package/build/services/DocumentParser/XBRLParser/util-xbrl.js +50 -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 +179 -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/ReportRawBuilder/FactSplitAdjuster.js +2 -1
  49. package/build/services/SecEdgarApi/SecEdgarApi.d.ts +82 -15
  50. package/build/services/SecEdgarApi/SecEdgarApi.js +170 -21
  51. package/build/types/company-search.type.d.ts +5 -0
  52. package/build/types/company-search.type.js +2 -0
  53. package/build/types/current-filings.type.d.ts +57 -0
  54. package/build/types/current-filings.type.js +2 -0
  55. package/build/types/index.d.ts +3 -0
  56. package/build/types/index.js +3 -0
  57. package/build/types/insider-transaction.type.d.ts +32 -0
  58. package/build/types/insider-transaction.type.js +2 -0
  59. package/build/types/parsed-filings.type.d.ts +3 -3
  60. package/build/types/xbrl.type.d.ts +155 -0
  61. package/build/types/xbrl.type.js +2 -0
  62. package/build/util/constants.d.ts +2 -0
  63. package/build/util/constants.js +5 -0
  64. package/package.json +1 -1
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ var ColNode_1 = require("./XMLNode/ColNode");
15
+ var DocumentNode_1 = require("./XMLNode/DocumentNode");
16
+ var HRNode_1 = require("./XMLNode/HRNode");
17
+ var NonTableNode_1 = require("./XMLNode/NonTableNode");
18
+ var RowNode_1 = require("./XMLNode/RowNode");
19
+ var TableNode_1 = require("./XMLNode/TableNode");
20
+ /**
21
+ * @deprecated use XMLParser
22
+ */
23
+ var XMLParserLegacy = /** @class */ (function () {
24
+ function XMLParserLegacy() {
25
+ }
26
+ XMLParserLegacy.prototype.iterateXML = function (params) {
27
+ var _a, _b, _c;
28
+ var xml = params.xml, onCharacter = params.onCharacter, onCloseTag = params.onCloseTag, onOpenTag = params.onOpenTag;
29
+ var selfEnclosingTags = new Set([
30
+ 'filename',
31
+ 'description',
32
+ 'br',
33
+ 'meta',
34
+ 'link',
35
+ 'img',
36
+ 'input',
37
+ 'hr',
38
+ 'area',
39
+ 'base',
40
+ 'col',
41
+ 'command',
42
+ 'embed',
43
+ 'keygen',
44
+ 'param',
45
+ 'source',
46
+ 'track',
47
+ 'wbr',
48
+ ]);
49
+ var spaceChars = new Set(['\n', '\r', '\t', ' ']);
50
+ var pathOccurrenceCountMap = new Map();
51
+ var curPath = '';
52
+ var curTag = '';
53
+ var curAttributes = '';
54
+ var didStart = false;
55
+ var pathsArr = [];
56
+ for (var i = 0; i < xml.length; i++) {
57
+ var char = xml[i];
58
+ var isOpenTag = char === '<' && xml[i + 1] !== '/' && xml[i + 1] !== '?' && xml[i + 1] !== '!';
59
+ var isCloseTag = char === '<' && xml[i + 1] === '/';
60
+ var onCharacterData = {
61
+ char: char,
62
+ index: i,
63
+ path: curPath,
64
+ pathOccurrenceCount: (_a = pathOccurrenceCountMap.get(curPath)) !== null && _a !== void 0 ? _a : 0,
65
+ attributesStr: curAttributes,
66
+ };
67
+ if (isOpenTag) {
68
+ var didEndTagName = false;
69
+ var j = 0;
70
+ didStart = true;
71
+ i++;
72
+ while (xml[i] !== '>') {
73
+ didEndTagName = didEndTagName || spaceChars.has(xml[i]) || xml[i] === '/';
74
+ if (!didEndTagName) {
75
+ curTag += xml[i].toLowerCase();
76
+ }
77
+ else if (xml[i] !== '/') {
78
+ curAttributes += xml[i];
79
+ }
80
+ i++;
81
+ j++;
82
+ if (j > 1000000) {
83
+ throw new Error('too many iterations');
84
+ }
85
+ }
86
+ var pathNew = "".concat(curPath).concat(curPath.length > 0 ? '.' : '').concat(curTag).toLowerCase();
87
+ var countBefore = (_b = pathOccurrenceCountMap.get(pathNew)) !== null && _b !== void 0 ? _b : 0;
88
+ var pathOccurrenceCount = (_c = pathOccurrenceCountMap.set(pathNew, countBefore + 1).get(pathNew)) !== null && _c !== void 0 ? _c : 0;
89
+ onCharacterData.path = pathNew;
90
+ onCharacterData.pathOccurrenceCount = pathOccurrenceCount;
91
+ onCharacterData.attributesStr = curAttributes;
92
+ pathsArr.push(pathNew);
93
+ onOpenTag === null || onOpenTag === void 0 ? void 0 : onOpenTag(onCharacterData);
94
+ if (selfEnclosingTags.has(curTag)) {
95
+ onCloseTag === null || onCloseTag === void 0 ? void 0 : onCloseTag(onCharacterData);
96
+ }
97
+ else {
98
+ curPath = pathNew;
99
+ }
100
+ curTag = '';
101
+ }
102
+ else if (isCloseTag) {
103
+ while (xml[i] !== '>') {
104
+ i++;
105
+ }
106
+ onCloseTag === null || onCloseTag === void 0 ? void 0 : onCloseTag(onCharacterData);
107
+ curPath = curPath.slice(0, curPath.lastIndexOf('.'));
108
+ curAttributes = '';
109
+ }
110
+ else if (didStart) {
111
+ onCharacter === null || onCharacter === void 0 ? void 0 : onCharacter(onCharacterData);
112
+ }
113
+ }
114
+ return pathsArr;
115
+ };
116
+ /**
117
+ * Returns text in each table cell mapped by `${table}.${row}.${col}`
118
+ */
119
+ XMLParserLegacy.prototype.getTableTextMap = function (params) {
120
+ var xml = params.xml, parentPath = params.parentPath, onCharacter = params.onCharacter, onCloseTag = params.onCloseTag, onOpenTag = params.onOpenTag, _a = params.trimSpaces, trimSpaces = _a === void 0 ? true : _a;
121
+ var rowPaths = new Set([
122
+ "".concat(parentPath, ".table.tbody.tr"),
123
+ "".concat(parentPath, ".table.thead.tr"),
124
+ "".concat(parentPath, ".table.tfoot.tr"),
125
+ "".concat(parentPath, ".table.tr"),
126
+ ]);
127
+ var colPaths = new Set([
128
+ "".concat(parentPath, ".table.tbody.tr.td"),
129
+ "".concat(parentPath, ".table.thead.tr.td"),
130
+ "".concat(parentPath, ".table.tfoot.tr.td"),
131
+ "".concat(parentPath, ".table.tr.td"),
132
+ "".concat(parentPath, ".table.tbody.tr.th"),
133
+ "".concat(parentPath, ".table.thead.tr.th"),
134
+ "".concat(parentPath, ".table.tfoot.tr.th"),
135
+ "".concat(parentPath, ".table.tr.th"),
136
+ ]);
137
+ var table = 0;
138
+ var row = 0;
139
+ var col = 0;
140
+ var textByColKey = new Map();
141
+ var spaceChars = new Set(['\n', '\r', '\t']);
142
+ this.iterateXML({
143
+ xml: xml,
144
+ onOpenTag: function (data) {
145
+ var _a;
146
+ var path = data.path;
147
+ var colKey = "".concat(table, ".").concat(row, ".").concat(col);
148
+ var textCur = (_a = textByColKey.get(colKey)) !== null && _a !== void 0 ? _a : '';
149
+ var pathLower = path.toLowerCase();
150
+ if (textCur.trim().length === 0 && col === 0) {
151
+ textByColKey.delete(colKey);
152
+ }
153
+ var isTable = parentPath ? pathLower === "".concat(parentPath, ".table") : pathLower.endsWith('table');
154
+ var isRow = parentPath ? rowPaths.has(pathLower) : pathLower.endsWith('tr');
155
+ var isCol = parentPath
156
+ ? colPaths.has(pathLower)
157
+ : pathLower.endsWith('td') || pathLower.endsWith('th');
158
+ if (isTable) {
159
+ table++;
160
+ col = 0;
161
+ row = 0;
162
+ }
163
+ else if (isRow) {
164
+ row++;
165
+ col = 0;
166
+ }
167
+ else if (isCol) {
168
+ col++;
169
+ }
170
+ onOpenTag === null || onOpenTag === void 0 ? void 0 : onOpenTag(__assign(__assign({}, data), { textMap: textByColKey }));
171
+ },
172
+ onCharacter: function (data) {
173
+ var _a;
174
+ var char = spaceChars.has(data.char) ? ' ' : data.char;
175
+ var colKey = "".concat(table, ".").concat(row, ".").concat(col);
176
+ var textCur = (_a = textByColKey.get(colKey)) !== null && _a !== void 0 ? _a : '';
177
+ if (!(trimSpaces && char === ' ' && textCur.endsWith(' '))) {
178
+ textByColKey.set(colKey, "".concat(textCur).concat(char));
179
+ }
180
+ onCharacter === null || onCharacter === void 0 ? void 0 : onCharacter(__assign(__assign({}, data), { textMap: textByColKey }));
181
+ },
182
+ onCloseTag: function (data) {
183
+ var _a;
184
+ var colKey = "".concat(table, ".").concat(row, ".").concat(col);
185
+ var textCur = (_a = textByColKey.get(colKey)) !== null && _a !== void 0 ? _a : '';
186
+ if (textCur.trim().length === 0 && col === 0) {
187
+ textByColKey.delete(colKey);
188
+ }
189
+ else if (!textCur.endsWith(' ')) {
190
+ textByColKey.set(colKey, "".concat(textCur, " "));
191
+ }
192
+ onCloseTag === null || onCloseTag === void 0 ? void 0 : onCloseTag(__assign(__assign({}, data), { textMap: textByColKey }));
193
+ },
194
+ });
195
+ return textByColKey;
196
+ };
197
+ XMLParserLegacy.prototype.getDocumentNode = function (params) {
198
+ var xml = params.xml;
199
+ var rowsArr = [];
200
+ var colsArr = [];
201
+ var documentNode = new DocumentNode_1.DocumentNode();
202
+ var curNode = null;
203
+ var prevRowCols = [];
204
+ var curRowCols = [];
205
+ var isBold = false;
206
+ var boldPath = null;
207
+ var pushColToRow = function (col) {
208
+ var _a;
209
+ var colIndex = curRowCols.length;
210
+ col.setIndex(colIndex);
211
+ var colSpan = col.getColSpan();
212
+ Array.from({ length: colSpan }).forEach(function () { return curRowCols.push(col); });
213
+ var topSibling = (_a = prevRowCols[colIndex]) !== null && _a !== void 0 ? _a : null;
214
+ topSibling === null || topSibling === void 0 ? void 0 : topSibling.addBottomSibling(col);
215
+ };
216
+ this.iterateXML({
217
+ xml: xml,
218
+ onCloseTag: function () {
219
+ var _a;
220
+ if ((curNode === null || curNode === void 0 ? void 0 : curNode.getPath()) === boldPath) {
221
+ curNode === null || curNode === void 0 ? void 0 : curNode.setText("".concat((_a = curNode === null || curNode === void 0 ? void 0 : curNode.getText()) !== null && _a !== void 0 ? _a : '', "}}"));
222
+ boldPath = null;
223
+ }
224
+ },
225
+ onCharacter: function (_a) {
226
+ var _b;
227
+ var char = _a.char;
228
+ curNode === null || curNode === void 0 ? void 0 : curNode.setText(((_b = curNode === null || curNode === void 0 ? void 0 : curNode.getText()) !== null && _b !== void 0 ? _b : '') + char);
229
+ },
230
+ onOpenTag: function (_a) {
231
+ var _b;
232
+ var path = _a.path, attributesStr = _a.attributesStr;
233
+ // skip nested tables
234
+ if (path.split('.').reduce(function (acc, cur) { return (cur === 'table' ? acc + 1 : acc); }, 0) > 1)
235
+ return;
236
+ var tag = path.split('.').pop();
237
+ var isInTable = path.includes('table');
238
+ var topLevelNodes = documentNode.getChildren();
239
+ var prevTopLevelNode = topLevelNodes[topLevelNodes.length - 1];
240
+ var wasHorizontalLine = prevTopLevelNode instanceof HRNode_1.HRNode;
241
+ var wasNonTableNode = prevTopLevelNode instanceof NonTableNode_1.NonTableNode;
242
+ var wasBold = isBold;
243
+ var attributesLower = attributesStr.toLowerCase().replace(/\s/g, '');
244
+ isBold =
245
+ tag === 'b' ||
246
+ tag === 'strong' ||
247
+ attributesLower.includes('font-weight:bold') ||
248
+ attributesLower.includes('font-weight:700') ||
249
+ attributesLower.includes('font-weight:800') ||
250
+ attributesLower.includes('font-weight:900');
251
+ if (!isInTable) {
252
+ prevRowCols = [];
253
+ curRowCols = [];
254
+ }
255
+ if (tag === 'hr' && !isInTable) {
256
+ var hr = new HRNode_1.HRNode({ attributesStr: attributesStr, path: path });
257
+ hr.setPreviousSibling(prevTopLevelNode !== null && prevTopLevelNode !== void 0 ? prevTopLevelNode : null);
258
+ topLevelNodes.push(hr);
259
+ curNode = hr;
260
+ }
261
+ else if (tag === 'table') {
262
+ var table = new TableNode_1.TableNode({ attributesStr: attributesStr, path: path });
263
+ table.setPreviousSibling(prevTopLevelNode !== null && prevTopLevelNode !== void 0 ? prevTopLevelNode : null);
264
+ topLevelNodes.push(table);
265
+ curNode = table;
266
+ }
267
+ else if (tag === 'tr') {
268
+ var row = new RowNode_1.RowNode({ attributesStr: attributesStr, path: path });
269
+ var prevRow = rowsArr[rowsArr.length - 1];
270
+ row.setParent(prevTopLevelNode);
271
+ row.setPreviousSibling((prevRow === null || prevRow === void 0 ? void 0 : prevRow.getParent()) === row.getParent() ? prevRow : null);
272
+ rowsArr.push(row);
273
+ prevRowCols = curRowCols;
274
+ curRowCols = [];
275
+ curNode = row;
276
+ }
277
+ else if (tag === 'td' || tag === 'th') {
278
+ var col = new ColNode_1.ColNode({ attributesStr: attributesStr, path: path });
279
+ var prevCol = colsArr[colsArr.length - 1];
280
+ col.setParent(rowsArr[rowsArr.length - 1]);
281
+ col.setPreviousSibling((prevCol === null || prevCol === void 0 ? void 0 : prevCol.getParent()) === col.getParent() ? prevCol : null);
282
+ colsArr.push(col);
283
+ pushColToRow(col);
284
+ curNode = col;
285
+ }
286
+ else if ((!isInTable && !wasNonTableNode) || (wasHorizontalLine && tag !== 'hr')) {
287
+ var node = new NonTableNode_1.NonTableNode({ attributesStr: attributesStr, path: path });
288
+ node.setPreviousSibling(prevTopLevelNode !== null && prevTopLevelNode !== void 0 ? prevTopLevelNode : null);
289
+ topLevelNodes.push(node);
290
+ curNode = node;
291
+ }
292
+ else if (curNode && !curNode.getText().endsWith('\n')) {
293
+ curNode.setText("".concat(curNode.getText().trim(), "\n"));
294
+ }
295
+ if (isBold && !wasBold && !(curNode === null || curNode === void 0 ? void 0 : curNode.getText().endsWith('{{'))) {
296
+ curNode === null || curNode === void 0 ? void 0 : curNode.setText("".concat(curNode === null || curNode === void 0 ? void 0 : curNode.getText().trim(), "{{"));
297
+ }
298
+ if (isBold) {
299
+ boldPath = (_b = curNode === null || curNode === void 0 ? void 0 : curNode.getPath()) !== null && _b !== void 0 ? _b : null;
300
+ }
301
+ },
302
+ });
303
+ documentNode.setText(xml);
304
+ return documentNode;
305
+ };
306
+ return XMLParserLegacy;
307
+ }());
308
+ exports.default = XMLParserLegacy;
@@ -3,11 +3,21 @@ import { parseForm13g } from './parse-form-13g';
3
3
  import { parseForm10k } from './parse-form-10k';
4
4
  import { parseFormDef14a } from './parse-form-def14a';
5
5
  import { parseCurrentFilingsDaily } from './parse-current-filings-daily';
6
+ import { parseInsiderTransactions } from './parse-insider-transaction';
7
+ import { parseCompanies } from './parse-companies';
8
+ import { parseCurrentFilings } from './parse-current-filings';
9
+ import { parseCurrentFilingsXbrl } from './parse-current-filings-xbrl';
10
+ import { parseXbrl } from './parse-xbrl';
6
11
  declare const parsers: {
7
12
  parseForm4: typeof parseForm4;
8
13
  parseForm13g: typeof parseForm13g;
9
14
  parseForm10k: typeof parseForm10k;
10
15
  parseFormDef14a: typeof parseFormDef14a;
11
16
  parseCurrentFilingsDaily: typeof parseCurrentFilingsDaily;
17
+ parseInsiderTransactions: typeof parseInsiderTransactions;
18
+ parseCompanies: typeof parseCompanies;
19
+ parseCurrentFilings: typeof parseCurrentFilings;
20
+ parseCurrentFilingsXbrl: typeof parseCurrentFilingsXbrl;
21
+ parseXbrl: typeof parseXbrl;
12
22
  };
13
23
  export default parsers;
@@ -5,11 +5,21 @@ var parse_form_13g_1 = require("./parse-form-13g");
5
5
  var parse_form_10k_1 = require("./parse-form-10k");
6
6
  var parse_form_def14a_1 = require("./parse-form-def14a");
7
7
  var parse_current_filings_daily_1 = require("./parse-current-filings-daily");
8
+ var parse_insider_transaction_1 = require("./parse-insider-transaction");
9
+ var parse_companies_1 = require("./parse-companies");
10
+ var parse_current_filings_1 = require("./parse-current-filings");
11
+ var parse_current_filings_xbrl_1 = require("./parse-current-filings-xbrl");
12
+ var parse_xbrl_1 = require("./parse-xbrl");
8
13
  var parsers = {
9
14
  parseForm4: parse_form_4_1.parseForm4,
10
15
  parseForm13g: parse_form_13g_1.parseForm13g,
11
16
  parseForm10k: parse_form_10k_1.parseForm10k,
12
17
  parseFormDef14a: parse_form_def14a_1.parseFormDef14a,
13
18
  parseCurrentFilingsDaily: parse_current_filings_daily_1.parseCurrentFilingsDaily,
19
+ parseInsiderTransactions: parse_insider_transaction_1.parseInsiderTransactions,
20
+ parseCompanies: parse_companies_1.parseCompanies,
21
+ parseCurrentFilings: parse_current_filings_1.parseCurrentFilings,
22
+ parseCurrentFilingsXbrl: parse_current_filings_xbrl_1.parseCurrentFilingsXbrl,
23
+ parseXbrl: parse_xbrl_1.parseXbrl,
14
24
  };
15
25
  exports.default = parsers;
@@ -0,0 +1,5 @@
1
+ import { XMLParams } from '../../../types';
2
+ import { CompanySearchResult } from '../../../types/company-search.type';
3
+ export declare function parseCompanies(params: XMLParams): {
4
+ items: CompanySearchResult[];
5
+ };
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCompanies = void 0;
4
+ var HtmlTableExtractor_1 = require("../../HtmlTableExtractor");
5
+ function parseCompanies(params) {
6
+ var _a, _b, _c, _d;
7
+ var xml = params.xml;
8
+ var parser = new HtmlTableExtractor_1.default();
9
+ var tables = parser.extractTables(xml, {
10
+ stripHtml: true,
11
+ tagsToExclude: ['sup'],
12
+ stripParenthesis: true,
13
+ removeEmptyColumns: false,
14
+ getHeaderRowIndex: function (data) {
15
+ return data.rows.findIndex(function (row) {
16
+ var isNotEmptyRow = row.some(function (cell) { return cell.html.replace(/<.*?>/g, '').replace(/&.*?;/g, '').replace(/\s/g, '').length > 0; });
17
+ return isNotEmptyRow;
18
+ });
19
+ },
20
+ });
21
+ var header = ['cik', 'company_name', 'state_country'];
22
+ var table = tables.find(function (t) { return t.rows.some(function (r) { return r.some(function (c) { return c.html.includes('CIK'); }); }); });
23
+ var items = [];
24
+ for (var _i = 0, _e = (_a = table === null || table === void 0 ? void 0 : table.rows) !== null && _a !== void 0 ? _a : []; _i < _e.length; _i++) {
25
+ var row = _e[_i];
26
+ if ((_b = row[0]) === null || _b === void 0 ? void 0 : _b.isHeaderRowCell)
27
+ continue;
28
+ var item = {
29
+ cik: 0,
30
+ companyName: '',
31
+ stateOrCountry: '',
32
+ };
33
+ for (var _f = 0, row_1 = row; _f < row_1.length; _f++) {
34
+ var cell = row_1[_f];
35
+ var colName = header[cell.colIndex];
36
+ switch (colName) {
37
+ case 'cik':
38
+ item.cik = Number(cell.valueParsed) || 0;
39
+ break;
40
+ case 'company_name':
41
+ item.companyName = String(((_d = (_c = cell.html.split('>')[1]) === null || _c === void 0 ? void 0 : _c.split('<')[0]) === null || _d === void 0 ? void 0 : _d.split('/')[0]) || cell.valueParsed).trim();
42
+ break;
43
+ case 'state_country':
44
+ item.stateOrCountry = String(cell.valueParsed || '');
45
+ break;
46
+ }
47
+ }
48
+ items.push(item);
49
+ }
50
+ return { items: items };
51
+ }
52
+ exports.parseCompanies = parseCompanies;
@@ -0,0 +1,2 @@
1
+ import { CurrentFilingsXBRL, XMLParams } from '../../../types';
2
+ export declare function parseCurrentFilingsXbrl(params: XMLParams): CurrentFilingsXBRL;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCurrentFilingsXbrl = void 0;
4
+ var XMLParser_1 = require("../XMLParser");
5
+ function parseCurrentFilingsXbrl(params) {
6
+ var xml = params.xml;
7
+ var xmlParser = new XMLParser_1.default();
8
+ var result = {
9
+ title: '',
10
+ link: '',
11
+ language: '',
12
+ lastBuildDate: '',
13
+ pubDate: '',
14
+ description: '',
15
+ items: [],
16
+ };
17
+ var lastOpenTag = '';
18
+ xmlParser.iterateXML({
19
+ xml: xml,
20
+ onInnerText: function (text) {
21
+ var _a, _b;
22
+ var textTrimmed = text.trim();
23
+ var items = result.items;
24
+ var latestItem = ((_a = items[items.length - 1]) !== null && _a !== void 0 ? _a : result);
25
+ var tag = textTrimmed ? (_b = lastOpenTag.split(':').pop()) !== null && _b !== void 0 ? _b : '' : '';
26
+ if ((latestItem === null || latestItem === void 0 ? void 0 : latestItem[tag]) === undefined || !textTrimmed)
27
+ return;
28
+ var value = textTrimmed;
29
+ switch (tag) {
30
+ case 'filingDate': {
31
+ var _c = value.split('/'), month = _c[0], day = _c[1], year = _c[2];
32
+ value = "".concat(year, "-").concat(month.padStart(2, '0'), "-").concat(day.padStart(2, '0'));
33
+ break;
34
+ }
35
+ case 'acceptanceDatetime': {
36
+ var year = value.substring(0, 4);
37
+ var month = value.substring(4, 6);
38
+ var day = value.substring(6, 8);
39
+ var hour = value.substring(8, 10);
40
+ var minute = value.substring(10, 12);
41
+ var second = value.substring(12, 14);
42
+ value = "".concat(year, "-").concat(month, "-").concat(day, "T").concat(hour, ":").concat(minute, ":").concat(second, ":000Z");
43
+ }
44
+ }
45
+ latestItem[tag] = typeof latestItem[tag] === 'number' ? Number(value) : value;
46
+ },
47
+ onOpenTag: function (tagName, attributes) {
48
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
49
+ lastOpenTag = tagName;
50
+ switch (tagName) {
51
+ case 'edgar:xbrlFile': {
52
+ var item = result.items[result.items.length - 1];
53
+ var attributesMap = xmlParser.mapAttributes(attributes);
54
+ item === null || item === void 0 ? void 0 : item.files.push({
55
+ url: (_a = attributesMap.get('edgar:url')) !== null && _a !== void 0 ? _a : '',
56
+ description: (_b = attributesMap.get('edgar:description')) !== null && _b !== void 0 ? _b : '',
57
+ file: (_c = attributesMap.get('edgar:file')) !== null && _c !== void 0 ? _c : '',
58
+ inlineXBRL: attributesMap.get('edgar:inlineXBRL') === 'true',
59
+ sequence: Number((_d = attributesMap.get('edgar:sequence')) !== null && _d !== void 0 ? _d : -1),
60
+ size: Number((_e = attributesMap.get('edgar:size')) !== null && _e !== void 0 ? _e : -1),
61
+ type: (_f = attributesMap.get('edgar:type')) !== null && _f !== void 0 ? _f : '',
62
+ });
63
+ break;
64
+ }
65
+ case 'item': {
66
+ result.items.push({
67
+ title: '',
68
+ companyName: '',
69
+ cikNumber: 0,
70
+ link: '',
71
+ period: '',
72
+ pubDate: '',
73
+ fileNumber: '',
74
+ filingDate: '',
75
+ fiscalYearEnd: '',
76
+ formType: '',
77
+ acceptanceDatetime: '',
78
+ accessionNumber: '',
79
+ assignedSic: 0,
80
+ assistantDirector: '',
81
+ enclosureUrl: '',
82
+ enclosureLength: 0,
83
+ enclosureType: '',
84
+ guid: '',
85
+ description: '',
86
+ files: [],
87
+ });
88
+ break;
89
+ }
90
+ case 'enclosure': {
91
+ var latestItem = result.items[result.items.length - 1];
92
+ if (!latestItem)
93
+ return;
94
+ var attributesMap = xmlParser.mapAttributes(attributes);
95
+ latestItem.enclosureUrl = (_g = attributesMap.get('url')) !== null && _g !== void 0 ? _g : '';
96
+ latestItem.enclosureLength = Number((_h = attributesMap.get('length')) !== null && _h !== void 0 ? _h : 0);
97
+ latestItem.enclosureType = (_j = attributesMap.get('type')) !== null && _j !== void 0 ? _j : '';
98
+ }
99
+ }
100
+ },
101
+ });
102
+ return result;
103
+ }
104
+ exports.parseCurrentFilingsXbrl = parseCurrentFilingsXbrl;
@@ -0,0 +1,2 @@
1
+ import { CurrentFilingsList, XMLParams } from '../../../types';
2
+ export declare function parseCurrentFilings(params: XMLParams): CurrentFilingsList;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCurrentFilings = void 0;
4
+ function parseCurrentFilings(params) {
5
+ var xml = params.xml;
6
+ var indexTitle = xml.indexOf('<title>') + 7;
7
+ var indexTitleEnd = xml.indexOf('</title>', indexTitle);
8
+ var indexId = xml.indexOf('<id>', indexTitleEnd + 8) + 4;
9
+ var indexIdEnd = xml.indexOf('</id>', indexId);
10
+ var indexUpdated = xml.indexOf('<updated>', indexIdEnd + 5) + 9;
11
+ var indexUpdatedEnd = xml.indexOf('</updated>', indexUpdated);
12
+ var indexEntries = xml.indexOf('<entry>', indexUpdatedEnd + 10);
13
+ var title = xml.substring(indexTitle, indexTitleEnd);
14
+ var id = xml.substring(indexId, indexIdEnd);
15
+ var updated = xml.substring(indexUpdated, indexUpdatedEnd);
16
+ // Entry example:
17
+ // <title>10-K - Galaxy Enterprises Inc. /WY/ (0001871890) (Filer)</title>
18
+ // <link rel="alternate" type="text/html" href="https://www.sec.gov/Archives/edgar/data/1871890/000139390524000423/0001393905-24-000423-index.htm"/>
19
+ // <summary type="html">
20
+ // &lt;b&gt;Filed:&lt;/b&gt; 2024-12-13 &lt;b&gt;AccNo:&lt;/b&gt; 0001393905-24-000423 &lt;b&gt;Size:&lt;/b&gt; 1 MB
21
+ // </summary>
22
+ // <updated>2024-12-13T15:51:46-05:00</updated>
23
+ // <category scheme="https://www.sec.gov/" label="form type" term="10-K"/>
24
+ // <id>urn:tag:sec.gov,2008:accession-number=0001393905-24-000423</id>
25
+ // </entry>
26
+ var entries = [];
27
+ for (var i = indexEntries; i < xml.length; i++) {
28
+ var entryTitle = xml.indexOf('<title>', i) + 7;
29
+ var entryTitleEnd = xml.indexOf('</title>', entryTitle);
30
+ var entryLink = xml.indexOf('href="', entryTitleEnd) + 6;
31
+ var entryLinkEnd = xml.indexOf('"', entryLink);
32
+ var entryFiled = xml.indexOf('&gt; ', entryLinkEnd) + 5;
33
+ var entryFiledEnd = xml.indexOf(' &lt;', entryFiled);
34
+ var entryAccNo = xml.indexOf('AccNo:&lt;/b&gt; ', entryFiledEnd) + 17;
35
+ var entryAccNoEnd = xml.indexOf(' &lt;', entryAccNo);
36
+ var entrySize = xml.indexOf('Size:&lt;/b&gt; ', entryAccNoEnd) + 16;
37
+ var entrySizeEnd = xml.indexOf('\n', entrySize);
38
+ var entryUpdated = xml.indexOf('<updated>', entrySizeEnd) + 9;
39
+ var entryUpdatedEnd = xml.indexOf('</updated>', entryUpdated);
40
+ var entryForm = xml.indexOf('term="', entryUpdatedEnd) + 6;
41
+ var entryFormEnd = xml.indexOf('"', entryForm);
42
+ i = xml.indexOf('<entry>', entryFormEnd);
43
+ var title_1 = xml.substring(entryTitle, entryTitleEnd);
44
+ var link = xml.substring(entryLink, entryLinkEnd);
45
+ var filingDate = xml.substring(entryFiled, entryFiledEnd);
46
+ var accessionNumber = xml.substring(entryAccNo, entryAccNoEnd);
47
+ var size = xml.substring(entrySize, entrySizeEnd);
48
+ var updated_1 = xml.substring(entryUpdated, entryUpdatedEnd);
49
+ var form = xml.substring(entryForm, entryFormEnd);
50
+ var url = "".concat(link.substring(0, link.lastIndexOf('/')), "/").concat(accessionNumber, ".txt");
51
+ var cikStart = link.indexOf('data/') + 5;
52
+ var cikEnd = link.indexOf('/', cikStart);
53
+ var cik = Number(link.substring(cikStart, cikEnd)) || 0;
54
+ entries.push({
55
+ title: title_1,
56
+ cik: cik,
57
+ link: link,
58
+ accessionNumber: accessionNumber,
59
+ filingDate: filingDate,
60
+ form: form,
61
+ size: size,
62
+ updated: updated_1,
63
+ url: url,
64
+ });
65
+ if (i === -1) {
66
+ break;
67
+ }
68
+ }
69
+ return {
70
+ title: title,
71
+ id: id,
72
+ updated: updated,
73
+ entries: entries,
74
+ };
75
+ }
76
+ exports.parseCurrentFilings = parseCurrentFilings;
@@ -1,3 +1,3 @@
1
1
  import { Form10KData, XMLParams } from '../../../types';
2
- import XMLParser from '../XMLParser';
2
+ import XMLParser from '../XMLParserLegacy';
3
3
  export declare function parseForm10k(params: XMLParams, xmlParser?: XMLParser): Form10KData;
@@ -12,9 +12,9 @@ var __assign = (this && this.__assign) || function () {
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  exports.parseForm10k = void 0;
15
- var XMLParser_1 = require("../XMLParser");
15
+ var XMLParserLegacy_1 = require("../XMLParserLegacy");
16
16
  function parseForm10k(params, xmlParser) {
17
- if (xmlParser === void 0) { xmlParser = new XMLParser_1.default(); }
17
+ if (xmlParser === void 0) { xmlParser = new XMLParserLegacy_1.default(); }
18
18
  var xml = params.xml;
19
19
  var doc = xmlParser.getDocumentNode({ xml: xml });
20
20
  var tables = doc.parseTables().map(function (table) { return (__assign(__assign({}, table), { rows: table.rows.map(function (row) {
@@ -1,5 +1,5 @@
1
1
  import { Form13GData, XMLParams } from '../../../types';
2
- import XMLParser from '../XMLParser';
2
+ import XMLParser from '../XMLParserLegacy';
3
3
  /**
4
4
  * Form SC 13G - Institutional Holders
5
5
  *
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseForm13g = void 0;
4
- var XMLParser_1 = require("../XMLParser");
4
+ var XMLParserLegacy_1 = require("../XMLParserLegacy");
5
5
  /**
6
6
  * Form SC 13G - Institutional Holders
7
7
  *
@@ -9,7 +9,7 @@ var XMLParser_1 = require("../XMLParser");
9
9
  */
10
10
  function parseForm13g(params, xmlParser) {
11
11
  var _a, _b, _c, _d;
12
- if (xmlParser === void 0) { xmlParser = new XMLParser_1.default(); }
12
+ if (xmlParser === void 0) { xmlParser = new XMLParserLegacy_1.default(); }
13
13
  var xml = params.xml;
14
14
  var textMap = xmlParser.getTableTextMap({ xml: xml });
15
15
  var holders = [];
@@ -1,5 +1,5 @@
1
1
  import { Form4Data, XMLParams } from '../../../types';
2
- import XMLParser from '../XMLParser';
2
+ import XMLParser from '../XMLParserLegacy';
3
3
  /**
4
4
  * Form 4 - Insider Transactions
5
5
  *