@alienkarma/exceljs 4.4.0-fork.1 → 4.4.0-fork.11
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,27 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
const fs = require(
|
|
4
|
-
const Archiver = require(
|
|
5
|
-
const StreamBuf = require(
|
|
6
|
-
const RelType = require(
|
|
7
|
-
const StylesXform = require(
|
|
8
|
-
const SharedStrings = require(
|
|
9
|
-
const DefinedNames = require(
|
|
10
|
-
const CoreXform = require(
|
|
11
|
-
const RelationshipsXform = require(
|
|
12
|
-
const ContentTypesXform = require(
|
|
13
|
-
const AppXform = require(
|
|
14
|
-
const WorkbookXform = require(
|
|
15
|
-
const SharedStringsXform = require(
|
|
16
|
-
const WorksheetWriter = require(
|
|
17
|
-
const theme1Xml = require(
|
|
3
|
+
const fs = require("fs");
|
|
4
|
+
const Archiver = require("@alienkarma/archiver");
|
|
5
|
+
const StreamBuf = require("../../utils/stream-buf");
|
|
6
|
+
const RelType = require("../../xlsx/rel-type");
|
|
7
|
+
const StylesXform = require("../../xlsx/xform/style/styles-xform");
|
|
8
|
+
const SharedStrings = require("../../utils/shared-strings");
|
|
9
|
+
const DefinedNames = require("../../doc/defined-names");
|
|
10
|
+
const CoreXform = require("../../xlsx/xform/core/core-xform");
|
|
11
|
+
const RelationshipsXform = require("../../xlsx/xform/core/relationships-xform");
|
|
12
|
+
const ContentTypesXform = require("../../xlsx/xform/core/content-types-xform");
|
|
13
|
+
const AppXform = require("../../xlsx/xform/core/app-xform");
|
|
14
|
+
const WorkbookXform = require("../../xlsx/xform/book/workbook-xform");
|
|
15
|
+
const SharedStringsXform = require("../../xlsx/xform/strings/shared-strings-xform");
|
|
16
|
+
const WorksheetWriter = require("./worksheet-writer");
|
|
17
|
+
const theme1Xml = require("../../xlsx/xml/theme1.js");
|
|
18
18
|
class WorkbookWriter {
|
|
19
19
|
constructor(options) {
|
|
20
20
|
options = options || {};
|
|
21
21
|
this.created = options.created || new Date();
|
|
22
22
|
this.modified = options.modified || this.created;
|
|
23
|
-
this.creator = options.creator ||
|
|
24
|
-
this.lastModifiedBy = options.lastModifiedBy ||
|
|
23
|
+
this.creator = options.creator || "ExcelJS";
|
|
24
|
+
this.lastModifiedBy = options.lastModifiedBy || "ExcelJS";
|
|
25
25
|
this.lastPrinted = options.lastPrinted;
|
|
26
26
|
|
|
27
27
|
// using shared strings creates a smaller xlsx file but may use more memory
|
|
@@ -38,7 +38,7 @@ class WorkbookWriter {
|
|
|
38
38
|
this.zipOptions = options.zip;
|
|
39
39
|
this.media = [];
|
|
40
40
|
this.commentRefs = [];
|
|
41
|
-
this.zip = Archiver(
|
|
41
|
+
this.zip = Archiver("zip", this.zipOptions);
|
|
42
42
|
if (options.stream) {
|
|
43
43
|
this.stream = options.stream;
|
|
44
44
|
} else if (options.filename) {
|
|
@@ -62,8 +62,8 @@ class WorkbookWriter {
|
|
|
62
62
|
this.zip.append(stream, {
|
|
63
63
|
name: path
|
|
64
64
|
});
|
|
65
|
-
stream.on(
|
|
66
|
-
stream.emit(
|
|
65
|
+
stream.on("finish", () => {
|
|
66
|
+
stream.emit("zipped");
|
|
67
67
|
});
|
|
68
68
|
return stream;
|
|
69
69
|
}
|
|
@@ -71,7 +71,7 @@ class WorkbookWriter {
|
|
|
71
71
|
const commitWorksheet = function (worksheet) {
|
|
72
72
|
if (!worksheet.committed) {
|
|
73
73
|
return new Promise(resolve => {
|
|
74
|
-
worksheet.stream.on(
|
|
74
|
+
worksheet.stream.on("zipped", () => {
|
|
75
75
|
resolve();
|
|
76
76
|
});
|
|
77
77
|
worksheet.commit();
|
|
@@ -108,7 +108,7 @@ class WorkbookWriter {
|
|
|
108
108
|
addImage(image) {
|
|
109
109
|
const id = this.media.length;
|
|
110
110
|
const medium = Object.assign({}, image, {
|
|
111
|
-
type:
|
|
111
|
+
type: "image",
|
|
112
112
|
name: `image${id}.${image.extension}`
|
|
113
113
|
});
|
|
114
114
|
this.media.push(medium);
|
|
@@ -125,7 +125,7 @@ class WorkbookWriter {
|
|
|
125
125
|
const useSharedStrings = options.useSharedStrings !== undefined ? options.useSharedStrings : this.useSharedStrings;
|
|
126
126
|
if (options.tabColor) {
|
|
127
127
|
// eslint-disable-next-line no-console
|
|
128
|
-
console.trace(
|
|
128
|
+
console.trace("tabColor option has moved to { properties: tabColor: {...} }");
|
|
129
129
|
options.properties = Object.assign({
|
|
130
130
|
tabColor: options.tabColor
|
|
131
131
|
}, options.properties);
|
|
@@ -151,10 +151,10 @@ class WorkbookWriter {
|
|
|
151
151
|
if (id === undefined) {
|
|
152
152
|
return this._worksheets.find(() => true);
|
|
153
153
|
}
|
|
154
|
-
if (typeof id ===
|
|
154
|
+
if (typeof id === "number") {
|
|
155
155
|
return this._worksheets[id];
|
|
156
156
|
}
|
|
157
|
-
if (typeof id ===
|
|
157
|
+
if (typeof id === "string") {
|
|
158
158
|
return this._worksheets.find(worksheet => worksheet && worksheet.name === id);
|
|
159
159
|
}
|
|
160
160
|
return undefined;
|
|
@@ -162,7 +162,7 @@ class WorkbookWriter {
|
|
|
162
162
|
addStyles() {
|
|
163
163
|
return new Promise(resolve => {
|
|
164
164
|
this.zip.append(this.styles.xml, {
|
|
165
|
-
name:
|
|
165
|
+
name: "xl/styles.xml"
|
|
166
166
|
});
|
|
167
167
|
resolve();
|
|
168
168
|
});
|
|
@@ -170,7 +170,7 @@ class WorkbookWriter {
|
|
|
170
170
|
addThemes() {
|
|
171
171
|
return new Promise(resolve => {
|
|
172
172
|
this.zip.append(theme1Xml, {
|
|
173
|
-
name:
|
|
173
|
+
name: "xl/theme/theme1.xml"
|
|
174
174
|
});
|
|
175
175
|
resolve();
|
|
176
176
|
});
|
|
@@ -179,20 +179,20 @@ class WorkbookWriter {
|
|
|
179
179
|
return new Promise(resolve => {
|
|
180
180
|
const xform = new RelationshipsXform();
|
|
181
181
|
const xml = xform.toXml([{
|
|
182
|
-
Id:
|
|
182
|
+
Id: "rId1",
|
|
183
183
|
Type: RelType.OfficeDocument,
|
|
184
|
-
Target:
|
|
184
|
+
Target: "xl/workbook.xml"
|
|
185
185
|
}, {
|
|
186
|
-
Id:
|
|
186
|
+
Id: "rId2",
|
|
187
187
|
Type: RelType.CoreProperties,
|
|
188
|
-
Target:
|
|
188
|
+
Target: "docProps/core.xml"
|
|
189
189
|
}, {
|
|
190
|
-
Id:
|
|
190
|
+
Id: "rId3",
|
|
191
191
|
Type: RelType.ExtenderProperties,
|
|
192
|
-
Target:
|
|
192
|
+
Target: "docProps/app.xml"
|
|
193
193
|
}]);
|
|
194
194
|
this.zip.append(xml, {
|
|
195
|
-
name:
|
|
195
|
+
name: "/_rels/.rels"
|
|
196
196
|
});
|
|
197
197
|
resolve();
|
|
198
198
|
});
|
|
@@ -208,14 +208,14 @@ class WorkbookWriter {
|
|
|
208
208
|
const xform = new ContentTypesXform();
|
|
209
209
|
const xml = xform.toXml(model);
|
|
210
210
|
this.zip.append(xml, {
|
|
211
|
-
name:
|
|
211
|
+
name: "[Content_Types].xml"
|
|
212
212
|
});
|
|
213
213
|
resolve();
|
|
214
214
|
});
|
|
215
215
|
}
|
|
216
216
|
addMedia() {
|
|
217
217
|
return Promise.all(this.media.map(medium => {
|
|
218
|
-
if (medium.type ===
|
|
218
|
+
if (medium.type === "image") {
|
|
219
219
|
const filename = `xl/media/${medium.name}`;
|
|
220
220
|
if (medium.filename) {
|
|
221
221
|
return this.zip.file(medium.filename, {
|
|
@@ -229,14 +229,14 @@ class WorkbookWriter {
|
|
|
229
229
|
}
|
|
230
230
|
if (medium.base64) {
|
|
231
231
|
const dataimg64 = medium.base64;
|
|
232
|
-
const content = dataimg64.substring(dataimg64.indexOf(
|
|
232
|
+
const content = dataimg64.substring(dataimg64.indexOf(",") + 1);
|
|
233
233
|
return this.zip.append(content, {
|
|
234
234
|
name: filename,
|
|
235
235
|
base64: true
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
|
-
throw new Error(
|
|
239
|
+
throw new Error("Unsupported media");
|
|
240
240
|
}));
|
|
241
241
|
}
|
|
242
242
|
addApp() {
|
|
@@ -247,7 +247,7 @@ class WorkbookWriter {
|
|
|
247
247
|
const xform = new AppXform();
|
|
248
248
|
const xml = xform.toXml(model);
|
|
249
249
|
this.zip.append(xml, {
|
|
250
|
-
name:
|
|
250
|
+
name: "docProps/app.xml"
|
|
251
251
|
});
|
|
252
252
|
resolve();
|
|
253
253
|
});
|
|
@@ -257,7 +257,7 @@ class WorkbookWriter {
|
|
|
257
257
|
const coreXform = new CoreXform();
|
|
258
258
|
const xml = coreXform.toXml(this);
|
|
259
259
|
this.zip.append(xml, {
|
|
260
|
-
name:
|
|
260
|
+
name: "docProps/core.xml"
|
|
261
261
|
});
|
|
262
262
|
resolve();
|
|
263
263
|
});
|
|
@@ -268,7 +268,7 @@ class WorkbookWriter {
|
|
|
268
268
|
const sharedStringsXform = new SharedStringsXform();
|
|
269
269
|
const xml = sharedStringsXform.toXml(this.sharedStrings);
|
|
270
270
|
this.zip.append(xml, {
|
|
271
|
-
name:
|
|
271
|
+
name: "/xl/sharedStrings.xml"
|
|
272
272
|
});
|
|
273
273
|
resolve();
|
|
274
274
|
});
|
|
@@ -280,17 +280,17 @@ class WorkbookWriter {
|
|
|
280
280
|
const relationships = [{
|
|
281
281
|
Id: `rId${count++}`,
|
|
282
282
|
Type: RelType.Styles,
|
|
283
|
-
Target:
|
|
283
|
+
Target: "styles.xml"
|
|
284
284
|
}, {
|
|
285
285
|
Id: `rId${count++}`,
|
|
286
286
|
Type: RelType.Theme,
|
|
287
|
-
Target:
|
|
287
|
+
Target: "theme/theme1.xml"
|
|
288
288
|
}];
|
|
289
289
|
if (this.sharedStrings.count) {
|
|
290
290
|
relationships.push({
|
|
291
291
|
Id: `rId${count++}`,
|
|
292
292
|
Type: RelType.SharedStrings,
|
|
293
|
-
Target:
|
|
293
|
+
Target: "sharedStrings.xml"
|
|
294
294
|
});
|
|
295
295
|
}
|
|
296
296
|
this._worksheets.forEach(worksheet => {
|
|
@@ -307,7 +307,7 @@ class WorkbookWriter {
|
|
|
307
307
|
const xform = new RelationshipsXform();
|
|
308
308
|
const xml = xform.toXml(relationships);
|
|
309
309
|
this.zip.append(xml, {
|
|
310
|
-
name:
|
|
310
|
+
name: "/xl/_rels/workbook.xml.rels"
|
|
311
311
|
});
|
|
312
312
|
resolve();
|
|
313
313
|
});
|
|
@@ -327,18 +327,18 @@ class WorkbookWriter {
|
|
|
327
327
|
const xform = new WorkbookXform();
|
|
328
328
|
xform.prepare(model);
|
|
329
329
|
zip.append(xform.toXml(model), {
|
|
330
|
-
name:
|
|
330
|
+
name: "/xl/workbook.xml"
|
|
331
331
|
});
|
|
332
332
|
resolve();
|
|
333
333
|
});
|
|
334
334
|
}
|
|
335
335
|
_finalize() {
|
|
336
336
|
return new Promise((resolve, reject) => {
|
|
337
|
-
this.stream.on(
|
|
338
|
-
this.stream.on(
|
|
337
|
+
this.stream.on("error", reject);
|
|
338
|
+
this.stream.on("finish", () => {
|
|
339
339
|
resolve(this);
|
|
340
340
|
});
|
|
341
|
-
this.zip.on(
|
|
341
|
+
this.zip.on("error", reject);
|
|
342
342
|
this.zip.finalize();
|
|
343
343
|
});
|
|
344
344
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workbook-writer.js","names":["fs","require","Archiver","StreamBuf","RelType","StylesXform","SharedStrings","DefinedNames","CoreXform","RelationshipsXform","ContentTypesXform","AppXform","WorkbookXform","SharedStringsXform","WorksheetWriter","theme1Xml","WorkbookWriter","constructor","options","created","Date","modified","creator","lastModifiedBy","lastPrinted","useSharedStrings","sharedStrings","styles","useStyles","Mock","_definedNames","_worksheets","views","zipOptions","zip","media","commentRefs","stream","filename","createWriteStream","pipe","promise","Promise","all","addThemes","addOfficeRels","definedNames","_openStream","path","bufSize","batch","append","name","on","emit","_commitWorksheets","commitWorksheet","worksheet","committed","resolve","commit","promises","map","length","addMedia","addContentTypes","addApp","addCore","addSharedStrings","addStyles","addWorkbookRels","addWorkbook","_finalize","nextId","i","addImage","image","id","medium","Object","assign","type","extension","push","getImage","addWorksheet","undefined","tabColor","console","trace","properties","workbook","state","pageSetup","autoFilter","headerFooter","getWorksheet","find","xml","xform","toXml","Id","Type","OfficeDocument","Target","CoreProperties","ExtenderProperties","model","worksheets","filter","Boolean","file","buffer","base64","dataimg64","content","substring","indexOf","Error","coreXform","count","sharedStringsXform","relationships","Styles","Theme","forEach","rId","Worksheet","calcProperties","prepare","reject","finalize","module","exports"],"sources":["../../../../lib/stream/xlsx/workbook-writer.js"],"sourcesContent":["const fs = require('fs');\r\nconst Archiver = require('archiver');\r\n\r\nconst StreamBuf = require('../../utils/stream-buf');\r\n\r\nconst RelType = require('../../xlsx/rel-type');\r\nconst StylesXform = require('../../xlsx/xform/style/styles-xform');\r\nconst SharedStrings = require('../../utils/shared-strings');\r\nconst DefinedNames = require('../../doc/defined-names');\r\n\r\nconst CoreXform = require('../../xlsx/xform/core/core-xform');\r\nconst RelationshipsXform = require('../../xlsx/xform/core/relationships-xform');\r\nconst ContentTypesXform = require('../../xlsx/xform/core/content-types-xform');\r\nconst AppXform = require('../../xlsx/xform/core/app-xform');\r\nconst WorkbookXform = require('../../xlsx/xform/book/workbook-xform');\r\nconst SharedStringsXform = require('../../xlsx/xform/strings/shared-strings-xform');\r\n\r\nconst WorksheetWriter = require('./worksheet-writer');\r\n\r\nconst theme1Xml = require('../../xlsx/xml/theme1.js');\r\n\r\nclass WorkbookWriter {\r\n constructor(options) {\r\n options = options || {};\r\n\r\n this.created = options.created || new Date();\r\n this.modified = options.modified || this.created;\r\n this.creator = options.creator || 'ExcelJS';\r\n this.lastModifiedBy = options.lastModifiedBy || 'ExcelJS';\r\n this.lastPrinted = options.lastPrinted;\r\n\r\n // using shared strings creates a smaller xlsx file but may use more memory\r\n this.useSharedStrings = options.useSharedStrings || false;\r\n this.sharedStrings = new SharedStrings();\r\n\r\n // style manager\r\n this.styles = options.useStyles ? new StylesXform(true) : new StylesXform.Mock(true);\r\n\r\n // defined names\r\n this._definedNames = new DefinedNames();\r\n\r\n this._worksheets = [];\r\n this.views = [];\r\n\r\n this.zipOptions = options.zip;\r\n\r\n this.media = [];\r\n this.commentRefs = [];\r\n\r\n this.zip = Archiver('zip', this.zipOptions);\r\n if (options.stream) {\r\n this.stream = options.stream;\r\n } else if (options.filename) {\r\n this.stream = fs.createWriteStream(options.filename);\r\n } else {\r\n this.stream = new StreamBuf();\r\n }\r\n this.zip.pipe(this.stream);\r\n\r\n // these bits can be added right now\r\n this.promise = Promise.all([this.addThemes(), this.addOfficeRels()]);\r\n }\r\n\r\n get definedNames() {\r\n return this._definedNames;\r\n }\r\n\r\n _openStream(path) {\r\n const stream = new StreamBuf({bufSize: 65536, batch: true});\r\n this.zip.append(stream, {name: path});\r\n stream.on('finish', () => {\r\n stream.emit('zipped');\r\n });\r\n return stream;\r\n }\r\n\r\n _commitWorksheets() {\r\n const commitWorksheet = function(worksheet) {\r\n if (!worksheet.committed) {\r\n return new Promise(resolve => {\r\n worksheet.stream.on('zipped', () => {\r\n resolve();\r\n });\r\n worksheet.commit();\r\n });\r\n }\r\n return Promise.resolve();\r\n };\r\n // if there are any uncommitted worksheets, commit them now and wait\r\n const promises = this._worksheets.map(commitWorksheet);\r\n if (promises.length) {\r\n return Promise.all(promises);\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n async commit() {\r\n // commit all worksheets, then add suplimentary files\r\n await this.promise;\r\n await this.addMedia();\r\n await this._commitWorksheets();\r\n await Promise.all([\r\n this.addContentTypes(),\r\n this.addApp(),\r\n this.addCore(),\r\n this.addSharedStrings(),\r\n this.addStyles(),\r\n this.addWorkbookRels(),\r\n ]);\r\n await this.addWorkbook();\r\n return this._finalize();\r\n }\r\n\r\n get nextId() {\r\n // find the next unique spot to add worksheet\r\n let i;\r\n for (i = 1; i < this._worksheets.length; i++) {\r\n if (!this._worksheets[i]) {\r\n return i;\r\n }\r\n }\r\n return this._worksheets.length || 1;\r\n }\r\n\r\n addImage(image) {\r\n const id = this.media.length;\r\n const medium = Object.assign({}, image, {type: 'image', name: `image${id}.${image.extension}`});\r\n this.media.push(medium);\r\n return id;\r\n }\r\n\r\n getImage(id) {\r\n return this.media[id];\r\n }\r\n\r\n addWorksheet(name, options) {\r\n // it's possible to add a worksheet with different than default\r\n // shared string handling\r\n // in fact, it's even possible to switch it mid-sheet\r\n options = options || {};\r\n const useSharedStrings =\r\n options.useSharedStrings !== undefined ? options.useSharedStrings : this.useSharedStrings;\r\n\r\n if (options.tabColor) {\r\n // eslint-disable-next-line no-console\r\n console.trace('tabColor option has moved to { properties: tabColor: {...} }');\r\n options.properties = Object.assign(\r\n {\r\n tabColor: options.tabColor,\r\n },\r\n options.properties\r\n );\r\n }\r\n\r\n const id = this.nextId;\r\n name = name || `sheet${id}`;\r\n\r\n const worksheet = new WorksheetWriter({\r\n id,\r\n name,\r\n workbook: this,\r\n useSharedStrings,\r\n properties: options.properties,\r\n state: options.state,\r\n pageSetup: options.pageSetup,\r\n views: options.views,\r\n autoFilter: options.autoFilter,\r\n headerFooter: options.headerFooter,\r\n });\r\n\r\n this._worksheets[id] = worksheet;\r\n return worksheet;\r\n }\r\n\r\n getWorksheet(id) {\r\n if (id === undefined) {\r\n return this._worksheets.find(() => true);\r\n }\r\n if (typeof id === 'number') {\r\n return this._worksheets[id];\r\n }\r\n if (typeof id === 'string') {\r\n return this._worksheets.find(worksheet => worksheet && worksheet.name === id);\r\n }\r\n return undefined;\r\n }\r\n\r\n addStyles() {\r\n return new Promise(resolve => {\r\n this.zip.append(this.styles.xml, {name: 'xl/styles.xml'});\r\n resolve();\r\n });\r\n }\r\n\r\n addThemes() {\r\n return new Promise(resolve => {\r\n this.zip.append(theme1Xml, {name: 'xl/theme/theme1.xml'});\r\n resolve();\r\n });\r\n }\r\n\r\n addOfficeRels() {\r\n return new Promise(resolve => {\r\n const xform = new RelationshipsXform();\r\n const xml = xform.toXml([\r\n {Id: 'rId1', Type: RelType.OfficeDocument, Target: 'xl/workbook.xml'},\r\n {Id: 'rId2', Type: RelType.CoreProperties, Target: 'docProps/core.xml'},\r\n {Id: 'rId3', Type: RelType.ExtenderProperties, Target: 'docProps/app.xml'},\r\n ]);\r\n this.zip.append(xml, {name: '/_rels/.rels'});\r\n resolve();\r\n });\r\n }\r\n\r\n addContentTypes() {\r\n return new Promise(resolve => {\r\n const model = {\r\n worksheets: this._worksheets.filter(Boolean),\r\n sharedStrings: this.sharedStrings,\r\n commentRefs: this.commentRefs,\r\n media: this.media,\r\n };\r\n const xform = new ContentTypesXform();\r\n const xml = xform.toXml(model);\r\n this.zip.append(xml, {name: '[Content_Types].xml'});\r\n resolve();\r\n });\r\n }\r\n\r\n addMedia() {\r\n return Promise.all(\r\n this.media.map(medium => {\r\n if (medium.type === 'image') {\r\n const filename = `xl/media/${medium.name}`;\r\n if (medium.filename) {\r\n return this.zip.file(medium.filename, {name: filename});\r\n }\r\n if (medium.buffer) {\r\n return this.zip.append(medium.buffer, {name: filename});\r\n }\r\n if (medium.base64) {\r\n const dataimg64 = medium.base64;\r\n const content = dataimg64.substring(dataimg64.indexOf(',') + 1);\r\n return this.zip.append(content, {name: filename, base64: true});\r\n }\r\n }\r\n throw new Error('Unsupported media');\r\n })\r\n );\r\n }\r\n\r\n addApp() {\r\n return new Promise(resolve => {\r\n const model = {\r\n worksheets: this._worksheets.filter(Boolean),\r\n };\r\n const xform = new AppXform();\r\n const xml = xform.toXml(model);\r\n this.zip.append(xml, {name: 'docProps/app.xml'});\r\n resolve();\r\n });\r\n }\r\n\r\n addCore() {\r\n return new Promise(resolve => {\r\n const coreXform = new CoreXform();\r\n const xml = coreXform.toXml(this);\r\n this.zip.append(xml, {name: 'docProps/core.xml'});\r\n resolve();\r\n });\r\n }\r\n\r\n addSharedStrings() {\r\n if (this.sharedStrings.count) {\r\n return new Promise(resolve => {\r\n const sharedStringsXform = new SharedStringsXform();\r\n const xml = sharedStringsXform.toXml(this.sharedStrings);\r\n this.zip.append(xml, {name: '/xl/sharedStrings.xml'});\r\n resolve();\r\n });\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n addWorkbookRels() {\r\n let count = 1;\r\n const relationships = [\r\n {Id: `rId${count++}`, Type: RelType.Styles, Target: 'styles.xml'},\r\n {Id: `rId${count++}`, Type: RelType.Theme, Target: 'theme/theme1.xml'},\r\n ];\r\n if (this.sharedStrings.count) {\r\n relationships.push({\r\n Id: `rId${count++}`,\r\n Type: RelType.SharedStrings,\r\n Target: 'sharedStrings.xml',\r\n });\r\n }\r\n this._worksheets.forEach(worksheet => {\r\n if (worksheet) {\r\n worksheet.rId = `rId${count++}`;\r\n relationships.push({\r\n Id: worksheet.rId,\r\n Type: RelType.Worksheet,\r\n Target: `worksheets/sheet${worksheet.id}.xml`,\r\n });\r\n }\r\n });\r\n return new Promise(resolve => {\r\n const xform = new RelationshipsXform();\r\n const xml = xform.toXml(relationships);\r\n this.zip.append(xml, {name: '/xl/_rels/workbook.xml.rels'});\r\n resolve();\r\n });\r\n }\r\n\r\n addWorkbook() {\r\n const {zip} = this;\r\n const model = {\r\n worksheets: this._worksheets.filter(Boolean),\r\n definedNames: this._definedNames.model,\r\n views: this.views,\r\n properties: {},\r\n calcProperties: {},\r\n };\r\n\r\n return new Promise(resolve => {\r\n const xform = new WorkbookXform();\r\n xform.prepare(model);\r\n zip.append(xform.toXml(model), {name: '/xl/workbook.xml'});\r\n resolve();\r\n });\r\n }\r\n\r\n _finalize() {\r\n return new Promise((resolve, reject) => {\r\n this.stream.on('error', reject);\r\n this.stream.on('finish', () => {\r\n resolve(this);\r\n });\r\n this.zip.on('error', reject);\r\n\r\n this.zip.finalize();\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = WorkbookWriter;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"workbook-writer.js","names":["fs","require","Archiver","StreamBuf","RelType","StylesXform","SharedStrings","DefinedNames","CoreXform","RelationshipsXform","ContentTypesXform","AppXform","WorkbookXform","SharedStringsXform","WorksheetWriter","theme1Xml","WorkbookWriter","constructor","options","created","Date","modified","creator","lastModifiedBy","lastPrinted","useSharedStrings","sharedStrings","styles","useStyles","Mock","_definedNames","_worksheets","views","zipOptions","zip","media","commentRefs","stream","filename","createWriteStream","pipe","promise","Promise","all","addThemes","addOfficeRels","definedNames","_openStream","path","bufSize","batch","append","name","on","emit","_commitWorksheets","commitWorksheet","worksheet","committed","resolve","commit","promises","map","length","addMedia","addContentTypes","addApp","addCore","addSharedStrings","addStyles","addWorkbookRels","addWorkbook","_finalize","nextId","i","addImage","image","id","medium","Object","assign","type","extension","push","getImage","addWorksheet","undefined","tabColor","console","trace","properties","workbook","state","pageSetup","autoFilter","headerFooter","getWorksheet","find","xml","xform","toXml","Id","Type","OfficeDocument","Target","CoreProperties","ExtenderProperties","model","worksheets","filter","Boolean","file","buffer","base64","dataimg64","content","substring","indexOf","Error","coreXform","count","sharedStringsXform","relationships","Styles","Theme","forEach","rId","Worksheet","calcProperties","prepare","reject","finalize","module","exports"],"sources":["../../../../lib/stream/xlsx/workbook-writer.js"],"sourcesContent":["const fs = require(\"fs\");\r\nconst Archiver = require(\"@alienkarma/archiver\");\r\n\r\nconst StreamBuf = require(\"../../utils/stream-buf\");\r\n\r\nconst RelType = require(\"../../xlsx/rel-type\");\r\nconst StylesXform = require(\"../../xlsx/xform/style/styles-xform\");\r\nconst SharedStrings = require(\"../../utils/shared-strings\");\r\nconst DefinedNames = require(\"../../doc/defined-names\");\r\n\r\nconst CoreXform = require(\"../../xlsx/xform/core/core-xform\");\r\nconst RelationshipsXform = require(\"../../xlsx/xform/core/relationships-xform\");\r\nconst ContentTypesXform = require(\"../../xlsx/xform/core/content-types-xform\");\r\nconst AppXform = require(\"../../xlsx/xform/core/app-xform\");\r\nconst WorkbookXform = require(\"../../xlsx/xform/book/workbook-xform\");\r\nconst SharedStringsXform = require(\"../../xlsx/xform/strings/shared-strings-xform\");\r\n\r\nconst WorksheetWriter = require(\"./worksheet-writer\");\r\n\r\nconst theme1Xml = require(\"../../xlsx/xml/theme1.js\");\r\n\r\nclass WorkbookWriter {\r\n constructor(options) {\r\n options = options || {};\r\n\r\n this.created = options.created || new Date();\r\n this.modified = options.modified || this.created;\r\n this.creator = options.creator || \"ExcelJS\";\r\n this.lastModifiedBy = options.lastModifiedBy || \"ExcelJS\";\r\n this.lastPrinted = options.lastPrinted;\r\n\r\n // using shared strings creates a smaller xlsx file but may use more memory\r\n this.useSharedStrings = options.useSharedStrings || false;\r\n this.sharedStrings = new SharedStrings();\r\n\r\n // style manager\r\n this.styles = options.useStyles\r\n ? new StylesXform(true)\r\n : new StylesXform.Mock(true);\r\n\r\n // defined names\r\n this._definedNames = new DefinedNames();\r\n\r\n this._worksheets = [];\r\n this.views = [];\r\n\r\n this.zipOptions = options.zip;\r\n\r\n this.media = [];\r\n this.commentRefs = [];\r\n\r\n this.zip = Archiver(\"zip\", this.zipOptions);\r\n if (options.stream) {\r\n this.stream = options.stream;\r\n } else if (options.filename) {\r\n this.stream = fs.createWriteStream(options.filename);\r\n } else {\r\n this.stream = new StreamBuf();\r\n }\r\n this.zip.pipe(this.stream);\r\n\r\n // these bits can be added right now\r\n this.promise = Promise.all([this.addThemes(), this.addOfficeRels()]);\r\n }\r\n\r\n get definedNames() {\r\n return this._definedNames;\r\n }\r\n\r\n _openStream(path) {\r\n const stream = new StreamBuf({ bufSize: 65536, batch: true });\r\n this.zip.append(stream, { name: path });\r\n stream.on(\"finish\", () => {\r\n stream.emit(\"zipped\");\r\n });\r\n return stream;\r\n }\r\n\r\n _commitWorksheets() {\r\n const commitWorksheet = function (worksheet) {\r\n if (!worksheet.committed) {\r\n return new Promise((resolve) => {\r\n worksheet.stream.on(\"zipped\", () => {\r\n resolve();\r\n });\r\n worksheet.commit();\r\n });\r\n }\r\n return Promise.resolve();\r\n };\r\n // if there are any uncommitted worksheets, commit them now and wait\r\n const promises = this._worksheets.map(commitWorksheet);\r\n if (promises.length) {\r\n return Promise.all(promises);\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n async commit() {\r\n // commit all worksheets, then add suplimentary files\r\n await this.promise;\r\n await this.addMedia();\r\n await this._commitWorksheets();\r\n await Promise.all([\r\n this.addContentTypes(),\r\n this.addApp(),\r\n this.addCore(),\r\n this.addSharedStrings(),\r\n this.addStyles(),\r\n this.addWorkbookRels(),\r\n ]);\r\n await this.addWorkbook();\r\n return this._finalize();\r\n }\r\n\r\n get nextId() {\r\n // find the next unique spot to add worksheet\r\n let i;\r\n for (i = 1; i < this._worksheets.length; i++) {\r\n if (!this._worksheets[i]) {\r\n return i;\r\n }\r\n }\r\n return this._worksheets.length || 1;\r\n }\r\n\r\n addImage(image) {\r\n const id = this.media.length;\r\n const medium = Object.assign({}, image, {\r\n type: \"image\",\r\n name: `image${id}.${image.extension}`,\r\n });\r\n this.media.push(medium);\r\n return id;\r\n }\r\n\r\n getImage(id) {\r\n return this.media[id];\r\n }\r\n\r\n addWorksheet(name, options) {\r\n // it's possible to add a worksheet with different than default\r\n // shared string handling\r\n // in fact, it's even possible to switch it mid-sheet\r\n options = options || {};\r\n const useSharedStrings =\r\n options.useSharedStrings !== undefined\r\n ? options.useSharedStrings\r\n : this.useSharedStrings;\r\n\r\n if (options.tabColor) {\r\n // eslint-disable-next-line no-console\r\n console.trace(\r\n \"tabColor option has moved to { properties: tabColor: {...} }\",\r\n );\r\n options.properties = Object.assign(\r\n {\r\n tabColor: options.tabColor,\r\n },\r\n options.properties,\r\n );\r\n }\r\n\r\n const id = this.nextId;\r\n name = name || `sheet${id}`;\r\n\r\n const worksheet = new WorksheetWriter({\r\n id,\r\n name,\r\n workbook: this,\r\n useSharedStrings,\r\n properties: options.properties,\r\n state: options.state,\r\n pageSetup: options.pageSetup,\r\n views: options.views,\r\n autoFilter: options.autoFilter,\r\n headerFooter: options.headerFooter,\r\n });\r\n\r\n this._worksheets[id] = worksheet;\r\n return worksheet;\r\n }\r\n\r\n getWorksheet(id) {\r\n if (id === undefined) {\r\n return this._worksheets.find(() => true);\r\n }\r\n if (typeof id === \"number\") {\r\n return this._worksheets[id];\r\n }\r\n if (typeof id === \"string\") {\r\n return this._worksheets.find(\r\n (worksheet) => worksheet && worksheet.name === id,\r\n );\r\n }\r\n return undefined;\r\n }\r\n\r\n addStyles() {\r\n return new Promise((resolve) => {\r\n this.zip.append(this.styles.xml, { name: \"xl/styles.xml\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addThemes() {\r\n return new Promise((resolve) => {\r\n this.zip.append(theme1Xml, { name: \"xl/theme/theme1.xml\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addOfficeRels() {\r\n return new Promise((resolve) => {\r\n const xform = new RelationshipsXform();\r\n const xml = xform.toXml([\r\n { Id: \"rId1\", Type: RelType.OfficeDocument, Target: \"xl/workbook.xml\" },\r\n {\r\n Id: \"rId2\",\r\n Type: RelType.CoreProperties,\r\n Target: \"docProps/core.xml\",\r\n },\r\n {\r\n Id: \"rId3\",\r\n Type: RelType.ExtenderProperties,\r\n Target: \"docProps/app.xml\",\r\n },\r\n ]);\r\n this.zip.append(xml, { name: \"/_rels/.rels\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addContentTypes() {\r\n return new Promise((resolve) => {\r\n const model = {\r\n worksheets: this._worksheets.filter(Boolean),\r\n sharedStrings: this.sharedStrings,\r\n commentRefs: this.commentRefs,\r\n media: this.media,\r\n };\r\n const xform = new ContentTypesXform();\r\n const xml = xform.toXml(model);\r\n this.zip.append(xml, { name: \"[Content_Types].xml\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addMedia() {\r\n return Promise.all(\r\n this.media.map((medium) => {\r\n if (medium.type === \"image\") {\r\n const filename = `xl/media/${medium.name}`;\r\n if (medium.filename) {\r\n return this.zip.file(medium.filename, { name: filename });\r\n }\r\n if (medium.buffer) {\r\n return this.zip.append(medium.buffer, { name: filename });\r\n }\r\n if (medium.base64) {\r\n const dataimg64 = medium.base64;\r\n const content = dataimg64.substring(dataimg64.indexOf(\",\") + 1);\r\n return this.zip.append(content, { name: filename, base64: true });\r\n }\r\n }\r\n throw new Error(\"Unsupported media\");\r\n }),\r\n );\r\n }\r\n\r\n addApp() {\r\n return new Promise((resolve) => {\r\n const model = {\r\n worksheets: this._worksheets.filter(Boolean),\r\n };\r\n const xform = new AppXform();\r\n const xml = xform.toXml(model);\r\n this.zip.append(xml, { name: \"docProps/app.xml\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addCore() {\r\n return new Promise((resolve) => {\r\n const coreXform = new CoreXform();\r\n const xml = coreXform.toXml(this);\r\n this.zip.append(xml, { name: \"docProps/core.xml\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addSharedStrings() {\r\n if (this.sharedStrings.count) {\r\n return new Promise((resolve) => {\r\n const sharedStringsXform = new SharedStringsXform();\r\n const xml = sharedStringsXform.toXml(this.sharedStrings);\r\n this.zip.append(xml, { name: \"/xl/sharedStrings.xml\" });\r\n resolve();\r\n });\r\n }\r\n return Promise.resolve();\r\n }\r\n\r\n addWorkbookRels() {\r\n let count = 1;\r\n const relationships = [\r\n { Id: `rId${count++}`, Type: RelType.Styles, Target: \"styles.xml\" },\r\n { Id: `rId${count++}`, Type: RelType.Theme, Target: \"theme/theme1.xml\" },\r\n ];\r\n if (this.sharedStrings.count) {\r\n relationships.push({\r\n Id: `rId${count++}`,\r\n Type: RelType.SharedStrings,\r\n Target: \"sharedStrings.xml\",\r\n });\r\n }\r\n this._worksheets.forEach((worksheet) => {\r\n if (worksheet) {\r\n worksheet.rId = `rId${count++}`;\r\n relationships.push({\r\n Id: worksheet.rId,\r\n Type: RelType.Worksheet,\r\n Target: `worksheets/sheet${worksheet.id}.xml`,\r\n });\r\n }\r\n });\r\n return new Promise((resolve) => {\r\n const xform = new RelationshipsXform();\r\n const xml = xform.toXml(relationships);\r\n this.zip.append(xml, { name: \"/xl/_rels/workbook.xml.rels\" });\r\n resolve();\r\n });\r\n }\r\n\r\n addWorkbook() {\r\n const { zip } = this;\r\n const model = {\r\n worksheets: this._worksheets.filter(Boolean),\r\n definedNames: this._definedNames.model,\r\n views: this.views,\r\n properties: {},\r\n calcProperties: {},\r\n };\r\n\r\n return new Promise((resolve) => {\r\n const xform = new WorkbookXform();\r\n xform.prepare(model);\r\n zip.append(xform.toXml(model), { name: \"/xl/workbook.xml\" });\r\n resolve();\r\n });\r\n }\r\n\r\n _finalize() {\r\n return new Promise((resolve, reject) => {\r\n this.stream.on(\"error\", reject);\r\n this.stream.on(\"finish\", () => {\r\n resolve(this);\r\n });\r\n this.zip.on(\"error\", reject);\r\n\r\n this.zip.finalize();\r\n });\r\n }\r\n}\r\n\r\nmodule.exports = WorkbookWriter;\r\n"],"mappings":"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","ignoreList":[]}
|