@sheetxl/sdk 0.1.120 → 0.2.5

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 (108) hide show
  1. package/{build/LICENSE.md → LICENSE.md} +11 -11
  2. package/README.md +28 -30
  3. package/{build/browser/cjs/BSeL4nOQTQb80dpR.cjs → browser/cjs/4qoJaW_MW6rf5z_o.cjs} +1 -1
  4. package/{build/browser/cjs/D0oHdWdIYWua2WEh.cjs → browser/cjs/BFI_d1QICGN4_6VQ.cjs} +1 -1
  5. package/{build/browser/cjs/BcaXK2QHGZ0Tl83z.cjs → browser/cjs/BMwvhk9m7DypXhhc.cjs} +1 -1
  6. package/{build/browser/cjs/PIPbuljRRLh1EYDT.cjs → browser/cjs/BVECJutRRR4YBQqa.cjs} +3 -3
  7. package/{build/browser/cjs/BY8OEpRs1spheW2j.cjs → browser/cjs/BckX8YnuH-6Hi5Rb.cjs} +1 -1
  8. package/{build/browser/cjs/DwMcji_OHy04YSRO.cjs → browser/cjs/BiRnzemJ8OUObXeI.cjs} +1 -1
  9. package/{build/browser/cjs/XIdbAcHj3tvMbWr6.cjs → browser/cjs/BnMX3BP91Z0lra4I.cjs} +2 -2
  10. package/{build/browser/cjs/Dsgv89UU2BWRAqyL.cjs → browser/cjs/C00DS4DFt51KYhTr.cjs} +4 -4
  11. package/{build/browser/cjs/D4iZyG4cJLIbbYwR.cjs → browser/cjs/C5OwzA4Y2fzB8qdp.cjs} +1 -1
  12. package/{build/browser/cjs/d7OiYMEA60XfSqRl.cjs → browser/cjs/CNdqIr4GIy1lGcgc.cjs} +1 -1
  13. package/{build/browser/cjs/-u6m2t7IIo7gzZAw.cjs → browser/cjs/CO-yeXM8Knunh-ML.cjs} +1 -1
  14. package/{build/browser/cjs/D_f0B9n4SQS6Ri5Q.cjs → browser/cjs/CVITWK4ZrgpVlurS.cjs} +1 -1
  15. package/{build/browser/cjs/DJMkIdv9TbH9aFv0.cjs → browser/cjs/CXk1pxzWpTFS3xZG.cjs} +1 -1
  16. package/{build/browser/cjs/Bbrr6wC7cO_nRvMa.cjs → browser/cjs/CibIZAXJijN_oKF5.cjs} +1 -1
  17. package/{build/browser/cjs/RHcRMjZDDYNnnrSD.cjs → browser/cjs/CzjZTesb5K-ajQaT.cjs} +6 -6
  18. package/{build/browser/cjs/upKJgCY3ryIUZgqw.cjs → browser/cjs/D7JB3ZRC1L5lMfqM.cjs} +1 -1
  19. package/{build/browser/cjs/C8t0HWMpbTzI63op.cjs → browser/cjs/D9tgFVX1Z-Dvpk-W.cjs} +1 -1
  20. package/{build/browser/cjs/CedSq6yxuUxhZDXM.cjs → browser/cjs/DB-8Pd5SMzMEalwB.cjs} +2 -2
  21. package/{build/browser/cjs/D6ZdPHlWhE7jcvcw.cjs → browser/cjs/DFc8b6LxKYm2UGod.cjs} +1 -1
  22. package/{build/browser/cjs/C79uJ8ndrZMhXS3Q.cjs → browser/cjs/DUYSUss2wVCcTK9Y.cjs} +1 -1
  23. package/{build/browser/cjs/BvwhAUKfA6iqg0d1.cjs → browser/cjs/DVzO696CM6Ln79kt.cjs} +7 -7
  24. package/{build/browser/cjs/t-jXfVAefSZ9i-Rf.cjs → browser/cjs/DdC-xU8aELfRDWxO.cjs} +2 -2
  25. package/{build/browser/cjs/CsS8HgE17-bOyJIZ.cjs → browser/cjs/Di35ymXaLDt9d_N_.cjs} +2 -2
  26. package/{build/browser/cjs/DpOKca3Qz1N6oUn6.cjs → browser/cjs/DnwxMW_k6i_Ff42s.cjs} +1 -1
  27. package/{build/browser/cjs/BPfUZaDU37VGMnGA.cjs → browser/cjs/DtCtfwvT6Zbrd4tW.cjs} +1 -1
  28. package/{build/browser/cjs/D5FlRwfEgFwG0HrU.cjs → browser/cjs/LpanOWqdQUBZMMQu.cjs} +1 -1
  29. package/{build/browser/cjs/c08vhr3QCKEjKxip.cjs → browser/cjs/PoxiSXIZpNCvzJOC.cjs} +5 -5
  30. package/{build/browser/cjs/Dc01dHHa98r1T2_f.cjs → browser/cjs/VHkmC3uXmZSyrITU.cjs} +1 -1
  31. package/{build/browser/cjs/Ccc8Gx6JFFd2IXaL.cjs → browser/cjs/VfACb28zDp3PqBSR.cjs} +1 -1
  32. package/{build/browser/cjs/BPt9uV5Nxr9I-a7Q.cjs → browser/cjs/gBtgMXU_4nTxaZnQ.cjs} +1 -1
  33. package/{build/browser/cjs/BMWF13UA2wUcWwbc.cjs → browser/cjs/hTj3RavpAmiLtckv.cjs} +2 -2
  34. package/{build/browser → browser}/cjs/index.cjs +2 -2
  35. package/{build/browser/cjs/D-WYCi5m2TxHZPsE.cjs → browser/cjs/kfdbbLXUC63Isla8.cjs} +1 -1
  36. package/{build/browser/cjs/Cp3hi1gU7F_Hkhnj.cjs → browser/cjs/ppzFayBKFtr1L3EU.cjs} +1 -1
  37. package/{build/browser/esm/C_bItrFz3kR7oD7d.mjs → browser/esm/1Clnr7yX2BDd6Ipd.mjs} +2 -2
  38. package/{build/browser/esm/BEvdenuIUJsdysuS.mjs → browser/esm/3KpJMg1mrKuR0bMb.mjs} +1 -1
  39. package/{build/node/esm/C12La7r4Yd9U8sjj.mjs → browser/esm/40Qi2BNDYjSWYKkY.mjs} +1 -1
  40. package/{build/browser/esm/CMAjCzRT84_bclEH.mjs → browser/esm/B9m9ZO7cWOhECEEW.mjs} +1 -1
  41. package/{build/browser/esm/CixViEXOfsgp-ab0.mjs → browser/esm/BAwbN8Jr2g_FUYPF.mjs} +1 -1
  42. package/{build/browser/esm/DCVNhDwVjvfV1Ujp.mjs → browser/esm/BMPaDEkCGLAUmnDk.mjs} +2 -2
  43. package/{build/browser/esm/Ca049nflJTgFmkAY.mjs → browser/esm/BRAgDA5E_fkiY51o.mjs} +1 -1
  44. package/{build/browser/esm/CkkN0twOmvzeNemW.mjs → browser/esm/BXZ3pQwwtBZVQ-E6.mjs} +1 -1
  45. package/{build/browser/esm/CAKh3uLdYbVkh2Wt.mjs → browser/esm/B_betqNd5KZn28fc.mjs} +3 -3
  46. package/{build/node/esm/COe4yicEHICy8Y3b.mjs → browser/esm/BjB599P0BUHcyzwE.mjs} +1 -1
  47. package/{build/browser/esm/D2pCMNl0etxYXzQZ.mjs → browser/esm/BlBPLwzM6xhuLItI.mjs} +1 -1
  48. package/{build/node/esm/C4b8Z5niZLc06jWh.mjs → browser/esm/CLW5gcCnMpgVajlA.mjs} +1 -1
  49. package/{build/browser/esm/BkM9QH_J3amRtJYC.mjs → browser/esm/CNTFU01HiWeF1ITc.mjs} +1 -1
  50. package/{build/browser/esm/B7MpqLPVDqsPz7_D.mjs → browser/esm/Cd4HB1umwpkqSap2.mjs} +5 -5
  51. package/{build/node/esm/D5V2YCmOKFRIhvSE.mjs → browser/esm/CgdpdUozUmW3JhmZ.mjs} +1 -1
  52. package/{build/browser/esm/oNhSHEEbUX5lnHvk.mjs → browser/esm/CjafbGIeobSuebUU.mjs} +9 -9
  53. package/{build/browser/esm/BmKxo1RSk3MnptkK.mjs → browser/esm/CtpW2bo8XKivufNB.mjs} +2 -2
  54. package/{build/browser/esm/DJUTpk_7QW84HGDc.mjs → browser/esm/D-3CVvNI2vgMjnYp.mjs} +6 -6
  55. package/{build/node/esm/DVFmKpRo6nvIa7x4.mjs → browser/esm/D2udGnaBeW0tXLeV.mjs} +1 -1
  56. package/{build/browser/esm/A7rMWKp38GsQjO9R.mjs → browser/esm/D6CcRP24JyrKd8hT.mjs} +1 -1
  57. package/{build/browser/esm/DKBnvAxGD6VhDPjX.mjs → browser/esm/DQsJzNsXW55sZLFm.mjs} +3 -3
  58. package/{build/browser/esm/BWy4GGRy68NdEUAU.mjs → browser/esm/DZfrlTW28u1ydW5t.mjs} +1 -1
  59. package/{build/browser/esm/CBssFim0AQaK0vHZ.mjs → browser/esm/DdkJvvPoV2Qjy3Bs.mjs} +1 -1
  60. package/{build/browser/esm/DlcOwk68TapVLqLN.mjs → browser/esm/DiNskWRzRcKeAGoC.mjs} +1 -1
  61. package/{build/browser/esm/Dc3TH4RzHwJDPPWn.mjs → browser/esm/Dik8l_QgCj0aCmFq.mjs} +1 -1
  62. package/{build/browser/esm/BjlwU0zUCyej3IP5.mjs → browser/esm/DpRYpOa3fMCNvB7d.mjs} +4 -4
  63. package/{build/node/esm/DArl1nWR9Rqq7svj.mjs → browser/esm/Dw86lv6k7O2e4l7t.mjs} +1 -1
  64. package/{build/node/esm/Fg_7aIRdLrWLxcHc.mjs → browser/esm/DwjJuGImweFVwJuZ.mjs} +1 -1
  65. package/{build/browser/esm/CXhFT-LyvRJhpESh.mjs → browser/esm/TAp6vog4vWpzQt2y.mjs} +1 -1
  66. package/{build/browser → browser}/esm/index.mjs +2 -2
  67. package/{build/browser/esm/BWMRk_y3JJcGC4Sw.mjs → browser/esm/nI35k7DUKv4-sTRV.mjs} +1 -1
  68. package/{build/node/esm/C9rVkWkhKQKgt7rk.mjs → browser/esm/uezPZ1nGkzzVoF-x.mjs} +1 -1
  69. package/{build/node/esm/BoXyIcfCNWMqgIe-.mjs → browser/esm/v3oXoCWBx5JfWohl.mjs} +1 -1
  70. package/{build/browser/esm/hhG7UpF8B5-_n2iq.mjs → browser/esm/yFE0R4A26oqlf_ZV.mjs} +2 -2
  71. package/{build/licenses → licenses}/dependencies.txt +33 -36
  72. package/{build/node/esm/BEvdenuIUJsdysuS.mjs → node/esm/3KpJMg1mrKuR0bMb.mjs} +1 -1
  73. package/{build/browser/esm/C12La7r4Yd9U8sjj.mjs → node/esm/40Qi2BNDYjSWYKkY.mjs} +1 -1
  74. package/{build/node/esm/BlVkxYsGm14Pxwhn.mjs → node/esm/51jDPRt-kjfNAYYS.mjs} +2 -2
  75. package/{build/node/esm/ovp-R-GOyaILtHSP.mjs → node/esm/BBuE5RtQdwDaSEUD.mjs} +2 -2
  76. package/{build/node/esm/7Edts-1jHz2ifrIK.mjs → node/esm/BQg_CQNvOHxCEA6m.mjs} +1 -1
  77. package/{build/node/esm/Ca049nflJTgFmkAY.mjs → node/esm/BRAgDA5E_fkiY51o.mjs} +1 -1
  78. package/{build/node/esm/DrphBBZFDU1kkTbf.mjs → node/esm/BiIUxVeZ86caH3bV.mjs} +1 -1
  79. package/{build/browser/esm/COe4yicEHICy8Y3b.mjs → node/esm/BjB599P0BUHcyzwE.mjs} +1 -1
  80. package/{build/node/esm/D2pCMNl0etxYXzQZ.mjs → node/esm/BlBPLwzM6xhuLItI.mjs} +1 -1
  81. package/{build/node/esm/CdNjYyeochwKoh-a.mjs → node/esm/BzIJ601bD5JdUnBe.mjs} +6 -6
  82. package/{build/node/esm/49hIyY82dlLPFb7W.mjs → node/esm/C3bge-P_7pUepRWU.mjs} +3 -3
  83. package/{build/node/esm/BA0e_tQOi5vso7lR.mjs → node/esm/CJbamGtqO8oVjaCe.mjs} +1 -1
  84. package/{build/browser/esm/C4b8Z5niZLc06jWh.mjs → node/esm/CLW5gcCnMpgVajlA.mjs} +1 -1
  85. package/{build/node/esm/BkM9QH_J3amRtJYC.mjs → node/esm/CNTFU01HiWeF1ITc.mjs} +1 -1
  86. package/{build/node/esm/UoIQCgFAuVRWbPoF.mjs → node/esm/CR687KCdexzFDUc7.mjs} +1 -1
  87. package/node/esm/C_pbyKghaEWnSAE8.mjs +86 -0
  88. package/{build/browser/esm/D5V2YCmOKFRIhvSE.mjs → node/esm/CgdpdUozUmW3JhmZ.mjs} +1 -1
  89. package/{build/browser/esm/DVFmKpRo6nvIa7x4.mjs → node/esm/D2udGnaBeW0tXLeV.mjs} +1 -1
  90. package/{build/node/esm/A7rMWKp38GsQjO9R.mjs → node/esm/D6CcRP24JyrKd8hT.mjs} +1 -1
  91. package/{build/node/esm/Ca79i4bbUj5Xo3aJ.mjs → node/esm/DDM_sc1o5j9oND47.mjs} +2 -2
  92. package/{build/node/esm/Br37EDUCygWHe_HY.mjs → node/esm/DQTG7PAXurr7ZXxR.mjs} +4 -4
  93. package/{build/node/esm/DAwMvuc71S5XR9LP.mjs → node/esm/DYMlP_LOiyhum7L1.mjs} +1 -1
  94. package/{build/node/esm/DlcOwk68TapVLqLN.mjs → node/esm/DiNskWRzRcKeAGoC.mjs} +1 -1
  95. package/{build/node/esm/Dc3TH4RzHwJDPPWn.mjs → node/esm/Dik8l_QgCj0aCmFq.mjs} +1 -1
  96. package/{build/node/esm/FYzxLk0rekF4mniF.mjs → node/esm/Dnb9TXC4JeWF7bl_.mjs} +1 -1
  97. package/{build/node/esm/DxwuxTmL3phMI3Mw.mjs → node/esm/DnbvB-RyGnedDBEC.mjs} +1 -1
  98. package/{build/browser/esm/DArl1nWR9Rqq7svj.mjs → node/esm/Dw86lv6k7O2e4l7t.mjs} +1 -1
  99. package/{build/browser/esm/Fg_7aIRdLrWLxcHc.mjs → node/esm/DwjJuGImweFVwJuZ.mjs} +1 -1
  100. package/{build/node/esm/GX-TyIcCMeajKXeq.mjs → node/esm/HQ7PBZABaqluz-j-.mjs} +1 -1
  101. package/{build/node → node}/esm/index.mjs +8 -8
  102. package/{build/browser/esm/C9rVkWkhKQKgt7rk.mjs → node/esm/uezPZ1nGkzzVoF-x.mjs} +1 -1
  103. package/{build/browser/esm/BoXyIcfCNWMqgIe-.mjs → node/esm/v3oXoCWBx5JfWohl.mjs} +1 -1
  104. package/package.json +30 -58
  105. package/build/README.md +0 -30
  106. package/build/node/esm/hxiw_lwaPw7Sc57G.mjs +0 -86
  107. package/build/package.json +0 -58
  108. /package/{build/types → types}/index.d.ts +0 -0
