devextreme-exceljs-fork 4.4.7 → 4.4.8

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 (109) hide show
  1. package/dist/dx-exceljs-fork.bare.js +445 -541
  2. package/dist/dx-exceljs-fork.bare.js.map +18 -18
  3. package/dist/dx-exceljs-fork.bare.min.js +7 -7
  4. package/dist/dx-exceljs-fork.bare.min.js.map +1 -1
  5. package/dist/dx-exceljs-fork.js +445 -541
  6. package/dist/dx-exceljs-fork.js.map +18 -18
  7. package/dist/dx-exceljs-fork.min.js +6 -6
  8. package/dist/dx-exceljs-fork.min.js.map +1 -1
  9. package/dist/es5/csv/csv.js +1 -1
  10. package/dist/es5/csv/csv.js.map +1 -1
  11. package/dist/es5/doc/cell.js +5 -5
  12. package/dist/es5/doc/cell.js.map +1 -1
  13. package/dist/es5/doc/pivot-table.js +1 -1
  14. package/dist/es5/doc/pivot-table.js.map +1 -1
  15. package/dist/es5/doc/range.js +7 -7
  16. package/dist/es5/doc/range.js.map +1 -1
  17. package/dist/es5/doc/row.js +1 -1
  18. package/dist/es5/doc/row.js.map +1 -1
  19. package/dist/es5/doc/table.js +10 -10
  20. package/dist/es5/doc/table.js.map +1 -1
  21. package/dist/es5/doc/worksheet.js +7 -6
  22. package/dist/es5/doc/worksheet.js.map +1 -1
  23. package/dist/es5/stream/xlsx/hyperlink-reader.js +26 -49
  24. package/dist/es5/stream/xlsx/hyperlink-reader.js.map +1 -1
  25. package/dist/es5/stream/xlsx/sheet-comments-writer.js +6 -6
  26. package/dist/es5/stream/xlsx/sheet-comments-writer.js.map +1 -1
  27. package/dist/es5/stream/xlsx/sheet-rels-writer.js +6 -5
  28. package/dist/es5/stream/xlsx/sheet-rels-writer.js.map +1 -1
  29. package/dist/es5/stream/xlsx/workbook-reader.js +215 -320
  30. package/dist/es5/stream/xlsx/workbook-reader.js.map +1 -1
  31. package/dist/es5/stream/xlsx/workbook-writer.js +8 -8
  32. package/dist/es5/stream/xlsx/workbook-writer.js.map +1 -1
  33. package/dist/es5/stream/xlsx/worksheet-reader.js +265 -341
  34. package/dist/es5/stream/xlsx/worksheet-reader.js.map +1 -1
  35. package/dist/es5/stream/xlsx/worksheet-writer.js +9 -13
  36. package/dist/es5/stream/xlsx/worksheet-writer.js.map +1 -1
  37. package/dist/es5/utils/col-cache.js +14 -18
  38. package/dist/es5/utils/col-cache.js.map +1 -1
  39. package/dist/es5/utils/copy-style.js +12 -10
  40. package/dist/es5/utils/copy-style.js.map +1 -1
  41. package/dist/es5/utils/encryptor.js +1 -1
  42. package/dist/es5/utils/encryptor.js.map +1 -1
  43. package/dist/es5/utils/iterate-stream.js +26 -37
  44. package/dist/es5/utils/iterate-stream.js.map +1 -1
  45. package/dist/es5/utils/parse-sax.js +34 -67
  46. package/dist/es5/utils/parse-sax.js.map +1 -1
  47. package/dist/es5/utils/utils.js +1 -1
  48. package/dist/es5/utils/utils.js.map +1 -1
  49. package/dist/es5/utils/xml-stream.js +1 -1
  50. package/dist/es5/utils/xml-stream.js.map +1 -1
  51. package/dist/es5/xlsx/xform/base-xform.js +12 -35
  52. package/dist/es5/xlsx/xform/base-xform.js.map +1 -1
  53. package/dist/es5/xlsx/xform/book/defined-name-xform.js +2 -2
  54. package/dist/es5/xlsx/xform/book/defined-name-xform.js.map +1 -1
  55. package/dist/es5/xlsx/xform/book/workbook-xform.js +5 -5
  56. package/dist/es5/xlsx/xform/book/workbook-xform.js.map +1 -1
  57. package/dist/es5/xlsx/xform/comment/comment-xform.js +4 -8
  58. package/dist/es5/xlsx/xform/comment/comment-xform.js.map +1 -1
  59. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js +1 -1
  60. package/dist/es5/xlsx/xform/comment/vml-shape-xform.js.map +1 -1
  61. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  62. package/dist/es5/xlsx/xform/comment/vml-textbox-xform.js.map +1 -1
  63. package/dist/es5/xlsx/xform/core/content-types-xform.js +5 -5
  64. package/dist/es5/xlsx/xform/core/content-types-xform.js.map +1 -1
  65. package/dist/es5/xlsx/xform/core/core-xform.js +2 -2
  66. package/dist/es5/xlsx/xform/core/core-xform.js.map +1 -1
  67. package/dist/es5/xlsx/xform/core/relationships-xform.js +2 -2
  68. package/dist/es5/xlsx/xform/core/relationships-xform.js.map +1 -1
  69. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js +1 -1
  70. package/dist/es5/xlsx/xform/drawing/c-nv-pr-xform.js.map +1 -1
  71. package/dist/es5/xlsx/xform/list-xform.js +1 -1
  72. package/dist/es5/xlsx/xform/list-xform.js.map +1 -1
  73. package/dist/es5/xlsx/xform/pivot-table/cache-field.js +8 -2
  74. package/dist/es5/xlsx/xform/pivot-table/cache-field.js.map +1 -1
  75. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +3 -7
  76. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-definition-xform.js.map +1 -1
  77. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js +7 -11
  78. package/dist/es5/xlsx/xform/pivot-table/pivot-cache-records-xform.js.map +1 -1
  79. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js +70 -10
  80. package/dist/es5/xlsx/xform/pivot-table/pivot-table-xform.js.map +1 -1
  81. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js +1 -1
  82. package/dist/es5/xlsx/xform/sheet/auto-filter-xform.js.map +1 -1
  83. package/dist/es5/xlsx/xform/sheet/cell-xform.js +4 -8
  84. package/dist/es5/xlsx/xform/sheet/cell-xform.js.map +1 -1
  85. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js +18 -22
  86. package/dist/es5/xlsx/xform/sheet/cf/cf-rule-xform.js.map +1 -1
  87. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +2 -2
  88. package/dist/es5/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js.map +1 -1
  89. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js +11 -13
  90. package/dist/es5/xlsx/xform/sheet/data-validations-xform.js.map +1 -1
  91. package/dist/es5/xlsx/xform/sheet/merges.js +1 -1
  92. package/dist/es5/xlsx/xform/sheet/merges.js.map +1 -1
  93. package/dist/es5/xlsx/xform/sheet/row-xform.js +2 -2
  94. package/dist/es5/xlsx/xform/sheet/row-xform.js.map +1 -1
  95. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js +10 -10
  96. package/dist/es5/xlsx/xform/sheet/worksheet-xform.js.map +1 -1
  97. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js +2 -2
  98. package/dist/es5/xlsx/xform/strings/shared-strings-xform.js.map +1 -1
  99. package/dist/es5/xlsx/xform/style/border-xform.js +3 -7
  100. package/dist/es5/xlsx/xform/style/border-xform.js.map +1 -1
  101. package/dist/es5/xlsx/xform/table/auto-filter-xform.js +2 -2
  102. package/dist/es5/xlsx/xform/table/auto-filter-xform.js.map +1 -1
  103. package/dist/es5/xlsx/xform/table/filter-column-xform.js +1 -1
  104. package/dist/es5/xlsx/xform/table/filter-column-xform.js.map +1 -1
  105. package/dist/es5/xlsx/xform/table/table-xform.js +3 -7
  106. package/dist/es5/xlsx/xform/table/table-xform.js.map +1 -1
  107. package/dist/es5/xlsx/xlsx.js +22 -45
  108. package/dist/es5/xlsx/xlsx.js.map +1 -1
  109. package/package.json +13 -14
