@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.
Files changed (170) hide show
  1. package/LICENSE +661 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +7 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/XlsxColumnFilterer.d.ts +11 -0
  7. package/dist/src/XlsxColumnFilterer.d.ts.map +1 -0
  8. package/dist/src/XlsxColumnFilterer.js +81 -0
  9. package/dist/src/XlsxColumnFilterer.js.map +1 -0
  10. package/dist/src/XlsxTransformer.d.ts +14 -0
  11. package/dist/src/XlsxTransformer.d.ts.map +1 -0
  12. package/dist/src/XlsxTransformer.js +59 -0
  13. package/dist/src/XlsxTransformer.js.map +1 -0
  14. package/dist/src/exportToExcel.d.ts +8 -0
  15. package/dist/src/exportToExcel.d.ts.map +1 -0
  16. package/dist/src/exportToExcel.js +23 -0
  17. package/dist/src/exportToExcel.js.map +1 -0
  18. package/dist/src/interfaces.d.ts +160 -0
  19. package/dist/src/interfaces.d.ts.map +1 -0
  20. package/dist/src/interfaces.js +101 -0
  21. package/dist/src/interfaces.js.map +1 -0
  22. package/dist/src/stream-writer/XlsxAppPropsWriter.d.ts +5 -0
  23. package/dist/src/stream-writer/XlsxAppPropsWriter.d.ts.map +1 -0
  24. package/dist/src/stream-writer/XlsxAppPropsWriter.js +13 -0
  25. package/dist/src/stream-writer/XlsxAppPropsWriter.js.map +1 -0
  26. package/dist/src/stream-writer/XlsxContentTypesWriter.d.ts +13 -0
  27. package/dist/src/stream-writer/XlsxContentTypesWriter.d.ts.map +1 -0
  28. package/dist/src/stream-writer/XlsxContentTypesWriter.js +24 -0
  29. package/dist/src/stream-writer/XlsxContentTypesWriter.js.map +1 -0
  30. package/dist/src/stream-writer/XlsxCorePropsWriter.d.ts +7 -0
  31. package/dist/src/stream-writer/XlsxCorePropsWriter.d.ts.map +1 -0
  32. package/dist/src/stream-writer/XlsxCorePropsWriter.js +26 -0
  33. package/dist/src/stream-writer/XlsxCorePropsWriter.js.map +1 -0
  34. package/dist/src/stream-writer/XlsxFileWriter.d.ts +11 -0
  35. package/dist/src/stream-writer/XlsxFileWriter.d.ts.map +1 -0
  36. package/dist/src/stream-writer/XlsxFileWriter.js +44 -0
  37. package/dist/src/stream-writer/XlsxFileWriter.js.map +1 -0
  38. package/dist/src/stream-writer/XlsxRelationsWriter.d.ts +17 -0
  39. package/dist/src/stream-writer/XlsxRelationsWriter.d.ts.map +1 -0
  40. package/dist/src/stream-writer/XlsxRelationsWriter.js +28 -0
  41. package/dist/src/stream-writer/XlsxRelationsWriter.js.map +1 -0
  42. package/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts +5 -0
  43. package/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts.map +1 -0
  44. package/dist/src/stream-writer/XlsxSharedStringsWriter.js +12 -0
  45. package/dist/src/stream-writer/XlsxSharedStringsWriter.js.map +1 -0
  46. package/dist/src/stream-writer/XlsxSheetWriter.d.ts +30 -0
  47. package/dist/src/stream-writer/XlsxSheetWriter.d.ts.map +1 -0
  48. package/dist/src/stream-writer/XlsxSheetWriter.js +140 -0
  49. package/dist/src/stream-writer/XlsxSheetWriter.js.map +1 -0
  50. package/dist/src/stream-writer/XlsxStylesWriter.d.ts +24 -0
  51. package/dist/src/stream-writer/XlsxStylesWriter.d.ts.map +1 -0
  52. package/dist/src/stream-writer/XlsxStylesWriter.js +159 -0
  53. package/dist/src/stream-writer/XlsxStylesWriter.js.map +1 -0
  54. package/dist/src/stream-writer/XlsxThemeWriter.d.ts +5 -0
  55. package/dist/src/stream-writer/XlsxThemeWriter.d.ts.map +1 -0
  56. package/dist/src/stream-writer/XlsxThemeWriter.js +327 -0
  57. package/dist/src/stream-writer/XlsxThemeWriter.js.map +1 -0
  58. package/dist/src/stream-writer/XlsxWorkbookWriter.d.ts +17 -0
  59. package/dist/src/stream-writer/XlsxWorkbookWriter.d.ts.map +1 -0
  60. package/dist/src/stream-writer/XlsxWorkbookWriter.js +31 -0
  61. package/dist/src/stream-writer/XlsxWorkbookWriter.js.map +1 -0
  62. package/dist/src/stream-writer/XlsxWriter.d.ts +35 -0
  63. package/dist/src/stream-writer/XlsxWriter.d.ts.map +1 -0
  64. package/dist/src/stream-writer/XlsxWriter.js +254 -0
  65. package/dist/src/stream-writer/XlsxWriter.js.map +1 -0
  66. package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts +24 -0
  67. package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts.map +1 -0
  68. package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js +90 -0
  69. package/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js.map +1 -0
  70. package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts +22 -0
  71. package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts.map +1 -0
  72. package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js +50 -0
  73. package/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js.map +1 -0
  74. package/dist/src/stream-writer/escapeXml.d.ts +2 -0
  75. package/dist/src/stream-writer/escapeXml.d.ts.map +1 -0
  76. package/dist/src/stream-writer/escapeXml.js +16 -0
  77. package/dist/src/stream-writer/escapeXml.js.map +1 -0
  78. package/dist/src/stream-writer/index.d.ts +4 -0
  79. package/dist/src/stream-writer/index.d.ts.map +1 -0
  80. package/dist/src/stream-writer/index.js +7 -0
  81. package/dist/src/stream-writer/index.js.map +1 -0
  82. package/dist/src/stream-writer/interfaces.d.ts +14 -0
  83. package/dist/src/stream-writer/interfaces.d.ts.map +1 -0
  84. package/dist/src/stream-writer/interfaces.js +3 -0
  85. package/dist/src/stream-writer/interfaces.js.map +1 -0
  86. package/esm/dist/index.d.ts +4 -0
  87. package/esm/dist/index.d.ts.map +1 -0
  88. package/esm/dist/index.js +4 -0
  89. package/esm/dist/index.js.map +1 -0
  90. package/esm/dist/src/XlsxColumnFilterer.d.ts +11 -0
  91. package/esm/dist/src/XlsxColumnFilterer.d.ts.map +1 -0
  92. package/esm/dist/src/XlsxColumnFilterer.js +77 -0
  93. package/esm/dist/src/XlsxColumnFilterer.js.map +1 -0
  94. package/esm/dist/src/XlsxTransformer.d.ts +14 -0
  95. package/esm/dist/src/XlsxTransformer.d.ts.map +1 -0
  96. package/esm/dist/src/XlsxTransformer.js +55 -0
  97. package/esm/dist/src/XlsxTransformer.js.map +1 -0
  98. package/esm/dist/src/exportToExcel.d.ts +8 -0
  99. package/esm/dist/src/exportToExcel.d.ts.map +1 -0
  100. package/esm/dist/src/exportToExcel.js +20 -0
  101. package/esm/dist/src/exportToExcel.js.map +1 -0
  102. package/esm/dist/src/interfaces.d.ts +160 -0
  103. package/esm/dist/src/interfaces.d.ts.map +1 -0
  104. package/esm/dist/src/interfaces.js +98 -0
  105. package/esm/dist/src/interfaces.js.map +1 -0
  106. package/esm/dist/src/stream-writer/XlsxAppPropsWriter.d.ts +5 -0
  107. package/esm/dist/src/stream-writer/XlsxAppPropsWriter.d.ts.map +1 -0
  108. package/esm/dist/src/stream-writer/XlsxAppPropsWriter.js +9 -0
  109. package/esm/dist/src/stream-writer/XlsxAppPropsWriter.js.map +1 -0
  110. package/esm/dist/src/stream-writer/XlsxContentTypesWriter.d.ts +13 -0
  111. package/esm/dist/src/stream-writer/XlsxContentTypesWriter.d.ts.map +1 -0
  112. package/esm/dist/src/stream-writer/XlsxContentTypesWriter.js +20 -0
  113. package/esm/dist/src/stream-writer/XlsxContentTypesWriter.js.map +1 -0
  114. package/esm/dist/src/stream-writer/XlsxCorePropsWriter.d.ts +7 -0
  115. package/esm/dist/src/stream-writer/XlsxCorePropsWriter.d.ts.map +1 -0
  116. package/esm/dist/src/stream-writer/XlsxCorePropsWriter.js +22 -0
  117. package/esm/dist/src/stream-writer/XlsxCorePropsWriter.js.map +1 -0
  118. package/esm/dist/src/stream-writer/XlsxFileWriter.d.ts +11 -0
  119. package/esm/dist/src/stream-writer/XlsxFileWriter.d.ts.map +1 -0
  120. package/esm/dist/src/stream-writer/XlsxFileWriter.js +40 -0
  121. package/esm/dist/src/stream-writer/XlsxFileWriter.js.map +1 -0
  122. package/esm/dist/src/stream-writer/XlsxRelationsWriter.d.ts +17 -0
  123. package/esm/dist/src/stream-writer/XlsxRelationsWriter.d.ts.map +1 -0
  124. package/esm/dist/src/stream-writer/XlsxRelationsWriter.js +24 -0
  125. package/esm/dist/src/stream-writer/XlsxRelationsWriter.js.map +1 -0
  126. package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts +5 -0
  127. package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.d.ts.map +1 -0
  128. package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.js +8 -0
  129. package/esm/dist/src/stream-writer/XlsxSharedStringsWriter.js.map +1 -0
  130. package/esm/dist/src/stream-writer/XlsxSheetWriter.d.ts +30 -0
  131. package/esm/dist/src/stream-writer/XlsxSheetWriter.d.ts.map +1 -0
  132. package/esm/dist/src/stream-writer/XlsxSheetWriter.js +136 -0
  133. package/esm/dist/src/stream-writer/XlsxSheetWriter.js.map +1 -0
  134. package/esm/dist/src/stream-writer/XlsxStylesWriter.d.ts +24 -0
  135. package/esm/dist/src/stream-writer/XlsxStylesWriter.d.ts.map +1 -0
  136. package/esm/dist/src/stream-writer/XlsxStylesWriter.js +155 -0
  137. package/esm/dist/src/stream-writer/XlsxStylesWriter.js.map +1 -0
  138. package/esm/dist/src/stream-writer/XlsxThemeWriter.d.ts +5 -0
  139. package/esm/dist/src/stream-writer/XlsxThemeWriter.d.ts.map +1 -0
  140. package/esm/dist/src/stream-writer/XlsxThemeWriter.js +323 -0
  141. package/esm/dist/src/stream-writer/XlsxThemeWriter.js.map +1 -0
  142. package/esm/dist/src/stream-writer/XlsxWorkbookWriter.d.ts +17 -0
  143. package/esm/dist/src/stream-writer/XlsxWorkbookWriter.d.ts.map +1 -0
  144. package/esm/dist/src/stream-writer/XlsxWorkbookWriter.js +27 -0
  145. package/esm/dist/src/stream-writer/XlsxWorkbookWriter.js.map +1 -0
  146. package/esm/dist/src/stream-writer/XlsxWriter.d.ts +35 -0
  147. package/esm/dist/src/stream-writer/XlsxWriter.d.ts.map +1 -0
  148. package/esm/dist/src/stream-writer/XlsxWriter.js +250 -0
  149. package/esm/dist/src/stream-writer/XlsxWriter.js.map +1 -0
  150. package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts +24 -0
  151. package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.d.ts.map +1 -0
  152. package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js +85 -0
  153. package/esm/dist/src/stream-writer/adapters/ArchiverWriterAdapter.js.map +1 -0
  154. package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts +22 -0
  155. package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.d.ts.map +1 -0
  156. package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js +45 -0
  157. package/esm/dist/src/stream-writer/adapters/ZipJsWriterAdapter.js.map +1 -0
  158. package/esm/dist/src/stream-writer/escapeXml.d.ts +2 -0
  159. package/esm/dist/src/stream-writer/escapeXml.d.ts.map +1 -0
  160. package/esm/dist/src/stream-writer/escapeXml.js +13 -0
  161. package/esm/dist/src/stream-writer/escapeXml.js.map +1 -0
  162. package/esm/dist/src/stream-writer/index.d.ts +4 -0
  163. package/esm/dist/src/stream-writer/index.d.ts.map +1 -0
  164. package/esm/dist/src/stream-writer/index.js +4 -0
  165. package/esm/dist/src/stream-writer/index.js.map +1 -0
  166. package/esm/dist/src/stream-writer/interfaces.d.ts +14 -0
  167. package/esm/dist/src/stream-writer/interfaces.d.ts.map +1 -0
  168. package/esm/dist/src/stream-writer/interfaces.js +2 -0
  169. package/esm/dist/src/stream-writer/interfaces.js.map +1 -0
  170. 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,2 @@
1
+ export declare function escapeXml(str: string): string;
2
+ //# sourceMappingURL=escapeXml.d.ts.map
@@ -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
+ // " &quot;
3
+ // ' &apos;
4
+ // < &lt;
5
+ // > &gt;
6
+ // & &amp;
7
+ return str.replace(/&/g, '&amp;')
8
+ .replace(/</g, '&lt;')
9
+ .replace(/>/g, '&gt;')
10
+ .replace(/'/g, '&apos;')
11
+ .replace(/"/g, '&quot;');
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,4 @@
1
+ export * from './XlsxWriter';
2
+ export * from './adapters/ZipJsWriterAdapter';
3
+ export * from './adapters/ArchiverWriterAdapter';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export * from './XlsxWriter';
2
+ export * from './adapters/ZipJsWriterAdapter';
3
+ export * from './adapters/ArchiverWriterAdapter';
4
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -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
+ }