@@ -1,11 +1,11 @@
1
- # Repository Licensing
2
-
3
- The SheetXL monorepo contains a mix of open-source and commercially licensed packages. Each package is individually licensed and contains its own license file.
4
-
5
- For the specific terms and conditions applicable to a package, please see the `LICENSE.md` file located in that package's root directory.
6
-
7
- Generally, packages intended for public distribution (such as CLIs, adapters, and vanilla wrappers) are licensed under the MIT license. All other core packages are proprietary and require a commercial license for use.
8
-
9
- For more details on commercial licensing, please visit our website:
10
-
11
- https://www.sheetxl.com/licensing-pricing
1
+ # Repository Licensing
2
+
3
+ SheetXL contains a mix of open-source and commercially licensed packages. Each package is individually licensed and contains its own license file.
4
+
5
+ For the specific terms and conditions applicable to a package, please see the `LICENSE.md` file located in that package's root directory.
6
+
7
+ Generally, packages intended for public distribution (such as CLIs, adapters, and vanilla wrappers) are licensed under the MIT license. All other core packages are proprietary and require a commercial license for use.
8
+
9
+ For more details on commercial licensing, please visit our website:
10
+
11
+ https://www.sheetxl.com/licensing-pricing
package/README.md CHANGED
@@ -1,30 +1,28 @@
1
- # SDK
2
-
3
- <a href="https://www.sheetxl.com" target="_blank" rel="noopener">
4
- <img src="https://www.sheetxl.com/logo-text.svg" width="150" alt="SheetXL"/>
5
- </a>
6
-
7
- A vectorized, columnar, scriptable, embeddable spreadsheet.
8
-
9
- A high-performance, embeddable spreadsheet engine designed for building data-driven applications and integrating
10
- spreadsheet functionality into existing systems. It handles even extremely large and sparse datasets,
11
- while providing a powerful calculation engine and a flexible API. As part of the
12
- [SheetXL](https://www.sheetxl.com) eco system, it seamlessly integrates with ready-to-use UI components and data
13
- import/export tools.
14
-
15
- Learn more about [SheetXL](https://www.sheetxl.com).
16
-
17
- | Feature | Excel API (JS/Python) | Google Sheets API | pandas | DuckDB | Jupyter Notebooks | NumPy | Sigma Computing | SheetXL 🚀 |
18
- |-----------------------------|----------------------|-------------------|--------|--------|------------------|-------|----------------|------------|
19
- | **Spreadsheet-Like?** | ✅ Yes | ✅ Yes | ❌ No UI (table-based) | ❌ No UI | ❌ No real spreadsheet UI | ❌ No UI, array-based | ❌ No true spreadsheet UI | ✅ Yes (Excel-like UI) |
20
- | **Vectorized Operations?** | ❌ Mostly scalar | ❌ Mostly scalar | ✅ Fully vectorized | ✅ Columnar, vectorized | ✅ Can use pandas/NumPy | ✅ Fully vectorized | ❌ SQL-based (not vectorized) | ✅ Fully vectorized, columnar |
21
- | **Embeddable?** | ❌ Not easily embeddable | ✅ Web-based | ❌ Not embeddable | ✅ Can be embedded | ❌ Not embeddable | ❌ Not a spreadsheet | ✅ Cloud-based | ✅ Fully embeddable |
22
- | **Data Science Capabilities?** | ⚠️ Limited (Python only) | ❌ No real data science | ✅ Strong data science | ✅ SQL-based analytics | ✅ Python data science | ✅ Scientific computing | ✅ BI analytics | ✅ Python & JS scripting |
23
-
24
- ## Advantages
25
-
26
- 1. The “Handoff Tax” → IT departments rewrite spreadsheets into web apps, but they lack true spreadsheet functionality. SheetXL removes this tax.
27
- 2. Excel’s API is scalar → Most spreadsheet APIs are slow because they weren’t built for large-scale, vectorized calculations.
28
- 3. BI tools don’t let you “program” the UI → Sigma, Looker, Tableau work for dashboards, but aren’t true programmable spreadsheets.
29
- 4. NumPy is fast, but has no spreadsheet UI → SheetXL gives NumPy performance inside a familiar spreadsheet.
30
- 5. Embeddability is a game-changer → Unlike Excel/Google Sheets, SheetXL is built for web apps, with seamless integration.
1
+ # SDK
2
+
3
+ ![SheetXL](https://www.sheetxl.com/logo-text.svg)
4
+
5
+ A vectorized, columnar, scriptable, embeddable spreadsheet.
6
+
7
+ A high-performance, embeddable spreadsheet engine designed for building data-driven applications and integrating
8
+ spreadsheet functionality into existing systems. It handles even extremely large and sparse datasets,
9
+ while providing a powerful calculation engine and a flexible API. As part of the
10
+ [SheetXL](https://www.sheetxl.com) eco system, it seamlessly integrates with ready-to-use UI components and data
11
+ import/export tools.
12
+
13
+ Learn more about [SheetXL](https://www.sheetxl.com).
14
+
15
+ | Feature | Excel API (JS/Python) | Google Sheets API | pandas | DuckDB | Jupyter Notebooks | NumPy | Sigma Computing | SheetXL 🚀 |
16
+ |-----------------------------|----------------------|-------------------|--------|--------|------------------|-------|----------------|------------|
17
+ | **Spreadsheet-Like?** | ✅ Yes | ✅ Yes | ❌ No UI (table-based) | ❌ No UI | ❌ No real spreadsheet UI | ❌ No UI, array-based | ❌ No true spreadsheet UI | ✅ Yes (Excel-like UI) |
18
+ | **Vectorized Operations?** | ❌ Mostly scalar | ❌ Mostly scalar | ✅ Fully vectorized | ✅ Columnar, vectorized | ✅ Can use pandas/NumPy | ✅ Fully vectorized | ❌ SQL-based (not vectorized) | ✅ Fully vectorized, columnar |
19
+ | **Embeddable?** | ❌ Not easily embeddable | ✅ Web-based | ❌ Not embeddable | ✅ Can be embedded | ❌ Not embeddable | ❌ Not a spreadsheet | ✅ Cloud-based | ✅ Fully embeddable |
20
+ | **Data Science Capabilities?** | ⚠️ Limited (Python only) | ❌ No real data science | ✅ Strong data science | ✅ SQL-based analytics | ✅ Python data science | ✅ Scientific computing | ✅ BI analytics | ✅ Python & JS scripting |
21
+
22
+ ## Advantages
23
+
24
+ 1. The “Handoff Tax” → IT departments rewrite spreadsheets into web apps, but they lack true spreadsheet functionality. SheetXL removes this tax.
25
+ 2. Excel’s API is scalar → Most spreadsheet APIs are slow because they weren’t built for large-scale, vectorized calculations.
26
+ 3. BI tools don’t let you “program” the UI → Sigma, Looker, Tableau work for dashboards, but aren’t true programmable spreadsheets.
27
+ 4. NumPy is fast, but has no spreadsheet UI → SheetXL gives NumPy performance inside a familiar spreadsheet.
28
+ 5. Embeddability is a game-changer → Unlike Excel/Google Sheets, SheetXL is built for web apps, with seamless integration.
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.1.119
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.5
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.1.119
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.5
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1,5 +1,5 @@
1
1
  "use strict";/**
2
- * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.1.119
2
+ * @license @sheetxl/sdk - SDK - A high-performance, embeddable spreadsheet engine. - v0.2.5
3
3
  *
4
4
  * (C) 2025-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.