react-native-nitro-xlsx 0.2.5 → 0.2.7

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 (449) hide show
  1. package/NitroXlsx.podspec +26 -27
  2. package/Package.swift +31 -10
  3. package/README.md +21 -9
  4. package/android/CMakeLists.txt +20 -27
  5. package/cpp/HybridNitroXlsx.cpp +25 -1
  6. package/cpp/HybridXlsxCellFormat.cpp +46 -146
  7. package/cpp/HybridXlsxCellFormat.hpp +9 -41
  8. package/cpp/HybridXlsxConditionalFormat.cpp +4 -1
  9. package/cpp/HybridXlsxConditionalFormats.cpp +5 -1
  10. package/cpp/HybridXlsxWorkbook.cpp +38 -8
  11. package/cpp/HybridXlsxWorkbook.hpp +10 -1
  12. package/cpp/HybridXlsxWorksheet.cpp +422 -141
  13. package/cpp/HybridXlsxWorksheet.hpp +4 -1
  14. package/cpp/XlsxCacheDir.cpp +25 -2
  15. package/cpp/XlsxCacheDir.hpp +3 -1
  16. package/cpp/XlsxCellStyle.hpp +360 -0
  17. package/cpp/XlsxJson.cpp +29 -8
  18. package/package.json +2 -2
  19. package/scripts/run-cpp-tests.sh +1 -1
  20. package/scripts/sync-openxlsx-headers.sh +34 -0
  21. package/src/__mocks__/react-native-nitro-modules.ts +523 -20
  22. package/src/__tests__/index.test.ts +124 -16
  23. package/src/index.ts +13 -13
  24. package/thirdparty/OpenXLSX/.clang-format +118 -0
  25. package/thirdparty/OpenXLSX/.clang-tidy +28 -0
  26. package/thirdparty/OpenXLSX/.gitignore +130 -0
  27. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers +46 -0
  28. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping +49 -0
  29. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support +49 -0
  30. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support +49 -0
  31. package/thirdparty/OpenXLSX/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled +49 -0
  32. package/thirdparty/OpenXLSX/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework +46 -0
  33. package/thirdparty/OpenXLSX/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support +46 -0
  34. package/thirdparty/OpenXLSX/Benchmarks/2024-09-02-benchmarks +46 -0
  35. package/thirdparty/OpenXLSX/Benchmarks/2024-12-19-benchmarks +46 -0
  36. package/thirdparty/OpenXLSX/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref +46 -0
  37. package/thirdparty/OpenXLSX/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection +46 -0
  38. package/thirdparty/OpenXLSX/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix +46 -0
  39. package/thirdparty/OpenXLSX/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation +46 -0
  40. package/thirdparty/OpenXLSX/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework +46 -0
  41. package/thirdparty/OpenXLSX/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals +46 -0
  42. package/thirdparty/OpenXLSX/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip +46 -0
  43. package/thirdparty/OpenXLSX/Benchmarks/Benchmark.cpp +249 -0
  44. package/thirdparty/OpenXLSX/Benchmarks/CMakeLists.txt +19 -0
  45. package/thirdparty/OpenXLSX/CMakeLists.txt +466 -0
  46. package/thirdparty/OpenXLSX/Documentation/CMakeLists.txt +31 -0
  47. package/thirdparty/OpenXLSX/Documentation/Doxyfile.in +2471 -0
  48. package/thirdparty/OpenXLSX/Documentation/DoxygenLayout.xml +194 -0
  49. package/thirdparty/OpenXLSX/Documentation/customdoxygen.css +1355 -0
  50. package/thirdparty/OpenXLSX/Examples/CMakeLists.txt +103 -0
  51. package/thirdparty/OpenXLSX/Examples/Demo1.cpp +279 -0
  52. package/thirdparty/OpenXLSX/Examples/Demo10.cpp +545 -0
  53. package/thirdparty/OpenXLSX/Examples/Demo1A.cpp +137 -0
  54. package/thirdparty/OpenXLSX/Examples/Demo2.cpp +65 -0
  55. package/thirdparty/OpenXLSX/Examples/Demo3.cpp +89 -0
  56. package/thirdparty/OpenXLSX/Examples/Demo4.cpp +86 -0
  57. package/thirdparty/OpenXLSX/Examples/Demo5.cpp +77 -0
  58. package/thirdparty/OpenXLSX/Examples/Demo6.cpp +103 -0
  59. package/thirdparty/OpenXLSX/Examples/Demo7.cpp +79 -0
  60. package/thirdparty/OpenXLSX/Examples/Demo8.cpp +117 -0
  61. package/thirdparty/OpenXLSX/Examples/Demo9.cpp +363 -0
  62. package/thirdparty/OpenXLSX/Examples/cmake/FindLIBZIP.cmake +61 -0
  63. package/thirdparty/OpenXLSX/Examples/external/CustomZip/CustomZip.hpp +256 -0
  64. package/thirdparty/OpenXLSX/LICENSE.md +29 -0
  65. package/thirdparty/OpenXLSX/Makefile.GNU +530 -0
  66. package/thirdparty/OpenXLSX/Notes/TBDs.txt +16 -0
  67. package/thirdparty/OpenXLSX/Notes/confirmed-TBCs.txt +8 -0
  68. package/thirdparty/OpenXLSX/Notes/styles-missing-support.xml +12 -0
  69. package/thirdparty/OpenXLSX/Notes/todo-list.txt +108 -0
  70. package/thirdparty/OpenXLSX/OpenXLSX/CMakeLists.txt +631 -0
  71. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSX.hpp +63 -0
  72. package/thirdparty/OpenXLSX/OpenXLSX/OpenXLSXConfig.cmake +11 -0
  73. package/thirdparty/OpenXLSX/OpenXLSX/cmake/bundle_static_library.cmake +198 -0
  74. package/thirdparty/OpenXLSX/OpenXLSX/cmake/patch_pkg_config.cmake +69 -0
  75. package/thirdparty/OpenXLSX/OpenXLSX/headers/IZipArchive.hpp +361 -0
  76. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/IZipArchive.hpp +361 -0
  77. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/OpenXLSX-Exports.hpp +12 -0
  78. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCell.hpp +367 -0
  79. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellIterator.hpp +252 -0
  80. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellRange.hpp +223 -0
  81. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellReference.hpp +317 -0
  82. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCellValue.hpp +793 -0
  83. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLColor.hpp +232 -0
  84. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLColumn.hpp +159 -0
  85. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLCommandQuery.hpp +228 -0
  86. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLComments.hpp +270 -0
  87. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLConstants.hpp +18 -0
  88. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLContentTypes.hpp +264 -0
  89. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDateTime.hpp +175 -0
  90. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDocument.hpp +505 -0
  91. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLDrawing.hpp +452 -0
  92. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLException.hpp +161 -0
  93. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLFormula.hpp +375 -0
  94. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLIterator.hpp +40 -0
  95. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLMergeCells.hpp +216 -0
  96. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLProperties.hpp +348 -0
  97. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRelationships.hpp +348 -0
  98. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRow.hpp +721 -0
  99. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLRowData.hpp +488 -0
  100. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLSharedStrings.hpp +204 -0
  101. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLSheet.hpp +1640 -0
  102. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLStyles.hpp +2390 -0
  103. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLTables.hpp +132 -0
  104. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLWorkbook.hpp +404 -0
  105. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlData.hpp +283 -0
  106. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlFile.hpp +194 -0
  107. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlParser.hpp +282 -0
  108. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLXmlParserForwardDeclarations.hpp +85 -0
  109. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/XLZipArchive.hpp +232 -0
  110. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/LibZip.hpp +447 -0
  111. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/OpenXLSXFileSystemTools.hpp +207 -0
  112. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX/detail/Zippy.hpp +1375 -0
  113. package/thirdparty/OpenXLSX/OpenXLSX/headers/OpenXLSX-Exports.hpp +12 -0
  114. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCell.hpp +367 -0
  115. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellIterator.hpp +252 -0
  116. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellRange.hpp +223 -0
  117. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellReference.hpp +317 -0
  118. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCellValue.hpp +793 -0
  119. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColor.hpp +232 -0
  120. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLColumn.hpp +159 -0
  121. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLCommandQuery.hpp +228 -0
  122. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLComments.hpp +270 -0
  123. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLConstants.hpp +18 -0
  124. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLContentTypes.hpp +264 -0
  125. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDateTime.hpp +175 -0
  126. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDocument.hpp +505 -0
  127. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLDrawing.hpp +452 -0
  128. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLException.hpp +161 -0
  129. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLFormula.hpp +375 -0
  130. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLIterator.hpp +40 -0
  131. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLMergeCells.hpp +216 -0
  132. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLProperties.hpp +348 -0
  133. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRelationships.hpp +348 -0
  134. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRow.hpp +721 -0
  135. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLRowData.hpp +488 -0
  136. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSharedStrings.hpp +204 -0
  137. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLSheet.hpp +1640 -0
  138. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLStyles.hpp +2390 -0
  139. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLTables.hpp +132 -0
  140. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLWorkbook.hpp +404 -0
  141. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlData.hpp +283 -0
  142. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlFile.hpp +194 -0
  143. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParser.hpp +282 -0
  144. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLXmlParserForwardDeclarations.hpp +85 -0
  145. package/thirdparty/OpenXLSX/OpenXLSX/headers/XLZipArchive.hpp +232 -0
  146. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/LibZip.hpp +447 -0
  147. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/OpenXLSXFileSystemTools.hpp +207 -0
  148. package/thirdparty/OpenXLSX/OpenXLSX/headers/detail/Zippy.hpp +1375 -0
  149. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCell.cpp +340 -0
  150. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellIterator.cpp +427 -0
  151. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellRange.cpp +221 -0
  152. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellReference.cpp +408 -0
  153. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLCellValue.cpp +519 -0
  154. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColor.cpp +202 -0
  155. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLColumn.cpp +141 -0
  156. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLComments.cpp +637 -0
  157. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLContentTypes.cpp +329 -0
  158. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDateTime.cpp +269 -0
  159. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDocument.cpp +1678 -0
  160. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLDrawing.cpp +784 -0
  161. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLFormula.cpp +201 -0
  162. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLMergeCells.cpp +357 -0
  163. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLProperties.cpp +810 -0
  164. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRelationships.cpp +529 -0
  165. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRow.cpp +918 -0
  166. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLRowData.cpp +508 -0
  167. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSharedStrings.cpp +220 -0
  168. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLSheet.cpp +1970 -0
  169. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLStyles.cpp +3014 -0
  170. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLTables.cpp +125 -0
  171. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLWorkbook.cpp +784 -0
  172. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlData.cpp +247 -0
  173. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlFile.cpp +160 -0
  174. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLXmlParser.cpp +261 -0
  175. package/thirdparty/OpenXLSX/OpenXLSX/sources/XLZipArchive.cpp +266 -0
  176. package/thirdparty/OpenXLSX/OpenXLSX/sources/utilities/XLUtilities.hpp +478 -0
  177. package/thirdparty/OpenXLSX/README.md +1279 -0
  178. package/thirdparty/OpenXLSX/Scripts/cmake-cleanup.sh +102 -0
  179. package/thirdparty/OpenXLSX/Scripts/compile.sh +23 -0
  180. package/thirdparty/OpenXLSX/Scripts/demos-cleanup.sh +25 -0
  181. package/thirdparty/OpenXLSX/Scripts/demos-run-all.sh +60 -0
  182. package/thirdparty/OpenXLSX/Scripts/guarded-xml-format.sh +47 -0
  183. package/thirdparty/OpenXLSX/Scripts/make-gnu.sh +11 -0
  184. package/thirdparty/OpenXLSX/Scripts/uninstall-manifest.sh +48 -0
  185. package/thirdparty/OpenXLSX/Scripts/xml-format-all.sh +19 -0
  186. package/thirdparty/OpenXLSX/Scripts/xml-format.sh +38 -0
  187. package/thirdparty/OpenXLSX/Tests/CMakeLists.txt +37 -0
  188. package/thirdparty/OpenXLSX/Tests/catch/catch.hpp +17799 -0
  189. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_automake.hpp +68 -0
  190. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_sonarqube.hpp +182 -0
  191. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_tap.hpp +278 -0
  192. package/thirdparty/OpenXLSX/Tests/catch/catch_reporter_teamcity.hpp +212 -0
  193. package/thirdparty/OpenXLSX/Tests/main.cpp +55 -0
  194. package/thirdparty/OpenXLSX/Tests/testXLCell.cpp +176 -0
  195. package/thirdparty/OpenXLSX/Tests/testXLCellRange.cpp +180 -0
  196. package/thirdparty/OpenXLSX/Tests/testXLCellReference.cpp +160 -0
  197. package/thirdparty/OpenXLSX/Tests/testXLCellValue.cpp +366 -0
  198. package/thirdparty/OpenXLSX/Tests/testXLCellValueProxy.cpp +255 -0
  199. package/thirdparty/OpenXLSX/Tests/testXLColor.cpp +75 -0
  200. package/thirdparty/OpenXLSX/Tests/testXLDateTime.cpp +229 -0
  201. package/thirdparty/OpenXLSX/Tests/testXLDocument.cpp +197 -0
  202. package/thirdparty/OpenXLSX/Tests/testXLFormula.cpp +131 -0
  203. package/thirdparty/OpenXLSX/Tests/testXLRow.cpp +597 -0
  204. package/thirdparty/OpenXLSX/Tests/testXLSheet.cpp +77 -0
  205. package/thirdparty/OpenXLSX/Tests/ziptest-with-libs.cpp +88 -0
  206. package/thirdparty/OpenXLSX/Tests/ziptest.cpp +735 -0
  207. package/thirdparty/OpenXLSX/cmake/get-git-HEAD-ID.cmake +45 -0
  208. package/thirdparty/OpenXLSX/cmake/libopenxlsxCPackOptions.cmake.in +20 -0
  209. package/thirdparty/OpenXLSX/cmake/manage_dependency.cmake +813 -0
  210. package/thirdparty/OpenXLSX/cmake/recursive_library_type_test.cmake +52 -0
  211. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-shared.hpp +42 -0
  212. package/thirdparty/OpenXLSX/gnu-make-crutch/OpenXLSX-Exports-static.hpp +42 -0
  213. package/thirdparty/OpenXLSX/vcpkg.json +24 -0
  214. package/thirdparty/README.md +46 -0
  215. package/thirdparty/miniz/.clang-format +47 -0
  216. package/thirdparty/miniz/.travis.yml +2 -0
  217. package/thirdparty/miniz/CMakeLists.txt +333 -0
  218. package/thirdparty/miniz/CMakePresets.json +31 -0
  219. package/thirdparty/miniz/ChangeLog.md +272 -0
  220. package/thirdparty/miniz/Config.cmake.in +1 -0
  221. package/thirdparty/miniz/LICENSE +22 -0
  222. package/thirdparty/miniz/amalgamate.sh +57 -0
  223. package/thirdparty/miniz/examples/example1.c +105 -0
  224. package/thirdparty/miniz/examples/example2.c +164 -0
  225. package/thirdparty/miniz/examples/example3.c +269 -0
  226. package/thirdparty/miniz/examples/example4.c +102 -0
  227. package/thirdparty/miniz/examples/example5.c +327 -0
  228. package/thirdparty/miniz/examples/example6.c +189 -0
  229. package/thirdparty/miniz/meson.build +21 -0
  230. package/thirdparty/miniz/miniz.c +646 -0
  231. package/thirdparty/miniz/miniz.h +615 -0
  232. package/thirdparty/miniz/miniz.pc.in +13 -0
  233. package/thirdparty/miniz/miniz_common.h +89 -0
  234. package/thirdparty/miniz/miniz_export.h +20 -0
  235. package/thirdparty/miniz/miniz_tdef.c +1602 -0
  236. package/thirdparty/miniz/miniz_tdef.h +199 -0
  237. package/thirdparty/miniz/miniz_tinfl.c +778 -0
  238. package/thirdparty/miniz/miniz_tinfl.h +150 -0
  239. package/thirdparty/miniz/miniz_zip.c +4895 -0
  240. package/thirdparty/miniz/miniz_zip.h +454 -0
  241. package/thirdparty/miniz/readme.md +46 -0
  242. package/thirdparty/miniz/test.sh +36 -0
  243. package/thirdparty/miniz/tests/add_in_place_fuzzer.c +87 -0
  244. package/thirdparty/miniz/tests/catch_amalgamated.cpp +10795 -0
  245. package/thirdparty/miniz/tests/catch_amalgamated.hpp +13143 -0
  246. package/thirdparty/miniz/tests/checksum_fuzzer.c +26 -0
  247. package/thirdparty/miniz/tests/compress_fuzzer.c +91 -0
  248. package/thirdparty/miniz/tests/flush_fuzzer.c +88 -0
  249. package/thirdparty/miniz/tests/fuzz_main.c +55 -0
  250. package/thirdparty/miniz/tests/large_fuzzer.c +133 -0
  251. package/thirdparty/miniz/tests/main.cpp +185 -0
  252. package/thirdparty/miniz/tests/miniz_tdefl_fuzzer.cc +115 -0
  253. package/thirdparty/miniz/tests/miniz_tester.cpp +1881 -0
  254. package/thirdparty/miniz/tests/miniz_zip_validate_fuzzer.cc +71 -0
  255. package/thirdparty/miniz/tests/miniz_zip_writer_fuzzer.cc +96 -0
  256. package/thirdparty/miniz/tests/ossfuzz.sh +48 -0
  257. package/thirdparty/miniz/tests/small_fuzzer.c +126 -0
  258. package/thirdparty/miniz/tests/timer.cpp +152 -0
  259. package/thirdparty/miniz/tests/timer.h +40 -0
  260. package/thirdparty/miniz/tests/uncompress2_fuzzer.c +21 -0
  261. package/thirdparty/miniz/tests/uncompress_fuzzer.c +30 -0
  262. package/thirdparty/miniz/tests/zip.dict +9 -0
  263. package/thirdparty/miniz/tests/zip_fuzzer.c +63 -0
  264. package/thirdparty/pugixml/.codecov.yml +7 -0
  265. package/thirdparty/pugixml/.gitattributes +1 -0
  266. package/thirdparty/pugixml/CMakeLists.txt +330 -0
  267. package/thirdparty/pugixml/LICENSE.md +24 -0
  268. package/thirdparty/pugixml/Makefile +98 -0
  269. package/thirdparty/pugixml/README.md +81 -0
  270. package/thirdparty/pugixml/SECURITY.md +9 -0
  271. package/thirdparty/pugixml/appveyor.yml +50 -0
  272. package/thirdparty/pugixml/docs/config.adoc +7 -0
  273. package/thirdparty/pugixml/docs/images/dom_tree.png +0 -0
  274. package/thirdparty/pugixml/docs/images/vs2005_link1.png +0 -0
  275. package/thirdparty/pugixml/docs/images/vs2005_link2.png +0 -0
  276. package/thirdparty/pugixml/docs/images/vs2005_pch1.png +0 -0
  277. package/thirdparty/pugixml/docs/images/vs2005_pch2.png +0 -0
  278. package/thirdparty/pugixml/docs/images/vs2005_pch3.png +0 -0
  279. package/thirdparty/pugixml/docs/images/vs2005_pch4.png +0 -0
  280. package/thirdparty/pugixml/docs/images/vs2010_link1.png +0 -0
  281. package/thirdparty/pugixml/docs/images/vs2010_link2.png +0 -0
  282. package/thirdparty/pugixml/docs/manual.adoc +3326 -0
  283. package/thirdparty/pugixml/docs/manual.html +6395 -0
  284. package/thirdparty/pugixml/docs/quickstart.adoc +287 -0
  285. package/thirdparty/pugixml/docs/quickstart.html +1107 -0
  286. package/thirdparty/pugixml/docs/samples/character.xml +8 -0
  287. package/thirdparty/pugixml/docs/samples/custom_memory_management.cpp +27 -0
  288. package/thirdparty/pugixml/docs/samples/include.cpp +64 -0
  289. package/thirdparty/pugixml/docs/samples/load_error_handling.cpp +33 -0
  290. package/thirdparty/pugixml/docs/samples/load_file.cpp +16 -0
  291. package/thirdparty/pugixml/docs/samples/load_memory.cpp +66 -0
  292. package/thirdparty/pugixml/docs/samples/load_options.cpp +30 -0
  293. package/thirdparty/pugixml/docs/samples/load_stream.cpp +97 -0
  294. package/thirdparty/pugixml/docs/samples/modify_add.cpp +29 -0
  295. package/thirdparty/pugixml/docs/samples/modify_base.cpp +43 -0
  296. package/thirdparty/pugixml/docs/samples/modify_remove.cpp +27 -0
  297. package/thirdparty/pugixml/docs/samples/save_custom_writer.cpp +116 -0
  298. package/thirdparty/pugixml/docs/samples/save_declaration.cpp +27 -0
  299. package/thirdparty/pugixml/docs/samples/save_file.cpp +17 -0
  300. package/thirdparty/pugixml/docs/samples/save_options.cpp +48 -0
  301. package/thirdparty/pugixml/docs/samples/save_stream.cpp +18 -0
  302. package/thirdparty/pugixml/docs/samples/save_subtree.cpp +26 -0
  303. package/thirdparty/pugixml/docs/samples/text.cpp +35 -0
  304. package/thirdparty/pugixml/docs/samples/transitions.xml +7 -0
  305. package/thirdparty/pugixml/docs/samples/traverse_base.cpp +51 -0
  306. package/thirdparty/pugixml/docs/samples/traverse_iter.cpp +27 -0
  307. package/thirdparty/pugixml/docs/samples/traverse_predicate.cpp +48 -0
  308. package/thirdparty/pugixml/docs/samples/traverse_rangefor.cpp +32 -0
  309. package/thirdparty/pugixml/docs/samples/traverse_walker.cpp +35 -0
  310. package/thirdparty/pugixml/docs/samples/tree.xml +12 -0
  311. package/thirdparty/pugixml/docs/samples/weekly-shift_jis.xml +78 -0
  312. package/thirdparty/pugixml/docs/samples/weekly-utf-16.xml +0 -0
  313. package/thirdparty/pugixml/docs/samples/weekly-utf-8.xml +78 -0
  314. package/thirdparty/pugixml/docs/samples/xgconsole.xml +12 -0
  315. package/thirdparty/pugixml/docs/samples/xpath_error.cpp +43 -0
  316. package/thirdparty/pugixml/docs/samples/xpath_query.cpp +36 -0
  317. package/thirdparty/pugixml/docs/samples/xpath_select.cpp +28 -0
  318. package/thirdparty/pugixml/docs/samples/xpath_variables.cpp +38 -0
  319. package/thirdparty/pugixml/readme.txt +50 -0
  320. package/thirdparty/pugixml/scripts/archive.py +54 -0
  321. package/thirdparty/pugixml/scripts/cocoapods_push.sh +4 -0
  322. package/thirdparty/pugixml/scripts/natvis/pugixml.natvis +77 -0
  323. package/thirdparty/pugixml/scripts/natvis/pugixml_compact.natvis +506 -0
  324. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml-propertiesui.xml +17 -0
  325. package/thirdparty/pugixml/scripts/nuget/build/native/pugixml.targets +28 -0
  326. package/thirdparty/pugixml/scripts/nuget/pugixml.nuspec +20 -0
  327. package/thirdparty/pugixml/scripts/nuget_build.ps1 +60 -0
  328. package/thirdparty/pugixml/scripts/premake4.lua +92 -0
  329. package/thirdparty/pugixml/scripts/pugixml-config.cmake.in +12 -0
  330. package/thirdparty/pugixml/scripts/pugixml.pc.in +11 -0
  331. package/thirdparty/pugixml/scripts/pugixml.podspec +14 -0
  332. package/thirdparty/pugixml/scripts/pugixml.xcodeproj/project.pbxproj +212 -0
  333. package/thirdparty/pugixml/scripts/pugixml_airplay.mkf +13 -0
  334. package/thirdparty/pugixml/scripts/pugixml_codeblocks.cbp +44 -0
  335. package/thirdparty/pugixml/scripts/pugixml_codelite.project +56 -0
  336. package/thirdparty/pugixml/scripts/pugixml_dll.rc +45 -0
  337. package/thirdparty/pugixml/scripts/pugixml_vs2005.vcproj +343 -0
  338. package/thirdparty/pugixml/scripts/pugixml_vs2005_static.vcproj +343 -0
  339. package/thirdparty/pugixml/scripts/pugixml_vs2008.vcproj +339 -0
  340. package/thirdparty/pugixml/scripts/pugixml_vs2008_static.vcproj +339 -0
  341. package/thirdparty/pugixml/scripts/pugixml_vs2010.vcxproj +191 -0
  342. package/thirdparty/pugixml/scripts/pugixml_vs2010_static.vcxproj +191 -0
  343. package/thirdparty/pugixml/scripts/pugixml_vs2013.vcxproj +199 -0
  344. package/thirdparty/pugixml/scripts/pugixml_vs2013_static.vcxproj +199 -0
  345. package/thirdparty/pugixml/scripts/pugixml_vs2015.vcxproj +172 -0
  346. package/thirdparty/pugixml/scripts/pugixml_vs2015_static.vcxproj +176 -0
  347. package/thirdparty/pugixml/scripts/pugixml_vs2017.vcxproj +172 -0
  348. package/thirdparty/pugixml/scripts/pugixml_vs2017_static.vcxproj +176 -0
  349. package/thirdparty/pugixml/scripts/pugixml_vs2019.vcxproj +176 -0
  350. package/thirdparty/pugixml/scripts/pugixml_vs2019_static.vcxproj +180 -0
  351. package/thirdparty/pugixml/scripts/pugixml_vs2022.vcxproj +176 -0
  352. package/thirdparty/pugixml/scripts/pugixml_vs2022_static.vcxproj +180 -0
  353. package/thirdparty/pugixml/scripts/pugixml_vs2026.vcxproj +176 -0
  354. package/thirdparty/pugixml/scripts/pugixml_vs2026_static.vcxproj +180 -0
  355. package/thirdparty/pugixml/scripts/sbom.cdx.json +47 -0
  356. package/thirdparty/pugixml/src/pugiconfig.hpp +81 -0
  357. package/thirdparty/pugixml/src/pugixml.cpp +13776 -0
  358. package/thirdparty/pugixml/src/pugixml.hpp +1604 -0
  359. package/thirdparty/pugixml/tests/allocator.cpp +175 -0
  360. package/thirdparty/pugixml/tests/allocator.hpp +10 -0
  361. package/thirdparty/pugixml/tests/autotest-appveyor.ps1 +93 -0
  362. package/thirdparty/pugixml/tests/cmake-appveyor.ps1 +57 -0
  363. package/thirdparty/pugixml/tests/data/empty.xml +0 -0
  364. package/thirdparty/pugixml/tests/data/large.xml +1 -0
  365. package/thirdparty/pugixml/tests/data/latintest_latin1.xml +1 -0
  366. package/thirdparty/pugixml/tests/data/latintest_utf8.xml +1 -0
  367. package/thirdparty/pugixml/tests/data/multiline.xml +3 -0
  368. package/thirdparty/pugixml/tests/data/small.xml +1 -0
  369. package/thirdparty/pugixml/tests/data/truncation.xml +19 -0
  370. package/thirdparty/pugixml/tests/data/utftest_utf16_be.xml +0 -0
  371. package/thirdparty/pugixml/tests/data/utftest_utf16_be_bom.xml +0 -0
  372. package/thirdparty/pugixml/tests/data/utftest_utf16_be_clean.xml +0 -0
  373. package/thirdparty/pugixml/tests/data/utftest_utf16_be_nodecl.xml +0 -0
  374. package/thirdparty/pugixml/tests/data/utftest_utf16_le.xml +0 -0
  375. package/thirdparty/pugixml/tests/data/utftest_utf16_le_bom.xml +0 -0
  376. package/thirdparty/pugixml/tests/data/utftest_utf16_le_clean.xml +0 -0
  377. package/thirdparty/pugixml/tests/data/utftest_utf16_le_nodecl.xml +0 -0
  378. package/thirdparty/pugixml/tests/data/utftest_utf32_be.xml +0 -0
  379. package/thirdparty/pugixml/tests/data/utftest_utf32_be_bom.xml +0 -0
  380. package/thirdparty/pugixml/tests/data/utftest_utf32_be_clean.xml +0 -0
  381. package/thirdparty/pugixml/tests/data/utftest_utf32_be_nodecl.xml +0 -0
  382. package/thirdparty/pugixml/tests/data/utftest_utf32_le.xml +0 -0
  383. package/thirdparty/pugixml/tests/data/utftest_utf32_le_bom.xml +0 -0
  384. package/thirdparty/pugixml/tests/data/utftest_utf32_le_clean.xml +0 -0
  385. package/thirdparty/pugixml/tests/data/utftest_utf32_le_nodecl.xml +0 -0
  386. package/thirdparty/pugixml/tests/data/utftest_utf8.xml +87 -0
  387. package/thirdparty/pugixml/tests/data/utftest_utf8_bom.xml +87 -0
  388. package/thirdparty/pugixml/tests/data/utftest_utf8_clean.xml +84 -0
  389. package/thirdparty/pugixml/tests/data/utftest_utf8_nodecl.xml +86 -0
  390. package/thirdparty/pugixml/tests/data//321/202/320/265/321/201/321/202.xml +1 -0
  391. package/thirdparty/pugixml/tests/data_fuzz_parse/basic.xml +1 -0
  392. package/thirdparty/pugixml/tests/data_fuzz_parse/doctype.xml +1 -0
  393. package/thirdparty/pugixml/tests/data_fuzz_parse/refs.xml +1 -0
  394. package/thirdparty/pugixml/tests/data_fuzz_parse/types.xml +1 -0
  395. package/thirdparty/pugixml/tests/data_fuzz_parse/utf16.xml +0 -0
  396. package/thirdparty/pugixml/tests/data_fuzz_parse/utf32.xml +0 -0
  397. package/thirdparty/pugixml/tests/data_fuzz_xpath/basic.xpath +1 -0
  398. package/thirdparty/pugixml/tests/data_fuzz_xpath/functions.xpath +1 -0
  399. package/thirdparty/pugixml/tests/data_fuzz_xpath/math.xpath +1 -0
  400. package/thirdparty/pugixml/tests/data_fuzz_xpath/path.xpath +1 -0
  401. package/thirdparty/pugixml/tests/data_fuzz_xpath/predicate.xpath +1 -0
  402. package/thirdparty/pugixml/tests/fuzz_parse.cpp +14 -0
  403. package/thirdparty/pugixml/tests/fuzz_parse.dict +72 -0
  404. package/thirdparty/pugixml/tests/fuzz_setup.sh +11 -0
  405. package/thirdparty/pugixml/tests/fuzz_xpath.cpp +46 -0
  406. package/thirdparty/pugixml/tests/fuzz_xpath.dict +72 -0
  407. package/thirdparty/pugixml/tests/helpers.hpp +114 -0
  408. package/thirdparty/pugixml/tests/main.cpp +218 -0
  409. package/thirdparty/pugixml/tests/test.cpp +220 -0
  410. package/thirdparty/pugixml/tests/test.hpp +175 -0
  411. package/thirdparty/pugixml/tests/test_compact.cpp +150 -0
  412. package/thirdparty/pugixml/tests/test_deprecated.cpp +25 -0
  413. package/thirdparty/pugixml/tests/test_document.cpp +1910 -0
  414. package/thirdparty/pugixml/tests/test_dom_modify.cpp +2122 -0
  415. package/thirdparty/pugixml/tests/test_dom_text.cpp +601 -0
  416. package/thirdparty/pugixml/tests/test_dom_traverse.cpp +1481 -0
  417. package/thirdparty/pugixml/tests/test_header_guard.cpp +3 -0
  418. package/thirdparty/pugixml/tests/test_header_iosfwd_1.cpp +3 -0
  419. package/thirdparty/pugixml/tests/test_header_iosfwd_2.cpp +3 -0
  420. package/thirdparty/pugixml/tests/test_header_iostream_1.cpp +3 -0
  421. package/thirdparty/pugixml/tests/test_header_iostream_2.cpp +3 -0
  422. package/thirdparty/pugixml/tests/test_header_only_1.cpp +21 -0
  423. package/thirdparty/pugixml/tests/test_header_only_2.cpp +21 -0
  424. package/thirdparty/pugixml/tests/test_header_string_1.cpp +3 -0
  425. package/thirdparty/pugixml/tests/test_header_string_2.cpp +3 -0
  426. package/thirdparty/pugixml/tests/test_header_string_iostream.cpp +5 -0
  427. package/thirdparty/pugixml/tests/test_memory.cpp +303 -0
  428. package/thirdparty/pugixml/tests/test_parse.cpp +1463 -0
  429. package/thirdparty/pugixml/tests/test_parse_doctype.cpp +366 -0
  430. package/thirdparty/pugixml/tests/test_unicode.cpp +152 -0
  431. package/thirdparty/pugixml/tests/test_version.cpp +5 -0
  432. package/thirdparty/pugixml/tests/test_write.cpp +757 -0
  433. package/thirdparty/pugixml/tests/test_xpath.cpp +833 -0
  434. package/thirdparty/pugixml/tests/test_xpath_api.cpp +646 -0
  435. package/thirdparty/pugixml/tests/test_xpath_functions.cpp +844 -0
  436. package/thirdparty/pugixml/tests/test_xpath_operators.cpp +566 -0
  437. package/thirdparty/pugixml/tests/test_xpath_parse.cpp +428 -0
  438. package/thirdparty/pugixml/tests/test_xpath_paths.cpp +787 -0
  439. package/thirdparty/pugixml/tests/test_xpath_paths_abbrev_w3c.cpp +219 -0
  440. package/thirdparty/pugixml/tests/test_xpath_paths_w3c.cpp +312 -0
  441. package/thirdparty/pugixml/tests/test_xpath_variables.cpp +683 -0
  442. package/thirdparty/pugixml/tests/test_xpath_xalan_1.cpp +411 -0
  443. package/thirdparty/pugixml/tests/test_xpath_xalan_2.cpp +417 -0
  444. package/thirdparty/pugixml/tests/test_xpath_xalan_3.cpp +321 -0
  445. package/thirdparty/pugixml/tests/test_xpath_xalan_4.cpp +300 -0
  446. package/thirdparty/pugixml/tests/test_xpath_xalan_5.cpp +295 -0
  447. package/thirdparty/pugixml/tests/writer_string.cpp +79 -0
  448. package/thirdparty/pugixml/tests/writer_string.hpp +27 -0
  449. package/scripts/prepare-openxlsx.js +0 -126
