@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
@@ -15,7 +15,7 @@ export { DataValidations } from "@excel/data-validations";
15
15
  export { FormCheckbox } from "@excel/form-control";
16
16
  export * from "@excel/enums";
17
17
  export * from "@excel/types";
18
- export type { PivotTable, PivotTableModel, PivotTableSource, CacheField, DataField, PivotTableSubtotal, ParsedCacheDefinition, ParsedCacheRecords } from "@excel/pivot-table";
18
+ export type { PivotTable, PivotTableModel, PivotTableValue, PivotTableSource, CacheField, SharedItemValue, DataField, PivotTableSubtotal, RecordValue, ParsedCacheDefinition, ParsedCacheRecords } from "@excel/pivot-table";
19
19
  export type { FormCheckboxModel, FormCheckboxOptions, FormControlRange, FormControlAnchor } from "@excel/form-control";
20
20
  import { WorkbookWriter } from "@excel/stream/workbook-writer.browser";
21
21
  import { WorkbookReader } from "@excel/stream/workbook-reader.browser";
@@ -15,7 +15,7 @@ export { WorksheetWriter } from "@excel/stream/worksheet-writer";
15
15
  export { WorksheetReader } from "@excel/stream/worksheet-reader";
16
16
  export * from "@excel/enums";
17
17
  export * from "@excel/types";
18
- export type { PivotTable, PivotTableModel, PivotTableSource, CacheField, DataField, PivotTableSubtotal, ParsedCacheDefinition, ParsedCacheRecords } from "@excel/pivot-table";
18
+ export type { PivotTable, PivotTableModel, PivotTableValue, PivotTableSource, CacheField, SharedItemValue, DataField, PivotTableSubtotal, RecordValue, ParsedCacheDefinition, ParsedCacheRecords } from "@excel/pivot-table";
19
19
  export type { FormCheckboxModel, FormCheckboxOptions, FormControlRange, FormControlAnchor } from "@excel/form-control";
20
20
  export type { WorkbookReaderOptions, ParseEvent, SharedStringEvent, WorksheetReadyEvent, HyperlinksEvent } from "@excel/stream/workbook-reader";
21
21
  export type { WorksheetReaderOptions, WorksheetEvent, RowEvent, HyperlinkEvent, WorksheetHyperlink } from "@excel/stream/worksheet-reader";
@@ -66,7 +66,7 @@ export function decodeZipEntryPath(pathBuffer) {
66
66
  return textDecoder.decode(pathBuffer);
67
67
  }
68
68
  export function isZipUnicodeFlag(flags) {
69
- return ((flags || 0) & 0x800) !== 0;
69
+ return ((flags ?? 0) & 0x800) !== 0;
70
70
  }