@@ -1,18 +1,5 @@
1
1
  "use strict";
2
2
 
3
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
7
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
- function _asyncGeneratorDelegate(t) { var e = {}, n = !1; function pump(e, r) { return n = !0, r = new Promise(function (n) { n(t[e](r)); }), { done: !1, value: new _OverloadYield(r, 1) }; } return e["undefined" != typeof Symbol && Symbol.iterator || "@@iterator"] = function () { return this; }, e.next = function (t) { return n ? (n = !1, t) : pump("next", t); }, "function" == typeof t.throw && (e.throw = function (t) { if (n) throw n = !1, t; return pump("throw", t); }), "function" == typeof t.return && (e.return = function (t) { return n ? (n = !1, t) : pump("return", t); }), e; }
9
- function _awaitAsyncGenerator(e) { return new _OverloadYield(e, 0); }
10
- function _wrapAsyncGenerator(e) { return function () { return new AsyncGenerator(e.apply(this, arguments)); }; }
11
- function AsyncGenerator(e) { var r, t; function resume(r, t) { try { var n = e[r](t), o = n.value, u = o instanceof _OverloadYield; Promise.resolve(u ? o.v : o).then(function (t) { if (u) { var i = "return" === r ? "return" : "next"; if (!o.k || t.done) return resume(i, t); t = e[i](t).value; } settle(n.done ? "return" : "normal", t); }, function (e) { resume("throw", e); }); } catch (e) { settle("throw", e); } } function settle(e, n) { switch (e) { case "return": r.resolve({ value: n, done: !0 }); break; case "throw": r.reject(n); break; default: r.resolve({ value: n, done: !1 }); } (r = r.next) ? resume(r.key, r.arg) : t = null; } this._invoke = function (e, n) { return new Promise(function (o, u) { var i = { key: e, arg: n, resolve: o, reject: u, next: null }; t ? t = t.next = i : (r = t = i, resume(e, n)); }); }, "function" != typeof e.return && (this.return = void 0); }
12
- AsyncGenerator.prototype["function" == typeof Symbol && Symbol.asyncIterator || "@@asyncIterator"] = function () { return this; }, AsyncGenerator.prototype.next = function (e) { return this._invoke("next", e); }, AsyncGenerator.prototype.throw = function (e) { return this._invoke("throw", e); }, AsyncGenerator.prototype.return = function (e) { return this._invoke("return", e); };
13
- function _OverloadYield(e, d) { this.v = e, this.k = d; }
14
- function _asyncIterator(r) { var n, t, o, e = 2; for ("undefined" != typeof Symbol && (t = Symbol.asyncIterator, o = Symbol.iterator); e--;) { if (t && null != (n = r[t])) return n.call(r); if (o && null != (n = r[o])) return new AsyncFromSyncIterator(n.call(r)); t = "@@asyncIterator", o = "@@iterator"; } throw new TypeError("Object is not async iterable"); }
15
- function AsyncFromSyncIterator(r) { function AsyncFromSyncIteratorContinuation(r) { if (Object(r) !== r) return Promise.reject(new TypeError(r + " is not an object.")); var n = r.done; return Promise.resolve(r.value).then(function (r) { return { value: r, done: n }; }); } return AsyncFromSyncIterator = function (r) { this.s = r, this.n = r.next; }, AsyncFromSyncIterator.prototype = { s: null, n: null, next: function () { return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments)); }, return: function (r) { var n = this.s.return; return void 0 === n ? Promise.resolve({ value: r, done: !0 }) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); }, throw: function (r) { var n = this.s.return; return void 0 === n ? Promise.reject(r) : AsyncFromSyncIteratorContinuation(n.apply(this.s, arguments)); } }, new AsyncFromSyncIterator(r); }
16
3
  const fs = require('fs');
