@stamhoofd/excel-writer 2.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/src/XlsxColumnFilterer.d.ts +11 -0
- package/dist/src/XlsxColumnFilterer.d.ts.map +1 -0
- package/dist/src/XlsxColumnFilterer.js +81 -0
- package/dist/src/XlsxColumnFilterer.js.map +1 -0
- package/dist/src/XlsxTransformer.d.ts +14 -0
- package/dist/src/XlsxTransformer.d.ts.map +1 -0
- package/dist/src/XlsxTransformer.js +59 -0
- package/dist/src/XlsxTransformer.js.map +1 -0
- package/dist/src/exportToExcel.d.ts +8 -0
- package/dist/src/exportToExcel.d.ts.map +1 -0
- package/dist/src/exportToExcel.js +23 -0
- package/dist/src/exportToExcel.js.map +1 -0
- package/dist/src/interfaces.d.ts +160 -0
- package/dist/src/interfaces.d.ts.map +1 -0
- package/dist/src/interfaces.js +101 -0
- package/dist/src/interfaces.js.map +1 -0
- package/dist/src/stream-writer/XlsxAppPropsWriter.d.ts +5 -0
- package/dist/src/stream-writer/XlsxAppPropsWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxAppPropsWriter.js +13 -0
- package/dist/src/stream-writer/XlsxAppPropsWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxContentTypesWriter.d.ts +13 -0
- package/dist/src/stream-writer/XlsxContentTypesWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxContentTypesWriter.js +24 -0
- package/dist/src/stream-writer/XlsxContentTypesWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxCorePropsWriter.d.ts +7 -0
- package/dist/src/stream-writer/XlsxCorePropsWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxCorePropsWriter.js +26 -0
- package/dist/src/stream-writer/XlsxCorePropsWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxFileWriter.d.ts +11 -0
- package/dist/src/stream-writer/XlsxFileWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxFileWriter.js +44 -0
- package/dist/src/stream-writer/XlsxFileWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxRelationsWriter.d.ts +17 -0
- package/dist/src/stream-writer/XlsxRelationsWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxRelationsWriter.js +28 -0
- package/dist/src/stream-writer/XlsxRelationsWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts +5 -0
- package/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxSharedStringsWriter.js +12 -0
- package/dist/src/stream-writer/XlsxSharedStringsWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxSheetWriter.d.ts +30 -0
- package/dist/src/stream-writer/XlsxSheetWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxSheetWriter.js +140 -0
- package/dist/src/stream-writer/XlsxSheetWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxStylesWriter.d.ts +24 -0
- package/dist/src/stream-writer/XlsxStylesWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxStylesWriter.js +159 -0
- package/dist/src/stream-writer/XlsxStylesWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxThemeWriter.d.ts +5 -0
- package/dist/src/stream-writer/XlsxThemeWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxThemeWriter.js +327 -0
- package/dist/src/stream-writer/XlsxThemeWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxWorkbookWriter.d.ts +17 -0
- package/dist/src/stream-writer/XlsxWorkbookWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxWorkbookWriter.js +31 -0
- package/dist/src/stream-writer/XlsxWorkbookWriter.js.map +1 -0
- package/dist/src/stream-writer/XlsxWriter.d.ts +35 -0
- package/dist/src/stream-writer/XlsxWriter.d.ts.map +1 -0
- package/dist/src/stream-writer/XlsxWriter.js +254 -0
- package/dist/src/stream-writer/XlsxWriter.js.map +1 -0
- package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts +24 -0
- package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts.map +1 -0
- package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js +90 -0
- package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js.map +1 -0
- package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts +22 -0
- package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts.map +1 -0
- package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js +50 -0
- package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js.map +1 -0
- package/dist/src/stream-writer/escapeXml.d.ts +2 -0
- package/dist/src/stream-writer/escapeXml.d.ts.map +1 -0
- package/dist/src/stream-writer/escapeXml.js +16 -0
- package/dist/src/stream-writer/escapeXml.js.map +1 -0
- package/dist/src/stream-writer/index.d.ts +4 -0
- package/dist/src/stream-writer/index.d.ts.map +1 -0
- package/dist/src/stream-writer/index.js +7 -0
- package/dist/src/stream-writer/index.js.map +1 -0
- package/dist/src/stream-writer/interfaces.d.ts +14 -0
- package/dist/src/stream-writer/interfaces.d.ts.map +1 -0
- package/dist/src/stream-writer/interfaces.js +3 -0
- package/dist/src/stream-writer/interfaces.js.map +1 -0
- package/esm/dist/index.d.ts +4 -0
- package/esm/dist/index.d.ts.map +1 -0
- package/esm/dist/index.js +4 -0
- package/esm/dist/index.js.map +1 -0
- package/esm/dist/src/XlsxColumnFilterer.d.ts +11 -0
- package/esm/dist/src/XlsxColumnFilterer.d.ts.map +1 -0
- package/esm/dist/src/XlsxColumnFilterer.js +77 -0
- package/esm/dist/src/XlsxColumnFilterer.js.map +1 -0
- package/esm/dist/src/XlsxTransformer.d.ts +14 -0
- package/esm/dist/src/XlsxTransformer.d.ts.map +1 -0
- package/esm/dist/src/XlsxTransformer.js +55 -0
- package/esm/dist/src/XlsxTransformer.js.map +1 -0
- package/esm/dist/src/exportToExcel.d.ts +8 -0
- package/esm/dist/src/exportToExcel.d.ts.map +1 -0
- package/esm/dist/src/exportToExcel.js +20 -0
- package/esm/dist/src/exportToExcel.js.map +1 -0
- package/esm/dist/src/interfaces.d.ts +160 -0
- package/esm/dist/src/interfaces.d.ts.map +1 -0
- package/esm/dist/src/interfaces.js +98 -0
- package/esm/dist/src/interfaces.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxAppPropsWriter.d.ts +5 -0
- package/esm/dist/src/stream-writer/XlsxAppPropsWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxAppPropsWriter.js +9 -0
- package/esm/dist/src/stream-writer/XlsxAppPropsWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxContentTypesWriter.d.ts +13 -0
- package/esm/dist/src/stream-writer/XlsxContentTypesWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxContentTypesWriter.js +20 -0
- package/esm/dist/src/stream-writer/XlsxContentTypesWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxCorePropsWriter.d.ts +7 -0
- package/esm/dist/src/stream-writer/XlsxCorePropsWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxCorePropsWriter.js +22 -0
- package/esm/dist/src/stream-writer/XlsxCorePropsWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxFileWriter.d.ts +11 -0
- package/esm/dist/src/stream-writer/XlsxFileWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxFileWriter.js +40 -0
- package/esm/dist/src/stream-writer/XlsxFileWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxRelationsWriter.d.ts +17 -0
- package/esm/dist/src/stream-writer/XlsxRelationsWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxRelationsWriter.js +24 -0
- package/esm/dist/src/stream-writer/XlsxRelationsWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts +5 -0
- package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.js +8 -0
- package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxSheetWriter.d.ts +30 -0
- package/esm/dist/src/stream-writer/XlsxSheetWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxSheetWriter.js +136 -0
- package/esm/dist/src/stream-writer/XlsxSheetWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxStylesWriter.d.ts +24 -0
- package/esm/dist/src/stream-writer/XlsxStylesWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxStylesWriter.js +155 -0
- package/esm/dist/src/stream-writer/XlsxStylesWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxThemeWriter.d.ts +5 -0
- package/esm/dist/src/stream-writer/XlsxThemeWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxThemeWriter.js +323 -0
- package/esm/dist/src/stream-writer/XlsxThemeWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxWorkbookWriter.d.ts +17 -0
- package/esm/dist/src/stream-writer/XlsxWorkbookWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxWorkbookWriter.js +27 -0
- package/esm/dist/src/stream-writer/XlsxWorkbookWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/XlsxWriter.d.ts +35 -0
- package/esm/dist/src/stream-writer/XlsxWriter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/XlsxWriter.js +250 -0
- package/esm/dist/src/stream-writer/XlsxWriter.js.map +1 -0
- package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts +24 -0
- package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js +85 -0
- package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js.map +1 -0
- package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts +22 -0
- package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js +45 -0
- package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js.map +1 -0
- package/esm/dist/src/stream-writer/escapeXml.d.ts +2 -0
- package/esm/dist/src/stream-writer/escapeXml.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/escapeXml.js +13 -0
- package/esm/dist/src/stream-writer/escapeXml.js.map +1 -0
- package/esm/dist/src/stream-writer/index.d.ts +4 -0
- package/esm/dist/src/stream-writer/index.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/index.js +4 -0
- package/esm/dist/src/stream-writer/index.js.map +1 -0
- package/esm/dist/src/stream-writer/interfaces.d.ts +14 -0
- package/esm/dist/src/stream-writer/interfaces.d.ts.map +1 -0
- package/esm/dist/src/stream-writer/interfaces.js +2 -0
- package/esm/dist/src/stream-writer/interfaces.js.map +1 -0
- package/package.json +28 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
import { XlsxAppPropsWriter } from "./XlsxAppPropsWriter";
|
|
2
|
+
import { XlsxContentTypesWriter } from "./XlsxContentTypesWriter";
|
|
3
|
+
import { XlsxCorePropsWriter } from "./XlsxCorePropsWriter";
|
|
4
|
+
import { XlsxRelationsWriter } from "./XlsxRelationsWriter";
|
|
5
|
+
import { XlsxSharedStringsWriter } from "./XlsxSharedStringsWriter";
|
|
6
|
+
import { XlsxSheetWriter } from "./XlsxSheetWriter";
|
|
7
|
+
import { XlsxStylesWriter } from "./XlsxStylesWriter";
|
|
8
|
+
import { XlsxThemeWriter } from "./XlsxThemeWriter";
|
|
9
|
+
import { XlsxWorkbookWriter } from "./XlsxWorkbookWriter";
|
|
10
|
+
export class XlsxWriter {
|
|
11
|
+
sheetWriters = new Map();
|
|
12
|
+
styles;
|
|
13
|
+
globalRelations;
|
|
14
|
+
workbookRelations;
|
|
15
|
+
workbook;
|
|
16
|
+
coreProps;
|
|
17
|
+
appProps;
|
|
18
|
+
contentTypes;
|
|
19
|
+
theme;
|
|
20
|
+
sharedStrings;
|
|
21
|
+
// Writes to the zip file
|
|
22
|
+
zipWriter;
|
|
23
|
+
constructor(zipWriter) {
|
|
24
|
+
this.zipWriter = zipWriter;
|
|
25
|
+
this.styles = new XlsxStylesWriter();
|
|
26
|
+
this.globalRelations = new XlsxRelationsWriter();
|
|
27
|
+
this.workbook = new XlsxWorkbookWriter();
|
|
28
|
+
this.workbookRelations = new XlsxRelationsWriter();
|
|
29
|
+
this.coreProps = new XlsxCorePropsWriter();
|
|
30
|
+
this.appProps = new XlsxAppPropsWriter();
|
|
31
|
+
this.contentTypes = new XlsxContentTypesWriter();
|
|
32
|
+
this.theme = new XlsxThemeWriter();
|
|
33
|
+
this.sharedStrings = new XlsxSharedStringsWriter();
|
|
34
|
+
}
|
|
35
|
+
async init() {
|
|
36
|
+
await this.zipWriter.addDirectory('_rels');
|
|
37
|
+
await this.zipWriter.addDirectory('xl');
|
|
38
|
+
await this.zipWriter.addDirectory('xl/_rels');
|
|
39
|
+
await this.zipWriter.addDirectory('xl/worksheets');
|
|
40
|
+
await this.zipWriter.addDirectory('docProps');
|
|
41
|
+
await this.zipWriter.addDirectory('xl/theme');
|
|
42
|
+
this.styles.writeStream = await this.zipWriter.addFile('xl/styles.xml');
|
|
43
|
+
this.sharedStrings.writeStream = await this.zipWriter.addFile('xl/sharedStrings.xml');
|
|
44
|
+
this.globalRelations.writeStream = await this.zipWriter.addFile('_rels/.rels');
|
|
45
|
+
this.workbook.writeStream = await this.zipWriter.addFile('xl/workbook.xml');
|
|
46
|
+
this.workbookRelations.writeStream = await this.zipWriter.addFile('xl/_rels/workbook.xml.rels');
|
|
47
|
+
this.theme.writeStream = await this.zipWriter.addFile('xl/theme/theme1.xml');
|
|
48
|
+
this.coreProps.writeStream = await this.zipWriter.addFile('docProps/core.xml');
|
|
49
|
+
this.appProps.writeStream = await this.zipWriter.addFile('docProps/app.xml');
|
|
50
|
+
this.contentTypes.writeStream = await this.zipWriter.addFile('[Content_Types].xml');
|
|
51
|
+
await this.globalRelations.addRelation({
|
|
52
|
+
target: 'docProps/app.xml',
|
|
53
|
+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties'
|
|
54
|
+
});
|
|
55
|
+
await this.contentTypes.addOverride({
|
|
56
|
+
partName: '/docProps/app.xml',
|
|
57
|
+
contentType: 'application/vnd.openxmlformats-officedocument.extended-properties+xml'
|
|
58
|
+
});
|
|
59
|
+
await this.globalRelations.addRelation({
|
|
60
|
+
target: 'docProps/core.xml',
|
|
61
|
+
type: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties'
|
|
62
|
+
});
|
|
63
|
+
await this.contentTypes.addOverride({
|
|
64
|
+
partName: '/docProps/core.xml',
|
|
65
|
+
contentType: 'application/vnd.openxmlformats-package.core-properties+xml'
|
|
66
|
+
});
|
|
67
|
+
await this.globalRelations.addRelation({
|
|
68
|
+
target: 'xl/workbook.xml',
|
|
69
|
+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument'
|
|
70
|
+
});
|
|
71
|
+
await this.contentTypes.addOverride({
|
|
72
|
+
partName: '/xl/workbook.xml',
|
|
73
|
+
contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml'
|
|
74
|
+
});
|
|
75
|
+
// Wire up styles relation
|
|
76
|
+
await this.workbookRelations.addRelation({
|
|
77
|
+
target: 'styles.xml',
|
|
78
|
+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles'
|
|
79
|
+
});
|
|
80
|
+
// Add sheet to content types
|
|
81
|
+
await this.contentTypes.addOverride({
|
|
82
|
+
partName: `/xl/styles.xml`,
|
|
83
|
+
contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml'
|
|
84
|
+
});
|
|
85
|
+
// Theme relation: todo
|
|
86
|
+
await this.workbookRelations.addRelation({
|
|
87
|
+
target: 'theme/theme1.xml',
|
|
88
|
+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme'
|
|
89
|
+
});
|
|
90
|
+
// Add theme to content types: todo
|
|
91
|
+
await this.contentTypes.addOverride({
|
|
92
|
+
partName: `/xl/theme/theme1.xml`,
|
|
93
|
+
contentType: 'application/vnd.openxmlformats-officedocument.theme+xml'
|
|
94
|
+
});
|
|
95
|
+
// Shared strings relation: todo
|
|
96
|
+
await this.workbookRelations.addRelation({
|
|
97
|
+
target: 'sharedStrings.xml',
|
|
98
|
+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings'
|
|
99
|
+
});
|
|
100
|
+
// Add shared strings to content types: todo
|
|
101
|
+
await this.contentTypes.addOverride({
|
|
102
|
+
partName: `/xl/sharedStrings.xml`,
|
|
103
|
+
contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml'
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
async addSheet(name) {
|
|
107
|
+
const sheet = new XlsxSheetWriter();
|
|
108
|
+
const nameSlug = 'sheet' + (this.sheetWriters.size + 1);
|
|
109
|
+
const path = `worksheets/${nameSlug}.xml`;
|
|
110
|
+
// Write relationship
|
|
111
|
+
const relationId = await this.workbookRelations.addRelation({
|
|
112
|
+
target: path,
|
|
113
|
+
type: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet'
|
|
114
|
+
});
|
|
115
|
+
// Add sheet to workbook file
|
|
116
|
+
await this.workbook.addSheet({ name, relationId });
|
|
117
|
+
// Add sheet to content types
|
|
118
|
+
await this.contentTypes.addOverride({
|
|
119
|
+
partName: `/xl/${path}`,
|
|
120
|
+
contentType: 'application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml'
|
|
121
|
+
});
|
|
122
|
+
sheet.writeStream = await this.zipWriter.addFile(`xl/${path}`);
|
|
123
|
+
sheet.styles = this.styles;
|
|
124
|
+
const symbol = Symbol(name);
|
|
125
|
+
this.sheetWriters.set(symbol, sheet);
|
|
126
|
+
return symbol;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Called when all sheets have been added and all files are ready to be written
|
|
130
|
+
*/
|
|
131
|
+
async ready() {
|
|
132
|
+
await this.init();
|
|
133
|
+
await this.zipWriter.ready?.();
|
|
134
|
+
}
|
|
135
|
+
addRow(sheet, values) {
|
|
136
|
+
const writer = this.sheetWriters.get(sheet);
|
|
137
|
+
if (!writer) {
|
|
138
|
+
throw new Error('Sheet not found');
|
|
139
|
+
}
|
|
140
|
+
return writer.writeRow(values);
|
|
141
|
+
}
|
|
142
|
+
async close() {
|
|
143
|
+
// Close all sheet writers
|
|
144
|
+
for (const writer of this.sheetWriters.values()) {
|
|
145
|
+
await writer.close();
|
|
146
|
+
}
|
|
147
|
+
// Close styles
|
|
148
|
+
await this.styles.close();
|
|
149
|
+
// Close shared strings
|
|
150
|
+
await this.sharedStrings.close();
|
|
151
|
+
// Close workbook
|
|
152
|
+
await this.workbook.close();
|
|
153
|
+
// Close workbook relations
|
|
154
|
+
await this.workbookRelations.close();
|
|
155
|
+
// Close global relations
|
|
156
|
+
await this.globalRelations.close();
|
|
157
|
+
// Close core props
|
|
158
|
+
await this.coreProps.close();
|
|
159
|
+
// Close app props
|
|
160
|
+
await this.appProps.close();
|
|
161
|
+
// Close theme
|
|
162
|
+
await this.theme.close();
|
|
163
|
+
// Close content types
|
|
164
|
+
await this.contentTypes.close();
|
|
165
|
+
// All write streams should be closed now
|
|
166
|
+
await this.zipWriter.close();
|
|
167
|
+
}
|
|
168
|
+
async abort() {
|
|
169
|
+
// Close all sheet writers
|
|
170
|
+
for (const writer of this.sheetWriters.values()) {
|
|
171
|
+
try {
|
|
172
|
+
await writer.abort();
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
console.error('Error closing sheet writer', e);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Close styles
|
|
179
|
+
try {
|
|
180
|
+
await this.styles.abort();
|
|
181
|
+
}
|
|
182
|
+
catch (e) {
|
|
183
|
+
console.error('Error closing styles', e);
|
|
184
|
+
}
|
|
185
|
+
// Close shared strings
|
|
186
|
+
try {
|
|
187
|
+
await this.sharedStrings.abort();
|
|
188
|
+
}
|
|
189
|
+
catch (e) {
|
|
190
|
+
console.error('Error closing shared strings', e);
|
|
191
|
+
}
|
|
192
|
+
// Close workbook
|
|
193
|
+
try {
|
|
194
|
+
await this.workbook.abort();
|
|
195
|
+
}
|
|
196
|
+
catch (e) {
|
|
197
|
+
console.error('Error closing workbook', e);
|
|
198
|
+
}
|
|
199
|
+
// Close workbook relations
|
|
200
|
+
try {
|
|
201
|
+
await this.workbookRelations.abort();
|
|
202
|
+
}
|
|
203
|
+
catch (e) {
|
|
204
|
+
console.error('Error closing workbook relations', e);
|
|
205
|
+
}
|
|
206
|
+
// Close global relations
|
|
207
|
+
try {
|
|
208
|
+
await this.globalRelations.abort();
|
|
209
|
+
}
|
|
210
|
+
catch (e) {
|
|
211
|
+
console.error('Error closing global relations', e);
|
|
212
|
+
}
|
|
213
|
+
// Close core props
|
|
214
|
+
try {
|
|
215
|
+
await this.coreProps.abort();
|
|
216
|
+
}
|
|
217
|
+
catch (e) {
|
|
218
|
+
console.error('Error closing core props', e);
|
|
219
|
+
}
|
|
220
|
+
// Close app props
|
|
221
|
+
try {
|
|
222
|
+
await this.appProps.abort();
|
|
223
|
+
}
|
|
224
|
+
catch (e) {
|
|
225
|
+
console.error('Error closing app props', e);
|
|
226
|
+
}
|
|
227
|
+
// Close theme
|
|
228
|
+
try {
|
|
229
|
+
await this.theme.abort();
|
|
230
|
+
}
|
|
231
|
+
catch (e) {
|
|
232
|
+
console.error('Error closing theme', e);
|
|
233
|
+
}
|
|
234
|
+
// Close content types
|
|
235
|
+
try {
|
|
236
|
+
await this.contentTypes.abort();
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
console.error('Error closing content types', e);
|
|
240
|
+
}
|
|
241
|
+
// All write streams should be closed now
|
|
242
|
+
try {
|
|
243
|
+
await this.zipWriter.abort();
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
console.error('Error closing zip writer', e);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=XlsxWriter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XlsxWriter.js","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxWriter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import archiver from 'archiver';
|
|
2
|
+
import { ZipWriterAdapter } from '../interfaces';
|
|
3
|
+
export declare class ArchiverWriterAdapter implements ZipWriterAdapter {
|
|
4
|
+
writer: WritableStream<Buffer>;
|
|
5
|
+
archive: archiver.Archiver;
|
|
6
|
+
finalizePromise: Promise<void> | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* All pending writes we'll need to await
|
|
9
|
+
*/
|
|
10
|
+
pendingFileWrites: Promise<any>[];
|
|
11
|
+
/**
|
|
12
|
+
* @param writer The data of the zip file will be written to this stream
|
|
13
|
+
*/
|
|
14
|
+
constructor(writer: WritableStream<Buffer>);
|
|
15
|
+
addFile(name: string): Promise<WritableStream<Buffer>>;
|
|
16
|
+
addDirectory(name: string): Promise<void>;
|
|
17
|
+
ready(): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Note: make sure all writeable streams are closed before calling this
|
|
20
|
+
*/
|
|
21
|
+
close(): Promise<void | undefined>;
|
|
22
|
+
abort(): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ArchiverWriterAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchiverWriterAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/stream-writer/adapters/ArchiverWriterAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD,qBAAa,qBAAsB,YAAW,gBAAgB;IAC1D,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAA;IAC1B,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IAE3C;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAM;IAEvC;;OAEG;gBACS,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;IAwC1C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAqBhD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,KAAK;IAKX;;OAEG;IACG,KAAK;IAIL,KAAK;CAOd"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import archiver from 'archiver';
|
|
2
|
+
import { PassThrough, Writable } from "node:stream";
|
|
3
|
+
export class ArchiverWriterAdapter {
|
|
4
|
+
writer;
|
|
5
|
+
archive;
|
|
6
|
+
finalizePromise;
|
|
7
|
+
/**
|
|
8
|
+
* All pending writes we'll need to await
|
|
9
|
+
*/
|
|
10
|
+
pendingFileWrites = [];
|
|
11
|
+
/**
|
|
12
|
+
* @param writer The data of the zip file will be written to this stream
|
|
13
|
+
*/
|
|
14
|
+
constructor(writer) {
|
|
15
|
+
const output = Writable.fromWeb(writer);
|
|
16
|
+
output.on('close', () => {
|
|
17
|
+
console.log('Archiver has been finalized and the output file descriptor has closed: ' + this.archive.pointer() + ' total bytes');
|
|
18
|
+
});
|
|
19
|
+
output.on('end', function () {
|
|
20
|
+
console.log('Data has been drained');
|
|
21
|
+
});
|
|
22
|
+
output.on('error', (e) => {
|
|
23
|
+
console.error('Error in output stream', e);
|
|
24
|
+
throw e;
|
|
25
|
+
});
|
|
26
|
+
this.archive = archiver('zip', {
|
|
27
|
+
zlib: { level: 9 } // Sets the compression level.
|
|
28
|
+
});
|
|
29
|
+
// good practice to catch warnings (ie stat failures and other non-blocking errors)
|
|
30
|
+
this.archive.on('warning', function (err) {
|
|
31
|
+
if (err.code === 'ENOENT') {
|
|
32
|
+
console.warn(err);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.error(err);
|
|
36
|
+
throw err;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
// good practice to catch this error explicitly
|
|
40
|
+
this.archive.on('error', function (err) {
|
|
41
|
+
console.error('Archiver error', err);
|
|
42
|
+
throw err;
|
|
43
|
+
});
|
|
44
|
+
// pipe archive data to the file
|
|
45
|
+
this.archive.pipe(output);
|
|
46
|
+
}
|
|
47
|
+
addFile(name) {
|
|
48
|
+
// Create a new writeable stream that writes to a reader that we'll pass to zipWriter
|
|
49
|
+
const stream = new PassThrough({});
|
|
50
|
+
stream.on('end', () => {
|
|
51
|
+
console.log('Finished file', name);
|
|
52
|
+
});
|
|
53
|
+
stream.on('close', () => {
|
|
54
|
+
console.log('Closed file stream', name);
|
|
55
|
+
});
|
|
56
|
+
stream.on('error', (err) => {
|
|
57
|
+
console.error('Error in PassThrough stream', name, err);
|
|
58
|
+
//throw err;
|
|
59
|
+
});
|
|
60
|
+
this.archive.append(stream, { name });
|
|
61
|
+
return Promise.resolve(Writable.toWeb(stream));
|
|
62
|
+
}
|
|
63
|
+
async addDirectory(name) {
|
|
64
|
+
// Empty directories are not supported by archiver
|
|
65
|
+
// Directories should be created automatically when using addFile in this adapter
|
|
66
|
+
}
|
|
67
|
+
async ready() {
|
|
68
|
+
this.finalizePromise = this.archive.finalize();
|
|
69
|
+
return Promise.resolve();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Note: make sure all writeable streams are closed before calling this
|
|
73
|
+
*/
|
|
74
|
+
async close() {
|
|
75
|
+
return await this.finalizePromise;
|
|
76
|
+
}
|
|
77
|
+
async abort() {
|
|
78
|
+
if (!this.finalizePromise) {
|
|
79
|
+
this.archive.abort();
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
await this.finalizePromise;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=ArchiverWriterAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchiverWriterAdapter.js","sourceRoot":"","sources":["../../../../../src/stream-writer/adapters/ArchiverWriterAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ZipWriter } from '@zip.js/zip.js';
|
|
2
|
+
import { ZipWriterAdapter } from '../interfaces';
|
|
3
|
+
export declare class ZipJsWriterAdapter implements ZipWriterAdapter {
|
|
4
|
+
writer: WritableStream<Buffer>;
|
|
5
|
+
zipWriter: ZipWriter<Buffer>;
|
|
6
|
+
/**
|
|
7
|
+
* All pending writes we'll need to await
|
|
8
|
+
*/
|
|
9
|
+
pendingFileWrites: Promise<any>[];
|
|
10
|
+
/**
|
|
11
|
+
* @param writer The data of the zip file will be written to this stream
|
|
12
|
+
*/
|
|
13
|
+
constructor(writer: WritableStream<Buffer>);
|
|
14
|
+
addFile(name: string): Promise<WritableStream<Buffer>>;
|
|
15
|
+
addDirectory(name: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Note: make sure all writeable streams are closed before calling this
|
|
18
|
+
*/
|
|
19
|
+
close(): Promise<void>;
|
|
20
|
+
abort(): Promise<void>;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=ZipJsWriterAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipJsWriterAdapter.d.ts","sourceRoot":"","sources":["../../../../../src/stream-writer/adapters/ZipJsWriterAdapter.ts"],"names":[],"mappings":"AAAA,OAAY,EACR,SAAS,EACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,qBAAa,kBAAmB,YAAW,gBAAgB;IACvD,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAE7B;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAM;IAEvC;;OAEG;gBACS,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;IAM1C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAoBhD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,KAAK;IAQL,KAAK;CAGd"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import zip, { ZipWriter } from '@zip.js/zip.js';
|
|
2
|
+
export class ZipJsWriterAdapter {
|
|
3
|
+
writer;
|
|
4
|
+
zipWriter;
|
|
5
|
+
/**
|
|
6
|
+
* All pending writes we'll need to await
|
|
7
|
+
*/
|
|
8
|
+
pendingFileWrites = [];
|
|
9
|
+
/**
|
|
10
|
+
* @param writer The data of the zip file will be written to this stream
|
|
11
|
+
*/
|
|
12
|
+
constructor(writer) {
|
|
13
|
+
this.writer = writer;
|
|
14
|
+
zip.configure({ chunkSize: 128 });
|
|
15
|
+
this.zipWriter = new ZipWriter(writer, { bufferedWrite: true });
|
|
16
|
+
}
|
|
17
|
+
addFile(name) {
|
|
18
|
+
// Create a new writeable stream that writes to a reader that we'll pass to zipWriter
|
|
19
|
+
const stream = new TransformStream(undefined, new CountQueuingStrategy({ highWaterMark: 100 }), new CountQueuingStrategy({ highWaterMark: 10000 }));
|
|
20
|
+
this.pendingFileWrites.push(this.zipWriter.add(name, { readable: stream.readable, size: 10000 }).then(() => {
|
|
21
|
+
console.log('Finished file', name);
|
|
22
|
+
}).catch((e) => {
|
|
23
|
+
console.error('Error writing file', name, e);
|
|
24
|
+
})
|
|
25
|
+
//stream.readable.pipeTo(this.writer)
|
|
26
|
+
);
|
|
27
|
+
return Promise.resolve(stream.writable);
|
|
28
|
+
}
|
|
29
|
+
async addDirectory(name) {
|
|
30
|
+
await this.zipWriter.add(name, undefined, { directory: true });
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Note: make sure all writeable streams are closed before calling this
|
|
34
|
+
*/
|
|
35
|
+
async close() {
|
|
36
|
+
console.log('Awaiting pending file writes');
|
|
37
|
+
await Promise.all(this.pendingFileWrites);
|
|
38
|
+
console.log('Closing zip writer');
|
|
39
|
+
await this.zipWriter.close();
|
|
40
|
+
}
|
|
41
|
+
async abort() {
|
|
42
|
+
await this.zipWriter.close();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ZipJsWriterAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZipJsWriterAdapter.js","sourceRoot":"","sources":["../../../../../src/stream-writer/adapters/ZipJsWriterAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EACR,SAAS,EACZ,MAAM,gBAAgB,CAAC;AAGxB,MAAM,OAAO,kBAAkB;IAC3B,MAAM,CAAyB;IAC/B,SAAS,CAAoB;IAE7B;;OAEG;IACH,iBAAiB,GAAmB,EAAE,CAAC;IAEvC;;OAEG;IACH,YAAY,MAA8B;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,qFAAqF;QACrF,MAAM,MAAM,GAAG,IAAI,eAAe,CAC9B,SAAS,EACT,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,EAChD,IAAI,oBAAoB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CACrD,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,IAAI,CACvB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACzE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;QACtC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACX,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAChD,CAAC,CAAC;QACF,qCAAqC;SACxC,CAAA;QAED,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY;QAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACP,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC3C,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE1C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACjC,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escapeXml.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/escapeXml.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW7C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function escapeXml(str) {
|
|
2
|
+
// " "
|
|
3
|
+
// ' '
|
|
4
|
+
// < <
|
|
5
|
+
// > >
|
|
6
|
+
// & &
|
|
7
|
+
return str.replace(/&/g, '&')
|
|
8
|
+
.replace(/</g, '<')
|
|
9
|
+
.replace(/>/g, '>')
|
|
10
|
+
.replace(/'/g, ''')
|
|
11
|
+
.replace(/"/g, '"');
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=escapeXml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escapeXml.js","sourceRoot":"","sources":["../../../../src/stream-writer/escapeXml.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,aAAa;IACb,aAAa;IACb,WAAW;IACX,WAAW;IACX,YAAY;IACZ,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/stream-writer/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,+BAA+B,CAAA;AAC7C,cAAc,kCAAkC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Allows to use different zip libraries
|
|
3
|
+
*/
|
|
4
|
+
export interface ZipWriterAdapter {
|
|
5
|
+
addFile(name: string): Promise<WritableStream<Buffer>>;
|
|
6
|
+
addDirectory(name: string): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Called when all files have added (streams still in progress)
|
|
9
|
+
*/
|
|
10
|
+
ready?(): Promise<void>;
|
|
11
|
+
close(): Promise<void>;
|
|
12
|
+
abort(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/interfaces.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAA;IACtD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEzC;;OAEG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAEvB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/stream-writer/interfaces.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@stamhoofd/excel-writer",
|
|
3
|
+
"version": "2.17.0",
|
|
4
|
+
"main": "./dist/index.js",
|
|
5
|
+
"module": "./esm/dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"license": "UNLICENCED",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"files": [
|
|
10
|
+
"dist",
|
|
11
|
+
"esm/dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": " tsc -b . esm",
|
|
15
|
+
"lint": "eslint . --ext .js,.jsx,.ts,.tsx"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@types/archiver": "^6.0.2",
|
|
19
|
+
"@zip.js/zip.js": "^2.7.48"
|
|
20
|
+
},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"archiver": "^7.0.1"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"gitHead": "5f940486646acd12e23e96a750bc12ca2be4df44"
|
|
28
|
+
}
|