71
71
  export function isZipDirectoryPath(path) {
72
72
  if (path.length === 0) {
@@ -88,8 +88,8 @@ export function buildZipEntryProps(path, pathBuffer, flags) {
88
88
  };
89
89
  }
90
90
  export function resolveZipEntryLastModifiedDateTime(vars, extraFields) {
91
- const dosDate = vars.lastModifiedDate || 0;
92
- const dosTime = vars.lastModifiedTime || 0;
91
+ const dosDate = vars.lastModifiedDate ?? 0;
92
+ const dosTime = vars.lastModifiedTime ?? 0;
93
93
  const dosDateTime = parseDosDateTimeUTC(dosDate, dosTime);
94
94
  const unixSecondsMtime = extraFields.mtimeUnixSeconds;
95
95
  if (unixSecondsMtime === undefined) {
@@ -99,10 +99,10 @@ export function resolveZipEntryLastModifiedDateTime(vars, extraFields) {
99
99
  }
100
100
  export const parseExtraField = parseZipExtraFields;
101
101
  export function hasDataDescriptorFlag(flags) {
102
- return ((flags || 0) & 0x08) !== 0;
102
+ return ((flags ?? 0) & 0x08) !== 0;
103
103
  }
104
104
  export function isFileSizeKnown(flags, compressedSize) {
105
- return !hasDataDescriptorFlag(flags) || (compressedSize || 0) > 0;
105
+ return !hasDataDescriptorFlag(flags) || (compressedSize ?? 0) > 0;
106
106
  }
107
107
  export function autodrain(stream) {
108
108
  const draining = stream.pipe(new Transform({
@@ -399,8 +399,8 @@ export class PullStream extends Duplex {
399
399
  export async function readCrxHeader(pull) {
400
400
  const data = await pull(12);
401
401
  const header = data.length >= 12 ? parseCrxHeaderFast(data) : parseBuffer(data, CRX_HEADER_FORMAT);
402
- const pubKeyLength = header.pubKeyLength || 0;
403
- const signatureLength = header.signatureLength || 0;
402
+ const pubKeyLength = header.pubKeyLength ?? 0;
403
+ const signatureLength = header.signatureLength ?? 0;
404
404
  const keyAndSig = await pull(pubKeyLength + signatureLength);
405
405
  header.publicKey = keyAndSig.subarray(0, pubKeyLength);
406
406
  header.signature = keyAndSig.subarray(pubKeyLength);
@@ -411,8 +411,8 @@ export async function readLocalFileHeader(pull) {
411
411
  const vars = data.length >= 26
412
412
  ? parseLocalFileHeaderVarsFast(data)
413
413
  : parseBuffer(data, LOCAL_FILE_HEADER_FORMAT);
414
- const fileNameBuffer = await pull(vars.fileNameLength || 0);
415
- const extraFieldData = await pull(vars.extraFieldLength || 0);
414
+ const fileNameBuffer = await pull(vars.fileNameLength ?? 0);
415
+ const extraFieldData = await pull(vars.extraFieldLength ?? 0);
416
416
  return { vars, fileNameBuffer, extraFieldData };
417
417
  }
418
418
  export async function readDataDescriptor(pull) {
@@ -424,14 +424,14 @@ export async function readDataDescriptor(pull) {
424
424
  export async function consumeCentralDirectoryFileHeader(pull) {
425
425
  const data = await pull(42);
426
426
  const vars = parseBuffer(data, CENTRAL_DIRECTORY_FILE_HEADER_FORMAT);
427
- await pull(vars.fileNameLength || 0);
428
- await pull(vars.extraFieldLength || 0);
429
- await pull(vars.fileCommentLength || 0);
427
+ await pull(vars.fileNameLength ?? 0);
428
+ await pull(vars.extraFieldLength ?? 0);
429
+ await pull(vars.fileCommentLength ?? 0);
430
430
  }
431
431
  export async function consumeEndOfCentralDirectoryRecord(pull) {
432
432
  const data = await pull(18);
433
433
  const vars = parseBuffer(data, END_OF_CENTRAL_DIRECTORY_FORMAT);
434
- await pull(vars.commentLength || 0);
434
+ await pull(vars.commentLength ?? 0);
435
435
  }
436
436
  // =============================================================================
437
437
  // Validated Data Descriptor Scan (shared by Node + Browser)
@@ -943,7 +943,7 @@ async function readFileRecord(opts, io, emitter, inflateFactory, state, threshol
943
943
  };
944
944
  entry.path = fileName;
945
945
  entry.props = buildZipEntryProps(fileName, fileNameBuffer, vars.flags);
946
- entry.type = getZipEntryType(fileName, vars.uncompressedSize || 0);
946
+ entry.type = getZipEntryType(fileName, vars.uncompressedSize ?? 0);
947
947
  if (opts.verbose) {
948
948
  if (entry.type === "Directory") {
949
949
  console.log(" creating:", fileName);
@@ -964,7 +964,7 @@ async function readFileRecord(opts, io, emitter, inflateFactory, state, threshol
964
964
  entry.__autodraining = autodraining;
965
965
  const fileSizeKnown = isFileSizeKnown(vars.flags, vars.compressedSize);
966
966
  if (fileSizeKnown) {
967
- entry.size = vars.uncompressedSize || 0;
967
+ entry.size = vars.uncompressedSize ?? 0;
968
968
  }
969
969
  if (opts.forceStream) {
970
970
  emitter.pushEntry(entry);
@@ -991,8 +991,8 @@ async function readFileRecord(opts, io, emitter, inflateFactory, state, threshol
991
991
  // This prevents materializing large highly-compressible files in memory,
992
992
  // which can cause massive peak RSS and negate streaming backpressure.
993
993
  const sizesTrusted = !hasDataDescriptorFlag(vars.flags);
994
- const compressedSize = vars.compressedSize || 0;
995
- const uncompressedSize = vars.uncompressedSize || 0;
994
+ const compressedSize = vars.compressedSize ?? 0;
995
+ const uncompressedSize = vars.uncompressedSize ?? 0;
996
996
  const useSmallFileOptimization = sizesTrusted &&
997
997
  fileSizeKnown &&
998
998
  inflateRawSync &&
@@ -1013,10 +1013,10 @@ async function readFileRecord(opts, io, emitter, inflateFactory, state, threshol
1013
1013
  ? inflateFactory()
1014
1014
  : new PassThrough({ highWaterMark: DEFAULT_UNZIP_STREAM_HIGH_WATER_MARK });
1015
1015
  if (fileSizeKnown) {
1016
- await pumpKnownCompressedSizeToEntry(io, inflater, entry, vars.compressedSize || 0);
1016
+ await pumpKnownCompressedSizeToEntry(io, inflater, entry, vars.compressedSize ?? 0);
1017
1017
  return;
1018
1018
  }
1019
1019
  await pipeline(io.streamUntilDataDescriptor(), inflater, entry);
1020
1020
  const dd = await readDataDescriptor(async (l) => io.pull(l));
1021
- entry.size = dd.uncompressedSize || 0;
1021
+ entry.size = dd.uncompressedSize ?? 0;
1022
1022
  }
@@ -171,9 +171,9 @@ class BrowserInflateRaw extends Duplex {
171
171
  }
172
172
  destroy(error) {
173
173
  if (!this.writeClosed) {
174
- this.writer.abort(error || undefined).catch(() => { });
174
+ this.writer.abort(error ?? undefined).catch(() => { });
175
175
  }
176
- this.reader.cancel(error || undefined).catch(() => { });
176
+ this.reader.cancel(error ?? undefined).catch(() => { });
177
177
  return super.destroy(error);
178
178
  }
179
179
  }
@@ -338,7 +338,7 @@ class WorkerInflateRaw extends Duplex {
338
338
  }
339
339
  };
340
340
  this.worker.onerror = (e) => {
341
- const err = new Error(e.message || "Worker error");
341
+ const err = new Error(e.message ?? "Worker error");
342
342
  for (const cb of this._pendingAcks.values()) {
343
343
  cb(err);
344
344
  }
@@ -298,7 +298,10 @@ export function parseCsv(input, options = {}) {
298
298
  validatedRows.push(row);
299
299
  }
300
300
  else {
301
- invalidRows.push({ row: Object.values(row), reason: "Validation failed" });
301
+ invalidRows.push({
302
+ row: Object.values(row),
303
+ reason: "Validation failed"
304
+ });
302
305
  }
303
306
  }
304
307
  else {
@@ -308,7 +311,7 @@ export function parseCsv(input, options = {}) {
308
311
  else {
309
312
  invalidRows.push({
310
313
  row: Object.values(row),
311
- reason: result.reason || "Validation failed"
314
+ reason: result.reason ?? "Validation failed"
312
315
  });
313
316
  }
314
317
  }
@@ -352,7 +355,7 @@ export function parseCsv(input, options = {}) {
352
355
  validatedRows.push(row);
353
356
  }
354
357
  else {
355
- arrayInvalidRows.push({ row, reason: result.reason || "Validation failed" });
358
+ arrayInvalidRows.push({ row, reason: result.reason ?? "Validation failed" });
356
359
  }
357
360
  }
358
361
  }
@@ -69,10 +69,10 @@ export function createDefaultWriteMapper(dateFormat, dateUTC) {
69
69
  return function mapValue(value) {
70
70
  if (value) {
71
71
  if (value.text || value.hyperlink) {
72
- return value.hyperlink || value.text || "";
72
+ return value.hyperlink ?? value.text ?? "";
73
73
  }
74
74
  if (value.formula || value.result) {
75
- return value.result || "";
75
+ return value.result ?? "";
76
76
  }
77
77
  if (value instanceof Date) {
78
78
  return formatter.format(value);
@@ -19,7 +19,7 @@ class CSV extends CSVBrowser {
19
19
  }
20
20
  async writeFile(filename, options) {
21
21
  const writeStream = fs.createWriteStream(filename, {
22
- encoding: (options?.encoding || "utf8"),
22
+ encoding: (options?.encoding ?? "utf8"),
23
23
  highWaterMark: options?.highWaterMark ?? 64 * 1024
24
24
  });
25
25
  return this.write(writeStream, options);
@@ -26,10 +26,10 @@ class Anchor {
26
26
  this.nativeRowOff = 0;
27
27
  }
28
28
  else if (isAnchorModel(address)) {
29
- this.nativeCol = address.nativeCol || 0;
30
- this.nativeColOff = address.nativeColOff || 0;
31
- this.nativeRow = address.nativeRow || 0;
32
- this.nativeRowOff = address.nativeRowOff || 0;
29
+ this.nativeCol = address.nativeCol ?? 0;
30
+ this.nativeColOff = address.nativeColOff ?? 0;
31
+ this.nativeRow = address.nativeRow ?? 0;
32
+ this.nativeRowOff = address.nativeRowOff ?? 0;
33
33
  }
34
34
  else if (isSimpleAddress(address)) {
35
35
  this.col = address.col + offset;
@@ -500,8 +500,8 @@ class HyperlinkValue {
500
500
  }
501
501
  get value() {
502
502
  return {
503
- text: this.model.text || "",
504
- hyperlink: this.model.hyperlink || "",
503
+ text: this.model.text ?? "",
504
+ hyperlink: this.model.hyperlink ?? "",
505
505
  tooltip: this.model.tooltip
506
506
  };
507
507
  }
@@ -537,11 +537,11 @@ class HyperlinkValue {
537
537
  this.model.address = value;
538
538
  }
539
539
  toCsvString() {
540
- return this.model.hyperlink || "";
540
+ return this.model.hyperlink ?? "";
541
541
  }
542
542
  release() { }
543
543
  toString() {
544
- return this.model.text || "";
544
+ return this.model.text ?? "";
545
545
  }
546
546
  }
547
547
  class MergeValue {
@@ -734,7 +734,7 @@ class FormulaValue {
734
734
  return this._translatedFormula;
735
735
  }
736
736
  toCsvString() {
737
- return `${this.model.result || ""}`;
737
+ return `${this.model.result ?? ""}`;
738
738
  }
739
739
  release() { }
740
740
  toString() {
@@ -126,7 +126,7 @@ class Column {
126
126
  * Set an outline level for columns
127
127
  */
128
128
  get outlineLevel() {
129
- return this._outlineLevel || 0;
129
+ return this._outlineLevel ?? 0;
130
130
  }
131
131
  set outlineLevel(value) {
132
132
  this._outlineLevel = value;
@@ -230,8 +230,8 @@ class Column {
230
230
  */
231
231
  addPageBreak(top, bottom) {
232
232
  const ws = this._worksheet;
233
- const topRow = Math.max(0, (top || 0) - 1) || 0;
234
- const bottomRow = Math.max(0, (bottom || 0) - 1) || 1048575;
233
+ const topRow = Math.max(0, (top ?? 0) - 1) || 0;
234
+ const bottomRow = Math.max(0, (bottom ?? 0) - 1) || 1048575;
235
235
  const pb = {
236
236
  id: this._number,
237
237
  max: bottomRow,
@@ -340,7 +340,7 @@ class Column {
340
340
  ? worksheetOrCols
341
341
  : worksheetOrCols;
342
342
  let cols = Array.isArray(worksheetOrCols) ? worksheetOrCols : (colsMaybe ?? []);
343
- cols = cols || [];
343
+ cols = cols ?? [];
344
344
  const columns = [];
345
345
  let count = 1;
346
346
  let index = 0;
@@ -204,7 +204,7 @@ class DefinedNames {
204
204
  value.forEach(definedName => {
205
205
  const matrix = (matrixMap[definedName.name] = new CellMatrix());
206
206
  definedName.ranges.forEach(rangeStr => {
207
- if (rangeRegexp.test(rangeStr.split("!").pop() || "")) {
207
+ if (rangeRegexp.test(rangeStr.split("!").pop() ?? "")) {
208
208
  matrix.addCell(rangeStr);
209
209
  }
210
210
  });
@@ -30,7 +30,7 @@ class FormCheckbox {
30
30
  // Parse range to get anchors
31
31
  const { tl, br } = this._parseRange(range);
32
32
  // Generate shape ID (starting from 1025)
33
- const existingCount = worksheet.formControls?.length || 0;
33
+ const existingCount = worksheet.formControls?.length ?? 0;
34
34
  const shapeId = 1025 + existingCount;
35
35
  // Parse link cell reference
36
36
  let link;
@@ -6,21 +6,50 @@ import type { Table } from "@excel/table";
6
6
  export interface PivotTableSource {
7
7
  /** Name of the worksheet containing the source data (used in pivotCacheDefinition) */
8
8
  name: string;
9
+ /**
10
+ * Name of the source Table (e.g., "SalesData").
11
+ * When present, pivotCacheDefinition uses `<worksheetSource name="..."/>` instead of ref+sheet.
12
+ */
13
+ tableName?: string;
9
14
  /** Get row values by 1-indexed row number */
10
15
  getRow(rowNumber: number): {
11
- values: any[];
16
+ values: unknown[];
12
17
  };
13
18
  /** Get column values by 1-indexed column number */
14
19
  getColumn(columnNumber: number): {
15
- values: any[];
20
+ values: unknown[];
16
21
  };
17
22
  /** Get all sheet values as a sparse 2D array */
18
- getSheetValues(): any[][];
23
+ getSheetValues(): unknown[][];
19
24
  /** Dimensions with short range reference (e.g., "A1:E10") */
20
25
  dimensions: {
21
26
  shortRange: string;
22
27
  };
23
28
  }
29
+ /**
30
+ * A value field specification with optional per-field metric override.
31
+ * Use this instead of a plain string when you need different aggregation
32
+ * metrics for individual value fields.
33
+ *
34
+ * @example
35
+ * ```ts
36
+ * values: [
37
+ * { name: "Sales", metric: "sum" },
38
+ * { name: "Quantity", metric: "count" },
39
+ * { name: "Price", metric: "average" },
40
+ * ]
41
+ * ```
42
+ */
43
+ export interface PivotTableValue {
44
+ /** Column name to aggregate */
45
+ name: string;
46
+ /**
47
+ * Aggregation metric for this specific value field.
48
+ * Overrides the table-wide `metric` when specified.
49
+ * @default inherited from PivotTableModel.metric (which defaults to 'sum')
50
+ */
51
+ metric?: PivotTableSubtotal;
52
+ }
24
53
  /**
25
54
  * Model for creating a new pivot table.
26
55
  * Pass this to worksheet.addPivotTable() to create a pivot table.
@@ -42,18 +71,45 @@ export interface PivotTableModel {
42
71
  /**
43
72
  * Column names to use as column fields in the pivot table.
44
73
  * If omitted or empty, Excel will use "Values" as the column field.
74
+ * When multiple values are specified alongside columns, the synthetic
75
+ * "∑Values" pseudo-field is appended to the column axis automatically.
45
76
  * @default []
46
77
  */
47
78
  columns?: string[];
48
- /** Column names to aggregate as values in the pivot table */
49
- values: string[];
50
79
  /**
51
- * Aggregation metric for the pivot table values.
52
- * - 'sum': Sum of values (default)
53
- * - 'count': Count of values
80
+ * Column names (or value field specifications) to aggregate in the pivot table.
81
+ * Each entry can be a plain string (column name) or a {@link PivotTableValue}
82
+ * object with a per-field metric override.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * // Simple: all values use the table-wide metric
87
+ * values: ["Sales", "Quantity"]
88
+ *
89
+ * // Per-value metrics
90
+ * values: [
91
+ * { name: "Sales", metric: "sum" },
92
+ * { name: "Quantity", metric: "count" },
93
+ * { name: "Price", metric: "average" },
94
+ * ]
95
+ *
96
+ * // Mixed: plain strings inherit table-wide metric
97
+ * values: ["Sales", { name: "Quantity", metric: "count" }]
98
+ * ```
99
+ */
100
+ values: (string | PivotTableValue)[];
101
+ /**
102
+ * Column names to use as page fields (report filters) in the pivot table.
103
+ * Page fields appear as dropdown filters above the pivot table.
104
+ * @default []
105
+ */
106
+ pages?: string[];
107
+ /**
108
+ * Default aggregation metric for all value fields.
109
+ * Individual value fields can override this via {@link PivotTableValue.metric}.
54
110
  * @default 'sum'
55
111
  */
56
- metric?: "sum" | "count";
112
+ metric?: PivotTableSubtotal;
57
113
  /**
58
114
  * Controls whether pivot table style overrides worksheet column widths.
59
115
  * - '0': Preserve worksheet column widths (useful for custom sizing)
@@ -62,6 +118,19 @@ export interface PivotTableModel {
62
118
  */
63
119
  applyWidthHeightFormats?: "0" | "1";
64
120
  }
121
+ /** Allowed element types within CacheField.sharedItems */
122
+ export type SharedItemValue = string | number | boolean | Date | PivotErrorValue | null;
123
+ /**
124
+ * Wrapper for OOXML error values in sharedItems (e.g. `<e v="REF!"/>`).
125
+ * Distinguishes error strings from regular strings so they roundtrip as `<e>` not `<s>`.
126
+ */
127
+ export declare class PivotErrorValue {
128
+ /** The error code without the leading '#' (e.g. "REF!", "VALUE!", "N/A") */
129
+ readonly code: string;
130
+ constructor(code: string);
131
+ /** Returns the display form with '#' prefix, e.g. "#REF!" */
132
+ toString(): string;
133
+ }
65
134
  /**
66
135
  * Represents a cache field in a pivot table.
67
136
  * Cache fields store unique values from source columns for row/column grouping.
@@ -70,14 +139,42 @@ export interface CacheField {
70
139
  /** Name of the field (column header from source) */
71
140
  name: string;
72
141
  /** Unique values for row/column fields, null for value fields */
73
- sharedItems: any[] | null;
142
+ sharedItems: SharedItemValue[] | null;
143
+ /** Whether the field contains numeric values (raw attribute string for roundtrip: "0" or "1") */
144
+ containsNumber?: string;
145
+ /** Whether the field contains only integer values (raw attribute string for roundtrip: "0" or "1") */
146
+ containsInteger?: string;
74
147
  /** Minimum value for numeric fields */
75
148
  minValue?: number;
76
149
  /** Maximum value for numeric fields */
77
150
  maxValue?: number;
151
+ /** Number format ID (preserved on roundtrip, defaults to "0") */
152
+ numFmtId?: string;
153
+ /** Original containsSemiMixedTypes attribute from loaded file */
154
+ containsSemiMixedTypes?: string;
155
+ /** Original containsNonDate attribute from loaded file */
156
+ containsNonDate?: string;
157
+ /** Original containsString attribute from loaded file */
158
+ containsString?: string;
159
+ /** Original containsBlank attribute from loaded file */
160
+ containsBlank?: string;
161
+ /** Original containsDate attribute from loaded file */
162
+ containsDate?: string;
163
+ /** Original containsMixedTypes attribute from loaded file */
164
+ containsMixedTypes?: string;
165
+ /** Flag indicating this cache field was loaded from file */
166
+ isLoaded?: boolean;
167
+ /** Preserved <fieldGroup> raw XML for roundtrip (loaded models only) */
168
+ fieldGroupXml?: string;
169
+ /** Bag of additional cacheField attributes not individually modeled (for roundtrip preservation) */
170
+ extraAttrs?: Record<string, string>;
78
171
  }
79
172
  /** Aggregation function types for pivot table data fields */
80
173
  export type PivotTableSubtotal = "sum" | "count" | "average" | "max" | "min" | "product" | "countNums" | "stdDev" | "stdDevP" | "var" | "varP";
174
+ /** Map from PivotTableSubtotal to its Excel display name prefix */
175
+ export declare const METRIC_DISPLAY_NAMES: Readonly<Record<PivotTableSubtotal, string>>;
176
+ /** Set of all valid PivotTableSubtotal values (for runtime validation) */
177
+ export declare const VALID_SUBTOTALS: ReadonlySet<string>;
81
178
  /**
82
179
  * Data field configuration for pivot table aggregation.
83
180
  * Defines how values are aggregated in the pivot table.
@@ -93,6 +190,8 @@ export interface DataField {
93
190
  baseItem?: number;
94
191
  /** Aggregation function (default: 'sum') */
95
192
  subtotal?: PivotTableSubtotal;
193
+ /** Number format ID (preserved on roundtrip for currency/date formatting) */
194
+ numFmtId?: number;
96
195
  }
97
196
  /**
98
197
  * Internal pivot table representation used by the library.
@@ -107,8 +206,12 @@ export interface PivotTable {
107
206
  columns: number[];
108
207
  /** Field indices for value fields */
109
208
  values: number[];
110
- /** Aggregation metric */
111
- metric: "sum" | "count";
209
+ /** Field indices for page fields (report filters) */
210
+ pages?: number[];
211
+ /** Default aggregation metric */
212
+ metric: PivotTableSubtotal;
213
+ /** Per-value metric overrides (parallel to `values` array). Falls back to `metric`. */
214
+ valueMetrics: PivotTableSubtotal[];
112
215
  /** Cache fields with shared items */
113
216
  cacheFields: CacheField[];
114
217
  /** Cache ID for linking to pivot cache */
@@ -117,6 +220,8 @@ export interface PivotTable {
117
220
  applyWidthHeightFormats: "0" | "1";
118
221
  /** 1-indexed table number for file naming (pivotTable1.xml, pivotTable2.xml, etc.) */
119
222
  tableNumber: number;
223
+ /** Workbook relationship ID, assigned during write by addWorkbookRels() */
224
+ rId?: string;
120
225
  /** Flag indicating this pivot table was loaded from file (not newly created) */
121
226
  isLoaded?: boolean;
122
227
  /** Data fields for loaded pivot tables */
@@ -132,21 +237,67 @@ export interface PivotTable {
132
237
  export interface ParsedCacheDefinition {
133
238
  sourceRef?: string;
134
239
  sourceSheet?: string;
240
+ /** Source table name (name style - references a named Table) */
241
+ sourceTableName?: string;
242
+ /** Cache source type (default "worksheet") */
243
+ cacheSourceType?: string;
135
244
  cacheFields: CacheField[];
136
245
  recordCount?: number;
137
246
  rId?: string;
247
+ /** Additional attributes to preserve */
248
+ refreshOnLoad?: string;
249
+ createdVersion?: string;
250
+ refreshedVersion?: string;
251
+ minRefreshableVersion?: string;
138
252
  isLoaded?: boolean;
253
+ backgroundQuery?: string;
254
+ supportSubquery?: string;
255
+ supportAdvancedDrill?: string;
256
+ /** Bag of additional root attributes not individually modeled (for roundtrip) */
257
+ extraRootAttrs?: Record<string, string>;
258
+ /** worksheetSource r:id attribute (for external connections) */
259
+ worksheetSourceRId?: string;
260
+ extLstXml?: string;
261
+ /** Preserved unknown child elements XML for roundtrip (e.g. calculatedItems, cacheHierarchies) */
262
+ unknownElementsXml?: string;
263
+ /** Preserved raw XML for non-worksheetSource children inside <cacheSource> (e.g. <consolidation>) */
264
+ cacheSourceXml?: string;
139
265
  }
266
+ /** Allowed element types within cache record values */
267
+ export type RecordValue = {
268
+ type: "x";
269
+ value: number;
270
+ } | {
271
+ type: "n";
272
+ value: number;
273
+ } | {
274
+ type: "s";
275
+ value: string;
276
+ } | {
277
+ type: "b";
278
+ value: boolean;
279
+ } | {
280
+ type: "m";
281
+ } | {
282
+ type: "d";
283
+ value: Date;
284
+ } | {
285
+ type: "e";
286
+ value: string;
287
+ };
140
288
  /**
141
289
  * Parsed cache records from loaded pivot table files.
142
290
  */
143
291
  export interface ParsedCacheRecords {
144
- records: Array<Array<{
145
- type: string;
146
- value?: any;
147
- }>>;
292
+ records: RecordValue[][];
148
293
  count: number;
149
294
  isLoaded?: boolean;
295
+ /** Extra root attributes beyond xmlns/xmlns:r/count (for roundtrip preservation) */
296
+ extraRootAttrs?: Record<string, string>;
150
297
  }
151
- declare function makePivotTable(worksheet: any, model: PivotTableModel): PivotTable;
298
+ declare function makePivotTable(worksheet: {
299
+ workbook: {
300
+ pivotTables: PivotTable[];
301
+ };
302
+ }, model: PivotTableModel): PivotTable;
152
303
  export { makePivotTable };