@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,77 @@
1
+ import { SimpleError } from "@simonbackx/simple-errors";
2
+ /**
3
+ * Allows to specify which columns to include in the excel file.
4
+ * Takes a filter object that can be built in the frontend
5
+ */
6
+ export class XlsxColumnFilterer {
7
+ allSheets;
8
+ constructor(allSheets) {
9
+ this.allSheets = allSheets;
10
+ }
11
+ filterColumns(filter) {
12
+ // Validate sheetFilter
13
+ for (const { id } of filter.sheets) {
14
+ if (!this.allSheets.find(sheet => sheet.id === id)) {
15
+ throw new SimpleError({
16
+ code: "invalid_sheet",
17
+ message: "Invalid sheet " + id,
18
+ human: 'Ongeldig werkblad ' + id + ', deze wordt niet (meer) ondersteund',
19
+ statusCode: 400
20
+ });
21
+ }
22
+ }
23
+ const sheets = this.allSheets.flatMap(sheet => {
24
+ const sheetFilter = filter.sheets.find(s => s.id === sheet.id);
25
+ if (!sheetFilter) {
26
+ return [];
27
+ }
28
+ // Validate sheetFilter
29
+ const concreteColumns = [];
30
+ for (const id of sheetFilter.columns) {
31
+ let found = false;
32
+ for (const column of sheet.columns) {
33
+ if ("id" in column) {
34
+ if (column.id === id) {
35
+ concreteColumns.push(column);
36
+ found = true;
37
+ break;
38
+ }
39
+ }
40
+ else {
41
+ const matched = column.match(id);
42
+ if (matched !== undefined) {
43
+ concreteColumns.push(...matched);
44
+ found = true;
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ if (!found) {
50
+ throw new SimpleError({
51
+ code: "invalid_column",
52
+ message: "Invalid column " + id,
53
+ human: 'Ongeldige kolom ' + id + ', deze wordt niet (meer) ondersteund',
54
+ statusCode: 400
55
+ });
56
+ }
57
+ }
58
+ if (concreteColumns.length === 0) {
59
+ return [];
60
+ }
61
+ return [{
62
+ ...sheet,
63
+ columns: concreteColumns
64
+ }];
65
+ });
66
+ if (sheets.length === 0) {
67
+ throw new SimpleError({
68
+ code: "no_columns",
69
+ message: "No columns selected",
70
+ human: 'Geen enkele kolom is geselecteerd',
71
+ statusCode: 400
72
+ });
73
+ }
74
+ return sheets;
75
+ }
76
+ }
77
+ //# sourceMappingURL=XlsxColumnFilterer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxColumnFilterer.js","sourceRoot":"","sources":["../../../src/XlsxColumnFilterer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC3B,SAAS,CAAqC;IAE9C,YAAY,SAA6C;QACrD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,aAAa,CAAC,MAA0B;QACpC,uBAAuB;QACvB,KAAK,MAAM,EAAC,EAAE,EAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBACjD,MAAM,IAAI,WAAW,CAAC;oBAClB,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,gBAAgB,GAAG,EAAE;oBAC9B,KAAK,EAAE,oBAAoB,GAAG,EAAE,GAAC,sCAAsC;oBACvE,UAAU,EAAE,GAAG;iBAClB,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;YAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACd,CAAC;YAED,uBAAuB;YACvB,MAAM,eAAe,GAAuC,EAAE,CAAC;YAC/D,KAAK,MAAM,EAAE,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACnC,IAAI,KAAK,GAAG,KAAK,CAAC;gBAElB,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACjC,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;wBACjB,IAAI,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;4BACnB,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;4BAC7B,KAAK,GAAG,IAAI,CAAC;4BACb,MAAM;wBACV,CAAC;oBACL,CAAC;yBAAM,CAAC;wBACJ,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;wBACjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;4BACxB,eAAe,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;4BACjC,KAAK,GAAG,IAAI,CAAC;4BACb,MAAM;wBACV,CAAC;oBACL,CAAC;gBACL,CAAC;gBAED,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,MAAM,IAAI,WAAW,CAAC;wBAClB,IAAI,EAAE,gBAAgB;wBACtB,OAAO,EAAE,iBAAiB,GAAG,EAAE;wBAC/B,KAAK,EAAE,kBAAkB,GAAG,EAAE,GAAC,sCAAsC;wBACrE,UAAU,EAAE,GAAG;qBAClB,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;YACD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;YACd,CAAC;YAED,OAAO,CAAC;oBACJ,GAAG,KAAK;oBACR,OAAO,EAAE,eAAe;iBAC3B,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,WAAW,CAAC;gBAClB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,qBAAqB;gBAC9B,KAAK,EAAE,mCAAmC;gBAC1C,UAAU,EAAE,GAAG;aAClB,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
@@ -0,0 +1,14 @@
1
+ import { XlsxTransformerConcreteSheet, XlsxTransformerSheet, XlsxWriterAdapter } from "./interfaces";
2
+ /**
3
+ * Transforms data into an excel file using
4
+ * a writer that can write to an excel file
5
+ */
6
+ export declare class XlsxTransformer<T> {
7
+ sheets: XlsxTransformerConcreteSheet<T, unknown>[];
8
+ writer: XlsxWriterAdapter;
9
+ sheetMap: Map<XlsxTransformerSheet<T, unknown>, symbol>;
10
+ constructor(sheets: XlsxTransformerConcreteSheet<T, unknown>[], writer: XlsxWriterAdapter);
11
+ init(): Promise<void>;
12
+ process(data: T[]): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=XlsxTransformer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxTransformer.d.ts","sourceRoot":"","sources":["../../../src/XlsxTransformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErG;;;GAGG;AACH,qBAAa,eAAe,CAAC,CAAC;IAC1B,MAAM,EAAE,4BAA4B,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,CAAa;gBAExD,MAAM,EAAE,4BAA4B,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB;IAKnF,IAAI;IA+BJ,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE;CAc1B"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Transforms data into an excel file using
3
+ * a writer that can write to an excel file
4
+ */
5
+ export class XlsxTransformer {
6
+ sheets;
7
+ writer;
8
+ sheetMap = new Map();
9
+ constructor(sheets, writer) {
10
+ this.sheets = sheets;
11
+ this.writer = writer;
12
+ }
13
+ async init() {
14
+ for (const sheet of this.sheets) {
15
+ let sheetSymbol = this.sheetMap.get(sheet);
16
+ if (!sheetSymbol) {
17
+ sheetSymbol = await this.writer.addSheet(sheet.name);
18
+ this.sheetMap.set(sheet, sheetSymbol);
19
+ }
20
+ }
21
+ await this.writer.ready();
22
+ // Write column headers
23
+ for (const sheet of this.sheets) {
24
+ const sheetSymbol = this.sheetMap.get(sheet);
25
+ if (!sheetSymbol) {
26
+ throw new Error('Sheet not found');
27
+ }
28
+ await this.writer.addRow(sheetSymbol, sheet.columns.map(col => {
29
+ return {
30
+ value: col.name,
31
+ width: col.width,
32
+ style: {
33
+ font: {
34
+ bold: true
35
+ }
36
+ }
37
+ };
38
+ }));
39
+ }
40
+ }
41
+ async process(data) {
42
+ for (const sheet of this.sheets) {
43
+ const sheetSymbol = this.sheetMap.get(sheet);
44
+ if (!sheetSymbol) {
45
+ throw new Error('Sheet not found');
46
+ }
47
+ for (const item of data) {
48
+ for (const transformedItem of sheet.transform ? sheet.transform(item) : [item]) {
49
+ await this.writer.addRow(sheetSymbol, sheet.columns.map(col => col.getValue(transformedItem)));
50
+ }
51
+ }
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=XlsxTransformer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxTransformer.js","sourceRoot":"","sources":["../../../src/XlsxTransformer.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,OAAO,eAAe;IACxB,MAAM,CAA6C;IACnD,MAAM,CAAoB;IAC1B,QAAQ,GAAkD,IAAI,GAAG,EAAE,CAAC;IAEpE,YAAY,MAAkD,EAAE,MAAyB;QACrF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC1C,CAAC;QACL,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAE1B,uBAAuB;QACvB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACvC,CAAC;YAED,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC1D,OAAO;oBACH,KAAK,EAAE,GAAG,CAAC,IAAI;oBACf,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE;wBACH,IAAI,EAAE;4BACF,IAAI,EAAE,IAAI;yBACb;qBACJ;iBACJ,CAAA;YACL,CAAC,CAAC,CAAC,CAAC;QACR,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAS;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACvC,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACtB,KAAK,MAAM,eAAe,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7E,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;gBACnG,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;CACJ"}
@@ -0,0 +1,8 @@
1
+ import { XlsxTransformerSheet, XlsxWorkbookFilter, XlsxWriterAdapter } from "./interfaces";
2
+ export declare function exportToExcel<T>({ definitions, writer, dataGenerator, filter }: {
3
+ filter: XlsxWorkbookFilter;
4
+ definitions: XlsxTransformerSheet<T, unknown>[];
5
+ writer: XlsxWriterAdapter;
6
+ dataGenerator: AsyncIterable<T[]>;
7
+ }): Promise<void>;
8
+ //# sourceMappingURL=exportToExcel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportToExcel.d.ts","sourceRoot":"","sources":["../../../src/exportToExcel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAI3F,wBAAsB,aAAa,CAAC,CAAC,EAAE,EAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAC,EAAE;IACjF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,oBAAoB,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;IAChD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAA;CACpC,iBAoBA"}
@@ -0,0 +1,20 @@
1
+ import { XlsxColumnFilterer } from "./XlsxColumnFilterer";
2
+ import { XlsxTransformer } from "./XlsxTransformer";
3
+ export async function exportToExcel({ definitions, writer, dataGenerator, filter }) {
4
+ try {
5
+ const sheets = new XlsxColumnFilterer(definitions).filterColumns(filter);
6
+ // The transformer handles data and converts it into cell values and writes it to the writer
7
+ const transformer = new XlsxTransformer(sheets, writer);
8
+ await transformer.init();
9
+ // Start looping over the data
10
+ for await (const data of dataGenerator) {
11
+ await transformer.process(data);
12
+ }
13
+ await writer.close();
14
+ }
15
+ catch (e) {
16
+ await writer.abort();
17
+ throw e;
18
+ }
19
+ }
20
+ //# sourceMappingURL=exportToExcel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exportToExcel.js","sourceRoot":"","sources":["../../../src/exportToExcel.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,EAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAKjF;IACG,IAAI,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAEzE,4FAA4F;QAC5F,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAExD,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAEzB,8BAA8B;QAC9B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,CAAC,CAAC;IACZ,CAAC;AACL,CAAC"}
@@ -0,0 +1,160 @@
1
+ export type XlsxTransformerConcreteColumn<T> = {
2
+ id: string;
3
+ name: string;
4
+ width: number;
5
+ getValue(object: T): CellValue;
6
+ };
7
+ export type XlsxTransformerColumn<T> = XlsxTransformerConcreteColumn<T> | {
8
+ match: (id: string) => (XlsxTransformerConcreteColumn<T>[] | undefined);
9
+ };
10
+ export interface XlsxTransformerSheet<A, B = A> {
11
+ id: string;
12
+ name: string;
13
+ transform?: (data: A) => B[];
14
+ columns: XlsxTransformerColumn<B>[];
15
+ }
16
+ export interface XlsxTransformerConcreteSheet<A, B = A> {
17
+ id: string;
18
+ name: string;
19
+ transform?: (data: A) => B[];
20
+ columns: XlsxTransformerConcreteColumn<B>[];
21
+ }
22
+ export interface CellValue {
23
+ value: string | number | Date | null;
24
+ width?: number;
25
+ style?: CellStyleRequest;
26
+ }
27
+ /**
28
+ * This should be implemented in a specific environment (e.g. nodejs, browser)
29
+ * that can write Excel files, given input CellValues
30
+ */
31
+ export interface XlsxWriterAdapter {
32
+ addSheet(name: string): Promise<symbol> | symbol;
33
+ addRow(sheet: symbol, values: CellValue[]): Promise<void> | void;
34
+ /**
35
+ * Called when all sheets have been added and all files are ready to be written
36
+ */
37
+ ready(): Promise<void>;
38
+ close(): Promise<void>;
39
+ abort(): Promise<void>;
40
+ }
41
+ export type XlsxWorkbookFilter = {
42
+ sheets: {
43
+ id: string;
44
+ columns: string[];
45
+ }[];
46
+ };
47
+ export declare enum XlsxBuiltInNumberFormat {
48
+ None = 0,
49
+ Number = 1,
50
+ Number2Decimal = 2,
51
+ NumberWithThousandSeparator = 3,
52
+ NumberWithThousandSeparator2Decimal = 4,
53
+ CurrencyWithoutRed = 5,
54
+ CurrencyWithRed = 6,
55
+ Currency2DecimalWithoutRed = 7,
56
+ Currency2DecimalWithRed = 8,
57
+ Percentage = 9,
58
+ Percentage2Decimal = 10,
59
+ Scientific = 11,
60
+ Fraction = 12,
61
+ Fraction2 = 13,
62
+ /**
63
+ * m/d/yyyy (depends on user local environment)
64
+ * In EU: 14/03/2022
65
+ */
66
+ DateSlash = 14,
67
+ /**
68
+ * d-mmm-yy
69
+ * 14-Mar-22
70
+ */
71
+ DateShort = 15,
72
+ /**
73
+ * d-mmm
74
+ * 14-Mar
75
+ */
76
+ DateShortNoYear = 16,
77
+ /**
78
+ * mmm-yy
79
+ * Mar-22
80
+ */
81
+ DateMonthYear = 17,
82
+ /**
83
+ * h:mm AM/PM
84
+ * 2:30 PM
85
+ */
86
+ TimeAMPM = 18,
87
+ /**
88
+ * h:mm:ss AM/PM
89
+ * 2:30:15 PM
90
+ */
91
+ TimeSecondsAMPM = 19,
92
+ /**
93
+ * h:mm
94
+ * 2:30
95
+ */
96
+ Time = 20,
97
+ /**
98
+ * h:mm:ss
99
+ * 2:30:15
100
+ */
101
+ TimeSeconds = 21,
102
+ /**
103
+ * m/d/yyyy h:mm (depends on user local environment)
104
+ * 14/03/2022 14:30
105
+ */
106
+ DateTimeSlash = 22,
107
+ /**
108
+ * mm:ss
109
+ * 02:30
110
+ */
111
+ TimeMinutesSeconds = 45,
112
+ /**
113
+ * [h]:mm:ss
114
+ * 26:30:15
115
+ */
116
+ TimeHoursMinutesSeconds = 46,
117
+ /**
118
+ * mm:ss.0
119
+ * 02:30.0
120
+ */
121
+ TimeMinutesSecondsDecimal = 47,
122
+ /**
123
+ * ##0.0E+0
124
+ * 1.2E+3
125
+ */
126
+ Scientific2 = 48,
127
+ /**
128
+ * @
129
+ * Text
130
+ */
131
+ Text = 49
132
+ }
133
+ export type NumberFormatOptions = {
134
+ id?: XlsxBuiltInNumberFormat | number;
135
+ formatCode?: string;
136
+ };
137
+ export declare enum CellType {
138
+ Boolean = "b",
139
+ Date = "d",
140
+ Error = "e",
141
+ InlineString = "inlineStr",
142
+ Number = "n",// This is the default value
143
+ SharedString = "s",
144
+ Formula = "str"
145
+ }
146
+ export type FontOptions = {
147
+ size?: number;
148
+ bold?: boolean;
149
+ };
150
+ export type CellAlignmentOptions = {
151
+ horizontal?: 'general' | 'center' | 'centerContinuous' | 'distributed' | 'justify' | 'fill' | 'left' | 'right';
152
+ vertical?: 'bottom' | 'center' | 'distributed' | 'justify' | 'top';
153
+ wrapText?: boolean;
154
+ };
155
+ export type CellStyleRequest = {
156
+ font?: FontOptions;
157
+ numberFormat?: NumberFormatOptions;
158
+ alignment?: CellAlignmentOptions;
159
+ };
160
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,98 @@
1
+ export var XlsxBuiltInNumberFormat;
2
+ (function (XlsxBuiltInNumberFormat) {
3
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["None"] = 0] = "None";
4
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Number"] = 1] = "Number";
5
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Number2Decimal"] = 2] = "Number2Decimal";
6
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["NumberWithThousandSeparator"] = 3] = "NumberWithThousandSeparator";
7
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["NumberWithThousandSeparator2Decimal"] = 4] = "NumberWithThousandSeparator2Decimal";
8
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["CurrencyWithoutRed"] = 5] = "CurrencyWithoutRed";
9
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["CurrencyWithRed"] = 6] = "CurrencyWithRed";
10
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Currency2DecimalWithoutRed"] = 7] = "Currency2DecimalWithoutRed";
11
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Currency2DecimalWithRed"] = 8] = "Currency2DecimalWithRed";
12
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Percentage"] = 9] = "Percentage";
13
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Percentage2Decimal"] = 10] = "Percentage2Decimal";
14
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Scientific"] = 11] = "Scientific";
15
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Fraction"] = 12] = "Fraction";
16
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Fraction2"] = 13] = "Fraction2";
17
+ /**
18
+ * m/d/yyyy (depends on user local environment)
19
+ * In EU: 14/03/2022
20
+ */
21
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["DateSlash"] = 14] = "DateSlash";
22
+ /**
23
+ * d-mmm-yy
24
+ * 14-Mar-22
25
+ */
26
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["DateShort"] = 15] = "DateShort";
27
+ /**
28
+ * d-mmm
29
+ * 14-Mar
30
+ */
31
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["DateShortNoYear"] = 16] = "DateShortNoYear";
32
+ /**
33
+ * mmm-yy
34
+ * Mar-22
35
+ */
36
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["DateMonthYear"] = 17] = "DateMonthYear";
37
+ /**
38
+ * h:mm AM/PM
39
+ * 2:30 PM
40
+ */
41
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["TimeAMPM"] = 18] = "TimeAMPM";
42
+ /**
43
+ * h:mm:ss AM/PM
44
+ * 2:30:15 PM
45
+ */
46
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["TimeSecondsAMPM"] = 19] = "TimeSecondsAMPM";
47
+ /**
48
+ * h:mm
49
+ * 2:30
50
+ */
51
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Time"] = 20] = "Time";
52
+ /**
53
+ * h:mm:ss
54
+ * 2:30:15
55
+ */
56
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["TimeSeconds"] = 21] = "TimeSeconds";
57
+ /**
58
+ * m/d/yyyy h:mm (depends on user local environment)
59
+ * 14/03/2022 14:30
60
+ */
61
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["DateTimeSlash"] = 22] = "DateTimeSlash";
62
+ /**
63
+ * mm:ss
64
+ * 02:30
65
+ */
66
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["TimeMinutesSeconds"] = 45] = "TimeMinutesSeconds";
67
+ /**
68
+ * [h]:mm:ss
69
+ * 26:30:15
70
+ */
71
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["TimeHoursMinutesSeconds"] = 46] = "TimeHoursMinutesSeconds";
72
+ /**
73
+ * mm:ss.0
74
+ * 02:30.0
75
+ */
76
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["TimeMinutesSecondsDecimal"] = 47] = "TimeMinutesSecondsDecimal";
77
+ /**
78
+ * ##0.0E+0
79
+ * 1.2E+3
80
+ */
81
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Scientific2"] = 48] = "Scientific2";
82
+ /**
83
+ * @
84
+ * Text
85
+ */
86
+ XlsxBuiltInNumberFormat[XlsxBuiltInNumberFormat["Text"] = 49] = "Text";
87
+ })(XlsxBuiltInNumberFormat || (XlsxBuiltInNumberFormat = {}));
88
+ export var CellType;
89
+ (function (CellType) {
90
+ CellType["Boolean"] = "b";
91
+ CellType["Date"] = "d";
92
+ CellType["Error"] = "e";
93
+ CellType["InlineString"] = "inlineStr";
94
+ CellType["Number"] = "n";
95
+ CellType["SharedString"] = "s";
96
+ CellType["Formula"] = "str";
97
+ })(CellType || (CellType = {}));
98
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/interfaces.ts"],"names":[],"mappings":"AA2DA,MAAM,CAAN,IAAY,uBAoGX;AApGD,WAAY,uBAAuB;IAC/B,qEAAQ,CAAA;IACR,yEAAU,CAAA;IACV,yFAAkB,CAAA;IAClB,mHAA+B,CAAA;IAC/B,mIAAuC,CAAA;IACvC,iGAAsB,CAAA;IACtB,2FAAmB,CAAA;IACnB,iHAA8B,CAAA;IAC9B,2GAA2B,CAAA;IAE3B,iFAAc,CAAA;IACd,kGAAuB,CAAA;IACvB,kFAAe,CAAA;IACf,8EAAa,CAAA;IACb,gFAAc,CAAA;IAEd;;;OAGG;IACH,gFAAc,CAAA;IAEd;;;OAGG;IACH,gFAAc,CAAA;IAEd;;;OAGG;IACH,4FAAoB,CAAA;IAEpB;;;OAGG;IACH,wFAAkB,CAAA;IAElB;;;OAGG;IACH,8EAAa,CAAA;IAEb;;;OAGG;IACH,4FAAoB,CAAA;IAEpB;;;OAGG;IACH,sEAAS,CAAA;IAET;;;OAGG;IACH,oFAAgB,CAAA;IAEhB;;;OAGG;IACH,wFAAkB,CAAA;IAElB;;;OAGG;IACH,kGAAuB,CAAA;IAEvB;;;OAGG;IACH,4GAA4B,CAAA;IAE5B;;;OAGG;IACH,gHAA8B,CAAA;IAE9B;;;OAGG;IACH,oFAAgB,CAAA;IAEhB;;;OAGG;IACH,sEAAS,CAAA;AACb,CAAC,EApGW,uBAAuB,KAAvB,uBAAuB,QAoGlC;AAgDD,MAAM,CAAN,IAAY,QAQX;AARD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,sBAAU,CAAA;IACV,uBAAW,CAAA;IACX,sCAA0B,CAAA;IAC1B,wBAAY,CAAA;IACZ,8BAAkB,CAAA;IAClB,2BAAe,CAAA;AACnB,CAAC,EARW,QAAQ,KAAR,QAAQ,QAQnB"}
@@ -0,0 +1,5 @@
1
+ import { XlsxFileWriter } from "./XlsxFileWriter";
2
+ export declare class XlsxAppPropsWriter extends XlsxFileWriter {
3
+ close(): Promise<void>;
4
+ }
5
+ //# sourceMappingURL=XlsxAppPropsWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxAppPropsWriter.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxAppPropsWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,kBAAmB,SAAQ,cAAc;IAE5C,KAAK;CAMd"}
@@ -0,0 +1,9 @@
1
+ import { XlsxFileWriter } from "./XlsxFileWriter";
2
+ export class XlsxAppPropsWriter extends XlsxFileWriter {
3
+ async close() {
4
+ await this.write(`<?xml version="1.0" encoding="UTF-8"?>\n`);
5
+ await this.write(`<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"/>\n`);
6
+ await super.close();
7
+ }
8
+ }
9
+ //# sourceMappingURL=XlsxAppPropsWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxAppPropsWriter.js","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxAppPropsWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,kBAAmB,SAAQ,cAAc;IAElD,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,mLAAmL,CAAC,CAAC;QAEtM,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACJ"}
@@ -0,0 +1,13 @@
1
+ import { XlsxFileWriter } from "./XlsxFileWriter";
2
+ export declare class XlsxContentTypesWriter extends XlsxFileWriter {
3
+ overrides: {
4
+ partName: string;
5
+ contentType: string;
6
+ }[];
7
+ addOverride({ partName, contentType }: {
8
+ partName: string;
9
+ contentType: string;
10
+ }): Promise<void>;
11
+ close(): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=XlsxContentTypesWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxContentTypesWriter.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxContentTypesWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,sBAAuB,SAAQ,cAAc;IACtD,SAAS,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC,EAAE,CAAK;IAEnD,WAAW,CAAC,EAAC,QAAQ,EAAE,WAAW,EAAC,EAAE;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAC;IAK5E,KAAK;CAcd"}
@@ -0,0 +1,20 @@
1
+ import { XlsxFileWriter } from "./XlsxFileWriter";
2
+ export class XlsxContentTypesWriter extends XlsxFileWriter {
3
+ overrides = [];
4
+ async addOverride({ partName, contentType }) {
5
+ this.overrides.push({ partName, contentType });
6
+ return Promise.resolve();
7
+ }
8
+ async close() {
9
+ await this.write(`<?xml version="1.0" encoding="UTF-8"?>\n`);
10
+ await this.write(`<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">`);
11
+ await this.write(`<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml" />`);
12
+ await this.write(`<Default Extension="xml" ContentType="application/xml" />`);
13
+ for (const override of this.overrides) {
14
+ await this.write(`<Override PartName="${override.partName}" ContentType="${override.contentType}" />`);
15
+ }
16
+ await this.write(`</Types>`);
17
+ await super.close();
18
+ }
19
+ }
20
+ //# sourceMappingURL=XlsxContentTypesWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxContentTypesWriter.js","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxContentTypesWriter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,sBAAuB,SAAQ,cAAc;IACtD,SAAS,GAA8C,EAAE,CAAA;IAEzD,KAAK,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,WAAW,EAA0C;QAC9E,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAC,QAAQ,EAAE,WAAW,EAAC,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QACjG,MAAM,IAAI,CAAC,KAAK,CAAC,qGAAqG,CAAC,CAAC;QACxH,MAAM,IAAI,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAE9E,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,IAAI,CAAC,KAAK,CAAC,uBAAuB,QAAQ,CAAC,QAAQ,kBAAkB,QAAQ,CAAC,WAAW,MAAM,CAAC,CAAC;QAC3G,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE7B,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACJ"}
@@ -0,0 +1,7 @@
1
+ import { XlsxFileWriter } from "./XlsxFileWriter";
2
+ export declare class XlsxCorePropsWriter extends XlsxFileWriter {
3
+ creator: string;
4
+ lastModifiedBy: string;
5
+ close(): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=XlsxCorePropsWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxCorePropsWriter.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxCorePropsWriter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,qBAAa,mBAAoB,SAAQ,cAAc;IACnD,OAAO,SAAe;IACtB,cAAc,SAAe;IAEvB,KAAK;CAkBd"}
@@ -0,0 +1,22 @@
1
+ import { XlsxFileWriter } from "./XlsxFileWriter";
2
+ export class XlsxCorePropsWriter extends XlsxFileWriter {
3
+ creator = 'Stamhoofd';
4
+ lastModifiedBy = 'Stamhoofd';
5
+ async close() {
6
+ await this.write(`<?xml version="1.0" encoding="UTF-8"?>\n`);
7
+ await this.write(`<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>`);
8
+ /*
9
+ <cp:coreProperties
10
+ xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
11
+ xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"
12
+ xmlns:dcmitype="http://purl.org/dc/dcmitype/"
13
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
14
+ <dc:creator>${escapeXml(this.creator)}</dc:creator>
15
+ <cp:lastModifiedBy>${escapeXml(this.lastModifiedBy)}</cp:lastModifiedBy>
16
+ <dcterms:created xsi:type="dcterms:W3CDTF">${escapeXml(new Date().toISOString())}</dcterms:created>
17
+ <dcterms:modified xsi:type="dcterms:W3CDTF">${escapeXml(new Date().toISOString())}</dcterms:modified>
18
+ </cp:coreProperties>`);*/
19
+ await super.close();
20
+ }
21
+ }
22
+ //# sourceMappingURL=XlsxCorePropsWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxCorePropsWriter.js","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxCorePropsWriter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACnD,OAAO,GAAG,WAAW,CAAC;IACtB,cAAc,GAAG,WAAW,CAAC;IAE7B,KAAK,CAAC,KAAK;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,KAAK,CAAC,qPAAqP,CAAC,CAAC;QAExQ;;;;;;;;;;yBAUiB;QAEjB,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;CACJ"}
@@ -0,0 +1,11 @@
1
+ export declare class XlsxFileWriter {
2
+ /**
3
+ * The sheet writer will write
4
+ */
5
+ writeStream: WritableStream<Buffer>;
6
+ writeStreamWriter?: WritableStreamDefaultWriter<Buffer>;
7
+ write(str: string): Promise<void>;
8
+ close(): Promise<void>;
9
+ abort(): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=XlsxFileWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxFileWriter.d.ts","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxFileWriter.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACvB;;OAEG;IACH,WAAW,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAElD,KAAK,CAAC,GAAG,EAAE,MAAM;IASjB,KAAK;IAWL,KAAK;CAcd"}
@@ -0,0 +1,40 @@
1
+ export class XlsxFileWriter {
2
+ /**
3
+ * The sheet writer will write
4
+ */
5
+ writeStream;
6
+ writeStreamWriter;
7
+ async write(str) {
8
+ if (!this.writeStreamWriter) {
9
+ this.writeStreamWriter = this.writeStream.getWriter();
10
+ }
11
+ await this.writeStreamWriter.ready;
12
+ await this.writeStreamWriter.write(Buffer.from(str, 'utf8'));
13
+ }
14
+ async close() {
15
+ // Release writer
16
+ if (this.writeStreamWriter) {
17
+ await this.writeStreamWriter.ready;
18
+ await this.writeStreamWriter.close();
19
+ this.writeStreamWriter = undefined;
20
+ }
21
+ else {
22
+ await this.writeStream.close();
23
+ }
24
+ }
25
+ async abort() {
26
+ if (!this.writeStream) {
27
+ // Not yet initialized
28
+ return;
29
+ }
30
+ if (this.writeStreamWriter) {
31
+ await this.writeStreamWriter.ready;
32
+ await this.writeStreamWriter.close();
33
+ this.writeStreamWriter = undefined;
34
+ }
35
+ else {
36
+ await this.writeStream.close();
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=XlsxFileWriter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XlsxFileWriter.js","sourceRoot":"","sources":["../../../../src/stream-writer/XlsxFileWriter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,cAAc;IACvB;;OAEG;IACH,WAAW,CAAyB;IACpC,iBAAiB,CAAuC;IAExD,KAAK,CAAC,KAAK,CAAC,GAAW;QACnB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,KAAK;QACP,iBAAiB;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAClC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACpB,sBAAsB;YACtB,OAAO;QACX,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;YACnC,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACvC,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAA;QAClC,CAAC;IACL,CAAC;CACJ"}