@cj-tech-master/excelts 9.4.2 → 9.5.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 (618) hide show
  1. package/dist/browser/index.browser.d.ts +8 -5
  2. package/dist/browser/index.browser.js +19 -1
  3. package/dist/browser/index.d.ts +4 -2
  4. package/dist/browser/index.js +9 -1
  5. package/dist/browser/modules/excel/chart/cache-populator.d.ts +49 -0
  6. package/dist/browser/modules/excel/chart/cache-populator.js +1171 -0
  7. package/dist/browser/modules/excel/chart/chart-api.d.ts +92 -0
  8. package/dist/browser/modules/excel/chart/chart-api.js +364 -0
  9. package/dist/browser/modules/excel/chart/chart-builder.d.ts +48 -0
  10. package/dist/browser/modules/excel/chart/chart-builder.js +2432 -0
  11. package/dist/browser/modules/excel/chart/chart-ex-builder.d.ts +36 -0
  12. package/dist/browser/modules/excel/chart/chart-ex-builder.js +903 -0
  13. package/dist/browser/modules/excel/chart/chart-ex-parser.d.ts +8 -0
  14. package/dist/browser/modules/excel/chart/chart-ex-parser.js +1205 -0
  15. package/dist/browser/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
  16. package/dist/browser/modules/excel/chart/chart-ex-renderer.js +5352 -0
  17. package/dist/browser/modules/excel/chart/chart-ex-types.d.ts +531 -0
  18. package/dist/browser/modules/excel/chart/chart-ex-types.js +11 -0
  19. package/dist/browser/modules/excel/chart/chart-images.d.ts +78 -0
  20. package/dist/browser/modules/excel/chart/chart-images.js +363 -0
  21. package/dist/browser/modules/excel/chart/chart-presets.d.ts +392 -0
  22. package/dist/browser/modules/excel/chart/chart-presets.js +179 -0
  23. package/dist/browser/modules/excel/chart/chart-renderer.d.ts +550 -0
  24. package/dist/browser/modules/excel/chart/chart-renderer.js +6440 -0
  25. package/dist/browser/modules/excel/chart/chart-sidecar.d.ts +21 -0
  26. package/dist/browser/modules/excel/chart/chart-sidecar.js +427 -0
  27. package/dist/browser/modules/excel/chart/chart-utils.d.ts +306 -0
  28. package/dist/browser/modules/excel/chart/chart-utils.js +821 -0
  29. package/dist/browser/modules/excel/chart/chart.d.ts +504 -0
  30. package/dist/browser/modules/excel/chart/chart.js +1320 -0
  31. package/dist/browser/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
  32. package/dist/browser/modules/excel/chart/glyph-rasterizer.js +658 -0
  33. package/dist/browser/modules/excel/chart/index.d.ts +54 -0
  34. package/dist/browser/modules/excel/chart/index.js +46 -0
  35. package/dist/browser/modules/excel/chart/install.d.ts +44 -0
  36. package/dist/browser/modules/excel/chart/install.js +91 -0
  37. package/dist/browser/modules/excel/chart/shape-properties.d.ts +156 -0
  38. package/dist/browser/modules/excel/chart/shape-properties.js +1557 -0
  39. package/dist/browser/modules/excel/chart/stroke-font.d.ts +36 -0
  40. package/dist/browser/modules/excel/chart/stroke-font.js +1556 -0
  41. package/dist/browser/modules/excel/chart/topojson.d.ts +98 -0
  42. package/dist/browser/modules/excel/chart/topojson.js +236 -0
  43. package/dist/browser/modules/excel/chart/types.d.ts +2559 -0
  44. package/dist/browser/modules/excel/chart/types.js +8 -0
  45. package/dist/browser/modules/excel/chart-host-registry.d.ts +157 -0
  46. package/dist/browser/modules/excel/chart-host-registry.js +90 -0
  47. package/dist/browser/modules/excel/chartsheet.d.ts +102 -0
  48. package/dist/browser/modules/excel/chartsheet.js +196 -0
  49. package/dist/browser/modules/excel/defined-names.d.ts +35 -0
  50. package/dist/browser/modules/excel/defined-names.js +44 -4
  51. package/dist/browser/modules/excel/errors.d.ts +6 -0
  52. package/dist/browser/modules/excel/errors.js +9 -0
  53. package/dist/browser/modules/excel/form-control.d.ts +6 -0
  54. package/dist/browser/modules/excel/form-control.js +17 -0
  55. package/dist/browser/modules/excel/image.js +12 -2
  56. package/dist/browser/modules/excel/pivot-chart.d.ts +7 -0
  57. package/dist/browser/modules/excel/pivot-chart.js +53 -0
  58. package/dist/browser/modules/excel/pivot-table.d.ts +55 -0
  59. package/dist/browser/modules/excel/pivot-table.js +35 -0
  60. package/dist/browser/modules/excel/range.js +5 -1
  61. package/dist/browser/modules/excel/sparkline/index.d.ts +7 -0
  62. package/dist/browser/modules/excel/sparkline/index.js +7 -0
  63. package/dist/browser/modules/excel/sparkline/sparkline.d.ts +206 -0
  64. package/dist/browser/modules/excel/sparkline/sparkline.js +750 -0
  65. package/dist/browser/modules/excel/stream/worksheet-writer.js +3 -2
  66. package/dist/browser/modules/excel/table.js +42 -6
  67. package/dist/browser/modules/excel/types.d.ts +72 -0
  68. package/dist/browser/modules/excel/utils/address.d.ts +18 -0
  69. package/dist/browser/modules/excel/utils/address.js +28 -0
  70. package/dist/browser/modules/excel/utils/drawing-utils.js +11 -6
  71. package/dist/browser/modules/excel/utils/guid.d.ts +15 -0
  72. package/dist/browser/modules/excel/utils/guid.js +35 -0
  73. package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +74 -0
  74. package/dist/browser/modules/excel/utils/ooxml-paths.js +206 -9
  75. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
  76. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
  77. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
  78. package/dist/browser/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
  79. package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
  80. package/dist/browser/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
  81. package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
  82. package/dist/browser/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
  83. package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
  84. package/dist/browser/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
  85. package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
  86. package/dist/browser/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
  87. package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
  88. package/dist/browser/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
  89. package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
  90. package/dist/browser/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
  91. package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
  92. package/dist/browser/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
  93. package/dist/browser/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
  94. package/dist/browser/modules/excel/utils/ooxml-validator/check-table.js +177 -0
  95. package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
  96. package/dist/browser/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
  97. package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
  98. package/dist/browser/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
  99. package/dist/browser/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
  100. package/dist/browser/modules/excel/utils/ooxml-validator/context.js +191 -0
  101. package/dist/browser/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
  102. package/dist/browser/modules/excel/utils/ooxml-validator/index.js +102 -0
  103. package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
  104. package/dist/browser/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
  105. package/dist/browser/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
  106. package/dist/browser/modules/excel/utils/ooxml-validator/reporter.js +61 -0
  107. package/dist/browser/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
  108. package/dist/browser/modules/excel/utils/ooxml-validator/types.js +12 -0
  109. package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
  110. package/dist/browser/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
  111. package/dist/browser/modules/excel/workbook.browser.d.ts +248 -30
  112. package/dist/browser/modules/excel/workbook.browser.js +966 -31
  113. package/dist/browser/modules/excel/workbook.d.ts +43 -0
  114. package/dist/browser/modules/excel/workbook.js +48 -0
  115. package/dist/browser/modules/excel/worksheet.d.ts +157 -3
  116. package/dist/browser/modules/excel/worksheet.js +394 -35
  117. package/dist/browser/modules/excel/xlsx/rel-type.d.ts +40 -0
  118. package/dist/browser/modules/excel/xlsx/rel-type.js +41 -1
  119. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
  120. package/dist/browser/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
  121. package/dist/browser/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
  122. package/dist/browser/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
  123. package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
  124. package/dist/browser/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
  125. package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
  126. package/dist/browser/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
  127. package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
  128. package/dist/browser/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
  129. package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  130. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
  131. package/dist/browser/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
  132. package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
  133. package/dist/browser/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
  134. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
  135. package/dist/browser/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
  136. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
  137. package/dist/browser/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
  138. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
  139. package/dist/browser/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
  140. package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
  141. package/dist/browser/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
  142. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
  143. package/dist/browser/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
  144. package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
  145. package/dist/browser/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
  146. package/dist/browser/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
  147. package/dist/browser/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
  148. package/dist/browser/modules/excel/xlsx/xform/xsd-values.js +101 -0
  149. package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
  150. package/dist/browser/modules/excel/xlsx/xlsx.browser.js +4422 -78
  151. package/dist/browser/modules/pdf/builder/document-builder.d.ts +74 -0
  152. package/dist/browser/modules/pdf/builder/document-builder.js +507 -2
  153. package/dist/browser/modules/pdf/builder/pdf-editor.js +48 -3
  154. package/dist/browser/modules/pdf/excel-bridge.d.ts +69 -0
  155. package/dist/browser/modules/pdf/excel-bridge.js +683 -12
  156. package/dist/browser/modules/pdf/font/font-manager.d.ts +25 -0
  157. package/dist/browser/modules/pdf/font/font-manager.js +39 -0
  158. package/dist/browser/modules/pdf/index.d.ts +5 -2
  159. package/dist/browser/modules/pdf/index.js +3 -1
  160. package/dist/browser/modules/pdf/render/chart-surface.d.ts +33 -0
  161. package/dist/browser/modules/pdf/render/chart-surface.js +200 -0
  162. package/dist/browser/modules/pdf/render/layout-engine.d.ts +22 -1
  163. package/dist/browser/modules/pdf/render/layout-engine.js +436 -56
  164. package/dist/browser/modules/pdf/render/page-renderer.js +169 -28
  165. package/dist/browser/modules/pdf/render/pdf-exporter.js +117 -7
  166. package/dist/browser/modules/pdf/types.d.ts +227 -23
  167. package/dist/browser/modules/pdf/types.js +4 -0
  168. package/dist/browser/modules/pdf/word-bridge.d.ts +47 -0
  169. package/dist/browser/modules/pdf/word-bridge.js +304 -0
  170. package/dist/browser/modules/word/constants.d.ts +179 -0
  171. package/dist/browser/modules/word/constants.js +231 -0
  172. package/dist/browser/modules/word/content-types.d.ts +27 -0
  173. package/dist/browser/modules/word/content-types.js +53 -0
  174. package/dist/browser/modules/word/digital-signatures.d.ts +87 -0
  175. package/dist/browser/modules/word/digital-signatures.js +134 -0
  176. package/dist/browser/modules/word/document.d.ts +728 -0
  177. package/dist/browser/modules/word/document.js +1795 -0
  178. package/dist/browser/modules/word/docx-packager.d.ts +14 -0
  179. package/dist/browser/modules/word/docx-packager.js +822 -0
  180. package/dist/browser/modules/word/docx-reader.d.ts +11 -0
  181. package/dist/browser/modules/word/docx-reader.js +4929 -0
  182. package/dist/browser/modules/word/encryption.d.ts +102 -0
  183. package/dist/browser/modules/word/encryption.js +274 -0
  184. package/dist/browser/modules/word/errors.d.ts +49 -0
  185. package/dist/browser/modules/word/errors.js +68 -0
  186. package/dist/browser/modules/word/font-obfuscation.d.ts +31 -0
  187. package/dist/browser/modules/word/font-obfuscation.js +83 -0
  188. package/dist/browser/modules/word/html-renderer.d.ts +38 -0
  189. package/dist/browser/modules/word/html-renderer.js +782 -0
  190. package/dist/browser/modules/word/index.base.d.ts +19 -0
  191. package/dist/browser/modules/word/index.base.js +51 -0
  192. package/dist/browser/modules/word/index.browser.d.ts +4 -0
  193. package/dist/browser/modules/word/index.browser.js +4 -0
  194. package/dist/browser/modules/word/index.d.ts +4 -0
  195. package/dist/browser/modules/word/index.js +4 -0
  196. package/dist/browser/modules/word/internal-utils.d.ts +23 -0
  197. package/dist/browser/modules/word/internal-utils.js +54 -0
  198. package/dist/browser/modules/word/relationships.d.ts +31 -0
  199. package/dist/browser/modules/word/relationships.js +56 -0
  200. package/dist/browser/modules/word/types.d.ts +2325 -0
  201. package/dist/browser/modules/word/types.js +10 -0
  202. package/dist/browser/modules/word/units.d.ts +49 -0
  203. package/dist/browser/modules/word/units.js +111 -0
  204. package/dist/browser/modules/word/writers/chart-writer.d.ts +10 -0
  205. package/dist/browser/modules/word/writers/chart-writer.js +385 -0
  206. package/dist/browser/modules/word/writers/checkbox-writer.d.ts +9 -0
  207. package/dist/browser/modules/word/writers/checkbox-writer.js +42 -0
  208. package/dist/browser/modules/word/writers/comment-writer.d.ts +15 -0
  209. package/dist/browser/modules/word/writers/comment-writer.js +70 -0
  210. package/dist/browser/modules/word/writers/document-writer.d.ts +16 -0
  211. package/dist/browser/modules/word/writers/document-writer.js +461 -0
  212. package/dist/browser/modules/word/writers/footnote-writer.d.ts +11 -0
  213. package/dist/browser/modules/word/writers/footnote-writer.js +72 -0
  214. package/dist/browser/modules/word/writers/header-footer-writer.d.ts +13 -0
  215. package/dist/browser/modules/word/writers/header-footer-writer.js +129 -0
  216. package/dist/browser/modules/word/writers/image-writer.d.ts +10 -0
  217. package/dist/browser/modules/word/writers/image-writer.js +185 -0
  218. package/dist/browser/modules/word/writers/math-writer.d.ts +9 -0
  219. package/dist/browser/modules/word/writers/math-writer.js +428 -0
  220. package/dist/browser/modules/word/writers/numbering-writer.d.ts +10 -0
  221. package/dist/browser/modules/word/writers/numbering-writer.js +125 -0
  222. package/dist/browser/modules/word/writers/paragraph-writer.d.ts +13 -0
  223. package/dist/browser/modules/word/writers/paragraph-writer.js +516 -0
  224. package/dist/browser/modules/word/writers/parts-writer.d.ts +26 -0
  225. package/dist/browser/modules/word/writers/parts-writer.js +660 -0
  226. package/dist/browser/modules/word/writers/run-writer.d.ts +15 -0
  227. package/dist/browser/modules/word/writers/run-writer.js +649 -0
  228. package/dist/browser/modules/word/writers/section-writer.d.ts +10 -0
  229. package/dist/browser/modules/word/writers/section-writer.js +238 -0
  230. package/dist/browser/modules/word/writers/styles-writer.d.ts +10 -0
  231. package/dist/browser/modules/word/writers/styles-writer.js +242 -0
  232. package/dist/browser/modules/word/writers/table-writer.d.ts +10 -0
  233. package/dist/browser/modules/word/writers/table-writer.js +503 -0
  234. package/dist/browser/modules/word/writers/textbox-writer.d.ts +9 -0
  235. package/dist/browser/modules/word/writers/textbox-writer.js +53 -0
  236. package/dist/browser/modules/word/writers/toc-writer.d.ts +9 -0
  237. package/dist/browser/modules/word/writers/toc-writer.js +79 -0
  238. package/dist/browser/modules/xml/encode.d.ts +56 -7
  239. package/dist/browser/modules/xml/encode.js +157 -11
  240. package/dist/cjs/index.js +13 -2
  241. package/dist/cjs/modules/excel/chart/cache-populator.js +1178 -0
  242. package/dist/cjs/modules/excel/chart/chart-api.js +371 -0
  243. package/dist/cjs/modules/excel/chart/chart-builder.js +2440 -0
  244. package/dist/cjs/modules/excel/chart/chart-ex-builder.js +907 -0
  245. package/dist/cjs/modules/excel/chart/chart-ex-parser.js +1208 -0
  246. package/dist/cjs/modules/excel/chart/chart-ex-renderer.js +5364 -0
  247. package/dist/cjs/modules/excel/chart/chart-ex-types.js +12 -0
  248. package/dist/cjs/modules/excel/chart/chart-images.js +366 -0
  249. package/dist/cjs/modules/excel/chart/chart-presets.js +184 -0
  250. package/dist/cjs/modules/excel/chart/chart-renderer.js +6450 -0
  251. package/dist/cjs/modules/excel/chart/chart-sidecar.js +433 -0
  252. package/dist/cjs/modules/excel/chart/chart-utils.js +845 -0
  253. package/dist/cjs/modules/excel/chart/chart.js +1324 -0
  254. package/dist/cjs/modules/excel/chart/glyph-rasterizer.js +664 -0
  255. package/dist/cjs/modules/excel/chart/index.js +101 -0
  256. package/dist/cjs/modules/excel/chart/install.js +95 -0
  257. package/dist/cjs/modules/excel/chart/shape-properties.js +1577 -0
  258. package/dist/cjs/modules/excel/chart/stroke-font.js +1559 -0
  259. package/dist/cjs/modules/excel/chart/topojson.js +239 -0
  260. package/dist/cjs/modules/excel/chart/types.js +9 -0
  261. package/dist/cjs/modules/excel/chart-host-registry.js +96 -0
  262. package/dist/cjs/modules/excel/chartsheet.js +199 -0
  263. package/dist/cjs/modules/excel/defined-names.js +44 -4
  264. package/dist/cjs/modules/excel/errors.js +11 -1
  265. package/dist/cjs/modules/excel/form-control.js +17 -0
  266. package/dist/cjs/modules/excel/image.js +12 -2
  267. package/dist/cjs/modules/excel/pivot-chart.js +56 -0
  268. package/dist/cjs/modules/excel/pivot-table.js +35 -0
  269. package/dist/cjs/modules/excel/range.js +5 -1
  270. package/dist/cjs/modules/excel/sparkline/index.js +23 -0
  271. package/dist/cjs/modules/excel/sparkline/sparkline.js +756 -0
  272. package/dist/cjs/modules/excel/stream/worksheet-writer.js +3 -2
  273. package/dist/cjs/modules/excel/table.js +42 -6
  274. package/dist/cjs/modules/excel/utils/address.js +29 -0
  275. package/dist/cjs/modules/excel/utils/drawing-utils.js +11 -6
  276. package/dist/cjs/modules/excel/utils/guid.js +38 -0
  277. package/dist/cjs/modules/excel/utils/ooxml-paths.js +246 -9
  278. package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +103 -0
  279. package/dist/cjs/modules/excel/utils/ooxml-validator/check-chart.js +2128 -0
  280. package/dist/cjs/modules/excel/utils/ooxml-validator/check-chartsheet.js +29 -0
  281. package/dist/cjs/modules/excel/utils/ooxml-validator/check-content-types.js +184 -0
  282. package/dist/cjs/modules/excel/utils/ooxml-validator/check-drawing.js +270 -0
  283. package/dist/cjs/modules/excel/utils/ooxml-validator/check-pivot.js +107 -0
  284. package/dist/cjs/modules/excel/utils/ooxml-validator/check-relationships.js +188 -0
  285. package/dist/cjs/modules/excel/utils/ooxml-validator/check-structure.js +60 -0
  286. package/dist/cjs/modules/excel/utils/ooxml-validator/check-styles.js +92 -0
  287. package/dist/cjs/modules/excel/utils/ooxml-validator/check-table.js +180 -0
  288. package/dist/cjs/modules/excel/utils/ooxml-validator/check-workbook.js +166 -0
  289. package/dist/cjs/modules/excel/utils/ooxml-validator/check-worksheet.js +572 -0
  290. package/dist/cjs/modules/excel/utils/ooxml-validator/context.js +196 -0
  291. package/dist/cjs/modules/excel/utils/ooxml-validator/index.js +105 -0
  292. package/dist/cjs/modules/excel/utils/ooxml-validator/path-utils.js +168 -0
  293. package/dist/cjs/modules/excel/utils/ooxml-validator/reporter.js +66 -0
  294. package/dist/cjs/modules/excel/utils/ooxml-validator/types.js +13 -0
  295. package/dist/cjs/modules/excel/utils/ooxml-validator/xml-utils.js +110 -0
  296. package/dist/cjs/modules/excel/workbook.browser.js +973 -38
  297. package/dist/cjs/modules/excel/workbook.js +48 -0
  298. package/dist/cjs/modules/excel/worksheet.js +393 -34
  299. package/dist/cjs/modules/excel/xlsx/rel-type.js +41 -1
  300. package/dist/cjs/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
  301. package/dist/cjs/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
  302. package/dist/cjs/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
  303. package/dist/cjs/modules/excel/xlsx/xform/chart/chart-space-xform.js +6003 -0
  304. package/dist/cjs/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +219 -0
  305. package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +149 -10
  306. package/dist/cjs/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
  307. package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  308. package/dist/cjs/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
  309. package/dist/cjs/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +228 -0
  310. package/dist/cjs/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
  311. package/dist/cjs/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
  312. package/dist/cjs/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
  313. package/dist/cjs/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +444 -0
  314. package/dist/cjs/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
  315. package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +195 -19
  316. package/dist/cjs/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
  317. package/dist/cjs/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
  318. package/dist/cjs/modules/excel/xlsx/xform/xsd-values.js +106 -0
  319. package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +4420 -76
  320. package/dist/cjs/modules/pdf/builder/document-builder.js +506 -1
  321. package/dist/cjs/modules/pdf/builder/pdf-editor.js +48 -3
  322. package/dist/cjs/modules/pdf/excel-bridge.js +684 -12
  323. package/dist/cjs/modules/pdf/font/font-manager.js +39 -0
  324. package/dist/cjs/modules/pdf/index.js +5 -1
  325. package/dist/cjs/modules/pdf/render/chart-surface.js +203 -0
  326. package/dist/cjs/modules/pdf/render/layout-engine.js +437 -56
  327. package/dist/cjs/modules/pdf/render/page-renderer.js +169 -28
  328. package/dist/cjs/modules/pdf/render/pdf-exporter.js +115 -5
  329. package/dist/cjs/modules/pdf/types.js +5 -0
  330. package/dist/cjs/modules/pdf/word-bridge.js +307 -0
  331. package/dist/cjs/modules/word/constants.js +234 -0
  332. package/dist/cjs/modules/word/content-types.js +57 -0
  333. package/dist/cjs/modules/word/digital-signatures.js +140 -0
  334. package/dist/cjs/modules/word/document.js +1909 -0
  335. package/dist/cjs/modules/word/docx-packager.js +825 -0
  336. package/dist/cjs/modules/word/docx-reader.js +4932 -0
  337. package/dist/cjs/modules/word/encryption.js +282 -0
  338. package/dist/cjs/modules/word/errors.js +88 -0
  339. package/dist/cjs/modules/word/font-obfuscation.js +88 -0
  340. package/dist/cjs/modules/word/html-renderer.js +785 -0
  341. package/dist/cjs/modules/word/index.base.js +199 -0
  342. package/dist/cjs/modules/word/index.browser.js +20 -0
  343. package/dist/cjs/modules/word/index.js +20 -0
  344. package/dist/cjs/modules/word/internal-utils.js +59 -0
  345. package/dist/cjs/modules/word/relationships.js +60 -0
  346. package/dist/cjs/modules/word/types.js +11 -0
  347. package/dist/cjs/modules/word/units.js +135 -0
  348. package/dist/cjs/modules/word/writers/chart-writer.js +388 -0
  349. package/dist/cjs/modules/word/writers/checkbox-writer.js +45 -0
  350. package/dist/cjs/modules/word/writers/comment-writer.js +74 -0
  351. package/dist/cjs/modules/word/writers/document-writer.js +465 -0
  352. package/dist/cjs/modules/word/writers/footnote-writer.js +76 -0
  353. package/dist/cjs/modules/word/writers/header-footer-writer.js +134 -0
  354. package/dist/cjs/modules/word/writers/image-writer.js +188 -0
  355. package/dist/cjs/modules/word/writers/math-writer.js +431 -0
  356. package/dist/cjs/modules/word/writers/numbering-writer.js +128 -0
  357. package/dist/cjs/modules/word/writers/paragraph-writer.js +521 -0
  358. package/dist/cjs/modules/word/writers/parts-writer.js +671 -0
  359. package/dist/cjs/modules/word/writers/run-writer.js +655 -0
  360. package/dist/cjs/modules/word/writers/section-writer.js +241 -0
  361. package/dist/cjs/modules/word/writers/styles-writer.js +245 -0
  362. package/dist/cjs/modules/word/writers/table-writer.js +506 -0
  363. package/dist/cjs/modules/word/writers/textbox-writer.js +56 -0
  364. package/dist/cjs/modules/word/writers/toc-writer.js +82 -0
  365. package/dist/cjs/modules/xml/encode.js +158 -11
  366. package/dist/esm/index.browser.js +20 -2
  367. package/dist/esm/index.js +9 -1
  368. package/dist/esm/modules/excel/chart/cache-populator.js +1171 -0
  369. package/dist/esm/modules/excel/chart/chart-api.js +364 -0
  370. package/dist/esm/modules/excel/chart/chart-builder.js +2432 -0
  371. package/dist/esm/modules/excel/chart/chart-ex-builder.js +903 -0
  372. package/dist/esm/modules/excel/chart/chart-ex-parser.js +1205 -0
  373. package/dist/esm/modules/excel/chart/chart-ex-renderer.js +5352 -0
  374. package/dist/esm/modules/excel/chart/chart-ex-types.js +11 -0
  375. package/dist/esm/modules/excel/chart/chart-images.js +363 -0
  376. package/dist/esm/modules/excel/chart/chart-presets.js +179 -0
  377. package/dist/esm/modules/excel/chart/chart-renderer.js +6440 -0
  378. package/dist/esm/modules/excel/chart/chart-sidecar.js +427 -0
  379. package/dist/esm/modules/excel/chart/chart-utils.js +821 -0
  380. package/dist/esm/modules/excel/chart/chart.js +1320 -0
  381. package/dist/esm/modules/excel/chart/glyph-rasterizer.js +658 -0
  382. package/dist/esm/modules/excel/chart/index.js +46 -0
  383. package/dist/esm/modules/excel/chart/install.js +91 -0
  384. package/dist/esm/modules/excel/chart/shape-properties.js +1557 -0
  385. package/dist/esm/modules/excel/chart/stroke-font.js +1556 -0
  386. package/dist/esm/modules/excel/chart/topojson.js +236 -0
  387. package/dist/esm/modules/excel/chart/types.js +8 -0
  388. package/dist/esm/modules/excel/chart-host-registry.js +90 -0
  389. package/dist/esm/modules/excel/chartsheet.js +196 -0
  390. package/dist/esm/modules/excel/defined-names.js +44 -4
  391. package/dist/esm/modules/excel/errors.js +9 -0
  392. package/dist/esm/modules/excel/form-control.js +17 -0
  393. package/dist/esm/modules/excel/image.js +12 -2
  394. package/dist/esm/modules/excel/pivot-chart.js +53 -0
  395. package/dist/esm/modules/excel/pivot-table.js +35 -0
  396. package/dist/esm/modules/excel/range.js +5 -1
  397. package/dist/esm/modules/excel/sparkline/index.js +7 -0
  398. package/dist/esm/modules/excel/sparkline/sparkline.js +750 -0
  399. package/dist/esm/modules/excel/stream/worksheet-writer.js +3 -2
  400. package/dist/esm/modules/excel/table.js +42 -6
  401. package/dist/esm/modules/excel/utils/address.js +28 -0
  402. package/dist/esm/modules/excel/utils/drawing-utils.js +11 -6
  403. package/dist/esm/modules/excel/utils/guid.js +35 -0
  404. package/dist/esm/modules/excel/utils/ooxml-paths.js +206 -9
  405. package/dist/esm/modules/excel/utils/ooxml-validator/check-chart-sidecar.js +101 -0
  406. package/dist/esm/modules/excel/utils/ooxml-validator/check-chart.js +2125 -0
  407. package/dist/esm/modules/excel/utils/ooxml-validator/check-chartsheet.js +26 -0
  408. package/dist/esm/modules/excel/utils/ooxml-validator/check-content-types.js +181 -0
  409. package/dist/esm/modules/excel/utils/ooxml-validator/check-drawing.js +267 -0
  410. package/dist/esm/modules/excel/utils/ooxml-validator/check-pivot.js +104 -0
  411. package/dist/esm/modules/excel/utils/ooxml-validator/check-relationships.js +184 -0
  412. package/dist/esm/modules/excel/utils/ooxml-validator/check-structure.js +56 -0
  413. package/dist/esm/modules/excel/utils/ooxml-validator/check-styles.js +89 -0
  414. package/dist/esm/modules/excel/utils/ooxml-validator/check-table.js +177 -0
  415. package/dist/esm/modules/excel/utils/ooxml-validator/check-workbook.js +163 -0
  416. package/dist/esm/modules/excel/utils/ooxml-validator/check-worksheet.js +569 -0
  417. package/dist/esm/modules/excel/utils/ooxml-validator/context.js +191 -0
  418. package/dist/esm/modules/excel/utils/ooxml-validator/index.js +102 -0
  419. package/dist/esm/modules/excel/utils/ooxml-validator/path-utils.js +156 -0
  420. package/dist/esm/modules/excel/utils/ooxml-validator/reporter.js +61 -0
  421. package/dist/esm/modules/excel/utils/ooxml-validator/types.js +12 -0
  422. package/dist/esm/modules/excel/utils/ooxml-validator/xml-utils.js +100 -0
  423. package/dist/esm/modules/excel/workbook.browser.js +969 -34
  424. package/dist/esm/modules/excel/workbook.js +48 -0
  425. package/dist/esm/modules/excel/worksheet.js +394 -35
  426. package/dist/esm/modules/excel/xlsx/rel-type.js +41 -1
  427. package/dist/esm/modules/excel/xlsx/xform/book/defined-name-xform.js +11 -2
  428. package/dist/esm/modules/excel/xlsx/xform/book/external-link-xform.js +12 -10
  429. package/dist/esm/modules/excel/xlsx/xform/book/workbook-xform.js +96 -22
  430. package/dist/esm/modules/excel/xlsx/xform/chart/chart-space-xform.js +6000 -0
  431. package/dist/esm/modules/excel/xlsx/xform/comment/threaded-comments-xform.js +213 -0
  432. package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +150 -11
  433. package/dist/esm/modules/excel/xlsx/xform/drawing/absolute-anchor-xform.js +20 -1
  434. package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +1 -1
  435. package/dist/esm/modules/excel/xlsx/xform/drawing/drawing-xform.js +109 -5
  436. package/dist/esm/modules/excel/xlsx/xform/drawing/graphic-frame-xform.js +225 -0
  437. package/dist/esm/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.js +18 -3
  438. package/dist/esm/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.js +294 -12
  439. package/dist/esm/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.js +32 -6
  440. package/dist/esm/modules/excel/xlsx/xform/sheet/chartsheet-xform.js +441 -0
  441. package/dist/esm/modules/excel/xlsx/xform/sheet/ext-lst-xform.js +51 -2
  442. package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +196 -20
  443. package/dist/esm/modules/excel/xlsx/xform/table/auto-filter-xform.js +16 -1
  444. package/dist/esm/modules/excel/xlsx/xform/table/table-column-xform.js +17 -2
  445. package/dist/esm/modules/excel/xlsx/xform/xsd-values.js +101 -0
  446. package/dist/esm/modules/excel/xlsx/xlsx.browser.js +4422 -78
  447. package/dist/esm/modules/pdf/builder/document-builder.js +507 -2
  448. package/dist/esm/modules/pdf/builder/pdf-editor.js +48 -3
  449. package/dist/esm/modules/pdf/excel-bridge.js +683 -12
  450. package/dist/esm/modules/pdf/font/font-manager.js +39 -0
  451. package/dist/esm/modules/pdf/index.js +3 -1
  452. package/dist/esm/modules/pdf/render/chart-surface.js +200 -0
  453. package/dist/esm/modules/pdf/render/layout-engine.js +436 -56
  454. package/dist/esm/modules/pdf/render/page-renderer.js +169 -28
  455. package/dist/esm/modules/pdf/render/pdf-exporter.js +117 -7
  456. package/dist/esm/modules/pdf/types.js +4 -0
  457. package/dist/esm/modules/pdf/word-bridge.js +304 -0
  458. package/dist/esm/modules/word/constants.js +231 -0
  459. package/dist/esm/modules/word/content-types.js +53 -0
  460. package/dist/esm/modules/word/digital-signatures.js +134 -0
  461. package/dist/esm/modules/word/document.js +1795 -0
  462. package/dist/esm/modules/word/docx-packager.js +822 -0
  463. package/dist/esm/modules/word/docx-reader.js +4929 -0
  464. package/dist/esm/modules/word/encryption.js +274 -0
  465. package/dist/esm/modules/word/errors.js +68 -0
  466. package/dist/esm/modules/word/font-obfuscation.js +83 -0
  467. package/dist/esm/modules/word/html-renderer.js +782 -0
  468. package/dist/esm/modules/word/index.base.js +51 -0
  469. package/dist/esm/modules/word/index.browser.js +4 -0
  470. package/dist/esm/modules/word/index.js +4 -0
  471. package/dist/esm/modules/word/internal-utils.js +54 -0
  472. package/dist/esm/modules/word/relationships.js +56 -0
  473. package/dist/esm/modules/word/types.js +10 -0
  474. package/dist/esm/modules/word/units.js +111 -0
  475. package/dist/esm/modules/word/writers/chart-writer.js +385 -0
  476. package/dist/esm/modules/word/writers/checkbox-writer.js +42 -0
  477. package/dist/esm/modules/word/writers/comment-writer.js +70 -0
  478. package/dist/esm/modules/word/writers/document-writer.js +461 -0
  479. package/dist/esm/modules/word/writers/footnote-writer.js +72 -0
  480. package/dist/esm/modules/word/writers/header-footer-writer.js +129 -0
  481. package/dist/esm/modules/word/writers/image-writer.js +185 -0
  482. package/dist/esm/modules/word/writers/math-writer.js +428 -0
  483. package/dist/esm/modules/word/writers/numbering-writer.js +125 -0
  484. package/dist/esm/modules/word/writers/paragraph-writer.js +516 -0
  485. package/dist/esm/modules/word/writers/parts-writer.js +660 -0
  486. package/dist/esm/modules/word/writers/run-writer.js +649 -0
  487. package/dist/esm/modules/word/writers/section-writer.js +238 -0
  488. package/dist/esm/modules/word/writers/styles-writer.js +242 -0
  489. package/dist/esm/modules/word/writers/table-writer.js +503 -0
  490. package/dist/esm/modules/word/writers/textbox-writer.js +53 -0
  491. package/dist/esm/modules/word/writers/toc-writer.js +79 -0
  492. package/dist/esm/modules/xml/encode.js +157 -11
  493. package/dist/iife/excelts.iife.js +11789 -687
  494. package/dist/iife/excelts.iife.js.map +1 -1
  495. package/dist/iife/excelts.iife.min.js +52 -44
  496. package/dist/types/index.browser.d.ts +8 -5
  497. package/dist/types/index.d.ts +4 -2
  498. package/dist/types/modules/excel/chart/cache-populator.d.ts +49 -0
  499. package/dist/types/modules/excel/chart/chart-api.d.ts +92 -0
  500. package/dist/types/modules/excel/chart/chart-builder.d.ts +48 -0
  501. package/dist/types/modules/excel/chart/chart-ex-builder.d.ts +36 -0
  502. package/dist/types/modules/excel/chart/chart-ex-parser.d.ts +8 -0
  503. package/dist/types/modules/excel/chart/chart-ex-renderer.d.ts +187 -0
  504. package/dist/types/modules/excel/chart/chart-ex-types.d.ts +531 -0
  505. package/dist/types/modules/excel/chart/chart-images.d.ts +78 -0
  506. package/dist/types/modules/excel/chart/chart-presets.d.ts +392 -0
  507. package/dist/types/modules/excel/chart/chart-renderer.d.ts +550 -0
  508. package/dist/types/modules/excel/chart/chart-sidecar.d.ts +21 -0
  509. package/dist/types/modules/excel/chart/chart-utils.d.ts +306 -0
  510. package/dist/types/modules/excel/chart/chart.d.ts +504 -0
  511. package/dist/types/modules/excel/chart/glyph-rasterizer.d.ts +62 -0
  512. package/dist/types/modules/excel/chart/index.d.ts +54 -0
  513. package/dist/types/modules/excel/chart/install.d.ts +44 -0
  514. package/dist/types/modules/excel/chart/shape-properties.d.ts +156 -0
  515. package/dist/types/modules/excel/chart/stroke-font.d.ts +36 -0
  516. package/dist/types/modules/excel/chart/topojson.d.ts +98 -0
  517. package/dist/types/modules/excel/chart/types.d.ts +2559 -0
  518. package/dist/types/modules/excel/chart-host-registry.d.ts +157 -0
  519. package/dist/types/modules/excel/chartsheet.d.ts +102 -0
  520. package/dist/types/modules/excel/defined-names.d.ts +35 -0
  521. package/dist/types/modules/excel/errors.d.ts +6 -0
  522. package/dist/types/modules/excel/form-control.d.ts +6 -0
  523. package/dist/types/modules/excel/pivot-chart.d.ts +7 -0
  524. package/dist/types/modules/excel/pivot-table.d.ts +55 -0
  525. package/dist/types/modules/excel/sparkline/index.d.ts +7 -0
  526. package/dist/types/modules/excel/sparkline/sparkline.d.ts +206 -0
  527. package/dist/types/modules/excel/types.d.ts +72 -0
  528. package/dist/types/modules/excel/utils/address.d.ts +18 -0
  529. package/dist/types/modules/excel/utils/guid.d.ts +15 -0
  530. package/dist/types/modules/excel/utils/ooxml-paths.d.ts +74 -0
  531. package/dist/types/modules/excel/utils/ooxml-validator/check-chart-sidecar.d.ts +35 -0
  532. package/dist/types/modules/excel/utils/ooxml-validator/check-chart.d.ts +32 -0
  533. package/dist/types/modules/excel/utils/ooxml-validator/check-chartsheet.d.ts +9 -0
  534. package/dist/types/modules/excel/utils/ooxml-validator/check-content-types.d.ts +16 -0
  535. package/dist/types/modules/excel/utils/ooxml-validator/check-drawing.d.ts +34 -0
  536. package/dist/types/modules/excel/utils/ooxml-validator/check-pivot.d.ts +14 -0
  537. package/dist/types/modules/excel/utils/ooxml-validator/check-relationships.d.ts +18 -0
  538. package/dist/types/modules/excel/utils/ooxml-validator/check-structure.d.ts +21 -0
  539. package/dist/types/modules/excel/utils/ooxml-validator/check-styles.d.ts +15 -0
  540. package/dist/types/modules/excel/utils/ooxml-validator/check-table.d.ts +31 -0
  541. package/dist/types/modules/excel/utils/ooxml-validator/check-workbook.d.ts +19 -0
  542. package/dist/types/modules/excel/utils/ooxml-validator/check-worksheet.d.ts +25 -0
  543. package/dist/types/modules/excel/utils/ooxml-validator/context.d.ts +85 -0
  544. package/dist/types/modules/excel/utils/ooxml-validator/index.d.ts +31 -0
  545. package/dist/types/modules/excel/utils/ooxml-validator/path-utils.d.ts +67 -0
  546. package/dist/types/modules/excel/utils/ooxml-validator/reporter.d.ts +41 -0
  547. package/dist/types/modules/excel/utils/ooxml-validator/types.d.ts +109 -0
  548. package/dist/types/modules/excel/utils/ooxml-validator/xml-utils.d.ts +38 -0
  549. package/dist/types/modules/excel/workbook.browser.d.ts +248 -30
  550. package/dist/types/modules/excel/workbook.d.ts +43 -0
  551. package/dist/types/modules/excel/worksheet.d.ts +157 -3
  552. package/dist/types/modules/excel/xlsx/rel-type.d.ts +40 -0
  553. package/dist/types/modules/excel/xlsx/xform/book/defined-name-xform.d.ts +1 -0
  554. package/dist/types/modules/excel/xlsx/xform/chart/chart-space-xform.d.ts +353 -0
  555. package/dist/types/modules/excel/xlsx/xform/comment/threaded-comments-xform.d.ts +60 -0
  556. package/dist/types/modules/excel/xlsx/xform/drawing/drawing-xform.d.ts +30 -0
  557. package/dist/types/modules/excel/xlsx/xform/drawing/graphic-frame-xform.d.ts +54 -0
  558. package/dist/types/modules/excel/xlsx/xform/drawing/one-cell-anchor-xform.d.ts +3 -1
  559. package/dist/types/modules/excel/xlsx/xform/drawing/two-cell-anchor-xform.d.ts +46 -0
  560. package/dist/types/modules/excel/xlsx/xform/pivot-table/pivot-table-xform.d.ts +13 -2
  561. package/dist/types/modules/excel/xlsx/xform/sheet/chartsheet-xform.d.ts +185 -0
  562. package/dist/types/modules/excel/xlsx/xform/sheet/ext-lst-xform.d.ts +1 -0
  563. package/dist/types/modules/excel/xlsx/xform/xsd-values.d.ts +63 -0
  564. package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +115 -21
  565. package/dist/types/modules/pdf/builder/document-builder.d.ts +74 -0
  566. package/dist/types/modules/pdf/excel-bridge.d.ts +69 -0
  567. package/dist/types/modules/pdf/font/font-manager.d.ts +25 -0
  568. package/dist/types/modules/pdf/index.d.ts +5 -2
  569. package/dist/types/modules/pdf/render/chart-surface.d.ts +33 -0
  570. package/dist/types/modules/pdf/render/layout-engine.d.ts +22 -1
  571. package/dist/types/modules/pdf/types.d.ts +227 -23
  572. package/dist/types/modules/pdf/word-bridge.d.ts +47 -0
  573. package/dist/types/modules/word/constants.d.ts +179 -0
  574. package/dist/types/modules/word/content-types.d.ts +27 -0
  575. package/dist/types/modules/word/digital-signatures.d.ts +87 -0
  576. package/dist/types/modules/word/document.d.ts +728 -0
  577. package/dist/types/modules/word/docx-packager.d.ts +14 -0
  578. package/dist/types/modules/word/docx-reader.d.ts +11 -0
  579. package/dist/types/modules/word/encryption.d.ts +102 -0
  580. package/dist/types/modules/word/errors.d.ts +49 -0
  581. package/dist/types/modules/word/font-obfuscation.d.ts +31 -0
  582. package/dist/types/modules/word/html-renderer.d.ts +38 -0
  583. package/dist/types/modules/word/index.base.d.ts +19 -0
  584. package/dist/types/modules/word/index.browser.d.ts +4 -0
  585. package/dist/types/modules/word/index.d.ts +4 -0
  586. package/dist/types/modules/word/internal-utils.d.ts +23 -0
  587. package/dist/types/modules/word/relationships.d.ts +31 -0
  588. package/dist/types/modules/word/types.d.ts +2325 -0
  589. package/dist/types/modules/word/units.d.ts +49 -0
  590. package/dist/types/modules/word/writers/chart-writer.d.ts +10 -0
  591. package/dist/types/modules/word/writers/checkbox-writer.d.ts +9 -0
  592. package/dist/types/modules/word/writers/comment-writer.d.ts +15 -0
  593. package/dist/types/modules/word/writers/document-writer.d.ts +16 -0
  594. package/dist/types/modules/word/writers/footnote-writer.d.ts +11 -0
  595. package/dist/types/modules/word/writers/header-footer-writer.d.ts +13 -0
  596. package/dist/types/modules/word/writers/image-writer.d.ts +10 -0
  597. package/dist/types/modules/word/writers/math-writer.d.ts +9 -0
  598. package/dist/types/modules/word/writers/numbering-writer.d.ts +10 -0
  599. package/dist/types/modules/word/writers/paragraph-writer.d.ts +13 -0
  600. package/dist/types/modules/word/writers/parts-writer.d.ts +26 -0
  601. package/dist/types/modules/word/writers/run-writer.d.ts +15 -0
  602. package/dist/types/modules/word/writers/section-writer.d.ts +10 -0
  603. package/dist/types/modules/word/writers/styles-writer.d.ts +10 -0
  604. package/dist/types/modules/word/writers/table-writer.d.ts +10 -0
  605. package/dist/types/modules/word/writers/textbox-writer.d.ts +9 -0
  606. package/dist/types/modules/word/writers/toc-writer.d.ts +9 -0
  607. package/dist/types/modules/xml/encode.d.ts +56 -7
  608. package/package.json +29 -11
  609. package/dist/browser/modules/excel/utils/ooxml-validator.d.ts +0 -48
  610. package/dist/browser/modules/excel/utils/ooxml-validator.js +0 -493
  611. package/dist/browser/modules/excel/utils/passthrough-manager.d.ts +0 -77
  612. package/dist/browser/modules/excel/utils/passthrough-manager.js +0 -129
  613. package/dist/cjs/modules/excel/utils/ooxml-validator.js +0 -499
  614. package/dist/cjs/modules/excel/utils/passthrough-manager.js +0 -133
  615. package/dist/esm/modules/excel/utils/ooxml-validator.js +0 -493
  616. package/dist/esm/modules/excel/utils/passthrough-manager.js +0 -129
  617. package/dist/types/modules/excel/utils/ooxml-validator.d.ts +0 -48
  618. package/dist/types/modules/excel/utils/passthrough-manager.d.ts +0 -77
