@cj-tech-master/excelts 5.0.6 → 5.1.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 (273) hide show
  1. package/dist/browser/index.browser.d.ts +1 -1
  2. package/dist/browser/index.d.ts +1 -1
  3. package/dist/browser/modules/archive/unzip/stream.base.js +19 -19
  4. package/dist/browser/modules/archive/unzip/stream.browser.js +3 -3
  5. package/dist/browser/modules/csv/csv-core.js +6 -3
  6. package/dist/browser/modules/csv/csv.browser.js +2 -2
  7. package/dist/browser/modules/csv/csv.js +1 -1
  8. package/dist/browser/modules/excel/anchor.js +4 -4
  9. package/dist/browser/modules/excel/cell.js +5 -5
  10. package/dist/browser/modules/excel/column.js +4 -4
  11. package/dist/browser/modules/excel/defined-names.js +1 -1
  12. package/dist/browser/modules/excel/form-control.js +1 -1
  13. package/dist/browser/modules/excel/pivot-table.d.ts +168 -17
  14. package/dist/browser/modules/excel/pivot-table.js +278 -70
  15. package/dist/browser/modules/excel/row.js +4 -4
  16. package/dist/browser/modules/excel/stream/workbook-reader.browser.js +4 -4
  17. package/dist/browser/modules/excel/stream/workbook-writer.browser.js +4 -4
  18. package/dist/browser/modules/excel/stream/worksheet-reader.js +1 -1
  19. package/dist/browser/modules/excel/stream/worksheet-writer.js +4 -4
  20. package/dist/browser/modules/excel/table.js +2 -2
  21. package/dist/browser/modules/excel/types.d.ts +0 -4
  22. package/dist/browser/modules/excel/utils/cell-format.js +3 -3
  23. package/dist/browser/modules/excel/utils/shared-formula.js +1 -1
  24. package/dist/browser/modules/excel/utils/stream-buf.js +2 -2
  25. package/dist/browser/modules/excel/utils/string-buf.js +1 -1
  26. package/dist/browser/modules/excel/workbook.d.ts +0 -2
  27. package/dist/browser/modules/excel/workbook.js +4 -5
  28. package/dist/browser/modules/excel/worksheet.js +9 -9
  29. package/dist/browser/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
  30. package/dist/browser/modules/excel/xlsx/xform/base-xform.js +1 -1
  31. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
  32. package/dist/browser/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
  33. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
  34. package/dist/browser/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
  35. package/dist/browser/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
  36. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
  37. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
  38. package/dist/browser/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
  39. package/dist/browser/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
  40. package/dist/browser/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
  41. package/dist/browser/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
  42. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
  43. package/dist/browser/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  44. package/dist/browser/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
  45. package/dist/browser/modules/excel/xlsx/xform/core/app-xform.js +1 -1
  46. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
  47. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  48. package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
  49. package/dist/browser/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
  50. package/dist/browser/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
  51. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
  52. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
  53. package/dist/browser/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
  54. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
  55. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
  56. package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
  57. package/dist/browser/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
  58. package/dist/browser/modules/excel/xlsx/xform/list-xform.js +3 -3
  59. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
  60. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
  61. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
  62. package/dist/browser/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
  63. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
  64. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
  65. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
  66. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
  67. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
  68. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
  69. package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
  70. package/dist/browser/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
  71. package/dist/browser/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
  72. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
  73. package/dist/browser/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
  74. package/dist/browser/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  75. package/dist/browser/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
  76. package/dist/browser/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
  77. package/dist/browser/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
  78. package/dist/browser/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
  79. package/dist/browser/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
  80. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
  81. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
  82. package/dist/browser/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
  83. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
  84. package/dist/browser/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
  85. package/dist/browser/modules/excel/xlsx/xform/style/color-xform.js +1 -1
  86. package/dist/browser/modules/excel/xlsx/xform/style/style-xform.js +5 -5
  87. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
  88. package/dist/browser/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
  89. package/dist/browser/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
  90. package/dist/browser/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
  91. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
  92. package/dist/browser/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
  93. package/dist/browser/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
  94. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
  95. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +88 -54
  96. package/dist/browser/utils/env.d.ts +0 -5
  97. package/dist/browser/utils/env.js +0 -7
  98. package/dist/browser/utils/utils.base.d.ts +8 -13
  99. package/dist/browser/utils/utils.base.js +40 -47
  100. package/dist/browser/utils/utils.browser.d.ts +1 -1
  101. package/dist/browser/utils/utils.browser.js +1 -1
  102. package/dist/browser/utils/utils.d.ts +1 -1
  103. package/dist/browser/utils/utils.js +1 -1
  104. package/dist/cjs/modules/archive/unzip/stream.base.js +19 -19
  105. package/dist/cjs/modules/archive/unzip/stream.browser.js +3 -3
  106. package/dist/cjs/modules/csv/csv-core.js +6 -3
  107. package/dist/cjs/modules/csv/csv.browser.js +2 -2
  108. package/dist/cjs/modules/csv/csv.js +1 -1
  109. package/dist/cjs/modules/excel/anchor.js +4 -4
  110. package/dist/cjs/modules/excel/cell.js +5 -5
  111. package/dist/cjs/modules/excel/column.js +4 -4
  112. package/dist/cjs/modules/excel/defined-names.js +1 -1
  113. package/dist/cjs/modules/excel/form-control.js +1 -1
  114. package/dist/cjs/modules/excel/pivot-table.js +280 -70
  115. package/dist/cjs/modules/excel/row.js +4 -4
  116. package/dist/cjs/modules/excel/stream/workbook-reader.browser.js +4 -4
  117. package/dist/cjs/modules/excel/stream/workbook-writer.browser.js +4 -4
  118. package/dist/cjs/modules/excel/stream/worksheet-reader.js +1 -1
  119. package/dist/cjs/modules/excel/stream/worksheet-writer.js +4 -4
  120. package/dist/cjs/modules/excel/table.js +2 -2
  121. package/dist/cjs/modules/excel/utils/cell-format.js +3 -3
  122. package/dist/cjs/modules/excel/utils/shared-formula.js +1 -1
  123. package/dist/cjs/modules/excel/utils/stream-buf.js +2 -2
  124. package/dist/cjs/modules/excel/utils/string-buf.js +1 -1
  125. package/dist/cjs/modules/excel/workbook.js +4 -5
  126. package/dist/cjs/modules/excel/worksheet.js +9 -9
  127. package/dist/cjs/modules/excel/xlsx/xform/base-xform.js +1 -1
  128. package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
  129. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
  130. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
  131. package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
  132. package/dist/cjs/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
  133. package/dist/cjs/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
  134. package/dist/cjs/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  135. package/dist/cjs/modules/excel/xlsx/xform/core/app-xform.js +1 -1
  136. package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
  137. package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  138. package/dist/cjs/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
  139. package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
  140. package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
  141. package/dist/cjs/modules/excel/xlsx/xform/list-xform.js +3 -3
  142. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +133 -51
  143. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/cache-field.js +245 -71
  144. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +212 -36
  145. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +142 -40
  146. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
  147. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +153 -0
  148. package/dist/cjs/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
  149. package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
  150. package/dist/cjs/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
  151. package/dist/cjs/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  152. package/dist/cjs/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
  153. package/dist/cjs/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
  154. package/dist/cjs/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
  155. package/dist/cjs/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
  156. package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
  157. package/dist/cjs/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
  158. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
  159. package/dist/cjs/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
  160. package/dist/cjs/modules/excel/xlsx/xform/style/color-xform.js +1 -1
  161. package/dist/cjs/modules/excel/xlsx/xform/style/style-xform.js +5 -5
  162. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +88 -54
  163. package/dist/cjs/utils/env.js +0 -8
  164. package/dist/cjs/utils/utils.base.js +41 -54
  165. package/dist/cjs/utils/utils.browser.js +2 -7
  166. package/dist/cjs/utils/utils.js +2 -7
  167. package/dist/esm/modules/archive/unzip/stream.base.js +19 -19
  168. package/dist/esm/modules/archive/unzip/stream.browser.js +3 -3
  169. package/dist/esm/modules/csv/csv-core.js +6 -3
  170. package/dist/esm/modules/csv/csv.browser.js +2 -2
  171. package/dist/esm/modules/csv/csv.js +1 -1
  172. package/dist/esm/modules/excel/anchor.js +4 -4
  173. package/dist/esm/modules/excel/cell.js +5 -5
  174. package/dist/esm/modules/excel/column.js +4 -4
  175. package/dist/esm/modules/excel/defined-names.js +1 -1
  176. package/dist/esm/modules/excel/form-control.js +1 -1
  177. package/dist/esm/modules/excel/pivot-table.js +278 -70
  178. package/dist/esm/modules/excel/row.js +4 -4
  179. package/dist/esm/modules/excel/stream/workbook-reader.browser.js +4 -4
  180. package/dist/esm/modules/excel/stream/workbook-writer.browser.js +4 -4
  181. package/dist/esm/modules/excel/stream/worksheet-reader.js +1 -1
  182. package/dist/esm/modules/excel/stream/worksheet-writer.js +4 -4
  183. package/dist/esm/modules/excel/table.js +2 -2
  184. package/dist/esm/modules/excel/utils/cell-format.js +3 -3
  185. package/dist/esm/modules/excel/utils/shared-formula.js +1 -1
  186. package/dist/esm/modules/excel/utils/stream-buf.js +2 -2
  187. package/dist/esm/modules/excel/utils/string-buf.js +1 -1
  188. package/dist/esm/modules/excel/workbook.js +4 -5
  189. package/dist/esm/modules/excel/worksheet.js +9 -9
  190. package/dist/esm/modules/excel/xlsx/xform/base-xform.js +1 -1
  191. package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +2 -2
  192. package/dist/esm/modules/excel/xlsx/xform/book/workbook-view-xform.js +4 -4
  193. package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +16 -4
  194. package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-position-xform.js +1 -1
  195. package/dist/esm/modules/excel/xlsx/xform/comment/style/vml-protection-xform.js +1 -1
  196. package/dist/esm/modules/excel/xlsx/xform/comment/vml-shape-xform.js +1 -1
  197. package/dist/esm/modules/excel/xlsx/xform/comment/vml-textbox-xform.js +1 -1
  198. package/dist/esm/modules/excel/xlsx/xform/core/app-xform.js +1 -1
  199. package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +24 -11
  200. package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  201. package/dist/esm/modules/excel/xlsx/xform/drawing/ext-xform.js +2 -2
  202. package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +1 -1
  203. package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +1 -1
  204. package/dist/esm/modules/excel/xlsx/xform/list-xform.js +3 -3
  205. package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field-xform.js +134 -52
  206. package/dist/esm/modules/excel/xlsx/xform/pivot-table/cache-field.js +244 -70
  207. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.js +213 -37
  208. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.js +143 -41
  209. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +793 -408
  210. package/dist/esm/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.js +149 -0
  211. package/dist/esm/modules/excel/xlsx/xform/sheet/cell-xform.js +1 -1
  212. package/dist/esm/modules/excel/xlsx/xform/sheet/cf/cf-rule-xform.js +1 -1
  213. package/dist/esm/modules/excel/xlsx/xform/sheet/cf/conditional-formattings-xform.js +1 -1
  214. package/dist/esm/modules/excel/xlsx/xform/sheet/cf-ext/cf-rule-ext-xform.js +1 -1
  215. package/dist/esm/modules/excel/xlsx/xform/sheet/col-xform.js +3 -3
  216. package/dist/esm/modules/excel/xlsx/xform/sheet/data-validations-xform.js +3 -3
  217. package/dist/esm/modules/excel/xlsx/xform/sheet/header-footer-xform.js +6 -6
  218. package/dist/esm/modules/excel/xlsx/xform/sheet/page-setup-xform.js +11 -11
  219. package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-format-properties-xform.js +3 -3
  220. package/dist/esm/modules/excel/xlsx/xform/sheet/sheet-view-xform.js +10 -10
  221. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +12 -12
  222. package/dist/esm/modules/excel/xlsx/xform/strings/phonetic-text-xform.js +2 -2
  223. package/dist/esm/modules/excel/xlsx/xform/style/color-xform.js +1 -1
  224. package/dist/esm/modules/excel/xlsx/xform/style/style-xform.js +5 -5
  225. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +88 -54
  226. package/dist/esm/utils/env.js +0 -7
  227. package/dist/esm/utils/utils.base.js +40 -47
  228. package/dist/esm/utils/utils.browser.js +1 -1
  229. package/dist/esm/utils/utils.js +1 -1
  230. package/dist/iife/excelts.iife.js +1553 -718
  231. package/dist/iife/excelts.iife.js.map +1 -1
  232. package/dist/iife/excelts.iife.min.js +36 -105
  233. package/dist/types/index.browser.d.ts +1 -1
  234. package/dist/types/index.d.ts +1 -1
  235. package/dist/types/modules/excel/pivot-table.d.ts +168 -17
  236. package/dist/types/modules/excel/types.d.ts +0 -4
  237. package/dist/types/modules/excel/workbook.d.ts +0 -2
  238. package/dist/types/modules/excel/xlsx/xform/base-xform.d.ts +5 -5
  239. package/dist/types/modules/excel/xlsx/xform/comment/comment-xform.d.ts +1 -2
  240. package/dist/types/modules/excel/xlsx/xform/comment/comments-xform.d.ts +1 -2
  241. package/dist/types/modules/excel/xlsx/xform/comment/style/vml-position-xform.d.ts +3 -4
  242. package/dist/types/modules/excel/xlsx/xform/comment/vml-client-data-xform.d.ts +1 -2
  243. package/dist/types/modules/excel/xlsx/xform/comment/vml-notes-xform.d.ts +1 -2
  244. package/dist/types/modules/excel/xlsx/xform/comment/vml-textbox-xform.d.ts +1 -2
  245. package/dist/types/modules/excel/xlsx/xform/composite-xform.d.ts +1 -1
  246. package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +1 -2
  247. package/dist/types/modules/excel/xlsx/xform/drawing/cell-position-xform.d.ts +1 -2
  248. package/dist/types/modules/excel/xlsx/xform/drawing/ctrl-prop-xform.d.ts +1 -2
  249. package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +1 -2
  250. package/dist/types/modules/excel/xlsx/xform/drawing/ext-xform.d.ts +1 -2
  251. package/dist/types/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +1 -2
  252. package/dist/types/modules/excel/xlsx/xform/list-xform.d.ts +1 -2
  253. package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field-xform.d.ts +5 -15
  254. package/dist/types/modules/excel/xlsx/xform/pivot-table/cache-field.d.ts +14 -15
  255. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-definition-xform.d.ts +13 -29
  256. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-cache-records-xform.d.ts +7 -34
  257. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +101 -27
  258. package/dist/types/modules/excel/xlsx/xform/pivot-table/raw-xml-collector.d.ts +78 -0
  259. package/dist/types/modules/excel/xlsx/xform/sheet/row-xform.d.ts +1 -2
  260. package/dist/types/modules/excel/xlsx/xform/sheet/sheet-view-xform.d.ts +1 -2
  261. package/dist/types/modules/excel/xlsx/xform/table/auto-filter-xform.d.ts +1 -2
  262. package/dist/types/modules/excel/xlsx/xform/table/custom-filter-xform.d.ts +1 -2
  263. package/dist/types/modules/excel/xlsx/xform/table/filter-column-xform.d.ts +1 -2
  264. package/dist/types/modules/excel/xlsx/xform/table/filter-xform.d.ts +1 -2
  265. package/dist/types/modules/excel/xlsx/xform/table/table-column-xform.d.ts +1 -2
  266. package/dist/types/modules/excel/xlsx/xform/table/table-style-info-xform.d.ts +1 -2
  267. package/dist/types/modules/excel/xlsx/xform/table/table-xform.d.ts +1 -2
  268. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +5 -2
  269. package/dist/types/utils/env.d.ts +0 -5
  270. package/dist/types/utils/utils.base.d.ts +8 -13
  271. package/dist/types/utils/utils.browser.d.ts +1 -1
  272. package/dist/types/utils/utils.d.ts +1 -1
  273. package/package.json +1 -1