17
4
  const {
18
5
  EventEmitter
@@ -37,13 +24,14 @@ class WorkbookReader extends EventEmitter {
37
24
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
38
25
  super();
39
26
  this.input = input;
40
- this.options = _objectSpread({
27
+ this.options = {
41
28
  worksheets: 'emit',
42
29
  sharedStrings: 'cache',
43
30
  hyperlinks: 'ignore',
44
31
  styles: 'ignore',
45
- entries: 'ignore'
46
- }, options);
32
+ entries: 'ignore',
33
+ ...options
34
+ };
47
35
  this.styles = new StyleManager();
48
36
  this.styles.init();
49
37
  }
@@ -54,46 +42,25 @@ class WorkbookReader extends EventEmitter {
54
42
  if (typeof input === 'string') {
55
43
  return fs.createReadStream(input);
56
44
  }
57
- throw new Error("Could not recognise input: ".concat(input));
45
+ throw new Error(`Could not recognise input: ${input}`);
58
46
  }
59
47
  async read(input, options) {
60
48
  try {
61
- var _iteratorAbruptCompletion = false;
62
- var _didIteratorError = false;
63
- var _iteratorError;
64
- try {
65
- for (var _iterator = _asyncIterator(this.parse(input, options)), _step; _iteratorAbruptCompletion = !(_step = await _iterator.next()).done; _iteratorAbruptCompletion = false) {
66
- const {
67
- eventType,
68
- value
69
- } = _step.value;
70
- {
71
- switch (eventType) {
72
- case 'shared-strings':
73
- this.emit(eventType, value);
74
- break;
75
- case 'worksheet':
76
- this.emit(eventType, value);
77
- await value.read();
78
- break;
79
- case 'hyperlinks':
80
- this.emit(eventType, value);
81
- break;
82
- }
83
- }
84
- }
85
- } catch (err) {
86
- _didIteratorError = true;
87
- _iteratorError = err;
88
- } finally {
89
- try {
90
- if (_iteratorAbruptCompletion && _iterator.return != null) {
91
- await _iterator.return();
92
- }
93
- } finally {
94
- if (_didIteratorError) {
95
- throw _iteratorError;
96
- }
49
+ for await (const {
50
+ eventType,
51
+ value
52
+ } of this.parse(input, options)) {
53
+ switch (eventType) {
54
+ case 'shared-strings':
55
+ this.emit(eventType, value);
56
+ break;
57
+ case 'worksheet':
58
+ this.emit(eventType, value);
59
+ await value.read();
60
+ break;
61
+ case 'hyperlinks':
62
+ this.emit(eventType, value);
63
+ break;
97
64
  }
98
65
  }
99
66
  this.emit('end');
@@ -102,142 +69,94 @@ class WorkbookReader extends EventEmitter {
102
69
  this.emit('error', error);
103
70
  }
104
71
  }
105
- [Symbol.asyncIterator]() {
106
- var _this = this;
107
- return _wrapAsyncGenerator(function* () {
108
- var _iteratorAbruptCompletion2 = false;
109
- var _didIteratorError2 = false;
110
- var _iteratorError2;
111
- try {
112
- for (var _iterator2 = _asyncIterator(_this.parse()), _step2; _iteratorAbruptCompletion2 = !(_step2 = yield _awaitAsyncGenerator(_iterator2.next())).done; _iteratorAbruptCompletion2 = false) {
113
- const {
114
- eventType,
115
- value
116
- } = _step2.value;
117
- {
118
- if (eventType === 'worksheet') {
119
- yield value;
120
- }
121
- }
122
- }
123
- } catch (err) {
124
- _didIteratorError2 = true;
125
- _iteratorError2 = err;
126
- } finally {
127
- try {
128
- if (_iteratorAbruptCompletion2 && _iterator2.return != null) {
129
- yield _awaitAsyncGenerator(_iterator2.return());
130
- }
131
- } finally {
132
- if (_didIteratorError2) {
133
- throw _iteratorError2;
134
- }
135
- }
72
+ async *[Symbol.asyncIterator]() {
73
+ for await (const {
74
+ eventType,
75
+ value
76
+ } of this.parse()) {
77
+ if (eventType === 'worksheet') {
78
+ yield value;
136
79
  }
137
- })();
80
+ }
138
81
  }
139
- parse(input, options) {
140
- var _this2 = this;
141
- return _wrapAsyncGenerator(function* () {
142
- if (options) _this2.options = options;
143
- const stream = _this2.stream = _this2._getStream(input || _this2.input);
144
- const zip = unzip.Parse({
145
- forceStream: true
146
- });
147
- stream.pipe(zip);
82
+ async *parse(input, options) {
83
+ if (options) this.options = options;
84
+ const stream = this.stream = this._getStream(input || this.input);
85
+ const zip = unzip.Parse({
86
+ forceStream: true
87
+ });
88
+ stream.pipe(zip);
148
89
 
149
- // worksheets, deferred for parsing after shared strings reading
150
- const waitingWorkSheets = [];
151
- var _iteratorAbruptCompletion3 = false;
152
- var _didIteratorError3 = false;
153
- var _iteratorError3;
154
- try {
155
- for (var _iterator3 = _asyncIterator(zip), _step3; _iteratorAbruptCompletion3 = !(_step3 = yield _awaitAsyncGenerator(_iterator3.next())).done; _iteratorAbruptCompletion3 = false) {
156
- const entry = _step3.value;
157
- {
158
- let match;
159
- let sheetNo;
160
- switch (entry.path) {
161
- case '_rels/.rels':
162
- break;
163
- case 'xl/_rels/workbook.xml.rels':
164
- yield _awaitAsyncGenerator(_this2._parseRels(entry));
165
- break;
166
- case 'xl/workbook.xml':
167
- yield _awaitAsyncGenerator(_this2._parseWorkbook(entry));
168
- break;
169
- case 'xl/sharedStrings.xml':
170
- yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseSharedStrings(entry)), _awaitAsyncGenerator);
171
- break;
172
- case 'xl/styles.xml':
173
- yield _awaitAsyncGenerator(_this2._parseStyles(entry));
174
- break;
175
- default:
176
- if (entry.path.match(/xl\/worksheets\/sheet\d+[.]xml/)) {
177
- match = entry.path.match(/xl\/worksheets\/sheet(\d+)[.]xml/);
178
- sheetNo = match[1];
179
- if (_this2.sharedStrings && _this2.workbookRels) {
180
- yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseWorksheet(iterateStream(entry), sheetNo)), _awaitAsyncGenerator);
181
- } else {
182
- // create temp file for each worksheet
183
- yield _awaitAsyncGenerator(new Promise((resolve, reject) => {
184
- tmp.file((err, path, fd, tempFileCleanupCallback) => {
185
- if (err) {
186
- return reject(err);
187
- }
188
- waitingWorkSheets.push({
189
- sheetNo,
190
- path,
191
- tempFileCleanupCallback
192
- });
193
- const tempStream = fs.createWriteStream(path);
194
- tempStream.on('error', reject);
195
- entry.pipe(tempStream);
196
- return tempStream.on('finish', () => {
197
- return resolve();
198
- });
199
- });
200
- }));
90
+ // worksheets, deferred for parsing after shared strings reading
91
+ const waitingWorkSheets = [];
92
+ for await (const entry of zip) {
93
+ let match;
94
+ let sheetNo;
95
+ switch (entry.path) {
96
+ case '_rels/.rels':
97
+ break;
98
+ case 'xl/_rels/workbook.xml.rels':
99
+ await this._parseRels(entry);
100
+ break;
101
+ case 'xl/workbook.xml':
102
+ await this._parseWorkbook(entry);
103
+ break;
104
+ case 'xl/sharedStrings.xml':
105
+ yield* this._parseSharedStrings(entry);
106
+ break;
107
+ case 'xl/styles.xml':
108
+ await this._parseStyles(entry);
109
+ break;
110
+ default:
111
+ if (entry.path.match(/xl\/worksheets\/sheet\d+[.]xml/)) {
112
+ match = entry.path.match(/xl\/worksheets\/sheet(\d+)[.]xml/);
113
+ sheetNo = match[1];
114
+ if (this.sharedStrings && this.workbookRels) {
115
+ yield* this._parseWorksheet(iterateStream(entry), sheetNo);
116
+ } else {
117
+ // create temp file for each worksheet
118
+ await new Promise((resolve, reject) => {
119
+ tmp.file((err, path, fd, tempFileCleanupCallback) => {
120
+ if (err) {
121
+ return reject(err);
201
122
  }
202
- } else if (entry.path.match(/xl\/worksheets\/_rels\/sheet\d+[.]xml.rels/)) {
203
- match = entry.path.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/);
204
- sheetNo = match[1];
205
- yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseHyperlinks(iterateStream(entry), sheetNo)), _awaitAsyncGenerator);
206
- }
207
- break;
123
+ waitingWorkSheets.push({
124
+ sheetNo,
125
+ path,
126
+ tempFileCleanupCallback
127
+ });
128
+ const tempStream = fs.createWriteStream(path);
129
+ tempStream.on('error', reject);
130
+ entry.pipe(tempStream);
131
+ return tempStream.on('finish', () => {
132
+ return resolve();
133
+ });
134
+ });
135
+ });
208
136
  }
209
- entry.autodrain();
210
- }
211
- }
212
- } catch (err) {
213
- _didIteratorError3 = true;
214
- _iteratorError3 = err;
215
- } finally {
216
- try {
217
- if (_iteratorAbruptCompletion3 && _iterator3.return != null) {
218
- yield _awaitAsyncGenerator(_iterator3.return());
219
- }
220
- } finally {
221
- if (_didIteratorError3) {
222
- throw _iteratorError3;
137
+ } else if (entry.path.match(/xl\/worksheets\/_rels\/sheet\d+[.]xml.rels/)) {
138
+ match = entry.path.match(/xl\/worksheets\/_rels\/sheet(\d+)[.]xml.rels/);
139
+ sheetNo = match[1];
140
+ yield* this._parseHyperlinks(iterateStream(entry), sheetNo);
223
141
  }
224
- }
142
+ break;
225
143
  }
226
- for (const {
227
- sheetNo,
228
- path,
229
- tempFileCleanupCallback
230
- } of waitingWorkSheets) {
231
- let fileStream = fs.createReadStream(path);
232
- // TODO: Remove once node v8 is deprecated
233
- // Detect and upgrade old fileStreams
234
- if (!fileStream[Symbol.asyncIterator]) {
235
- fileStream = fileStream.pipe(new PassThrough());
236
- }
237
- yield* _asyncGeneratorDelegate(_asyncIterator(_this2._parseWorksheet(fileStream, sheetNo)), _awaitAsyncGenerator);
238
- tempFileCleanupCallback();
144
+ entry.autodrain();
145
+ }
146
+ for (const {
147
+ sheetNo,
148
+ path,
149
+ tempFileCleanupCallback
150
+ } of waitingWorkSheets) {
151
+ let fileStream = fs.createReadStream(path);
152
+ // TODO: Remove once node v8 is deprecated
153
+ // Detect and upgrade old fileStreams
154
+ if (!fileStream[Symbol.asyncIterator]) {
155
+ fileStream = fileStream.pipe(new PassThrough());
239
156
  }
240
- })();
157
+ yield* this._parseWorksheet(fileStream, sheetNo);
158
+ tempFileCleanupCallback();
159
+ }
241
160
  }
242
161
  _emitEntry(payload) {
243
162
  if (this.options.entries === 'emit') {
@@ -257,149 +176,125 @@ class WorkbookReader extends EventEmitter {
257
176
  this.properties = workbook.map.workbookPr;
258
177
  this.model = workbook.model;
259
178
  }
260
- _parseSharedStrings(entry) {
261
- var _this3 = this;
262
- return _wrapAsyncGenerator(function* () {
263
- _this3._emitEntry({
264
- type: 'shared-strings'
265
- });
266
- switch (_this3.options.sharedStrings) {
267
- case 'cache':
268
- _this3.sharedStrings = [];
269
- break;
270
- case 'emit':
271
- break;
272
- default:
273
- return;
274
- }
275
- let text = null;
276
- let richText = [];
277
- let index = 0;
278
- let font = null;
279
- var _iteratorAbruptCompletion4 = false;
280
- var _didIteratorError4 = false;
281
- var _iteratorError4;
282
- try {
283
- for (var _iterator4 = _asyncIterator(parseSax(iterateStream(entry))), _step4; _iteratorAbruptCompletion4 = !(_step4 = yield _awaitAsyncGenerator(_iterator4.next())).done; _iteratorAbruptCompletion4 = false) {
284
- const events = _step4.value;
285
- {
286
- for (const {
287
- eventType,
288
- value
289
- } of events) {
290
- if (eventType === 'opentag') {
291
- const node = value;
292
- switch (node.name) {
293
- case 'b':
294
- font = font || {};
295
- font.bold = true;
296
- break;
297
- case 'charset':
298
- font = font || {};
299
- font.charset = parseInt(node.attributes.charset, 10);
300
- break;
301
- case 'color':
302
- font = font || {};
303
- font.color = {};
304
- if (node.attributes.rgb) {
305
- font.color.argb = node.attributes.argb;
306
- }
307
- if (node.attributes.val) {
308
- font.color.argb = node.attributes.val;
309
- }
310
- if (node.attributes.theme) {
311
- font.color.theme = node.attributes.theme;
312
- }
313
- break;
314
- case 'family':
315
- font = font || {};
316
- font.family = parseInt(node.attributes.val, 10);
317
- break;
318
- case 'i':
319
- font = font || {};
320
- font.italic = true;
321
- break;
322
- case 'outline':
323
- font = font || {};
324
- font.outline = true;
325
- break;
326
- case 'rFont':
327
- font = font || {};
328
- font.name = node.value;
329
- break;
330
- case 'si':
331
- font = null;
332
- richText = [];
333
- text = null;
334
- break;
335
- case 'sz':
336
- font = font || {};
337
- font.size = parseInt(node.attributes.val, 10);
338
- break;
339
- case 'strike':
340
- break;
341
- case 't':
342
- text = null;
343
- break;
344
- case 'u':
345
- font = font || {};
346
- font.underline = true;
347
- break;
348
- case 'vertAlign':
349
- font = font || {};
350
- font.vertAlign = node.attributes.val;
351
- break;
352
- }
353
- } else if (eventType === 'text') {
354
- text = text ? text + value : value;
355
- } else if (eventType === 'closetag') {
356
- const node = value;
357
- switch (node.name) {
358
- case 'r':
359
- richText.push({
360
- font,
361
- text
362
- });
363
- font = null;
364
- text = null;
365
- break;
366
- case 'si':
367
- if (_this3.options.sharedStrings === 'cache') {
368
- _this3.sharedStrings.push(richText.length ? {
369
- richText
370
- } : text);
371
- } else if (_this3.options.sharedStrings === 'emit') {
372
- yield {
373
- index: index++,
374
- text: richText.length ? {
375
- richText
376
- } : text
377
- };
378
- }
379
- richText = [];
380
- font = null;
381
- text = null;
382
- break;
383
- }
179
+ async *_parseSharedStrings(entry) {
180
+ this._emitEntry({
181
+ type: 'shared-strings'
182
+ });
183
+ switch (this.options.sharedStrings) {
184
+ case 'cache':
185
+ this.sharedStrings = [];
186
+ break;
187
+ case 'emit':
188
+ break;
189
+ default:
190
+ return;
191
+ }
192
+ let text = null;
193
+ let richText = [];
194
+ let index = 0;
195
+ let font = null;
196
+ for await (const events of parseSax(iterateStream(entry))) {
197
+ for (const {
198
+ eventType,
199
+ value
200
+ } of events) {
201
+ if (eventType === 'opentag') {
202
+ const node = value;
203
+ switch (node.name) {
204
+ case 'b':
205
+ font = font || {};
206
+ font.bold = true;
207
+ break;
208
+ case 'charset':
209
+ font = font || {};
210
+ font.charset = parseInt(node.attributes.charset, 10);
211
+ break;
212
+ case 'color':
213
+ font = font || {};
214
+ font.color = {};
215
+ if (node.attributes.rgb) {
216
+ font.color.argb = node.attributes.argb;
384
217
  }
385
- }
386
- }
387
- }
388
- } catch (err) {
389
- _didIteratorError4 = true;
390
- _iteratorError4 = err;
391
- } finally {
392
- try {
393
- if (_iteratorAbruptCompletion4 && _iterator4.return != null) {
394
- yield _awaitAsyncGenerator(_iterator4.return());
218
+ if (node.attributes.val) {
219
+ font.color.argb = node.attributes.val;
220
+ }
221
+ if (node.attributes.theme) {
222
+ font.color.theme = node.attributes.theme;
223
+ }
224
+ break;
225
+ case 'family':
226
+ font = font || {};
227
+ font.family = parseInt(node.attributes.val, 10);
228
+ break;
229
+ case 'i':
230
+ font = font || {};
231
+ font.italic = true;
232
+ break;
233
+ case 'outline':
234
+ font = font || {};
235
+ font.outline = true;
236
+ break;
237
+ case 'rFont':
238
+ font = font || {};
239
+ font.name = node.value;
240
+ break;
241
+ case 'si':
242
+ font = null;
243
+ richText = [];
244
+ text = null;
245
+ break;
246
+ case 'sz':
247
+ font = font || {};
248
+ font.size = parseInt(node.attributes.val, 10);
249
+ break;
250
+ case 'strike':
251
+ break;
252
+ case 't':
253
+ text = null;
254
+ break;
255
+ case 'u':
256
+ font = font || {};
257
+ font.underline = true;
258
+ break;
259
+ case 'vertAlign':
260
+ font = font || {};
261
+ font.vertAlign = node.attributes.val;
262
+ break;
395
263
  }
396
- } finally {
397
- if (_didIteratorError4) {
398
- throw _iteratorError4;
264
+ } else if (eventType === 'text') {
265
+ text = text ? text + value : value;
266
+ } else if (eventType === 'closetag') {
267
+ const node = value;
268
+ switch (node.name) {
269
+ case 'r':
270
+ richText.push({
271
+ font,
272
+ text
273
+ });
274
+ font = null;
275
+ text = null;
276
+ break;
277
+ case 'si':
278
+ if (this.options.sharedStrings === 'cache') {
279
+ this.sharedStrings.push(richText.length ? {
280
+ richText
281
+ } : text);
282
+ } else if (this.options.sharedStrings === 'emit') {
283
+ yield {
284
+ index: index++,
285
+ text: richText.length ? {
286
+ richText
287
+ } : text
288
+ };
289
+ }
290
+ richText = [];
291
+ font = null;
292
+ text = null;
293
+ break;
399
294
  }
400
295
  }
401
296
  }
402
- })();
297
+ }
403
298
  }
404
299
  async _parseStyles(entry) {
405
300
  this._emitEntry({
@@ -421,7 +316,7 @@ class WorkbookReader extends EventEmitter {
421
316
  iterator,
422
317
  options: this.options
423
318
  });
424
- const matchingRel = (this.workbookRels || []).find(rel => rel.Target === "worksheets/sheet".concat(sheetNo, ".xml"));
319
+ const matchingRel = (this.workbookRels || []).find(rel => rel.Target === `worksheets/sheet${sheetNo}.xml`);
425
320
  const matchingSheet = matchingRel && (this.model.sheets || []).find(sheet => sheet.rId === matchingRel.Id);
426
321
  if (matchingSheet) {
427
322
  worksheetReader.id = matchingSheet.id;