@@ -0,0 +1,569 @@
1
+ /**
2
+ * Worksheet check — the largest and most important part of the validator.
3
+ *
4
+ * Covers four new structural checks beyond the original wiring check:
5
+ * 1. **Child element ordering** — `<worksheet>` children must appear in
6
+ * the ECMA-376 canonical order. Excel is known to reject files with
7
+ * out-of-order children; this is a top cause of "Excel needs to
8
+ * repair" prompts.
9
+ * 2. **Cell `r="A1"` consistency** — every `<c r="…"/>` inside a
10
+ * `<row r="N"/>` must decode to row `N` and to a column in
11
+ * `[1, 16384]` (Excel's max column limit, XFD).
12
+ * 3. **Merge region overlap** — every `<mergeCell ref="A1:B2"/>` must
13
+ * parse and no two merged ranges may overlap.
14
+ * 4. **Style / SST index bounds** — every `<c s="N"/>` must reference a
15
+ * valid `cellXfs` index, and every `<c t="s"><v>N</v></c>` must
16
+ * reference an existing `sharedStrings` index.
17
+ *
18
+ * Plus the legacy r:id wiring checks (controls, drawing, comments,
19
+ * hyperlink, tablePart, legacyDrawing) and the "controls without
20
+ * drawing" repair signal. The old "legacyDrawing-after-controls" kind is
21
+ * kept for backward compatibility — it is emitted in parallel with the
22
+ * generic `sheet-child-out-of-order` kind.
23
+ */
24
+ import { decodeCol, decodeRow } from "../address.js";
25
+ import { posixBasename } from "./path-utils.js";
26
+ import { attrByLocalName, collectDescendantsLocal, findChildLocal, findChildrenLocal, matchesLocal } from "./xml-utils.js";
27
+ // -----------------------------------------------------------------------------
28
+ // ECMA-376 worksheet child order.
29
+ // -----------------------------------------------------------------------------
30
+ /**
31
+ * Canonical order of `<worksheet>` direct children. The index of each
32
+ * child name within this array is its "rank"; any child with a smaller
33
+ * rank seen after a child with a larger rank is out of order.
34
+ *
35
+ * Names are local names (no namespace prefix). Elements allowed to
36
+ * repeat (like `cols`, `conditionalFormatting`) are still subject to
37
+ * the same rank — two consecutive `cols` blocks is fine, but a `cols`
38
+ * after `sheetData` is not.
39
+ */
40
+ const WORKSHEET_CHILD_ORDER = [
41
+ "sheetPr",
42
+ "dimension",
43
+ "sheetViews",
44
+ "sheetFormatPr",
45
+ "cols",
46
+ "sheetData",
47
+ "sheetCalcPr",
48
+ "sheetProtection",
49
+ "protectedRanges",
50
+ "scenarios",
51
+ "autoFilter",
52
+ "sortState",
53
+ "dataConsolidate",
54
+ "customSheetViews",
55
+ "mergeCells",
56
+ "phoneticPr",
57
+ "conditionalFormatting",
58
+ "dataValidations",
59
+ "hyperlinks",
60
+ "printOptions",
61
+ "pageMargins",
62
+ "pageSetup",
63
+ "headerFooter",
64
+ "rowBreaks",
65
+ "colBreaks",
66
+ "customProperties",
67
+ "cellWatches",
68
+ "ignoredErrors",
69
+ "smartTags",
70
+ "drawing",
71
+ "legacyDrawing",
72
+ "legacyDrawingHF",
73
+ "drawingHF",
74
+ "picture",
75
+ "oleObjects",
76
+ "controls",
77
+ "webPublishItems",
78
+ "tableParts",
79
+ "extLst"
80
+ ];
81
+ const WORKSHEET_CHILD_RANK = new Map(WORKSHEET_CHILD_ORDER.map((name, idx) => [name, idx]));
82
+ // Excel 2007+ limits.
83
+ const EXCEL_MAX_ROW = 1048576;
84
+ const EXCEL_MAX_COL = 16384; // XFD
85
+ function readCellXfsCount(ctx) {
86
+ const dom = ctx.readDom("xl/styles.xml");
87
+ if (!dom) {
88
+ return undefined;
89
+ }
90
+ const cellXfs = findChildLocal(dom.root, "cellXfs");
91
+ if (!cellXfs) {
92
+ return 0;
93
+ }
94
+ const count = attrByLocalName(cellXfs, "count");
95
+ const n = count !== undefined ? parseInt(count, 10) : NaN;
96
+ if (Number.isFinite(n) && n >= 0) {
97
+ return n;
98
+ }
99
+ return findChildrenLocal(cellXfs, "xf").length;
100
+ }
101
+ function readSstSize(ctx) {
102
+ const dom = ctx.readDom("xl/sharedStrings.xml");
103
+ if (!dom) {
104
+ return undefined;
105
+ }
106
+ const uniqueCount = attrByLocalName(dom.root, "uniqueCount");
107
+ const n = uniqueCount !== undefined ? parseInt(uniqueCount, 10) : NaN;
108
+ if (Number.isFinite(n) && n >= 0) {
109
+ return n;
110
+ }
111
+ return findChildrenLocal(dom.root, "si").length;
112
+ }
113
+ function loadIndexCounts(ctx) {
114
+ return {
115
+ cellXfs: readCellXfsCount(ctx),
116
+ sstSize: readSstSize(ctx)
117
+ };
118
+ }
119
+ // -----------------------------------------------------------------------------
120
+ // Cell address helpers — safe wrappers around `address.ts`.
121
+ // -----------------------------------------------------------------------------
122
+ /**
123
+ * Parse an A1-style reference into `{ col, row }` (1-based) or
124
+ * `undefined` when the string is not a legal cell reference. Accepts
125
+ * absolute-address `$`-markers produced by some serialisers.
126
+ */
127
+ function parseCellRef(ref) {
128
+ // Match optional `$`, letters, optional `$`, digits.
129
+ const m = /^\$?([A-Za-z]+)\$?(\d+)$/.exec(ref);
130
+ if (!m) {
131
+ return undefined;
132
+ }
133
+ try {
134
+ const col = decodeCol(m[1]) + 1;
135
+ const row = decodeRow(m[2]) + 1;
136
+ if (!Number.isFinite(col) || !Number.isFinite(row)) {
137
+ return undefined;
138
+ }
139
+ return { col, row };
140
+ }
141
+ catch {
142
+ return undefined;
143
+ }
144
+ }
145
+ function parseMergeRef(ref) {
146
+ const idx = ref.indexOf(":");
147
+ if (idx === -1) {
148
+ const p = parseCellRef(ref);
149
+ return p ? { t: p.row, l: p.col, b: p.row, r: p.col, ref } : undefined;
150
+ }
151
+ const a = parseCellRef(ref.slice(0, idx));
152
+ const b = parseCellRef(ref.slice(idx + 1));
153
+ if (!a || !b) {
154
+ return undefined;
155
+ }
156
+ return {
157
+ t: Math.min(a.row, b.row),
158
+ b: Math.max(a.row, b.row),
159
+ l: Math.min(a.col, b.col),
160
+ r: Math.max(a.col, b.col),
161
+ ref
162
+ };
163
+ }
164
+ function rectsOverlap(a, b) {
165
+ return a.l <= b.r && b.l <= a.r && a.t <= b.b && b.t <= a.b;
166
+ }
167
+ // -----------------------------------------------------------------------------
168
+ // Public checker
169
+ // -----------------------------------------------------------------------------
170
+ export function checkWorksheets(ctx) {
171
+ let counts;
172
+ for (const [path, entry] of ctx.files()) {
173
+ if (ctx.reporter.capped) {
174
+ return;
175
+ }
176
+ if (entry.type === "directory" ||
177
+ !path.startsWith("xl/worksheets/sheet") ||
178
+ !path.endsWith(".xml")) {
179
+ continue;
180
+ }
181
+ counts ?? (counts = loadIndexCounts(ctx));
182
+ checkSingleWorksheet(ctx, path, counts);
183
+ }
184
+ }
185
+ function checkSingleWorksheet(ctx, path, counts) {
186
+ const dom = ctx.readDom(path, err => {
187
+ ctx.reporter.error("xml-malformed", `Malformed XML: ${err.message}`, path);
188
+ });
189
+ if (!dom) {
190
+ return;
191
+ }
192
+ const root = dom.root;
193
+ // 1) Child element ordering.
194
+ checkChildOrdering(ctx, path, root);
195
+ // 2) Cell ref consistency + style/SST index bounds + sharedFormula masters.
196
+ const sheetData = findChildLocal(root, "sheetData");
197
+ if (sheetData) {
198
+ checkSheetData(ctx, path, sheetData, counts);
199
+ }
200
+ // 3) Merge cell overlap.
201
+ const mergeCells = findChildLocal(root, "mergeCells");
202
+ if (mergeCells) {
203
+ checkMergeCells(ctx, path, mergeCells);
204
+ }
205
+ // 4) Legacy wiring + controls-without-drawing + legacyDrawing ordering.
206
+ checkSheetWiring(ctx, path, root);
207
+ }
208
+ // -----------------------------------------------------------------------------
209
+ // Ordering
210
+ // -----------------------------------------------------------------------------
211
+ function checkChildOrdering(ctx, path, root) {
212
+ let maxRank = -1;
213
+ let sawControls = false;
214
+ let sawLegacyDrawingAfterControls = false;
215
+ for (const child of iterateWorksheetChildren(root)) {
216
+ if (child.type !== "element") {
217
+ continue;
218
+ }
219
+ const local = child.name.includes(":")
220
+ ? child.name.slice(child.name.lastIndexOf(":") + 1)
221
+ : child.name;
222
+ const rank = WORKSHEET_CHILD_RANK.get(local);
223
+ if (rank === undefined) {
224
+ // Unknown element — don't flag, someone might have added an extension.
225
+ continue;
226
+ }
227
+ if (rank < maxRank) {
228
+ const expectedAfter = WORKSHEET_CHILD_ORDER[maxRank] ?? "?";
229
+ ctx.reporter.error("sheet-child-out-of-order", `Worksheet child <${local}> appears after <${expectedAfter}>; expected order violated`, path);
230
+ if (local === "legacyDrawing" && sawControls) {
231
+ sawLegacyDrawingAfterControls = true;
232
+ }
233
+ }
234
+ if (rank > maxRank) {
235
+ maxRank = rank;
236
+ }
237
+ if (local === "controls") {
238
+ sawControls = true;
239
+ }
240
+ }
241
+ // Backwards-compat: emit the legacy-specific kind too so existing
242
+ // regression tests that grep for it still match.
243
+ if (sawLegacyDrawingAfterControls) {
244
+ ctx.reporter.error("sheet-legacyDrawing-after-controls", "Worksheet has <legacyDrawing> after <controls>; Excel may repair or reject this sheet", path);
245
+ }
246
+ }
247
+ /**
248
+ * Yield every direct child of the worksheet — but transparently unwrap
249
+ * `<mc:AlternateContent><mc:Choice>…</mc:Choice></mc:AlternateContent>`.
250
+ * The MCE alternate-content wrapper is a schema-level feature that lets
251
+ * writers express a primary serialisation and a fallback; for ordering
252
+ * purposes the Choice's children are logically in the worksheet itself.
253
+ * Without this flattening, checkers miss the inner `<controls>` element
254
+ * because it hides inside a namespace-prefixed envelope.
255
+ */
256
+ function* iterateWorksheetChildren(root) {
257
+ for (const child of root.children) {
258
+ if (child.type !== "element") {
259
+ continue;
260
+ }
261
+ const local = child.name.includes(":")
262
+ ? child.name.slice(child.name.lastIndexOf(":") + 1)
263
+ : child.name;
264
+ if (local === "AlternateContent") {
265
+ // Use Choice's children (fallback is the degenerate substitute).
266
+ for (const c of child.children) {
267
+ if (c.type !== "element") {
268
+ continue;
269
+ }
270
+ const cLocal = c.name.includes(":") ? c.name.slice(c.name.lastIndexOf(":") + 1) : c.name;
271
+ if (cLocal === "Choice") {
272
+ for (const inner of c.children) {
273
+ if (inner.type === "element") {
274
+ yield inner;
275
+ }
276
+ }
277
+ }
278
+ }
279
+ continue;
280
+ }
281
+ yield child;
282
+ }
283
+ }
284
+ // -----------------------------------------------------------------------------
285
+ // sheetData (cell refs / style idx / SST idx / sharedFormula)
286
+ // -----------------------------------------------------------------------------
287
+ function checkSheetData(ctx, path, sheetData, counts) {
288
+ // Track shared-formula si masters: si -> how many masters have been seen.
289
+ const masterSiCounts = new Map();
290
+ // si values referenced by followers that had no master yet.
291
+ const followerSi = new Set();
292
+ for (const row of sheetData.children) {
293
+ if (ctx.reporter.capped) {
294
+ return;
295
+ }
296
+ if (row.type !== "element" || !matchesLocal(row.name, "row")) {
297
+ continue;
298
+ }
299
+ const rowAttr = attrByLocalName(row, "r");
300
+ const rowIndex = rowAttr !== undefined ? parseInt(rowAttr, 10) : NaN;
301
+ if (Number.isFinite(rowIndex)) {
302
+ if (rowIndex < 1 || rowIndex > EXCEL_MAX_ROW) {
303
+ ctx.reporter.error("sheet-row-index-out-of-bounds", `Row r="${rowAttr}" is outside Excel's limit 1..${EXCEL_MAX_ROW}`, path);
304
+ }
305
+ }
306
+ for (const cell of row.children) {
307
+ if (ctx.reporter.capped) {
308
+ return;
309
+ }
310
+ if (cell.type !== "element" || !matchesLocal(cell.name, "c")) {
311
+ continue;
312
+ }
313
+ checkCell(ctx, path, cell, Number.isFinite(rowIndex) ? rowIndex : undefined, counts);
314
+ checkSharedFormula(cell, masterSiCounts, followerSi);
315
+ }
316
+ }
317
+ // Shared-formula: every follower si must have a master, every si must
318
+ // have exactly one master.
319
+ for (const [si, n] of masterSiCounts) {
320
+ if (n > 1) {
321
+ ctx.reporter.error("sheet-sharedFormula-duplicate-master", `Shared formula si="${si}" has ${n} master entries (should be exactly one)`, path);
322
+ }
323
+ }
324
+ for (const si of followerSi) {
325
+ if (!masterSiCounts.has(si)) {
326
+ ctx.reporter.error("sheet-sharedFormula-master-missing", `Shared formula si="${si}" has no master entry`, path);
327
+ }
328
+ }
329
+ }
330
+ function checkCell(ctx, path, cell, rowIndex, counts) {
331
+ const ref = attrByLocalName(cell, "r");
332
+ if (ref === undefined) {
333
+ ctx.reporter.error("sheet-cell-ref-missing", `Cell missing r="" attribute`, path);
334
+ return;
335
+ }
336
+ const parsed = parseCellRef(ref);
337
+ if (!parsed) {
338
+ ctx.reporter.error("sheet-cell-ref-invalid", `Cell has invalid r="${ref}"`, path);
339
+ return;
340
+ }
341
+ if (parsed.col < 1 ||
342
+ parsed.col > EXCEL_MAX_COL ||
343
+ parsed.row < 1 ||
344
+ parsed.row > EXCEL_MAX_ROW) {
345
+ ctx.reporter.error("sheet-cell-ref-out-of-bounds", `Cell r="${ref}" is outside Excel's sheet bounds (max XFD1048576)`, path);
346
+ }
347
+ if (rowIndex !== undefined && parsed.row !== rowIndex) {
348
+ ctx.reporter.error("sheet-cell-ref-row-mismatch", `Cell r="${ref}" has row ${parsed.row} but is inside <row r="${rowIndex}">`, path);
349
+ }
350
+ // Style index.
351
+ const styleAttr = attrByLocalName(cell, "s");
352
+ if (styleAttr !== undefined && counts.cellXfs !== undefined) {
353
+ const s = parseInt(styleAttr, 10);
354
+ if (!Number.isFinite(s) || s < 0 || s >= counts.cellXfs) {
355
+ ctx.reporter.error("sheet-cell-style-index-oob", `Cell r="${ref}" s="${styleAttr}" is outside cellXfs range [0, ${counts.cellXfs})`, path);
356
+ }
357
+ }
358
+ // Shared-strings index (t="s" means cell value is an index into sharedStrings).
359
+ const typeAttr = attrByLocalName(cell, "t");
360
+ if (typeAttr === "s" && counts.sstSize !== undefined) {
361
+ const v = findChildLocal(cell, "v");
362
+ if (v) {
363
+ const text = collectText(v).trim();
364
+ const n = parseInt(text, 10);
365
+ if (!Number.isFinite(n) || n < 0 || n >= counts.sstSize) {
366
+ ctx.reporter.error("sheet-cell-sst-index-oob", `Cell r="${ref}" references sharedStrings index ${text} but SST has ${counts.sstSize} entries`, path);
367
+ }
368
+ }
369
+ }
370
+ }
371
+ function checkSharedFormula(cell, masterSiCounts, followerSi) {
372
+ const f = findChildLocal(cell, "f");
373
+ if (!f) {
374
+ return;
375
+ }
376
+ const t = attrByLocalName(f, "t");
377
+ if (t !== "shared") {
378
+ return;
379
+ }
380
+ const si = attrByLocalName(f, "si");
381
+ if (si === undefined) {
382
+ return;
383
+ }
384
+ const hasRef = attrByLocalName(f, "ref") !== undefined;
385
+ const hasBody = collectText(f).trim().length > 0;
386
+ // A master is identified by having a `ref` attribute (range); a follower
387
+ // has just `si` with an empty body. Some producers also emit a body on
388
+ // masters, which is fine.
389
+ if (hasRef || hasBody) {
390
+ masterSiCounts.set(si, (masterSiCounts.get(si) ?? 0) + 1);
391
+ }
392
+ else {
393
+ followerSi.add(si);
394
+ }
395
+ }
396
+ function collectText(el) {
397
+ let out = "";
398
+ for (const child of el.children) {
399
+ if (child.type === "text" || child.type === "cdata") {
400
+ out += child.value;
401
+ }
402
+ else if (child.type === "element") {
403
+ out += collectText(child);
404
+ }
405
+ }
406
+ return out;
407
+ }
408
+ // -----------------------------------------------------------------------------
409
+ // mergeCells
410
+ // -----------------------------------------------------------------------------
411
+ function checkMergeCells(ctx, path, mergeCells) {
412
+ const rects = [];
413
+ for (const mc of findChildrenLocal(mergeCells, "mergeCell")) {
414
+ if (ctx.reporter.capped) {
415
+ return;
416
+ }
417
+ const ref = attrByLocalName(mc, "ref");
418
+ if (!ref) {
419
+ ctx.reporter.error("sheet-merge-invalid-range", `<mergeCell> missing ref attribute`, path);
420
+ continue;
421
+ }
422
+ const rect = parseMergeRef(ref);
423
+ if (!rect) {
424
+ ctx.reporter.error("sheet-merge-invalid-range", `<mergeCell ref="${ref}"> does not parse as a range`, path);
425
+ continue;
426
+ }
427
+ for (const prior of rects) {
428
+ if (rectsOverlap(prior, rect)) {
429
+ ctx.reporter.error("sheet-merge-overlap", `Merge ${ref} overlaps with earlier merge ${prior.ref}`, path);
430
+ break;
431
+ }
432
+ }
433
+ rects.push(rect);
434
+ }
435
+ }
436
+ function checkSheetWiring(ctx, path, root) {
437
+ const relsPath = `xl/worksheets/_rels/${posixBasename(path)}.rels`;
438
+ // Resolve the effective worksheet children, flattening AlternateContent/Choice.
439
+ const effectiveChildren = [];
440
+ for (const child of iterateWorksheetChildren(root)) {
441
+ effectiveChildren.push(child);
442
+ }
443
+ const firstLocal = (el) => el.name.includes(":") ? el.name.slice(el.name.lastIndexOf(":") + 1) : el.name;
444
+ const uses = [];
445
+ const controls = effectiveChildren.find(el => firstLocal(el) === "controls");
446
+ if (controls) {
447
+ // `<control>` elements may be wrapped in inner
448
+ // `<mc:AlternateContent><mc:Choice>…` blocks (one per control). Use
449
+ // a recursive descent so we pick them up regardless of nesting.
450
+ for (const c of collectDescendantsLocal(controls, "control")) {
451
+ const rid = attrByLocalName(c, "id");
452
+ if (rid) {
453
+ uses.push({
454
+ rid,
455
+ kind: "control",
456
+ typeIncludes: "/relationships/ctrlProp",
457
+ missingKind: "sheet-control-missing-rel",
458
+ wrongKind: "sheet-control-wrong-rel-type",
459
+ label: "<control>"
460
+ });
461
+ }
462
+ }
463
+ }
464
+ const legacyDrawing = effectiveChildren.find(el => firstLocal(el) === "legacyDrawing");
465
+ if (legacyDrawing) {
466
+ const rid = attrByLocalName(legacyDrawing, "id");
467
+ if (rid) {
468
+ uses.push({
469
+ rid,
470
+ kind: "legacyDrawing",
471
+ typeIncludes: "/relationships/vmlDrawing",
472
+ missingKind: "sheet-legacyDrawing-missing-rel",
473
+ wrongKind: "sheet-legacyDrawing-wrong-rel-type",
474
+ label: "<legacyDrawing>"
475
+ });
476
+ }
477
+ }
478
+ const drawing = effectiveChildren.find(el => firstLocal(el) === "drawing");
479
+ if (drawing) {
480
+ const rid = attrByLocalName(drawing, "id");
481
+ if (rid) {
482
+ uses.push({
483
+ rid,
484
+ kind: "drawing",
485
+ typeIncludes: "/relationships/drawing",
486
+ missingKind: "sheet-drawing-missing-rel",
487
+ wrongKind: "sheet-drawing-wrong-rel-type",
488
+ label: "<drawing>"
489
+ });
490
+ }
491
+ }
492
+ const hyperlinks = effectiveChildren.find(el => firstLocal(el) === "hyperlinks");
493
+ if (hyperlinks) {
494
+ for (const hl of findChildrenLocal(hyperlinks, "hyperlink")) {
495
+ const rid = attrByLocalName(hl, "id");
496
+ if (rid) {
497
+ uses.push({
498
+ rid,
499
+ kind: "hyperlink",
500
+ typeIncludes: "/relationships/hyperlink",
501
+ missingKind: "sheet-hyperlink-missing-rel",
502
+ wrongKind: "sheet-hyperlink-wrong-rel-type",
503
+ label: "<hyperlink>"
504
+ });
505
+ }
506
+ }
507
+ }
508
+ const tableParts = effectiveChildren.find(el => firstLocal(el) === "tableParts");
509
+ if (tableParts) {
510
+ for (const tp of findChildrenLocal(tableParts, "tablePart")) {
511
+ const rid = attrByLocalName(tp, "id");
512
+ if (rid) {
513
+ uses.push({
514
+ rid,
515
+ kind: "tablePart",
516
+ typeIncludes: "/relationships/table",
517
+ missingKind: "sheet-tablePart-missing-rel",
518
+ wrongKind: "sheet-tablePart-wrong-rel-type",
519
+ label: "<tablePart>"
520
+ });
521
+ }
522
+ }
523
+ }
524
+ // `<comments r:id="..."/>` is not actually a standard worksheet child — the
525
+ // comments relationship is normally declared without a `<comments>` element
526
+ // in the sheet. But the original validator matched this pattern, so keep
527
+ // the behaviour for any serialiser that emits it.
528
+ for (const c of effectiveChildren.filter(el => firstLocal(el) === "comments")) {
529
+ const rid = attrByLocalName(c, "id");
530
+ if (rid) {
531
+ uses.push({
532
+ rid,
533
+ kind: "comments",
534
+ typeIncludes: "/relationships/comments",
535
+ missingKind: "sheet-comments-missing-rel",
536
+ wrongKind: "sheet-comments-wrong-rel-type",
537
+ label: "<comments>"
538
+ });
539
+ }
540
+ }
541
+ // controls without drawing -> repair signal.
542
+ const hasControl = uses.some(u => u.kind === "control");
543
+ const hasDrawing = uses.some(u => u.kind === "drawing");
544
+ if (hasControl && !hasDrawing) {
545
+ ctx.reporter.error("sheet-controls-missing-drawing", "Worksheet has legacy <controls> but no <drawing>; Excel may repair/reject legacy form controls", path);
546
+ }
547
+ // If there are any r:ids in use, rels file must exist.
548
+ if (uses.length > 0 && !ctx.has(relsPath)) {
549
+ ctx.reporter.error("sheet-missing-rels", `Worksheet has controls/legacyDrawing/drawing/hyperlinks/tableParts but missing rels part: ${relsPath}`, path);
550
+ return;
551
+ }
552
+ if (!ctx.has(relsPath)) {
553
+ return;
554
+ }
555
+ const rels = ctx.readRels(relsPath);
556
+ for (const use of uses) {
557
+ if (ctx.reporter.capped) {
558
+ return;
559
+ }
560
+ const rel = rels.byId.get(use.rid);
561
+ if (!rel) {
562
+ ctx.reporter.error(use.missingKind, `Sheet ${use.label} references missing relationship: ${use.rid} (in ${relsPath})`, path);
563
+ continue;
564
+ }
565
+ if (!rel.type.includes(use.typeIncludes)) {
566
+ ctx.reporter.error(use.wrongKind, `Sheet ${use.label} ${use.rid} relationship is not ${use.typeIncludes}: ${rel.type}`, path);
567
+ }
568
+ }
569
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Shared validation context.
3
+ *
4
+ * Checkers share XML parsing work through this context. Relationships,
5
+ * content types, and parsed XML DOMs are parsed at most once and cached.
6
+ * Every checker consumes from the same cache so they all see identical
7
+ * parse results (this matters for "rels malformed" propagation — the
8
+ * malformed entry is reported once, and every downstream checker simply
9
+ * sees the empty parse result).
10
+ */
11
+ import type { ExtractedFile } from "../../../archive/unzip/extract.js";
12
+ import type { XmlDocument, XmlElement } from "../../../xml/types.js";
13
+ import type { Reporter } from "./reporter.js";
14
+ export interface ContentTypesData {
15
+ defaults: Map<string, string>;
16
+ overrides: Map<string, string>;
17
+ /**
18
+ * `true` if the file was parsed as a `<Types>` root successfully.
19
+ * `false` if the file is missing, malformed or has an unexpected root.
20
+ */
21
+ parseOk: boolean;
22
+ /**
23
+ * Duplicate override part names encountered during parse. Emitted as
24
+ * problems by the content-types checker.
25
+ */
26
+ duplicateOverrides: string[];
27
+ }
28
+ export interface Relationship {
29
+ id: string;
30
+ type: string;
31
+ target: string;
32
+ targetMode?: string;
33
+ }
34
+ export interface RelsData {
35
+ rels: Relationship[];
36
+ byId: Map<string, Relationship>;
37
+ parseOk: boolean;
38
+ /**
39
+ * Raw rel entries that lacked Id/Type/Target attributes. Emitted
40
+ * separately so the rels checker can flag them without us dropping
41
+ * them from the data entirely.
42
+ */
43
+ malformedEntries: Array<{
44
+ missingId: boolean;
45
+ missingType: boolean;
46
+ missingTarget: boolean;
47
+ id?: string;
48
+ type?: string;
49
+ }>;
50
+ }
51
+ export declare class ValidationContext {
52
+ readonly entries: Map<string, ExtractedFile>;
53
+ readonly reporter: Reporter;
54
+ private readonly textCache;
55
+ private readonly domCache;
56
+ private readonly relsCache;
57
+ private contentTypes?;
58
+ constructor(entries: Map<string, ExtractedFile>, reporter: Reporter);
59
+ /** `true` if `path` points to a file (not a directory) in the package. */
60
+ has(path: string): boolean;
61
+ /** Iterate every file (skip directories). */
62
+ files(): IterableIterator<readonly [string, ExtractedFile]>;
63
+ /** Decode a part as UTF-8 text. Cached. */
64
+ readText(path: string): string | undefined;
65
+ /**
66
+ * Parse a part as XML DOM. Cached. Returns `undefined` if the part is
67
+ * missing or malformed. Callers that need to distinguish those cases
68
+ * should check `has(path)` first.
69
+ */
70
+ readDom(path: string, onMalformed?: (err: Error) => void): XmlDocument | undefined;
71
+ /**
72
+ * Read and cache the content-types table. On first call, parse
73
+ * `[Content_Types].xml`; subsequent calls return the cache.
74
+ * Reports malformed-XML problems via the reporter but never throws.
75
+ */
76
+ readContentTypes(): ContentTypesData;
77
+ /**
78
+ * Read and cache a relationships file. Every .rels in the package is
79
+ * parsed lazily on first request. Malformed files are reported once
80
+ * and return an empty relationships array.
81
+ */
82
+ readRels(relsPath: string): RelsData;
83
+ }
84
+ /** Get the root element of a DOM; returns undefined for missing DOM. */
85
+ export declare function domRoot(dom: XmlDocument | undefined): XmlElement | undefined;