@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,16 +1,16 @@
1
1
  import { XmlStream } from "../../../utils/xml-stream.js";
2
- import { xmlEncode, xmlDecode } from "../../../../../utils/utils.js";
2
+ import { xmlEncode, parseOoxmlDate } from "../../../../../utils/utils.js";
3
3
  import { BaseXform } from "../base-xform.js";
4
+ import { formatDateForExcel } from "./cache-field.js";
5
+ import { PivotErrorValue } from "../../../pivot-table.js";
6
+ /** Attribute keys on <pivotCacheRecords> that are individually parsed (not collected into extraRootAttrs). */
7
+ const KNOWN_CACHE_RECORDS_ROOT_KEYS = new Set(["xmlns", "xmlns:r", "count"]);
4
8
  class PivotCacheRecordsXform extends BaseXform {
5
9
  constructor() {
6
10
  super();
7
- this.map = {};
8
11
  this.model = null;
9
12
  this.currentRecord = null;
10
13
  }
11
- prepare(_model) {
12
- // No preparation needed
13
- }
14
14
  get tag() {
15
15
  // http://www.datypic.com/sc/ooxml/e-ssml_pivotCacheRecords.html
16
16
  return "pivotCacheRecords";
@@ -25,7 +25,7 @@ class PivotCacheRecordsXform extends BaseXform {
25
25
  */
26
26
  render(xmlStream, model) {
27
27
  // Check if this is a loaded model
28
- const isLoaded = model.isLoaded || !("source" in model);
28
+ const isLoaded = ("isLoaded" in model && model.isLoaded) || !("source" in model);
29
29
  if (isLoaded) {
30
30
  this.renderLoaded(xmlStream, model);
31
31
  }
@@ -38,7 +38,8 @@ class PivotCacheRecordsXform extends BaseXform {
38
38
  */
39
39
  renderNew(xmlStream, model) {
40
40
  const { source, cacheFields } = model;
41
- const sourceBodyRows = source.getSheetValues().slice(2);
41
+ // R8-O2: Use Array.isArray for type safety — getSheetValues() returns a sparse array of row arrays
42
+ const sourceBodyRows = source.getSheetValues().slice(2).filter(Array.isArray);
42
43
  xmlStream.openXml(XmlStream.StdDocAttributes);
43
44
  xmlStream.openNode(this.tag, {
44
45
  ...PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES,
@@ -52,10 +53,27 @@ class PivotCacheRecordsXform extends BaseXform {
52
53
  */
53
54
  renderLoaded(xmlStream, model) {
54
55
  xmlStream.openXml(XmlStream.StdDocAttributes);
55
- xmlStream.openNode(this.tag, {
56
- ...PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES,
57
- count: model.count
58
- });
56
+ // R8-B11: Use preserved root attributes instead of hardcoded MS namespaces.
57
+ // The base xmlns/xmlns:r are always needed; extra attributes (xmlns:mc, mc:Ignorable, etc.)
58
+ // come from the parsed original if available, otherwise fall back to the hardcoded defaults.
59
+ const rootAttrs = {
60
+ xmlns: PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES.xmlns,
61
+ "xmlns:r": PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:r"]
62
+ };
63
+ if (model.extraRootAttrs) {
64
+ for (const [k, v] of Object.entries(model.extraRootAttrs)) {
65
+ rootAttrs[k] = v;
66
+ }
67
+ }
68
+ else {
69
+ // No preserved attributes — use defaults for new-style rendering
70
+ rootAttrs["xmlns:mc"] = PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:mc"];
71
+ rootAttrs["mc:Ignorable"] =
72
+ PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["mc:Ignorable"];
73
+ rootAttrs["xmlns:xr"] = PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES["xmlns:xr"];
74
+ }
75
+ rootAttrs.count = model.records.length;
76
+ xmlStream.openNode(this.tag, rootAttrs);
59
77
  // Render each record
60
78
  for (const record of model.records) {
61
79
  xmlStream.writeXml("\n <r>");
@@ -75,19 +93,25 @@ class PivotCacheRecordsXform extends BaseXform {
75
93
  case "x":
76
94
  return `<x v="${value.value}" />`;
77
95
  case "n":
96
+ // Guard against NaN/Infinity — not valid in OOXML, render as missing
97
+ if (!Number.isFinite(value.value)) {
98
+ return "<m />";
99
+ }
78
100
  return `<n v="${value.value}" />`;
79
101
  case "s":
80
- return `<s v="${xmlEncode(String(value.value))}" />`;
102
+ return `<s v="${xmlEncode(value.value)}" />`;
81
103
  case "b":
82
104
  return `<b v="${value.value ? "1" : "0"}" />`;
83
105
  case "m":
84
106
  return "<m />";
85
107
  case "d":
86
- return `<d v="${value.value.toISOString()}" />`;
108
+ return `<d v="${formatDateForExcel(value.value)}" />`;
87
109
  case "e":
88
- return `<e v="${value.value}" />`;
89
- default:
90
- return "<m />";
110
+ return `<e v="${xmlEncode(value.value)}" />`;
111
+ default: {
112
+ const _exhaustive = value;
113
+ throw new Error(`Unhandled record value type: ${_exhaustive.type}`);
114
+ }
91
115
  }
92
116
  }
93
117
  // Helper methods for rendering new records
@@ -96,28 +120,54 @@ class PivotCacheRecordsXform extends BaseXform {
96
120
  for (const row of sourceBodyRows) {
97
121
  const realRow = row.slice(1);
98
122
  parts.push("\n <r>");
99
- for (let i = 0; i < realRow.length; i++) {
123
+ const fieldCount = Math.min(realRow.length, cacheFields.length);
124
+ for (let i = 0; i < fieldCount; i++) {
100
125
  parts.push("\n ");
101
126
  parts.push(this.renderCellNew(realRow[i], cacheFields[i].sharedItems));
102
127
  }
128
+ // Pad missing columns with <m /> so every record has exactly one value per cacheField (OOXML requirement)
129
+ for (let i = fieldCount; i < cacheFields.length; i++) {
130
+ parts.push("\n <m />");
131
+ }
103
132
  parts.push("\n </r>");
104
133
  }
105
134
  return parts.join("");
106
135
  }
107
136
  renderCellNew(value, sharedItems) {
108
- // Handle null/undefined values first
109
- if (value === null || value === undefined) {
137
+ // Handle null/undefined/NaN values first — all treated as missing
138
+ if (value === null ||
139
+ value === undefined ||
140
+ (typeof value === "number" && !Number.isFinite(value))) {
141
+ // If no shared items, render as missing value directly
142
+ if (sharedItems === null) {
143
+ return "<m />";
144
+ }
145
+ // With shared items, look up null (undefined is treated as null)
146
+ const idx = sharedItems.indexOf(null);
147
+ if (idx >= 0) {
148
+ return `<x v="${idx}" />`;
149
+ }
150
+ // null not in sharedItems — render as missing
110
151
  return "<m />";
111
152
  }
112
- // no shared items
153
+ // no shared items — render inline by type
113
154
  if (sharedItems === null) {
155
+ if (value instanceof PivotErrorValue) {
156
+ return `<e v="${xmlEncode(value.code)}" />`;
157
+ }
158
+ if (typeof value === "boolean") {
159
+ return `<b v="${value ? "1" : "0"}" />`;
160
+ }
161
+ if (value instanceof Date) {
162
+ return `<d v="${formatDateForExcel(value)}" />`;
163
+ }
114
164
  if (Number.isFinite(value)) {
115
165
  return `<n v="${value}" />`;
116
166
  }
117
167
  return `<s v="${xmlEncode(String(value))}" />`;
118
168
  }
119
- // shared items - use indexOf for value lookup (works for both string and numeric)
120
- const sharedItemsIndex = sharedItems.indexOf(value);
169
+ // shared items look up index (type-aware for Date)
170
+ const sharedItemsIndex = findSharedItemIndex(sharedItems, value);
121
171
  if (sharedItemsIndex < 0) {
122
172
  throw new Error(`${JSON.stringify(value)} not in sharedItems ${JSON.stringify(sharedItems)}`);
123
173
  }
@@ -126,15 +176,24 @@ class PivotCacheRecordsXform extends BaseXform {
126
176
  parseOpen(node) {
127
177
  const { name, attributes } = node;
128
178
  switch (name) {
129
- case this.tag:
179
+ case this.tag: {
130
180
  // pivotCacheRecords root element
131
181
  this.reset();
182
+ // R8-B11: Collect unknown root attributes for roundtrip preservation
183
+ const extraRootAttrs = {};
184
+ for (const [k, v] of Object.entries(attributes)) {
185
+ if (!KNOWN_CACHE_RECORDS_ROOT_KEYS.has(k)) {
186
+ extraRootAttrs[k] = String(v);
187
+ }
188
+ }
132
189
  this.model = {
133
190
  records: [],
134
- count: parseInt(attributes.count || "0", 10),
135
- isLoaded: true
191
+ count: parseInt(attributes.count ?? "0", 10),
192
+ isLoaded: true,
193
+ extraRootAttrs: Object.keys(extraRootAttrs).length > 0 ? extraRootAttrs : undefined
136
194
  };
137
195
  break;
196
+ }
138
197
  case "r":
139
198
  // Start of a new record
140
199
  this.currentRecord = [];
@@ -144,17 +203,22 @@ class PivotCacheRecordsXform extends BaseXform {
144
203
  if (this.currentRecord) {
145
204
  this.currentRecord.push({
146
205
  type: "x",
147
- value: parseInt(attributes.v || "0", 10)
206
+ value: parseInt(attributes.v ?? "0", 10)
148
207
  });
149
208
  }
150
209
  break;
151
210
  case "n":
152
- // Numeric value
211
+ // Numeric value — missing v → treat as missing to avoid fabricating 0
153
212
  if (this.currentRecord) {
154
- this.currentRecord.push({
155
- type: "n",
156
- value: parseFloat(attributes.v || "0")
157
- });
213
+ if (attributes.v === undefined || attributes.v === "") {
214
+ this.currentRecord.push({ type: "m" });
215
+ }
216
+ else {
217
+ this.currentRecord.push({
218
+ type: "n",
219
+ value: parseFloat(attributes.v)
220
+ });
221
+ }
158
222
  }
159
223
  break;
160
224
  case "s":
@@ -162,7 +226,7 @@ class PivotCacheRecordsXform extends BaseXform {
162
226
  if (this.currentRecord) {
163
227
  this.currentRecord.push({
164
228
  type: "s",
165
- value: xmlDecode(attributes.v || "")
229
+ value: attributes.v ?? ""
166
230
  });
167
231
  }
168
232
  break;
@@ -182,12 +246,25 @@ class PivotCacheRecordsXform extends BaseXform {
182
246
  }
183
247
  break;
184
248
  case "d":
185
- // Date value
249
+ // Date value — force UTC parsing (OOXML dates lack "Z" suffix)
250
+ // Missing/empty v → treat as missing value to avoid Invalid Date
186
251
  if (this.currentRecord) {
187
- this.currentRecord.push({
188
- type: "d",
189
- value: new Date(attributes.v || "")
190
- });
252
+ if (!attributes.v) {
253
+ this.currentRecord.push({ type: "m" });
254
+ }
255
+ else {
256
+ // R8-B13: Guard against Invalid Date from malformed date strings
257
+ const date = parseOoxmlDate(attributes.v);
258
+ if (isNaN(date.getTime())) {
259
+ this.currentRecord.push({ type: "m" });
260
+ }
261
+ else {
262
+ this.currentRecord.push({
263
+ type: "d",
264
+ value: date
265
+ });
266
+ }
267
+ }
191
268
  }
192
269
  break;
193
270
  case "e":
@@ -195,7 +272,7 @@ class PivotCacheRecordsXform extends BaseXform {
195
272
  if (this.currentRecord) {
196
273
  this.currentRecord.push({
197
274
  type: "e",
198
- value: attributes.v || ""
275
+ value: attributes.v ?? ""
199
276
  });
200
277
  }
201
278
  break;
@@ -220,9 +297,6 @@ class PivotCacheRecordsXform extends BaseXform {
220
297
  }
221
298
  return true;
222
299
  }
223
- reconcile(_model, _options) {
224
- // No reconciliation needed
225
- }
226
300
  }
227
301
  PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES = {
228
302
  xmlns: "http://schemas.openxmlformats.org/spreadsheetml/2006/main",
@@ -232,3 +306,31 @@ PivotCacheRecordsXform.PIVOT_CACHE_RECORDS_ATTRIBUTES = {
232
306
  "xmlns:xr": "http://schemas.microsoft.com/office/spreadsheetml/2014/revision"
233
307
  };
234
308
  export { PivotCacheRecordsXform };
309
+ /**
310
+ * Find the index of `value` in `sharedItems`, using type-aware comparison.
311
+ * - Date objects are compared by timestamp (getTime()) since === uses reference equality.
312
+ * - PivotErrorValue objects are compared by their code string.
313
+ * - All other types use strict equality (===) via indexOf.
314
+ */
315
+ function findSharedItemIndex(sharedItems, value) {
316
+ if (value instanceof Date) {
317
+ const ts = value.getTime();
318
+ for (let i = 0; i < sharedItems.length; i++) {
319
+ const item = sharedItems[i];
320
+ if (item instanceof Date && item.getTime() === ts) {
321
+ return i;
322
+ }
323
+ }
324
+ return -1;
325
+ }
326
+ if (value instanceof PivotErrorValue) {
327
+ for (let i = 0; i < sharedItems.length; i++) {
328
+ const item = sharedItems[i];
329
+ if (item instanceof PivotErrorValue && item.code === value.code) {
330
+ return i;
331
+ }
332
+ }
333
+ return -1;
334
+ }
335
+ return sharedItems.indexOf(value);
336
+ }