sec-edgar-api 0.4.0 → 0.4.2

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.
@@ -1,5 +1,5 @@
1
1
  import { XMLParams } from '../../types';
2
- import { ParseXbrlOptions } from './XBRLParser/XBRLParser';
2
+ import { GetDocumentXbrlParams } from '../SecEdgarApi';
3
3
  import XMLParser from './XMLParserLegacy';
4
4
  import parsers from './parsers';
5
5
  interface DocumentParserArgs {
@@ -36,11 +36,10 @@ export default class DocumentParser {
36
36
  };
37
37
  parseCurrentFilings(params: XMLParams): import("../../types").CurrentFilingsList;
38
38
  parseCurrentFilingsXbrl(params: XMLParams): import("../../types").CurrentFilingsXBRL;
39
- parseXbrl(params: XMLParams & ParseXbrlOptions & {
40
- includeReport?: boolean;
41
- }): import("./XBRLParser/XBRLParser").XbrlParseResult & {
39
+ parseXbrl(params: XMLParams & GetDocumentXbrlParams): import("./XBRLParser/XBRLParser").XbrlParseResult & {
42
40
  report: import("../../types").ReportRaw | null;
43
41
  facts: import("../../types").FactItem[];
42
+ xml: string;
44
43
  };
45
44
  }
46
45
  export {};
@@ -1,52 +1,52 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var XMLParser_1 = require("../XMLParser");
4
- var util_type_1 = require("./util-type");
4
+ var util_xbrl_1 = require("./util-xbrl");
5
5
  var InstanceParser = /** @class */ (function () {
6
6
  function InstanceParser() {
7
7
  this.xmlParser = new XMLParser_1.default();
8
8
  }
9
9
  InstanceParser.prototype.parseContext = function (node) {
10
10
  var _a, _b, _c, _d, _e, _f, _g;
11
- var context = util_type_1.default.toObject(node);
12
- var id = util_type_1.default.toString(context['@_id']);
13
- var entity = util_type_1.default.toObject((_a = context['xbrli:entity']) !== null && _a !== void 0 ? _a : context['entity']);
14
- var entityIdentifier = util_type_1.default.toObject((_b = entity['xbrli:identifier']) !== null && _b !== void 0 ? _b : entity['identifier']);
15
- var entityIdentifierText = util_type_1.default.toString(entityIdentifier['#text']);
16
- var entityIdentifierScheme = util_type_1.default.toString(entityIdentifier['@_scheme']);
17
- var segment = util_type_1.default.toObject((_c = entity['xbrli:segment']) !== null && _c !== void 0 ? _c : entity['segment']);
18
- var segmentExplicitMembers = util_type_1.default.toArray(segment['xbrldi:explicitMember']);
19
- var segmentTypedMembers = util_type_1.default.toArray(segment['xbrldi:typedMember']);
11
+ var context = util_xbrl_1.default.toObject(node);
12
+ var id = util_xbrl_1.default.toString(context['@_id']);
13
+ var entity = util_xbrl_1.default.toObject((_a = context['xbrli:entity']) !== null && _a !== void 0 ? _a : context['entity']);
14
+ var entityIdentifier = util_xbrl_1.default.toObject((_b = entity['xbrli:identifier']) !== null && _b !== void 0 ? _b : entity['identifier']);
15
+ var entityIdentifierText = util_xbrl_1.default.toString(entityIdentifier['#text']);
16
+ var entityIdentifierScheme = util_xbrl_1.default.toString(entityIdentifier['@_scheme']);
17
+ var segment = util_xbrl_1.default.toObject((_c = entity['xbrli:segment']) !== null && _c !== void 0 ? _c : entity['segment']);
18
+ var segmentExplicitMembers = util_xbrl_1.default.toArray(segment['xbrldi:explicitMember']);
19
+ var segmentTypedMembers = util_xbrl_1.default.toArray(segment['xbrldi:typedMember']);
20
20
  var segments = [];
21
21
  segmentTypedMembers.forEach(function (member) {
22
22
  var _a;
23
- member = util_type_1.default.toObject(member);
23
+ member = util_xbrl_1.default.toObject(member);
24
24
  var dimension = (_a = member['@_dimension']) !== null && _a !== void 0 ? _a : '';
25
25
  segments.push({
26
- value: util_type_1.default.toString(member["".concat(dimension, ".domain")]),
27
- dimension: util_type_1.default.toString(dimension),
26
+ value: util_xbrl_1.default.toString(member["".concat(dimension, ".domain")]),
27
+ dimension: util_xbrl_1.default.toString(dimension),
28
28
  });
29
29
  });
30
30
  segmentExplicitMembers.forEach(function (member) {
31
- member = util_type_1.default.toObject(member);
31
+ member = util_xbrl_1.default.toObject(member);
32
32
  segments.push({
33
- value: util_type_1.default.toString(member['#text']),
34
- dimension: util_type_1.default.toString(member['@_dimension']),
33
+ value: util_xbrl_1.default.toString(member['#text']),
34
+ dimension: util_xbrl_1.default.toString(member['@_dimension']),
35
35
  });
36
36
  });
37
- var period = util_type_1.default.toObject((_d = context['xbrli:period']) !== null && _d !== void 0 ? _d : context['period']);
37
+ var period = util_xbrl_1.default.toObject((_d = context['xbrli:period']) !== null && _d !== void 0 ? _d : context['period']);
38
38
  var periodObj = {};
39
39
  var startDate = (_e = period['xbrli:startDate']) !== null && _e !== void 0 ? _e : period['startDate'];
40
40
  var endDate = (_f = period['xbrli:endDate']) !== null && _f !== void 0 ? _f : period['endDate'];
41
41
  var instant = (_g = period['xbrli:instant']) !== null && _g !== void 0 ? _g : period['instant'];
42
42
  if (startDate) {
43
- periodObj.startDate = util_type_1.default.toString(startDate);
43
+ periodObj.startDate = util_xbrl_1.default.toString(startDate);
44
44
  }
45
45
  if (endDate) {
46
- periodObj.endDate = util_type_1.default.toString(endDate);
46
+ periodObj.endDate = util_xbrl_1.default.toString(endDate);
47
47
  }
48
48
  if (instant) {
49
- periodObj.instant = util_type_1.default.toString(instant);
49
+ periodObj.instant = util_xbrl_1.default.toString(instant);
50
50
  }
51
51
  return {
52
52
  id: id,
@@ -62,7 +62,7 @@ var InstanceParser = /** @class */ (function () {
62
62
  };
63
63
  InstanceParser.prototype.parse = function (xml) {
64
64
  var _this = this;
65
- var _a, _b, _c;
65
+ var _a, _b;
66
66
  var contentLower = xml.toLowerCase();
67
67
  var indexXbrlStart = contentLower.indexOf('<xbrl');
68
68
  var indexXbrlEnd = contentLower.lastIndexOf('</xbrl');
@@ -70,12 +70,11 @@ var InstanceParser = /** @class */ (function () {
70
70
  if (indexXbrlStart === -1) {
71
71
  return { factElements: [], contexts: [], units: [] };
72
72
  }
73
- var doc = this.xmlParser.parse(xbrlContent);
74
- var xbrl = (_a = doc.xbrl) !== null && _a !== void 0 ? _a : doc.XBRL;
75
- var contexts = util_type_1.default
76
- .toArray((_b = xbrl === null || xbrl === void 0 ? void 0 : xbrl.context) !== null && _b !== void 0 ? _b : [])
73
+ var xbrl = util_xbrl_1.default.extractXbrlObject(this.xmlParser.parse(xbrlContent));
74
+ var contexts = util_xbrl_1.default
75
+ .toArray((_a = xbrl === null || xbrl === void 0 ? void 0 : xbrl.context) !== null && _a !== void 0 ? _a : [])
77
76
  .map(function (context) { return _this.parseContext(context); });
78
- var units = util_type_1.default.toArray((_c = xbrl === null || xbrl === void 0 ? void 0 : xbrl.unit) !== null && _c !== void 0 ? _c : []).map(function (unit) {
77
+ var units = util_xbrl_1.default.toArray((_b = xbrl === null || xbrl === void 0 ? void 0 : xbrl.unit) !== null && _b !== void 0 ? _b : []).map(function (unit) {
79
78
  var _a, _b, _c;
80
79
  return ({
81
80
  id: (_a = unit['@_id']) !== null && _a !== void 0 ? _a : '',
@@ -84,8 +83,8 @@ var InstanceParser = /** @class */ (function () {
84
83
  });
85
84
  var factElements = [];
86
85
  for (var name_1 in xbrl) {
87
- for (var _i = 0, _d = util_type_1.default.toArray(xbrl[name_1]); _i < _d.length; _i++) {
88
- var element = _d[_i];
86
+ for (var _i = 0, _c = util_xbrl_1.default.toArray(xbrl[name_1]); _i < _c.length; _i++) {
87
+ var element = _c[_i];
89
88
  if (!element['@_contextRef'])
90
89
  continue;
91
90
  var factElement = { name: name_1, id: '', contextRef: '' };
@@ -1,21 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var XMLParser_1 = require("../XMLParser");
4
- var util_type_1 = require("./util-type");
4
+ var util_xbrl_1 = require("./util-xbrl");
5
5
  var LinkbaseParser = /** @class */ (function () {
6
6
  function LinkbaseParser(args) {
7
7
  var _a = (args !== null && args !== void 0 ? args : {}).xmlParser, xmlParser = _a === void 0 ? new XMLParser_1.default() : _a;
8
8
  this.xmlParser = xmlParser;
9
9
  }
10
10
  LinkbaseParser.prototype.parse = function (xml) {
11
- var _a, _b;
12
- var parsed = this.xmlParser.parse(xml);
13
- return this.parseLinkbaseDocument((_b = (_a = parsed.XBRL) !== null && _a !== void 0 ? _a : parsed.xbrl) !== null && _b !== void 0 ? _b : parsed);
11
+ var parsed = util_xbrl_1.default.extractXbrlObject(this.xmlParser.parse(xml));
12
+ return this.parseLinkbaseDocument(parsed);
14
13
  };
15
14
  LinkbaseParser.prototype.parseLinkbaseDocument = function (value) {
16
- value = util_type_1.default.toObject(value);
15
+ value = util_xbrl_1.default.toObject(value);
17
16
  for (var key in value) {
18
- var parsedKey = util_type_1.default.parseKey(key);
17
+ var parsedKey = util_xbrl_1.default.parseKey(key);
19
18
  switch (parsedKey) {
20
19
  case 'linkbase':
21
20
  return this.parseLinkbase(value[key]);
@@ -24,21 +23,21 @@ var LinkbaseParser = /** @class */ (function () {
24
23
  return null;
25
24
  };
26
25
  LinkbaseParser.prototype.parseItem = function (value) {
27
- value = util_type_1.default.toObject(value);
26
+ value = util_xbrl_1.default.toObject(value);
28
27
  var item = {};
29
28
  for (var key in value) {
30
- var parsedKey = util_type_1.default.parseKey(key);
29
+ var parsedKey = util_xbrl_1.default.parseKey(key);
31
30
  switch (parsedKey) {
32
31
  case 'closed':
33
- item[parsedKey] = util_type_1.default.toBoolean(value[key]);
32
+ item[parsedKey] = util_xbrl_1.default.toBoolean(value[key]);
34
33
  break;
35
34
  case 'priority':
36
35
  case 'order':
37
36
  case 'weight':
38
- item[parsedKey] = util_type_1.default.toNumber(value[key]);
37
+ item[parsedKey] = util_xbrl_1.default.toNumber(value[key]);
39
38
  break;
40
39
  default:
41
- item[parsedKey] = util_type_1.default.toString(value[key]);
40
+ item[parsedKey] = util_xbrl_1.default.toString(value[key]);
42
41
  break;
43
42
  }
44
43
  }
@@ -46,24 +45,24 @@ var LinkbaseParser = /** @class */ (function () {
46
45
  };
47
46
  LinkbaseParser.prototype.parseLinkbase = function (value) {
48
47
  var _this = this;
49
- value = util_type_1.default.toObject(value);
48
+ value = util_xbrl_1.default.toObject(value);
50
49
  var linkbase = {};
51
50
  for (var key in value) {
52
- var parsedKey = util_type_1.default.parseKey(key);
51
+ var parsedKey = util_xbrl_1.default.parseKey(key);
53
52
  switch (parsedKey) {
54
53
  case 'referenceLink':
55
54
  case 'labelLink':
56
55
  case 'presentationLink':
57
56
  case 'calculationLink':
58
57
  case 'definitionLink':
59
- linkbase[parsedKey] = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseItemExtended(v); });
58
+ linkbase[parsedKey] = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseItemExtended(v); });
60
59
  break;
61
60
  case 'roleRef':
62
61
  case 'arcroleRef':
63
- linkbase[parsedKey] = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseItem(v); });
62
+ linkbase[parsedKey] = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseItem(v); });
64
63
  break;
65
64
  default:
66
- linkbase[parsedKey] = util_type_1.default.toString(value[key]);
65
+ linkbase[parsedKey] = util_xbrl_1.default.toString(value[key]);
67
66
  break;
68
67
  }
69
68
  }
@@ -75,7 +74,7 @@ var LinkbaseParser = /** @class */ (function () {
75
74
  type: 'extended',
76
75
  };
77
76
  for (var key in value) {
78
- var parsedKey = util_type_1.default.parseKey(key);
77
+ var parsedKey = util_xbrl_1.default.parseKey(key);
79
78
  switch (parsedKey) {
80
79
  case 'loc':
81
80
  case 'calculationArc':
@@ -85,10 +84,10 @@ var LinkbaseParser = /** @class */ (function () {
85
84
  case 'footnoteArc':
86
85
  case 'label':
87
86
  case 'footnote':
88
- item[parsedKey] = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseItem(v); });
87
+ item[parsedKey] = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseItem(v); });
89
88
  break;
90
89
  default:
91
- item[parsedKey] = util_type_1.default.toString(value[key]);
90
+ item[parsedKey] = util_xbrl_1.default.toString(value[key]);
92
91
  break;
93
92
  }
94
93
  }
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  var XMLParser_1 = require("../XMLParser");
4
- var util_type_1 = require("./util-type");
4
+ var util_xbrl_1 = require("./util-xbrl");
5
5
  /* eslint-disable @typescript-eslint/no-explicit-any */
6
6
  var SchemaParser = /** @class */ (function () {
7
7
  function SchemaParser() {
@@ -9,130 +9,128 @@ var SchemaParser = /** @class */ (function () {
9
9
  }
10
10
  SchemaParser.prototype.parseAppInfo = function (value) {
11
11
  var _this = this;
12
- value = util_type_1.default.toObject(value);
12
+ value = util_xbrl_1.default.toObject(value);
13
13
  var appinfo = {};
14
14
  for (var key in value) {
15
- var parsedKey = util_type_1.default.parseKey(key);
15
+ var parsedKey = util_xbrl_1.default.parseKey(key);
16
16
  switch (parsedKey) {
17
17
  case 'roleType':
18
- appinfo.roleType = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseRoleType(v); });
18
+ appinfo.roleType = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseRoleType(v); });
19
19
  break;
20
20
  case 'linkbaseRef':
21
- appinfo.linkbaseRef = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseLinkbaseRef(v); });
21
+ appinfo.linkbaseRef = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseLinkbaseRef(v); });
22
22
  break;
23
23
  }
24
24
  }
25
25
  return appinfo;
26
26
  };
27
27
  SchemaParser.prototype.parseRoleType = function (value) {
28
- value = util_type_1.default.toObject(value);
28
+ value = util_xbrl_1.default.toObject(value);
29
29
  var roleType = {};
30
30
  for (var key in value) {
31
- var parsedKey = util_type_1.default.parseKey(key);
31
+ var parsedKey = util_xbrl_1.default.parseKey(key);
32
32
  switch (parsedKey) {
33
33
  case 'usedOn':
34
- roleType[parsedKey] = util_type_1.default.toArray(value[key]).map(function (v) { return util_type_1.default.toString(v['#text']); });
34
+ roleType[parsedKey] = util_xbrl_1.default.toArray(value[key]).map(function (v) { return util_xbrl_1.default.toString(v['#text']); });
35
35
  break;
36
36
  default:
37
- roleType[parsedKey] = util_type_1.default.toString(value[key]);
37
+ roleType[parsedKey] = util_xbrl_1.default.toString(value[key]);
38
38
  break;
39
39
  }
40
40
  }
41
41
  return roleType;
42
42
  };
43
43
  SchemaParser.prototype.parseLinkbaseRef = function (value) {
44
- value = util_type_1.default.toObject(value);
44
+ value = util_xbrl_1.default.toObject(value);
45
45
  var item = {};
46
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]);
47
+ var parsedKey = util_xbrl_1.default.parseKey(key);
48
+ item[parsedKey] = util_xbrl_1.default.toString(value[key]);
49
49
  }
50
50
  return item;
51
51
  };
52
52
  SchemaParser.prototype.parseAnnotation = function (value) {
53
- value = util_type_1.default.toObject(value);
53
+ value = util_xbrl_1.default.toObject(value);
54
54
  var annotation = {};
55
55
  for (var key in value) {
56
- var parsedKey = util_type_1.default.parseKey(key);
56
+ var parsedKey = util_xbrl_1.default.parseKey(key);
57
57
  switch (parsedKey) {
58
58
  case 'appinfo':
59
59
  annotation.appinfo = this.parseAppInfo(value[key]);
60
60
  break;
61
61
  case 'documentation':
62
- annotation.documentation = util_type_1.default.toString(value[key]);
62
+ annotation.documentation = util_xbrl_1.default.toString(value[key]);
63
63
  break;
64
64
  }
65
65
  }
66
66
  return annotation;
67
67
  };
68
68
  SchemaParser.prototype.parseElement = function (value) {
69
- value = util_type_1.default.toObject(value);
69
+ value = util_xbrl_1.default.toObject(value);
70
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']),
71
+ id: util_xbrl_1.default.toString(value['@_id']),
72
+ name: util_xbrl_1.default.toString(value['@_name']),
73
+ type: util_xbrl_1.default.toString(value['@_type']),
74
74
  };
75
75
  for (var key in value) {
76
- var parsedKey = util_type_1.default.parseKey(key);
77
- switch (util_type_1.default.parseKey(key)) {
76
+ var parsedKey = util_xbrl_1.default.parseKey(key);
77
+ switch (util_xbrl_1.default.parseKey(key)) {
78
78
  case 'abstract':
79
79
  case 'nillable':
80
80
  case 'headUsable':
81
- element[parsedKey] = util_type_1.default.toBoolean(value[key]);
81
+ element[parsedKey] = util_xbrl_1.default.toBoolean(value[key]);
82
82
  break;
83
83
  case 'complexType':
84
84
  case 'annotation':
85
- element[parsedKey] = util_type_1.default.toObject(value[key]);
85
+ element[parsedKey] = util_xbrl_1.default.toObject(value[key]);
86
86
  break;
87
87
  default:
88
- element[parsedKey] = util_type_1.default.toString(value[key]);
88
+ element[parsedKey] = util_xbrl_1.default.toString(value[key]);
89
89
  break;
90
90
  }
91
91
  }
92
92
  return element;
93
93
  };
94
94
  SchemaParser.prototype.parseImport = function (value) {
95
- value = util_type_1.default.toObject(value);
95
+ value = util_xbrl_1.default.toObject(value);
96
96
  return {
97
- namespace: util_type_1.default.toString(value['@_namespace']),
98
- schemaLocation: util_type_1.default.toString(value['@_schemaLocation']),
97
+ namespace: util_xbrl_1.default.toString(value['@_namespace']),
98
+ schemaLocation: util_xbrl_1.default.toString(value['@_schemaLocation']),
99
99
  };
100
100
  };
101
101
  SchemaParser.prototype.parse = function (xml) {
102
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;
103
+ var xbrl = util_xbrl_1.default.extractXbrlObject(this.xmlParser.parse(xml));
106
104
  var schemaRaw = null;
107
105
  for (var key in xbrl) {
108
- if (util_type_1.default.parseKey(key) !== 'schema')
106
+ if (util_xbrl_1.default.parseKey(key) !== 'schema')
109
107
  continue;
110
108
  schemaRaw = xbrl[key];
111
109
  break;
112
110
  }
113
111
  var value = schemaRaw === null ? xbrl : schemaRaw;
114
112
  var schema = {
115
- xmlns: util_type_1.default.toString(value['@_xmlns']),
113
+ xmlns: util_xbrl_1.default.toString(value['@_xmlns']),
116
114
  _xmlnsProps: {},
117
115
  };
118
116
  for (var key in value) {
119
- var parsedKey = util_type_1.default.parseKey(key);
117
+ var parsedKey = util_xbrl_1.default.parseKey(key);
120
118
  switch (parsedKey) {
121
119
  case 'annotation':
122
120
  schema.annotation = this.parseAnnotation(value[key]);
123
121
  break;
124
122
  case 'element':
125
- schema.element = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseElement(v); });
123
+ schema.element = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseElement(v); });
126
124
  break;
127
125
  case 'import':
128
- schema.import = util_type_1.default.toArray(value[key]).map(function (v) { return _this.parseImport(v); });
126
+ schema.import = util_xbrl_1.default.toArray(value[key]).map(function (v) { return _this.parseImport(v); });
129
127
  break;
130
128
  default:
131
129
  if (key.startsWith('@_xmlns:')) {
132
- schema._xmlnsProps[parsedKey] = util_type_1.default.toString(value[key]);
130
+ schema._xmlnsProps[parsedKey] = util_xbrl_1.default.toString(value[key]);
133
131
  }
134
132
  else {
135
- schema[parsedKey] = util_type_1.default.toString(value[key]);
133
+ schema[parsedKey] = util_xbrl_1.default.toString(value[key]);
136
134
  }
137
135
  break;
138
136
  }
@@ -16,7 +16,7 @@ interface XbrlDocument<T> {
16
16
  type: string;
17
17
  xbrl: T;
18
18
  }
19
- export interface ParseXbrlOptions {
19
+ interface ParseXbrlOptions {
20
20
  includeInstance?: boolean;
21
21
  includeLinkbases?: boolean;
22
22
  includeSchema?: boolean;
@@ -17,7 +17,11 @@ var XBRLParser = /** @class */ (function () {
17
17
  var _a, _b, _c, _d, _e, _f;
18
18
  var xmlDocs = documents.filter(function (doc) { return doc.fileName.endsWith('.xml') || doc.fileName.endsWith('.xsd'); });
19
19
  return {
20
- instanceDoc: (_a = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_htm.xml'); })) !== null && _a !== void 0 ? _a : null,
20
+ instanceDoc: (_a = xmlDocs.find(function (doc) {
21
+ return doc.description.toLowerCase().includes('instance doc') ||
22
+ doc.fileName.endsWith('_htm.xml') ||
23
+ (doc.content.includes('<us-gaap') && doc.content.includes('<context'));
24
+ })) !== null && _a !== void 0 ? _a : null,
21
25
  schemaDoc: (_b = xmlDocs.find(function (doc) { return doc.fileName.endsWith('.xsd'); })) !== null && _b !== void 0 ? _b : null,
22
26
  linkbasePresentationDoc: (_c = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_pre.xml'); })) !== null && _c !== void 0 ? _c : null,
23
27
  linkbaseDefinitionDoc: (_d = xmlDocs.find(function (doc) { return doc.fileName.endsWith('_def.xml'); })) !== null && _d !== void 0 ? _d : null,
@@ -4,12 +4,14 @@ declare function toObject<T>(value: T): T;
4
4
  declare function toString(value: any): string;
5
5
  declare function toBoolean(value: any): boolean;
6
6
  declare function parseKey(key: string): string;
7
- declare const utilType: {
7
+ declare function extractXbrlObject(value: any): any;
8
+ declare const utilXbrl: {
8
9
  toArray: typeof toArray;
9
10
  toNumber: typeof toNumber;
10
11
  toObject: typeof toObject;
11
12
  toString: typeof toString;
12
13
  toBoolean: typeof toBoolean;
13
14
  parseKey: typeof parseKey;
15
+ extractXbrlObject: typeof extractXbrlObject;
14
16
  };
15
- export default utilType;
17
+ export default utilXbrl;
@@ -23,12 +23,28 @@ function parseKey(key) {
23
23
  var _a, _b;
24
24
  return (_b = (_a = key.split(':').pop()) === null || _a === void 0 ? void 0 : _a.replace('@_', '').replace('#', '')) !== null && _b !== void 0 ? _b : '';
25
25
  }
26
- var utilType = {
26
+ function extractXbrlObject(value) {
27
+ var _a;
28
+ var xbrl = value;
29
+ if (typeof xbrl !== 'object' || xbrl === null) {
30
+ return null;
31
+ }
32
+ for (var i = 0; i < 10; i++) {
33
+ var xbrlChild = (_a = xbrl.XBRL) !== null && _a !== void 0 ? _a : xbrl.xbrl;
34
+ if (xbrlChild)
35
+ xbrl = xbrlChild;
36
+ else
37
+ break;
38
+ }
39
+ return xbrl;
40
+ }
41
+ var utilXbrl = {
27
42
  toArray: toArray,
28
43
  toNumber: toNumber,
29
44
  toObject: toObject,
30
45
  toString: toString,
31
46
  toBoolean: toBoolean,
32
47
  parseKey: parseKey,
48
+ extractXbrlObject: extractXbrlObject,
33
49
  };
34
- exports.default = utilType;
50
+ exports.default = utilXbrl;
@@ -1,8 +1,8 @@
1
1
  import { FactItem, ReportRaw, XMLParams } from '../../../types';
2
- import { ParseXbrlOptions, XbrlParseResult } from '../XBRLParser/XBRLParser';
3
- export declare function parseXbrl(params: XMLParams & ParseXbrlOptions & {
4
- includeReport?: boolean;
5
- }): XbrlParseResult & {
2
+ import { GetDocumentXbrlParams } from '../../SecEdgarApi';
3
+ import { XbrlParseResult } from '../XBRLParser/XBRLParser';
4
+ export declare function parseXbrl(params: XMLParams & GetDocumentXbrlParams): XbrlParseResult & {
6
5
  report: ReportRaw | null;
7
6
  facts: FactItem[];
7
+ xml: string;
8
8
  };
@@ -23,6 +23,7 @@ var __rest = (this && this.__rest) || function (s, e) {
23
23
  };
24
24
  Object.defineProperty(exports, "__esModule", { value: true });
25
25
  exports.parseXbrl = void 0;
26
+ var constants_1 = require("../../../util/constants");
26
27
  var XBRLParser_1 = require("../XBRLParser/XBRLParser");
27
28
  function isWithinDays(params) {
28
29
  var dateA = params.dateA, dateB = params.dateB, days = params.days;
@@ -31,7 +32,7 @@ function isWithinDays(params) {
31
32
  return daysDiff < days;
32
33
  }
33
34
  function buildReportsFromFacts(params) {
34
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
35
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
35
36
  var filing = params.filing, facts = params.facts, fiscalPeriod = params.fiscalPeriod, fiscalYear = params.fiscalYear, pathSeparator = params.pathSeparator, cikProp = params.cik;
36
37
  var urlParts = (_a = filing === null || filing === void 0 ? void 0 : filing.url.split('/')) !== null && _a !== void 0 ? _a : [];
37
38
  var cik = cikProp !== null && cikProp !== void 0 ? cikProp : urlParts[(_b = urlParts.indexOf('data')) !== null && _b !== void 0 ? _b : -1];
@@ -41,15 +42,22 @@ function buildReportsFromFacts(params) {
41
42
  fiscalPeriod: fiscalPeriod,
42
43
  fiscalYear: fiscalYear,
43
44
  };
45
+ // if there is a split fact, make sure it's from the current fiscal year
46
+ var allowedMonthsPriorForSplit = fiscalPeriod === 'FY' ? 12 : 3;
47
+ var splitFact = facts.find(function (f) {
48
+ var _a;
49
+ return f.name.endsWith(constants_1.KEY_SPLIT) &&
50
+ isWithinDays({ dateA: f.filed, dateB: (_a = filing === null || filing === void 0 ? void 0 : filing.reportDate) !== null && _a !== void 0 ? _a : '', days: allowedMonthsPriorForSplit * 30 });
51
+ });
44
52
  var reportFocus = {
45
53
  cik: Number(cik !== null && cik !== void 0 ? cik : reportFactValues.cik),
46
54
  dateFiled: (_d = filing === null || filing === void 0 ? void 0 : filing.filingDate) !== null && _d !== void 0 ? _d : '',
47
55
  dateReport: String((_e = filing === null || filing === void 0 ? void 0 : filing.reportDate) !== null && _e !== void 0 ? _e : reportFactValues.dateReport),
48
56
  fiscalPeriod: (fiscalPeriod !== null && fiscalPeriod !== void 0 ? fiscalPeriod : reportFactValues.fiscalPeriod),
49
57
  fiscalYear: Number(fiscalYear !== null && fiscalYear !== void 0 ? fiscalYear : reportFactValues.fiscalYear),
50
- splitDate: null,
51
- splitRatio: null,
52
- url: (_f = filing === null || filing === void 0 ? void 0 : filing.url) !== null && _f !== void 0 ? _f : '',
58
+ splitDate: (_f = splitFact === null || splitFact === void 0 ? void 0 : splitFact.end) !== null && _f !== void 0 ? _f : null,
59
+ splitRatio: (splitFact === null || splitFact === void 0 ? void 0 : splitFact.value) ? Number(splitFact.value) : null,
60
+ url: (_g = filing === null || filing === void 0 ? void 0 : filing.url) !== null && _g !== void 0 ? _g : '',
53
61
  };
54
62
  var reportByDateRange = {};
55
63
  var factByName = new Map();
@@ -59,16 +67,16 @@ function buildReportsFromFacts(params) {
59
67
  for (var _i = 0, facts_1 = facts; _i < facts_1.length; _i++) {
60
68
  var fact = facts_1[_i];
61
69
  var dateKey = fact.start ? "".concat(fact.start, "_").concat(fact.end) : fact.end;
62
- (_g = reportByDateRange[dateKey]) !== null && _g !== void 0 ? _g : (reportByDateRange[dateKey] = {
63
- startDate: (_h = fact.start) !== null && _h !== void 0 ? _h : '',
70
+ (_h = reportByDateRange[dateKey]) !== null && _h !== void 0 ? _h : (reportByDateRange[dateKey] = {
71
+ startDate: (_j = fact.start) !== null && _j !== void 0 ? _j : '',
64
72
  endDate: fact.end,
65
73
  });
66
- var isFocusFact = (_j = isFocusFactByDateKey.get(dateKey)) !== null && _j !== void 0 ? _j : isWithinDays({ dateA: fact.end, dateB: reportFocus.dateReport, days: 45 });
74
+ var isFocusFact = (_k = isFocusFactByDateKey.get(dateKey)) !== null && _k !== void 0 ? _k : isWithinDays({ dateA: fact.end, dateB: reportFocus.dateReport, days: 45 });
67
75
  isFocusFactByDateKey.set(dateKey, isFocusFact);
68
76
  var el = fact;
69
- var scale = Number((_k = el.scale) !== null && _k !== void 0 ? _k : 0) || 0;
70
- var decimals = Number((_l = el.decimals) !== null && _l !== void 0 ? _l : 0) || 0;
71
- var suffix = (_m = fact === null || fact === void 0 ? void 0 : fact.segments) === null || _m === void 0 ? void 0 : _m.map(function (_a) {
77
+ var scale = Number((_l = el.scale) !== null && _l !== void 0 ? _l : 0) || 0;
78
+ var decimals = Number((_m = el.decimals) !== null && _m !== void 0 ? _m : 0) || 0;
79
+ var suffix = (_o = fact === null || fact === void 0 ? void 0 : fact.segments) === null || _o === void 0 ? void 0 : _o.map(function (_a) {
72
80
  var dimension = _a.dimension, value = _a.value;
73
81
  return "".concat(dimension).concat(pathSeparator).concat(value);
74
82
  }).join(pathSeparator);
@@ -82,8 +90,8 @@ function buildReportsFromFacts(params) {
82
90
  var prevRounding = roundPlacesByName.get(prevFactKey);
83
91
  var prevScale = scaleByName.get(prevFactKey);
84
92
  var prevFact_1 = factByName.get(prevFactKey);
85
- var prevUnit = (_p = (_o = prevFact_1 === null || prevFact_1 === void 0 ? void 0 : prevFact_1.unit) === null || _o === void 0 ? void 0 : _o.split('_').pop()) === null || _p === void 0 ? void 0 : _p.toLowerCase();
86
- var unit = (_r = (_q = fact.unit) === null || _q === void 0 ? void 0 : _q.split('_').pop()) === null || _r === void 0 ? void 0 : _r.toLowerCase();
93
+ var prevUnit = (_q = (_p = prevFact_1 === null || prevFact_1 === void 0 ? void 0 : prevFact_1.unit) === null || _p === void 0 ? void 0 : _p.split('_').pop()) === null || _q === void 0 ? void 0 : _q.toLowerCase();
94
+ var unit = (_s = (_r = fact.unit) === null || _r === void 0 ? void 0 : _r.split('_').pop()) === null || _s === void 0 ? void 0 : _s.toLowerCase();
87
95
  var shouldSkip = [
88
96
  (prevUnit === null || prevUnit === void 0 ? void 0 : prevUnit.length) === 3 && (unit === null || unit === void 0 ? void 0 : unit.length) === 3 && prevUnit !== unit && prevUnit === 'usd',
89
97
  (prevRounding !== null && prevRounding !== void 0 ? prevRounding : 0) < roundPlaces,
@@ -166,6 +174,6 @@ function parseXbrl(params) {
166
174
  urlPrimaryDocument: '',
167
175
  },
168
176
  }), factsFiltered = _p.factsFiltered, reportFocus = _p.reportFocus;
169
- return __assign(__assign({}, response), { facts: factsFiltered, report: reportFocus });
177
+ return __assign(__assign({}, response), { facts: factsFiltered, report: factsFiltered.length > 0 ? reportFocus : null, xml: xml });
170
178
  }
171
179
  exports.parseXbrl = parseXbrl;
@@ -20,6 +20,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
20
20
  return to.concat(ar || Array.prototype.slice.call(from));
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
+ var constants_1 = require("../../util/constants");
23
24
  var FactPeriodResolver_1 = require("./FactPeriodResolver");
24
25
  /**
25
26
  * Splits can be filed multiple times throughout different reports. There is no clear
@@ -29,7 +30,7 @@ var FactPeriodResolver_1 = require("./FactPeriodResolver");
29
30
  */
30
31
  var FactSplitAdjuster = /** @class */ (function () {
31
32
  function FactSplitAdjuster() {
32
- this.keySplit = 'StockholdersEquityNoteStockSplitConversionRatio1';
33
+ this.keySplit = constants_1.KEY_SPLIT;
33
34
  this.preferFirstValue = true;
34
35
  }
35
36
  FactSplitAdjuster.prototype.getGroupValue = function (factGroup, isTrailing) {
@@ -2,7 +2,6 @@ import { CompanyFactFrame, CompanyFactListData, CompanyTickerItem, DailyFilingFo
2
2
  import { FilingListDetails, FilingListItemTranslated, SubmissionList } from '../../types/submission.type';
3
3
  import { IClient } from '../Client';
4
4
  import DocumentParser from '../DocumentParser';
5
- import { ParseXbrlOptions } from '../DocumentParser/XBRLParser/XBRLParser';
6
5
  import ReportParser from '../ReportParser';
7
6
  import ReportWrapper from '../ReportParser/ReportWrapper';
8
7
  import FilingMapper from './FilingMapper';
@@ -54,12 +53,6 @@ export interface GetFactFrameParams {
54
53
  unit?: 'pure' | 'USD' | 'shares' | string;
55
54
  taxonomy?: 'us-gaap' | 'dei' | 'invest' | string;
56
55
  }
57
- export interface GetDocumentXMLParams {
58
- /** symbol or cik */
59
- symbol: string | number;
60
- accessionNumber: string;
61
- primaryDocument: string;
62
- }
63
56
  export interface GetInsiderTransactionsParams {
64
57
  page: number;
65
58
  symbol: string | number;
@@ -83,6 +76,15 @@ interface GetCurrentFilingsParams {
83
76
  symbol?: string | number;
84
77
  searchType?: 'include' | 'exclude' | 'only';
85
78
  }
79
+ export interface GetDocumentXbrlParams {
80
+ url?: string;
81
+ symbol?: string | number;
82
+ accessionNumber?: string;
83
+ includeReport?: boolean;
84
+ includeInstance?: boolean;
85
+ includeLinkbases?: boolean;
86
+ includeSchema?: boolean;
87
+ }
86
88
  /**
87
89
  * Gets reports from companies filed with the SEC
88
90
  *
@@ -192,7 +194,8 @@ export default class SecEdgarApi {
192
194
  */
193
195
  getMutualFundList(): Promise<FieldDataResponse<'cik' | 'seriesId' | 'classId' | 'symbol'>>;
194
196
  /**
195
- * Gets a raw xml document string. the parameters are found in the submission list response.
197
+ * If url is provided, all other props are ignored. Otherwise, both accessionNumber
198
+ * and symbol (symbol or cik) are required. provide fileName if different from `${accessionNumber}.txt`
196
199
  *
197
200
  * Some form types can be parsed using the DocumentParser such as form 4 (insider transactions) and form 13g (institutional holders)
198
201
  *
@@ -200,19 +203,32 @@ export default class SecEdgarApi {
200
203
  *
201
204
  * @see https://www.sec.gov/forms for a list of form types
202
205
  */
203
- getDocumentXML(params: GetDocumentXMLParams): Promise<string>;
206
+ getDocument(params: {
207
+ url?: string;
208
+ symbol?: string | number;
209
+ accessionNumber?: string;
210
+ fileName?: string;
211
+ }): Promise<string>;
204
212
  /**
205
- * Gets a raw xml document string. the url is found in the submission list response. (response.filings.recentTranslated.url)
206
- *
207
- * Some form types can be parsed using the DocumentParser such as form 4 (insider transactions) and form 13g (institutional holders)
213
+ * Fetches SEC document and parses XBRL data. If url is provided, symbol and accessionNumber are ignored.
208
214
  *
209
- * endpoint: `https://www.sec.gov/Archives/edgar/data/${cik}/${accessionNumber}/${primaryDocument}`
215
+ * Use "include" params to specify what to parse. If not provided, all data is parsed.
216
+ */
217
+ getDocumentXbrl(params: GetDocumentXbrlParams): Promise<import("../DocumentParser/XBRLParser/XBRLParser").XbrlParseResult & {
218
+ report: ReportRaw | null;
219
+ facts: import("../../types").FactItem[];
220
+ xml: string;
221
+ }>;
222
+ /**
223
+ * Builds a url for a document. If fileName is not provided, it defaults to `${accessionNumber}.txt`
210
224
  *
211
- * @see https://www.sec.gov/forms for a list of form types
225
+ * format: `https://www.sec.gov/Archives/edgar/data/${cik}/${accessionNumberNoHyphen)}/${fileNameAccessionFile}`
212
226
  */
213
- getDocumentXMLByUrl(params: {
214
- url: string;
215
- }): Promise<string>;
227
+ buildDocumentUrl(params: {
228
+ symbol: string | number;
229
+ accessionNumber: string;
230
+ fileName?: string;
231
+ }): string;
216
232
  /**
217
233
  * Used for getting insider transactions. extracts insider transaction urls from submission list response, and parses the xml doc.
218
234
  *
@@ -285,17 +301,9 @@ export default class SecEdgarApi {
285
301
  /**
286
302
  * @see https://www.sec.gov/structureddata/rss-feeds-submitted-filings
287
303
  */
288
- getCurrentFilingsXBRL(params?: {
304
+ getCurrentFilingsXbrl(params?: {
289
305
  taxonomy?: 'usGaap' | 'mutualFund' | 'inlineXbrl' | 'allXbrl';
290
306
  }): Promise<import("../../types").CurrentFilingsXBRL>;
291
- getDocumentXbrl(params: {
292
- url: string;
293
- } & ParseXbrlOptions & {
294
- includeReport?: boolean;
295
- }): Promise<import("../DocumentParser/XBRLParser/XBRLParser").XbrlParseResult & {
296
- report: ReportRaw | null;
297
- facts: import("../../types").FactItem[];
298
- }>;
299
307
  /**
300
308
  * Gets insider transactions for a provided symbol or CIK.
301
309
  *
@@ -354,7 +354,8 @@ var SecEdgarApi = /** @class */ (function () {
354
354
  });
355
355
  };
356
356
  /**
357
- * Gets a raw xml document string. the parameters are found in the submission list response.
357
+ * If url is provided, all other props are ignored. Otherwise, both accessionNumber
358
+ * and symbol (symbol or cik) are required. provide fileName if different from `${accessionNumber}.txt`
358
359
  *
359
360
  * Some form types can be parsed using the DocumentParser such as form 4 (insider transactions) and form 13g (institutional holders)
360
361
  *
@@ -362,32 +363,50 @@ var SecEdgarApi = /** @class */ (function () {
362
363
  *
363
364
  * @see https://www.sec.gov/forms for a list of form types
364
365
  */
365
- SecEdgarApi.prototype.getDocumentXML = function (params) {
366
+ SecEdgarApi.prototype.getDocument = function (params) {
366
367
  return __awaiter(this, void 0, void 0, function () {
367
- var accessionNumber, primaryDocument, symbol, cik;
368
- return __generator(this, function (_a) {
369
- accessionNumber = params.accessionNumber, primaryDocument = params.primaryDocument, symbol = params.symbol;
370
- cik = this.cikBySymbol[symbol];
371
- return [2 /*return*/, this.request("".concat(this.baseUrlSec, "/Archives/edgar/data/").concat(cik, "/").concat(accessionNumber.replace(/-/g, ''), "/").concat(primaryDocument), true)];
368
+ var _a, accessionNumber, fileName, _b, symbol, urlProp, url;
369
+ return __generator(this, function (_c) {
370
+ _a = params.accessionNumber, accessionNumber = _a === void 0 ? '' : _a, fileName = params.fileName, _b = params.symbol, symbol = _b === void 0 ? '' : _b, urlProp = params.url;
371
+ if (!urlProp && (!accessionNumber || !symbol)) {
372
+ throw new Error('Must provide either url or (a)ccessionNumber and symbol)');
373
+ }
374
+ url = urlProp !== null && urlProp !== void 0 ? urlProp : this.buildDocumentUrl({ symbol: symbol, accessionNumber: accessionNumber, fileName: fileName });
375
+ return [2 /*return*/, this.request(url, true)];
372
376
  });
373
377
  });
374
378
  };
375
379
  /**
376
- * Gets a raw xml document string. the url is found in the submission list response. (response.filings.recentTranslated.url)
377
- *
378
- * Some form types can be parsed using the DocumentParser such as form 4 (insider transactions) and form 13g (institutional holders)
379
- *
380
- * endpoint: `https://www.sec.gov/Archives/edgar/data/${cik}/${accessionNumber}/${primaryDocument}`
380
+ * Fetches SEC document and parses XBRL data. If url is provided, symbol and accessionNumber are ignored.
381
381
  *
382
- * @see https://www.sec.gov/forms for a list of form types
382
+ * Use "include" params to specify what to parse. If not provided, all data is parsed.
383
383
  */
384
- SecEdgarApi.prototype.getDocumentXMLByUrl = function (params) {
384
+ SecEdgarApi.prototype.getDocumentXbrl = function (params) {
385
385
  return __awaiter(this, void 0, void 0, function () {
386
+ var url, accessionNumber, symbol, options, xml;
386
387
  return __generator(this, function (_a) {
387
- return [2 /*return*/, this.request(params.url, true)];
388
+ switch (_a.label) {
389
+ case 0:
390
+ url = params.url, accessionNumber = params.accessionNumber, symbol = params.symbol, options = __rest(params, ["url", "accessionNumber", "symbol"]);
391
+ return [4 /*yield*/, this.getDocument({ url: url, accessionNumber: accessionNumber, symbol: symbol })];
392
+ case 1:
393
+ xml = _a.sent();
394
+ return [2 /*return*/, this.documentParser.parseXbrl(__assign({ xml: xml }, options))];
395
+ }
388
396
  });
389
397
  });
390
398
  };
399
+ /**
400
+ * Builds a url for a document. If fileName is not provided, it defaults to `${accessionNumber}.txt`
401
+ *
402
+ * format: `https://www.sec.gov/Archives/edgar/data/${cik}/${accessionNumberNoHyphen)}/${fileNameAccessionFile}`
403
+ */
404
+ SecEdgarApi.prototype.buildDocumentUrl = function (params) {
405
+ var symbol = params.symbol, accessionNumber = params.accessionNumber, fileNameProp = params.fileName;
406
+ var cik = Number(this.getCikString(symbol));
407
+ var fileName = fileNameProp !== null && fileNameProp !== void 0 ? fileNameProp : "".concat(accessionNumber, ".txt");
408
+ return "".concat(this.baseUrlSec, "/Archives/edgar/data/").concat(cik, "/").concat(accessionNumber.replace(/-/g, ''), "/").concat(fileName);
409
+ };
391
410
  /**
392
411
  * Used for getting insider transactions. extracts insider transaction urls from submission list response, and parses the xml doc.
393
412
  *
@@ -411,7 +430,7 @@ var SecEdgarApi = /** @class */ (function () {
411
430
  case 0:
412
431
  _b = (_a = this.documentParser).parseForm4;
413
432
  _c = {};
414
- return [4 /*yield*/, this.getDocumentXMLByUrl(params)];
433
+ return [4 /*yield*/, this.getDocument(params)];
415
434
  case 1: return [2 /*return*/, _b.apply(_a, [(_c.xml = _d.sent(), _c)])];
416
435
  }
417
436
  });
@@ -446,7 +465,7 @@ var SecEdgarApi = /** @class */ (function () {
446
465
  case 0:
447
466
  _b = (_a = this.documentParser).parseForm13g;
448
467
  _c = {};
449
- return [4 /*yield*/, this.getDocumentXMLByUrl(params)];
468
+ return [4 /*yield*/, this.getDocument(params)];
450
469
  case 1: return [2 /*return*/, _b.apply(_a, [(_c.xml = _d.sent(), _c)])];
451
470
  }
452
471
  });
@@ -490,7 +509,7 @@ var SecEdgarApi = /** @class */ (function () {
490
509
  case 0:
491
510
  _b = (_a = this.documentParser).parseForm10k;
492
511
  _c = {};
493
- return [4 /*yield*/, this.getDocumentXMLByUrl(params)];
512
+ return [4 /*yield*/, this.getDocument(params)];
494
513
  case 1: return [2 /*return*/, _b.apply(_a, [(_c.xml = _d.sent(), _c)])];
495
514
  }
496
515
  });
@@ -524,7 +543,7 @@ var SecEdgarApi = /** @class */ (function () {
524
543
  case 0:
525
544
  _b = (_a = this.documentParser).parseFormDef14a;
526
545
  _c = {};
527
- return [4 /*yield*/, this.getDocumentXMLByUrl(params)];
546
+ return [4 /*yield*/, this.getDocument(params)];
528
547
  case 1: return [2 /*return*/, _b.apply(_a, [(_c.xml = _d.sent(), _c)])];
529
548
  }
530
549
  });
@@ -579,7 +598,7 @@ var SecEdgarApi = /** @class */ (function () {
579
598
  switch (_e.label) {
580
599
  case 0:
581
600
  _b = params !== null && params !== void 0 ? params : {}, _c = _b.page, page = _c === void 0 ? 1 : _c, _d = _b.itemsPerPage, itemsPerPage = _d === void 0 ? 100 : _d, formType = _b.formType, searchType = _b.searchType, symbol = _b.symbol;
582
- type = (_a = formType === null || formType === void 0 ? void 0 : formType.replace(/\s/, '+')) !== null && _a !== void 0 ? _a : null;
601
+ type = (_a = formType === null || formType === void 0 ? void 0 : formType.trim().replace(/\s/g, '+')) !== null && _a !== void 0 ? _a : null;
583
602
  owner = searchType !== null && searchType !== void 0 ? searchType : ((formType === null || formType === void 0 ? void 0 : formType.includes(' ')) ? 'include' : 'only');
584
603
  offset = (page - 1) * Math.max(1, itemsPerPage || 100);
585
604
  cik = symbol ? Number(this.getCikString(symbol)) : null;
@@ -601,7 +620,7 @@ var SecEdgarApi = /** @class */ (function () {
601
620
  /**
602
621
  * @see https://www.sec.gov/structureddata/rss-feeds-submitted-filings
603
622
  */
604
- SecEdgarApi.prototype.getCurrentFilingsXBRL = function (params) {
623
+ SecEdgarApi.prototype.getCurrentFilingsXbrl = function (params) {
605
624
  return __awaiter(this, void 0, void 0, function () {
606
625
  var _a, taxonomy, urlByTaxonomy, url, xml;
607
626
  return __generator(this, function (_b) {
@@ -623,21 +642,6 @@ var SecEdgarApi = /** @class */ (function () {
623
642
  });
624
643
  });
625
644
  };
626
- SecEdgarApi.prototype.getDocumentXbrl = function (params) {
627
- return __awaiter(this, void 0, void 0, function () {
628
- var url, options, xml;
629
- return __generator(this, function (_a) {
630
- switch (_a.label) {
631
- case 0:
632
- url = params.url, options = __rest(params, ["url"]);
633
- return [4 /*yield*/, this.getDocumentXMLByUrl({ url: url })];
634
- case 1:
635
- xml = _a.sent();
636
- return [2 /*return*/, this.documentParser.parseXbrl(__assign({ xml: xml }, options))];
637
- }
638
- });
639
- });
640
- };
641
645
  /**
642
646
  * Gets insider transactions for a provided symbol or CIK.
643
647
  *
@@ -0,0 +1,2 @@
1
+ declare const KEY_SPLIT = "StockholdersEquityNoteStockSplitConversionRatio1";
2
+ export { KEY_SPLIT };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KEY_SPLIT = void 0;
4
+ var KEY_SPLIT = 'StockholdersEquityNoteStockSplitConversionRatio1';
5
+ exports.KEY_SPLIT = KEY_SPLIT;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sec-edgar-api",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Fetch and parse SEC earnings reports and other filings. Useful for financial analysis.",
5
5
  "main": "build/index.js",
6
6
  "author": "Andrew Evers (https://github.com/andyevers)",