@@ -1,18 +1,37 @@
1
1
  import { BaseXform } from "../base-xform.js";
2
- import { CacheField } from "./cache-field.js";
2
+ import { renderCacheField } from "./cache-field.js";
3
3
  import { CacheFieldXform } from "./cache-field-xform.js";
4
4
  import { XmlStream } from "../../../utils/xml-stream.js";
5
+ import { RawXmlCollector } from "./raw-xml-collector.js";
6
+ /** Attribute keys on <pivotCacheDefinition> that are individually parsed (not collected into extraRootAttrs). */
7
+ const KNOWN_CACHE_DEF_ROOT_KEYS = new Set([
8
+ "xmlns",
9
+ "xmlns:r",
10
+ "r:id",
11
+ "refreshOnLoad",
12
+ "createdVersion",
13
+ "refreshedVersion",
14
+ "minRefreshableVersion",
15
+ "recordCount",
16
+ "backgroundQuery",
17
+ "supportSubquery",
18
+ "supportAdvancedDrill"
19
+ ]);
5
20
  class PivotCacheDefinitionXform extends BaseXform {
6
21
  constructor() {
7
22
  super();
8
- this.map = {};
9
- this.model = null;
23
+ // Parser state
10
24
  this.currentCacheField = null;
11
25
  this.inCacheFields = false;
12
26
  this.inCacheSource = false;
13
- }
14
- prepare(_model) {
15
- // No preparation needed for writing
27
+ // Raw XML collectors
28
+ this.extLstCollector = new RawXmlCollector("extLst");
29
+ this.unknownCollector = new RawXmlCollector("");
30
+ this.unknownElementsXmlParts = [];
31
+ // R8-B9: Collector for non-worksheetSource children inside <cacheSource>
32
+ this.cacheSourceChildCollector = new RawXmlCollector("");
33
+ this.cacheSourceXmlParts = [];
34
+ this.model = null;
16
35
  }
17
36
  get tag() {
18
37
  // http://www.datypic.com/sc/ooxml/e-ssml_pivotCacheDefinition.html
@@ -23,6 +42,11 @@ class PivotCacheDefinitionXform extends BaseXform {
23
42
  this.currentCacheField = null;
24
43
  this.inCacheFields = false;
25
44
  this.inCacheSource = false;
45
+ this.extLstCollector.reset();
46
+ this.unknownCollector.reset();
47
+ this.unknownElementsXmlParts = [];
48
+ this.cacheSourceChildCollector.reset();
49
+ this.cacheSourceXmlParts = [];
26
50
  }
27
51
  /**
28
52
  * Render pivot cache definition XML.
@@ -30,7 +54,7 @@ class PivotCacheDefinitionXform extends BaseXform {
30
54
  */
31
55
  render(xmlStream, model) {
32
56
  // Check if this is a loaded model (has isLoaded flag or no source property)
33
- const isLoaded = model.isLoaded || !("source" in model);
57
+ const isLoaded = ("isLoaded" in model && model.isLoaded) || !("source" in model);
34
58
  if (isLoaded) {
35
59
  this.renderLoaded(xmlStream, model);
36
60
  }
@@ -43,8 +67,8 @@ class PivotCacheDefinitionXform extends BaseXform {
43
67
  */
44
68
  renderNew(xmlStream, model) {
45
69
  const { source, cacheFields } = model;
46
- // Record count = number of data rows (excluding header row)
47
- const recordCount = source.getSheetValues().slice(2).length;
70
+ // R8-O2: Use Array.isArray for type safety getSheetValues() returns a sparse array of row arrays
71
+ const recordCount = source.getSheetValues().slice(2).filter(Array.isArray).length;
48
72
  xmlStream.openXml(XmlStream.StdDocAttributes);
49
73
  xmlStream.openNode(this.tag, {
50
74
  ...PivotCacheDefinitionXform.PIVOT_CACHE_DEFINITION_ATTRIBUTES,
@@ -56,14 +80,16 @@ class PivotCacheDefinitionXform extends BaseXform {
56
80
  recordCount
57
81
  });
58
82
  xmlStream.openNode("cacheSource", { type: "worksheet" });
59
- xmlStream.leafNode("worksheetSource", {
60
- ref: source.dimensions.shortRange,
61
- sheet: source.name
62
- });
83
+ // When source is a named Table, reference it by name (dynamic range tracking).
84
+ // Otherwise, reference by sheet + cell range (static).
85
+ const worksheetSourceAttrs = source.tableName
86
+ ? { name: source.tableName }
87
+ : { ref: source.dimensions.shortRange, sheet: source.name };
88
+ xmlStream.leafNode("worksheetSource", worksheetSourceAttrs);
63
89
  xmlStream.closeNode();
64
90
  xmlStream.openNode("cacheFields", { count: cacheFields.length });
65
91
  // Note: keeping this pretty-printed for now to ease debugging.
66
- xmlStream.writeXml(cacheFields.map((cacheField) => new CacheField(cacheField).render()).join("\n "));
92
+ xmlStream.writeXml(PivotCacheDefinitionXform.renderCacheFieldsXml(cacheFields));
67
93
  xmlStream.closeNode();
68
94
  xmlStream.closeNode();
69
95
  }
@@ -73,42 +99,113 @@ class PivotCacheDefinitionXform extends BaseXform {
73
99
  renderLoaded(xmlStream, model) {
74
100
  const { cacheFields, sourceRef, sourceSheet, sourceTableName, recordCount } = model;
75
101
  xmlStream.openXml(XmlStream.StdDocAttributes);
76
- xmlStream.openNode(this.tag, {
102
+ const rootAttrs = {
77
103
  ...PivotCacheDefinitionXform.PIVOT_CACHE_DEFINITION_ATTRIBUTES,
78
- "r:id": model.rId || "rId1",
79
- refreshOnLoad: model.refreshOnLoad || "1",
80
- createdVersion: model.createdVersion || "8",
81
- refreshedVersion: model.refreshedVersion || "8",
82
- minRefreshableVersion: model.minRefreshableVersion || "3",
83
- recordCount: recordCount || cacheFields.length + 1
84
- });
85
- xmlStream.openNode("cacheSource", { type: "worksheet" });
86
- // worksheetSource supports two reference styles:
87
- // 1. name: references a named Table
88
- // 2. ref + sheet: references a cell range on a worksheet
89
- const worksheetSourceAttrs = sourceTableName
90
- ? { name: sourceTableName }
91
- : { ref: sourceRef, sheet: sourceSheet };
92
- xmlStream.leafNode("worksheetSource", worksheetSourceAttrs);
104
+ "r:id": model.rId ?? "rId1"
105
+ };
106
+ // Only emit refreshOnLoad when it was present in the original file.
107
+ // Forcing "1" causes Excel to recalculate the cache on every open.
108
+ // Placed before createdVersion to match Excel's attribute ordering.
109
+ if (model.refreshOnLoad) {
110
+ rootAttrs.refreshOnLoad = model.refreshOnLoad;
111
+ }
112
+ rootAttrs.createdVersion = model.createdVersion ?? "8";
113
+ rootAttrs.refreshedVersion = model.refreshedVersion ?? "8";
114
+ rootAttrs.minRefreshableVersion = model.minRefreshableVersion ?? "3";
115
+ // Only emit recordCount when it was present in the original file
116
+ if (recordCount !== undefined) {
117
+ rootAttrs.recordCount = recordCount;
118
+ }
119
+ // BUG-26: Preserve additional root attributes
120
+ if (model.backgroundQuery) {
121
+ rootAttrs.backgroundQuery = model.backgroundQuery;
122
+ }
123
+ if (model.supportSubquery) {
124
+ rootAttrs.supportSubquery = model.supportSubquery;
125
+ }
126
+ if (model.supportAdvancedDrill) {
127
+ rootAttrs.supportAdvancedDrill = model.supportAdvancedDrill;
128
+ }
129
+ // Extra unknown root attributes (roundtrip bag)
130
+ if (model.extraRootAttrs) {
131
+ for (const [k, v] of Object.entries(model.extraRootAttrs)) {
132
+ rootAttrs[k] = v;
133
+ }
134
+ }
135
+ xmlStream.openNode(this.tag, rootAttrs);
136
+ xmlStream.openNode("cacheSource", { type: model.cacheSourceType ?? "worksheet" });
137
+ // R8-B8/B14: Only emit <worksheetSource> when the source type is worksheet (or default)
138
+ // and at least one source attribute is defined. Non-worksheet types (e.g. "consolidation",
139
+ // "external") don't use <worksheetSource>.
140
+ const isWorksheetSource = !model.cacheSourceType || model.cacheSourceType === "worksheet";
141
+ if (isWorksheetSource) {
142
+ // worksheetSource supports two reference styles:
143
+ // 1. name: references a named Table
144
+ // 2. ref + sheet: references a cell range on a worksheet
145
+ const worksheetSourceAttrs = sourceTableName
146
+ ? { name: sourceTableName }
147
+ : { ref: sourceRef, sheet: sourceSheet };
148
+ // BUG-28: Preserve r:id for external connections
149
+ if (model.worksheetSourceRId) {
150
+ worksheetSourceAttrs["r:id"] = model.worksheetSourceRId;
151
+ }
152
+ // R8-B14: Only emit <worksheetSource> if we have at least one meaningful attribute
153
+ const hasAnyAttr = Object.values(worksheetSourceAttrs).some(v => v !== undefined);
154
+ if (hasAnyAttr) {
155
+ xmlStream.leafNode("worksheetSource", worksheetSourceAttrs);
156
+ }
157
+ }
158
+ // R8-B9: Emit preserved non-worksheet cacheSource children (e.g. <consolidation>)
159
+ if (model.cacheSourceXml) {
160
+ xmlStream.writeXml(model.cacheSourceXml);
161
+ }
93
162
  xmlStream.closeNode();
94
163
  xmlStream.openNode("cacheFields", { count: cacheFields.length });
95
- xmlStream.writeXml(cacheFields
96
- .map((cacheField) => new CacheField(cacheField).render())
97
- .join("\n "));
164
+ xmlStream.writeXml(PivotCacheDefinitionXform.renderCacheFieldsXml(cacheFields));
98
165
  xmlStream.closeNode();
166
+ // R6-BugA: Preserved unknown child elements for roundtrip
167
+ if (model.unknownElementsXml) {
168
+ xmlStream.writeXml(model.unknownElementsXml);
169
+ }
170
+ // BUG-29: Preserve extLst from original file
171
+ if (model.extLstXml) {
172
+ xmlStream.writeXml(model.extLstXml);
173
+ }
99
174
  xmlStream.closeNode();
100
175
  }
101
176
  parseOpen(node) {
102
177
  const { name, attributes } = node;
178
+ // Collect extLst XML verbatim for roundtrip preservation
179
+ if (this.extLstCollector.active) {
180
+ this.extLstCollector.feedOpen(name, attributes);
181
+ return true;
182
+ }
183
+ // Collect unknown child element XML verbatim for roundtrip preservation
184
+ if (this.unknownCollector.active) {
185
+ this.unknownCollector.feedOpen(name, attributes);
186
+ return true;
187
+ }
188
+ // R8-B9: Collect non-worksheetSource children inside <cacheSource>
189
+ if (this.cacheSourceChildCollector.active) {
190
+ this.cacheSourceChildCollector.feedOpen(name, attributes);
191
+ return true;
192
+ }
103
193
  // Delegate to current cacheField parser if active
104
194
  if (this.currentCacheField) {
105
195
  this.currentCacheField.parseOpen(node);
106
196
  return true;
107
197
  }
108
198
  switch (name) {
109
- case this.tag:
199
+ case this.tag: {
110
200
  // pivotCacheDefinition root element
111
201
  this.reset();
202
+ // Collect known attributes individually and put the rest in extraRootAttrs
203
+ const extraRootAttrs = {};
204
+ for (const [k, v] of Object.entries(attributes)) {
205
+ if (!KNOWN_CACHE_DEF_ROOT_KEYS.has(k)) {
206
+ extraRootAttrs[k] = String(v);
207
+ }
208
+ }
112
209
  this.model = {
113
210
  cacheFields: [],
114
211
  rId: attributes["r:id"],
@@ -117,17 +214,29 @@ class PivotCacheDefinitionXform extends BaseXform {
117
214
  refreshedVersion: attributes.refreshedVersion,
118
215
  minRefreshableVersion: attributes.minRefreshableVersion,
119
216
  recordCount: attributes.recordCount ? parseInt(attributes.recordCount, 10) : undefined,
217
+ backgroundQuery: attributes.backgroundQuery,
218
+ supportSubquery: attributes.supportSubquery,
219
+ supportAdvancedDrill: attributes.supportAdvancedDrill,
220
+ extraRootAttrs: Object.keys(extraRootAttrs).length > 0 ? extraRootAttrs : undefined,
120
221
  isLoaded: true
121
222
  };
122
223
  break;
224
+ }
123
225
  case "cacheSource":
124
226
  this.inCacheSource = true;
227
+ if (this.model) {
228
+ this.model.cacheSourceType = attributes.type;
229
+ }
125
230
  break;
126
231
  case "worksheetSource":
127
232
  if (this.inCacheSource && this.model) {
128
233
  this.model.sourceRef = attributes.ref;
129
234
  this.model.sourceSheet = attributes.sheet;
130
235
  this.model.sourceTableName = attributes.name;
236
+ // Preserve r:id for external connections (BUG-28)
237
+ if (attributes["r:id"]) {
238
+ this.model.worksheetSourceRId = attributes["r:id"];
239
+ }
131
240
  }
132
241
  break;
133
242
  case "cacheFields":
@@ -139,15 +248,75 @@ class PivotCacheDefinitionXform extends BaseXform {
139
248
  this.currentCacheField.parseOpen(node);
140
249
  }
141
250
  break;
251
+ case "extLst":
252
+ // Start collecting extLst XML for roundtrip preservation
253
+ if (this.model) {
254
+ this.extLstCollector.start(attributes);
255
+ }
256
+ break;
257
+ default:
258
+ // R8-B9: Non-worksheetSource children inside <cacheSource> (e.g. <consolidation>)
259
+ // must be collected separately so they stay inside <cacheSource> on roundtrip.
260
+ if (this.inCacheSource && this.model) {
261
+ this.cacheSourceChildCollector.startAs(name, attributes);
262
+ break;
263
+ }
264
+ // Catch-all: collect any unhandled child element as raw XML
265
+ // This preserves elements like calculatedItems, cacheHierarchies, kpis,
266
+ // dimensions, measureGroups, maps, etc. that we don't individually model.
267
+ if (this.model) {
268
+ this.unknownCollector.startAs(name, attributes);
269
+ }
270
+ break;
142
271
  }
143
272
  return true;
144
273
  }
145
274
  parseText(text) {
275
+ // Forward text to active collectors (B3 fix: text nodes in raw XML)
276
+ if (this.extLstCollector.active) {
277
+ this.extLstCollector.feedText(text);
278
+ return;
279
+ }
280
+ if (this.unknownCollector.active) {
281
+ this.unknownCollector.feedText(text);
282
+ return;
283
+ }
284
+ // R8-B9: Forward text to cacheSource child collector
285
+ if (this.cacheSourceChildCollector.active) {
286
+ this.cacheSourceChildCollector.feedText(text);
287
+ return;
288
+ }
146
289
  if (this.currentCacheField) {
147
290
  this.currentCacheField.parseText(text);
148
291
  }
149
292
  }
150
293
  parseClose(name) {
294
+ // Handle extLst collection — close tags
295
+ if (this.extLstCollector.active) {
296
+ if (this.extLstCollector.feedClose(name)) {
297
+ if (this.model) {
298
+ this.model.extLstXml = this.extLstCollector.result;
299
+ }
300
+ this.extLstCollector.reset();
301
+ }
302
+ return true;
303
+ }
304
+ // Handle unknown element collection — close tags
305
+ if (this.unknownCollector.active) {
306
+ if (this.unknownCollector.feedClose(name)) {
307
+ this.unknownElementsXmlParts.push(this.unknownCollector.result);
308
+ this.unknownCollector.reset();
309
+ }
310
+ return true;
311
+ }
312
+ // R8-B9: Handle cacheSource child collection — close tags
313
+ if (this.cacheSourceChildCollector.active) {
314
+ if (this.cacheSourceChildCollector.feedClose(name)) {
315
+ this.cacheSourceXmlParts.push(this.cacheSourceChildCollector.result);
316
+ this.cacheSourceChildCollector.reset();
317
+ }
318
+ return true;
319
+ }
151
320
  // Delegate to current cacheField parser if active
152
321
  if (this.currentCacheField) {
153
322
  if (!this.currentCacheField.parseClose(name)) {
@@ -161,10 +330,17 @@ class PivotCacheDefinitionXform extends BaseXform {
161
330
  }
162
331
  switch (name) {
163
332
  case this.tag:
164
- // End of pivotCacheDefinition
333
+ // End of pivotCacheDefinition — store any collected unknown elements
334
+ if (this.model && this.unknownElementsXmlParts.length > 0) {
335
+ this.model.unknownElementsXml = this.unknownElementsXmlParts.join("");
336
+ }
165
337
  return false;
166
338
  case "cacheSource":
167
339
  this.inCacheSource = false;
340
+ // R8-B9: Store collected cacheSource children on model
341
+ if (this.model && this.cacheSourceXmlParts.length > 0) {
342
+ this.model.cacheSourceXml = this.cacheSourceXmlParts.join("");
343
+ }
168
344
  break;
169
345
  case "cacheFields":
170
346
  this.inCacheFields = false;
@@ -172,8 +348,8 @@ class PivotCacheDefinitionXform extends BaseXform {
172
348
  }
173
349
  return true;
174
350
  }
175
- reconcile(_model, _options) {
176
- // No reconciliation needed
351
+ static renderCacheFieldsXml(cacheFields) {
352
+ return "\n " + cacheFields.map(cf => renderCacheField(cf)).join("\n ");
177
353
  }
178
354
  }
179
355
  PivotCacheDefinitionXform.PIVOT_CACHE_DEFINITION_ATTRIBUTES = {