@@ -18,32 +18,124 @@ import {
18
18
  } from '../index';
19
19
 
20
20
  describe('NitroXlsx', () => {
21
+ beforeEach(() => {
22
+ jest.clearAllMocks();
23
+ });
24
+
21
25
  it('should export NitroXlsx object', () => {
22
26
  expect(NitroXlsx).toBeDefined();
23
27
  expect(typeof NitroXlsx).toBe('object');
24
28
  });
25
29
 
26
- it('should have createWorkbook method', () => {
27
- expect(NitroXlsx.createWorkbook).toBeDefined();
28
- expect(typeof NitroXlsx.createWorkbook).toBe('function');
30
+ it('createWorkbook returns a workbook implementing the spec surface', () => {
31
+ const wb = NitroXlsx.createWorkbook();
32
+ expect(typeof wb.addWorksheet).toBe('function');
33
+ expect(typeof wb.getBuffer).toBe('function');
34
+ expect(typeof wb.toJSON).toBe('function');
35
+ expect(wb.getWorksheetCount()).toBe(0);
36
+ });
37
+
38
+ it('addWorksheet registers the sheet and forwards its argument', () => {
39
+ const wb = NitroXlsx.createWorkbook();
40
+ const ws = wb.addWorksheet('Data');
41
+ expect(ws.getName()).toBe('Data');
42
+ expect(wb.getWorksheetCount()).toBe(1);
43
+ expect(wb.getWorksheet(0)).toBe(ws);
44
+ expect(jest.mocked(wb.addWorksheet).mock.calls[0]).toEqual(['Data']);
45
+ });
46
+
47
+ it('worksheet write/read methods round-trip cell values', () => {
48
+ const ws = NitroXlsx.createWorkbook().addWorksheet('Data');
49
+ ws.writeNumber(1, 2, 3.5);
50
+ expect(ws.getCellValue(1, 2)).toBe(3.5);
51
+ expect(ws.getCellType(1, 2)).toBe('number');
52
+ ws.writeString(0, 0, 'Hello');
53
+ expect(ws.getCellString(0, 0)).toBe('Hello');
54
+ ws.writeFormula(3, 3, 'A1+B1');
55
+ expect(ws.hasFormula(3, 3)).toBe(true);
56
+ expect(ws.formula(3, 3)).toBe('A1+B1');
57
+ expect(ws.getCellValue(9, 9)).toBeNull();
58
+ });
59
+
60
+ it('getBuffer resolves an ArrayBuffer', async () => {
61
+ const wb = NitroXlsx.createWorkbook();
62
+ await expect(wb.getBuffer()).resolves.toBeInstanceOf(ArrayBuffer);
63
+ });
64
+
65
+ it('toJSON returns rows keyed by sheet name', () => {
66
+ const wb = NitroXlsx.createWorkbook();
67
+ const ws = wb.addWorksheet('Data');
68
+ ws.writeString(0, 0, 'Hello');
69
+ ws.writeNumber(0, 1, 42);
70
+ expect(wb.toJSON()).toEqual({ Data: [{ '0': 'Hello', '1': 42 }] });
71
+ });
72
+
73
+ it('openWorkbook forwards the path and returns a workbook', () => {
74
+ const wb = NitroXlsx.openWorkbook('/tmp/report.xlsx');
75
+ expect(jest.mocked(NitroXlsx.openWorkbook).mock.calls[0]).toEqual(['/tmp/report.xlsx']);
76
+ expect(typeof wb.addWorksheet).toBe('function');
77
+ expect(wb.getWorksheetCount()).toBe(0);
29
78
  });
30
79
 
31
- it('should have openWorkbook method', () => {
32
- expect(NitroXlsx.openWorkbook).toBeDefined();
33
- expect(typeof NitroXlsx.openWorkbook).toBe('function');
80
+ it('openWorkbookFromBuffer forwards the buffer', () => {
81
+ const buffer = new ArrayBuffer(16);
82
+ NitroXlsx.openWorkbookFromBuffer(buffer);
83
+ expect(jest.mocked(NitroXlsx.openWorkbookFromBuffer).mock.calls[0]?.[0]).toBe(buffer);
34
84
  });
35
85
 
36
- it('should have openWorkbookFromBuffer method', () => {
37
- expect(NitroXlsx.openWorkbookFromBuffer).toBeDefined();
38
- expect(typeof NitroXlsx.openWorkbookFromBuffer).toBe('function');
86
+ it('fromJSON forwards the sheet rows and returns a workbook', () => {
87
+ const data = { Sheet1: [{ Name: 'Alice', Age: 30 }] };
88
+ const wb = NitroXlsx.fromJSON(data);
89
+ expect(jest.mocked(NitroXlsx.fromJSON).mock.calls[0]).toEqual([data]);
90
+ expect(typeof wb.addWorksheet).toBe('function');
39
91
  });
40
92
 
41
- it('should have fromJSON method that accepts a Record of sheet rows', () => {
42
- expect(NitroXlsx.fromJSON).toBeDefined();
43
- expect(typeof NitroXlsx.fromJSON).toBe('function');
44
- expect(() =>
45
- NitroXlsx.fromJSON({ Sheet1: [{ Name: 'Alice', Age: 30 }] })
46
- ).not.toThrow();
93
+ it('sheet lookup, rename, clone and delete follow the native contract', () => {
94
+ const wb = NitroXlsx.createWorkbook();
95
+ const ws = wb.addWorksheet('Data');
96
+ wb.updateSheetName('Data', 'Raw');
97
+ expect(ws.getName()).toBe('Raw');
98
+ const copy = wb.clone('Raw', 'Copy');
99
+ expect(copy.getName()).toBe('Copy');
100
+ expect(wb.getWorksheetCount()).toBe(2);
101
+ wb.deleteSheet('Copy');
102
+ expect(wb.getWorksheetCount()).toBe(1);
103
+ });
104
+
105
+ it('lookup misses throw native-style errors parseable by XlsxError.from', () => {
106
+ expect.assertions(2);
107
+ const wb = NitroXlsx.createWorkbook();
108
+ try {
109
+ wb.getWorksheetByName('missing');
110
+ } catch (e) {
111
+ const err = XlsxError.from(e);
112
+ expect(err.code).toBe('SHEET_NOT_FOUND');
113
+ expect(err.message).toContain('missing');
114
+ }
115
+ });
116
+
117
+ it('cell format setters update the read-back getters', () => {
118
+ const fmt = NitroXlsx.createWorkbook().addCellFormat();
119
+ fmt.setBold();
120
+ expect(fmt.getIsBold()).toBe(true);
121
+ fmt.setNumFormat('0.00%');
122
+ expect(fmt.getNumFormat()).toBe('0.00%');
123
+ fmt.setFontSize(14);
124
+ expect(fmt.getFontSize()).toBe(14);
125
+ });
126
+
127
+ it('conditional formats create rules and round-trip rule edits', () => {
128
+ const ws = NitroXlsx.createWorkbook().addWorksheet('Data');
129
+ const cfs = ws.getConditionalFormats();
130
+ const cf = cfs.create('A1:A5');
131
+ expect(cf.getSqref()).toBe('A1:A5');
132
+ expect(cfs.getCount()).toBe(1);
133
+ const rule = cf.createRule();
134
+ expect(rule).toBe(0);
135
+ cf.setRuleType(rule, 1);
136
+ cf.setRuleFormula(rule, 0, 'A1>5');
137
+ expect(cf.getRuleType(rule)).toBe(1);
138
+ expect(cf.getRuleFormula(rule, 0)).toBe('A1>5');
47
139
  });
48
140
  });
49
141
 
@@ -137,9 +229,18 @@ describe('Constants', () => {
137
229
  expect(NumFormat.NUMBER).toBe(1);
138
230
  expect(NumFormat.CURRENCY).toBe(5);
139
231
  expect(NumFormat.PERCENT).toBe(9);
140
- expect(NumFormat.DATE_1).toBe(15);
232
+ expect(NumFormat.SCIENTIFIC).toBe(11);
233
+ expect(NumFormat.FRACTION_1).toBe(12);
234
+ expect(NumFormat.DATE_1).toBe(14);
235
+ expect(NumFormat.TIME_1).toBe(18);
236
+ expect(NumFormat.DATETIME).toBe(22);
141
237
  expect(NumFormat.TEXT).toBe(49);
142
238
  });
239
+
240
+ it('should not expose nonexistent built-in numFmtIds', () => {
241
+ expect('SCIENTIFIC_2' in NumFormat).toBe(false);
242
+ expect('DATE_5' in NumFormat).toBe(false);
243
+ });
143
244
  });
144
245
 
145
246
  describe('CfType', () => {
@@ -198,6 +299,13 @@ describe('XlsxError', () => {
198
299
  expect(err.message).toContain('Worksheet not found: Foo');
199
300
  });
200
301
 
302
+ it('should parse native INVALID_ARGUMENT errors', () => {
303
+ const native = new Error('writeNumber: INVALID_ARGUMENT: bad arg');
304
+ const err = XlsxError.from(native);
305
+ expect(err.code).toBe('INVALID_ARGUMENT');
306
+ expect(err.message).toContain('bad arg');
307
+ });
308
+
201
309
  it('should wrap unknown errors with INTERNAL_ERROR', () => {
202
310
  const err = XlsxError.from(new Error('something odd'));
203
311
  expect(err.code).toBe('INTERNAL_ERROR');
package/src/index.ts CHANGED
@@ -265,7 +265,9 @@ export const Colors = {
265
265
  FUCHSIA: 0xFF00FF,
266
266
  } as const
267
267
 
268
- // Built-in number format indices
268
+ // Built-in number format indices (ECMA-376 §18.8.30 numFmtId values).
269
+ // Note: ids 5-8 are locale-dependent currency variants; 14-22 are locale-dependent
270
+ // date/time formats. There is no second built-in scientific format (11 is the only one).
269
271
  export const NumFormat = {
270
272
  GENERAL: 0,
271
273
  NUMBER: 1,
@@ -279,18 +281,16 @@ export const NumFormat = {
279
281
  PERCENT: 9,
280
282
  PERCENT_2: 10,
281
283
  SCIENTIFIC: 11,
282
- SCIENTIFIC_2: 12,
283
- FRACTION_1: 13,
284
- FRACTION_2: 14,
285
- DATE_1: 15,
286
- DATE_2: 16,
287
- DATE_3: 17,
288
- DATE_4: 18,
289
- DATE_5: 19,
290
- TIME_1: 20,
291
- TIME_2: 21,
292
- TIME_3: 22,
293
- TIME_4: 23,
284
+ FRACTION_1: 12,
285
+ FRACTION_2: 13,
286
+ DATE_1: 14,
287
+ DATE_2: 15,
288
+ DATE_3: 16,
289
+ DATE_4: 17,
290
+ TIME_1: 18,
291
+ TIME_2: 19,
292
+ TIME_3: 20,
293
+ TIME_4: 21,
294
294
  DATETIME: 22,
295
295
  TEXT: 49,
296
296
  } as const
@@ -0,0 +1,118 @@
1
+ Language: Cpp
2
+ Standard: c++11
3
+ AccessModifierOffset: -4
4
+ AlignAfterOpenBracket: Align
5
+ AlignConsecutiveAssignments: true
6
+ AlignConsecutiveDeclarations: true
7
+ AlignEscapedNewlines: Left
8
+ AlignOperands: Align
9
+ AlignTrailingComments: true
10
+ AllowAllArgumentsOnNextLine: false
11
+ AllowAllConstructorInitializersOnNextLine: false
12
+ AllowAllParametersOfDeclarationOnNextLine: false
13
+ AllowShortBlocksOnASingleLine: Always
14
+ AllowShortCaseLabelsOnASingleLine: false
15
+ AllowShortEnumsOnASingleLine: true
16
+ AllowShortFunctionsOnASingleLine: All
17
+ AllowShortIfStatementsOnASingleLine: WithoutElse
18
+ AllowShortLambdasOnASingleLine: All
19
+ AllowShortLoopsOnASingleLine: true
20
+ AlwaysBreakAfterReturnType: None
21
+ AlwaysBreakBeforeMultilineStrings: false
22
+ AlwaysBreakTemplateDeclarations: Yes
23
+ BinPackArguments: false
24
+ BinPackParameters: false
25
+ BreakBeforeBraces: Custom
26
+ BraceWrapping:
27
+ AfterCaseLabel: false
28
+ AfterClass: true
29
+ AfterControlStatement: MultiLine
30
+ AfterEnum: false
31
+ AfterFunction: true
32
+ AfterNamespace: true
33
+ AfterObjCDeclaration: false
34
+ AfterStruct: true
35
+ AfterUnion: true
36
+ AfterExternBlock: true
37
+ BeforeCatch: true
38
+ BeforeElse: true
39
+ BeforeLambdaBody: false
40
+ BeforeWhile: true
41
+ IndentBraces: false
42
+ SplitEmptyFunction: false
43
+ SplitEmptyNamespace: true
44
+ SplitEmptyRecord: true
45
+ BreakAfterJavaFieldAnnotations: true
46
+ BreakBeforeBinaryOperators: None
47
+ #BreakBeforeInheritanceComma: true
48
+ BreakBeforeTernaryOperators: true
49
+ BreakConstructorInitializers: BeforeColon
50
+ #BreakConstructorInitializersBeforeComma: false
51
+ BreakInheritanceList: BeforeColon
52
+ BreakStringLiterals: true
53
+ ColumnLimit: 140
54
+ CommentPragmas: '^ IWYU pragma:'
55
+ CompactNamespaces: false
56
+ ConstructorInitializerAllOnOneLineOrOnePerLine: true
57
+ ConstructorInitializerIndentWidth: 4
58
+ ContinuationIndentWidth: 4
59
+ Cpp11BracedListStyle: false
60
+ DeriveLineEnding: false
61
+ DerivePointerAlignment: false
62
+ DisableFormat: false
63
+ ExperimentalAutoDetectBinPacking: true
64
+ FixNamespaceComments: true
65
+ ForEachMacros:
66
+ - foreach
67
+ - Q_FOREACH
68
+ - BOOST_FOREACH
69
+ IncludeBlocks: Preserve
70
+ IncludeCategories:
71
+ - Priority: 2
72
+ Regex: ^"(llvm|llvm-c|clang|clang-c)/
73
+ - Priority: 3
74
+ Regex: ^(<|"(gtest|gmock|isl|json)/)
75
+ - Priority: 1
76
+ Regex: .*
77
+ IncludeIsMainRegex: (Test)?$
78
+ IndentCaseLabels: true
79
+ IndentExternBlock: AfterExternBlock
80
+ IndentGotoLabels: false
81
+ IndentPPDirectives: AfterHash
82
+ IndentWidth: 4
83
+ IndentWrappedFunctionNames: true
84
+ JavaScriptQuotes: Leave
85
+ JavaScriptWrapImports: true
86
+ KeepEmptyLinesAtTheStartOfBlocks: false
87
+ MacroBlockBegin: ''
88
+ MacroBlockEnd: ''
89
+ MaxEmptyLinesToKeep: 1
90
+ NamespaceIndentation: All
91
+ ObjCBlockIndentWidth: 7
92
+ ObjCSpaceAfterProperty: true
93
+ ObjCSpaceBeforeProtocolList: false
94
+ PointerAlignment: Left
95
+ ReflowComments: true
96
+ SortIncludes: true
97
+ SortUsingDeclarations: true
98
+ SpaceAfterCStyleCast: false
99
+ SpaceAfterLogicalNot: false
100
+ SpaceAfterTemplateKeyword: false
101
+ SpaceBeforeAssignmentOperators: true
102
+ SpaceBeforeCpp11BracedList: true
103
+ SpaceBeforeCtorInitializerColon: true
104
+ SpaceBeforeInheritanceColon: true
105
+ SpaceBeforeParens: ControlStatements
106
+ SpaceBeforeRangeBasedForLoopColon: true
107
+ SpaceBeforeSquareBrackets: false
108
+ SpaceInEmptyBlock: false
109
+ SpaceInEmptyParentheses: false
110
+ SpacesBeforeTrailingComments: 4
111
+ SpacesInAngles: false
112
+ SpacesInCStyleCastParentheses: false
113
+ SpacesInConditionalStatement: false
114
+ SpacesInContainerLiterals: false
115
+ SpacesInParentheses: false
116
+ SpacesInSquareBrackets: false
117
+ TabWidth: 8
118
+ UseTab: Never
@@ -0,0 +1,28 @@
1
+ ---
2
+ Checks: >-
3
+ *,
4
+ -llvmlibc-*,
5
+ -llvm-header-guard,
6
+ -fuchsia-*,
7
+ -modernize-use-trailing-return-type,
8
+ -modernize-use-nodiscard,
9
+ -modernize-avoid-c-arrays,
10
+ -modernize-pass-by-value,
11
+ -readability-braces-around-statements,
12
+ -readability-implicit-bool-conversion,
13
+ -readability-else-after-return,
14
+ -readability-convert-member-functions-to-static,
15
+ -cppcoreguidelines-avoid-c-arrays,
16
+ -hicpp-avoid-c-arrays,
17
+ -hicpp-braces-around-statements,
18
+ -google-readability-braces-around-statements,
19
+ -google-build-using-namespace,
20
+ -bugprone-infinite-loop,
21
+ -abseil-string-find-startswith,
22
+ -abseil-string-find-str-contains,
23
+ -altera-unroll-loops,
24
+ -cppcoreguidelines-pro-bounds-array-to-pointer-decay
25
+
26
+ WarningsAsErrors: '*'
27
+ HeaderFilterRegex: ''
28
+ FormatStyle: none
@@ -0,0 +1,130 @@
1
+ # ignore everything
2
+ /*
3
+
4
+ # include generic files
5
+ !/.clang-format
6
+ !/.clang-tidy
7
+ !/.gitignore
8
+ !/LICENSE.md
9
+ !/NOTICE
10
+ !/README.md
11
+
12
+ # include root directory files
13
+ !/CMakeLists.txt
14
+ !/Makefile.GNU
15
+ !/vcpkg.json
16
+
17
+ # include Benchmarks folder
18
+ !/Benchmarks
19
+ # exclude everything *in* Benchmarks folder
20
+ /Benchmarks/*
21
+ # re-include specifically what is desired from Benchmarks folder
22
+ !/Benchmarks/*.cpp
23
+ !/Benchmarks/*.txt
24
+ !/Benchmarks/2024-07-29-benchmarks_before_XMLNode_wrappers
25
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_and_stripping
26
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_char_support
27
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespaced_name_disabled
28
+ !/Benchmarks/2024-07-29-benchmarks_with_XMLNode_wrappers_and_namespace_support
29
+ !/Benchmarks/2024-08-11-benchmarks_post-XLCellIterator-Rework
30
+ !/Benchmarks/2024-08-14-benchmarks_post-default-row-column-style-support
31
+ !/Benchmarks/2024-09-02-benchmarks
32
+ !/Benchmarks/2024-12-19-benchmarks
33
+ !/Benchmarks/2024-12-30-benchmarks-post-XLSharedStrings-by-ref
34
+ !/Benchmarks/2025-01-09-benchmarks-post-conditionalFormatsAndSheetProtection
35
+ !/Benchmarks/2025-01-10-benchmarks-post-XLCellValue-bugfix
36
+ !/Benchmarks/2025-01-31-benchmarks-post-XLComments-implementation
37
+ !/Benchmarks/2025-02-02-benchmarks-post-XLRowIterator-Rework
38
+ !/Benchmarks/2025-07-20-benchmarks-after-hiding-pugixml-internals
39
+ !/Benchmarks/2025-08-29-benchmarks-after-code-review-with-libzip
40
+
41
+ # include cmake folder
42
+ !/cmake
43
+ # exclude everything *in* cmake folder
44
+ /cmake/*
45
+ # re-include specifically what is desired from cmake folder
46
+ !/cmake/get-git-HEAD-ID.cmake
47
+ !/cmake/libopenxlsxCPackOptions.cmake.in
48
+ !/cmake/manage_dependency.cmake
49
+ !/cmake/recursive_library_type_test.cmake
50
+
51
+ # include Documentation folder
52
+ !/Documentation
53
+ # exclude everything *in* Documentation folder
54
+ /Documentation/*
55
+ # re-include specifically what is desired from Documentation folder
56
+ !/Documentation/*.txt
57
+ !/Documentation/*.css
58
+ !/Documentation/*.in
59
+ !/Documentation/*.xml
60
+
61
+ # include Examples folder
62
+ !/Examples
63
+ # exclude everything *in* Examples folder
64
+ /Examples/*
65
+ # re-include specifically what is desired from Examples folder
66
+ !/Examples/cmake
67
+ !/Examples/cmake/*
68
+ !/Examples/CMakeLists.txt
69
+ !/Examples/*.cpp
70
+ !/Examples/external
71
+ !/Examples/external/*
72
+
73
+ # include gnu-make-crutch folder
74
+ !/gnu-make-crutch
75
+ # exclude everything *in* gnu-make-crutch folder
76
+ /gnu-make-crutch/*
77
+ # re-include specifically what is desired from gnu-make-crutch folder
78
+ !/gnu-make-crutch/OpenXLSX-Exports-shared.hpp
79
+ !/gnu-make-crutch/OpenXLSX-Exports-static.hpp
80
+
81
+ # include Notes folder
82
+ !/Notes
83
+ # exclude everything *in* Notes folder
84
+ /Notes/*
85
+ # re-include specifically what is desired from Notes folder
86
+ !/Notes/styles-missing-support.xml
87
+ !/Notes/todo-list.txt
88
+ !/Notes/confirmed-TBCs.txt
89
+ !/Notes/TBDs.txt
90
+
91
+ # include OpenXLSX folder
92
+ !/OpenXLSX
93
+ # exclude everything *in* OpenXLSX folder
94
+ /OpenXLSX/*
95
+ # re-include specifically what is desired from OpenXLSX folder
96
+ !/OpenXLSX/CMakeLists.txt
97
+ !/OpenXLSX/cmake
98
+ !/OpenXLSX/cmake/*
99
+ !/OpenXLSX/headers
100
+ !/OpenXLSX/headers/*
101
+ !/OpenXLSX/OpenXLSXConfig.cmake
102
+ !/OpenXLSX/OpenXLSX.hpp
103
+ !/OpenXLSX/sources
104
+ !/OpenXLSX/sources/*
105
+
106
+ # include Scripts folder
107
+ !/Scripts
108
+ # exclude everything *in* Scripts folder
109
+ /Scripts/*
110
+ # re-include specifically what is desired from Scripts folder
111
+ !/Scripts/demos-cleanup.sh
112
+ !/Scripts/cmake-cleanup.sh
113
+ !/Scripts/compile.sh
114
+ !/Scripts/demos-cleanup.sh
115
+ !/Scripts/demos-run-all.sh
116
+ !/Scripts/guarded-xml-format.sh
117
+ !/Scripts/make-gnu.sh
118
+ !/Scripts/uninstall-manifest.sh
119
+ !/Scripts/xml-format-all.sh
120
+ !/Scripts/xml-format.sh
121
+
122
+ # include Tests folder
123
+ !/Tests
124
+ # exclude everything *in* Tests folder
125
+ /Tests/*
126
+ # re-include specifically what is desired from Tests folder
127
+ !/Tests/catch
128
+ !/Tests/catch/*.hpp
129
+ !/Tests/CMakeLists.txt
130
+ !/Tests/*.cpp
@@ -0,0 +1,46 @@
1
+ ********************************************************************************
2
+ DEMO PROGRAM #05: Ranges and Iterators
3
+ ********************************************************************************
4
+
5
+ Generating spreadsheet ...
6
+ Saving spreadsheet ...
7
+ Re-opening spreadsheet ...
8
+ Reading data from spreadsheet ...
9
+ Cell count: 8388608
10
+ Sum of cell values: 415102003
11
+
12
+ real 1m26.038s
13
+ user 1m24.521s
14
+ sys 0m1.504s
15
+
16
+
17
+ ********************************************************************************
18
+ DEMO PROGRAM #06: Row Handling (using containers)
19
+ ********************************************************************************
20
+
21
+ Generating spreadsheet ...
22
+ Saving spreadsheet ...
23
+ Re-opening spreadsheet ...
24
+ Reading data from spreadsheet ...
25
+ Cell count: 8388608
26
+ Sum of cell values: 415150405
27
+
28
+ real 1m20.013s
29
+ user 1m18.049s
30
+ sys 0m1.591s
31
+
32
+
33
+ ********************************************************************************
34
+ DEMO PROGRAM #07: Row Handling (using iterators)
35
+ ********************************************************************************
36
+
37
+ Generating spreadsheet ...
38
+ Saving spreadsheet ...
39
+ Re-opening spreadsheet ...
40
+ Reading data from spreadsheet ...
41
+ Cell count: 8388608
42
+ Sum of cell values: 415343427
43
+
44
+ real 1m52.664s
45
+ user 1m50.974s
46
+ sys 0m1.632s
@@ -0,0 +1,49 @@
1
+ ********************************************************************************
2
+ DEMO PROGRAM #05: Ranges and Iterators
3
+ ********************************************************************************
4
+ enabled support for xml namespaces!
5
+
6
+ Generating spreadsheet ...
7
+ Saving spreadsheet ...
8
+ Re-opening spreadsheet ...
9
+ Reading data from spreadsheet ...
10
+ Cell count: 8388608
11
+ Sum of cell values: 415046107
12
+
13
+ real 1m42.089s
14
+ user 1m40.238s
15
+ sys 0m1.583s
16
+
17
+
18
+ ********************************************************************************
19
+ DEMO PROGRAM #06: Row Handling (using containers)
20
+ ********************************************************************************
21
+ enabled support for xml namespaces!
22
+
23
+ Generating spreadsheet ...
24
+ Saving spreadsheet ...
25
+ Re-opening spreadsheet ...
26
+ Reading data from spreadsheet ...
27
+ Cell count: 8388608
28
+ Sum of cell values: 415269516
29
+
30
+ real 1m34.392s
31
+ user 1m32.687s
32
+ sys 0m1.376s
33
+
34
+
35
+ ********************************************************************************
36
+ DEMO PROGRAM #07: Row Handling (using iterators)
37
+ ********************************************************************************
38
+ enabled support for xml namespaces!
39
+
40
+ Generating spreadsheet ...
41
+ Saving spreadsheet ...
42
+ Re-opening spreadsheet ...
43
+ Reading data from spreadsheet ...
44
+ Cell count: 8388608
45
+ Sum of cell values: 415227846
46
+
47
+ real 2m9.630s
48
+ user 2m7.974s
49
+ sys 0m1.636s
@@ -0,0 +1,49 @@
1
+ ********************************************************************************
2
+ DEMO PROGRAM #05: Ranges and Iterators
3
+ ********************************************************************************
4
+ enabled support for xml namespaces!
5
+
6
+ Generating spreadsheet ...
7
+ Saving spreadsheet ...
8
+ Re-opening spreadsheet ...
9
+ Reading data from spreadsheet ...
10
+ Cell count: 8388608
11
+ Sum of cell values: 415211439
12
+
13
+ real 1m29.112s
14
+ user 1m26.715s
15
+ sys 0m1.498s
16
+
17
+
18
+ ********************************************************************************
19
+ DEMO PROGRAM #06: Row Handling (using containers)
20
+ ********************************************************************************
21
+ enabled support for xml namespaces!
22
+
23
+ Generating spreadsheet ...
24
+ Saving spreadsheet ...
25
+ Re-opening spreadsheet ...
26
+ Reading data from spreadsheet ...
27
+ Cell count: 8388608
28
+ Sum of cell values: 415203923
29
+
30
+ real 1m21.407s
31
+ user 1m20.015s
32
+ sys 0m1.384s
33
+
34
+
35
+ ********************************************************************************
36
+ DEMO PROGRAM #07: Row Handling (using iterators)
37
+ ********************************************************************************
38
+ enabled support for xml namespaces!
39
+
40
+ Generating spreadsheet ...
41
+ Saving spreadsheet ...
42
+ Re-opening spreadsheet ...
43
+ Reading data from spreadsheet ...
44
+ Cell count: 8388608
45
+ Sum of cell values: 415185035
46
+
47
+ real 1m52.678s
48
+ user 1m51.316s
49
+ sys 0m1.352s
@@ -0,0 +1,49 @@
1
+ ********************************************************************************
2
+ DEMO PROGRAM #05: Ranges and Iterators
3
+ ********************************************************************************
4
+ enabled support for xml namespaces!
5
+
6
+ Generating spreadsheet ...
7
+ Saving spreadsheet ...
8
+ Re-opening spreadsheet ...
9
+ Reading data from spreadsheet ...
10
+ Cell count: 8388608
11
+ Sum of cell values: 415048503
12
+
13
+ real 1m42.725s
14
+ user 1m40.737s
15
+ sys 0m1.401s
16
+
17
+
18
+ ********************************************************************************
19
+ DEMO PROGRAM #06: Row Handling (using containers)
20
+ ********************************************************************************
21
+ enabled support for xml namespaces!
22
+
23
+ Generating spreadsheet ...
24
+ Saving spreadsheet ...
25
+ Re-opening spreadsheet ...
26
+ Reading data from spreadsheet ...
27
+ Cell count: 8388608
28
+ Sum of cell values: 415152240
29
+
30
+ real 1m33.916s
31
+ user 1m32.401s
32
+ sys 0m1.468s
33
+
34
+
35
+ ********************************************************************************
36
+ DEMO PROGRAM #07: Row Handling (using iterators)
37
+ ********************************************************************************
38
+ enabled support for xml namespaces!
39
+
40
+ Generating spreadsheet ...
41
+ Saving spreadsheet ...
42
+ Re-opening spreadsheet ...
43
+ Reading data from spreadsheet ...
44
+ Cell count: 8388608
45
+ Sum of cell values: 415382111
46
+
47
+ real 2m8.879s
48
+ user 2m7.206s
49
+ sys 0m1.541s