diff --git a/README.md b/README.md
index 1f72139..a7e9795 100644
--- a/README.md
+++ b/README.md
@@ -139,6 +139,10 @@ function SheetJSTestDropbox() {
## Other Notes
+`static/shim.js` shims the following functions:
+
+- `Object.hasOwn`
+
`src/theme/Admonition` was swizzled from 3.2.1 to enable `pass` for hiding
header text. See Docusaurus issue 8568 for more details.
diff --git a/docz/docs/03-demos/01-math/01-summary.md b/docz/docs/03-demos/01-math/01-summary.md
index c06434c..ab49ebe 100644
--- a/docz/docs/03-demos/01-math/01-summary.md
+++ b/docz/docs/03-demos/01-math/01-summary.md
@@ -38,10 +38,11 @@ tutorial first.
This browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 133 | 2025-03-30 |
-| Safari 18.3 | 2025-03-30 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 133 | 2025-03-30 |
+| Safari 18.3 | 2025-03-30 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/01-math/09-danfojs.md b/docz/docs/03-demos/01-math/09-danfojs.md
index a3dbf2b..e3d8cf9 100644
--- a/docz/docs/03-demos/01-math/09-danfojs.md
+++ b/docz/docs/03-demos/01-math/09-danfojs.md
@@ -21,10 +21,11 @@ This demo covers details elided in the official DanfoJS documentation.
This demo was tested in the following deployments:
-| Platform | Version | Date |
-|:------------|:--------|:-----------|
-| Chrome 131 | `1.1.2` | 2025-01-01 |
-| Safari 18.2 | `1.1.2` | 2025-01-01 |
+| Platform | Version | Date |
+|:-------------|:--------|:-----------|
+| Chromium 131 | `1.1.2` | 2025-01-01 |
+| Safari 18.2 | `1.1.2` | 2025-01-01 |
+| Konqueror 22 | `1.1.2` | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/01-math/11-tensorflow.md b/docz/docs/03-demos/01-math/11-tensorflow.md
index c7d5a3e..37188ce 100644
--- a/docz/docs/03-demos/01-math/11-tensorflow.md
+++ b/docz/docs/03-demos/01-math/11-tensorflow.md
@@ -34,10 +34,11 @@ results back to spreadsheets.
Each browser demo was tested in the following environments:
-| Browser | TF.js | Date |
-|:------------|:----------|:-----------|
-| Chrome 133 | `4.22.0` | 2025-04-21 |
-| Safari 18.3 | `4.22.0` | 2025-04-21 |
+| Browser | TF.js | Date |
+|:-------------|:----------|:-----------|
+| Chromium 133 | `4.22.0` | 2025-04-21 |
+| Safari 18.3 | `4.22.0` | 2025-04-21 |
+| Konqueror 22 | `4.22.0` | 2025-04-23 |
The NodeJS demo was tested in the following environments:
diff --git a/docz/docs/03-demos/02-frontend/07-angularjs.md b/docz/docs/03-demos/02-frontend/07-angularjs.md
index 5dd461d..c64fd03 100644
--- a/docz/docs/03-demos/02-frontend/07-angularjs.md
+++ b/docz/docs/03-demos/02-frontend/07-angularjs.md
@@ -37,6 +37,7 @@ This demo was tested in the following environments:
| Browser | Version | Date |
|:-------------|:------------------|:-----------|
| Chromium 133 | `1.8.2` (latest) | 2025-03-30 |
+| Konqueror 22 | `1.8.2` (latest) | 2025-04-23 |
| Chromium 133 | `1.2.32` (legacy) | 2025-03-30 |
:::
diff --git a/docz/docs/03-demos/02-frontend/08-dojo.md b/docz/docs/03-demos/02-frontend/08-dojo.md
index f38f0c7..269e0a0 100644
--- a/docz/docs/03-demos/02-frontend/08-dojo.md
+++ b/docz/docs/03-demos/02-frontend/08-dojo.md
@@ -77,6 +77,7 @@ This demo was tested in the following environments:
| Platform | Date |
|:-------------|:-----------|
| Chromium 133 | 2025-03-30 |
+| Konqueror 22 | 2025-04-23 |
Demos exclusively using Dojo Core were tested using Dojo Toolkit `1.17.3`.
diff --git a/docz/docs/03-demos/03-net/01-network/index.md b/docz/docs/03-demos/03-net/01-network/index.md
index 87ef322..7d68920 100644
--- a/docz/docs/03-demos/03-net/01-network/index.md
+++ b/docz/docs/03-demos/03-net/01-network/index.md
@@ -88,10 +88,11 @@ first worksheet. The SheetJS `sheet_to_html` method[^2] creates the HTML table.
Each browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 133 | 2025-03-30 |
-| Safari 18.3 | 2025-03-30 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 133 | 2025-03-30 |
+| Safari 18.3 | 2025-03-30 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/03-net/02-upload/index.md b/docz/docs/03-demos/03-net/02-upload/index.md
index e07f2db..907e6c5 100644
--- a/docz/docs/03-demos/03-net/02-upload/index.md
+++ b/docz/docs/03-demos/03-net/02-upload/index.md
@@ -133,10 +133,11 @@ response. If the process was successful, a HTML table will be displayed
Each browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 133 | 2025-03-30 |
-| Safari 18.3 | 2025-03-30 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 133 | 2025-03-30 |
+| Safari 18.3 | 2025-03-30 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/03-net/04-email/11-pst.md b/docz/docs/03-demos/03-net/04-email/11-pst.md
index 6dc5eea..6371317 100644
--- a/docz/docs/03-demos/03-net/04-email/11-pst.md
+++ b/docz/docs/03-demos/03-net/04-email/11-pst.md
@@ -36,11 +36,12 @@ the file can be downloaded or previewed in the browser.
This demo was tested in the following deployments:
-| Platform | Version | Date |
-|:------------|:---------|:-----------|
-| Chrome 131 | `1.9.0` | 2024-12-22 |
-| NodeJS 20 | `1.10.0` | 2024-12-22 |
-| BunJS 1.1 | `1.10.0` | 2024-12-22 |
+| Platform | Version | Date |
+|:-------------|:---------|:-----------|
+| Chromium 131 | `1.9.0` | 2024-12-22 |
+| Konqueror 22 | `1.9.0` | 2025-04-23 |
+| NodeJS 20 | `1.10.0` | 2024-12-22 |
+| BunJS 1.1 | `1.10.0` | 2024-12-22 |
:::
diff --git a/docz/docs/03-demos/04-grid/01-xs.md b/docz/docs/03-demos/04-grid/01-xs.md
index b0129e3..5185209 100644
--- a/docz/docs/03-demos/04-grid/01-xs.md
+++ b/docz/docs/03-demos/04-grid/01-xs.md
@@ -18,10 +18,11 @@ With a familiar UI, `x-spreadsheet` is an excellent choice for a modern editor.
This demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 131 | 2024-12-31 |
-| Safari 18.2 | 2024-12-31 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 131 | 2024-12-31 |
+| Safari 18.2 | 2024-12-31 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/04-grid/02-cdg.md b/docz/docs/03-demos/04-grid/02-cdg.md
index 5a004e3..0cfe62a 100644
--- a/docz/docs/03-demos/04-grid/02-cdg.md
+++ b/docz/docs/03-demos/04-grid/02-cdg.md
@@ -17,10 +17,11 @@ with a straightforward API.
This demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 131 | 2024-12-31 |
-| Safari 18.2 | 2024-12-31 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 131 | 2024-12-31 |
+| Safari 18.2 | 2024-12-31 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/04-grid/10-tabulator.md b/docz/docs/03-demos/04-grid/10-tabulator.md
index 9b0fa63..3ab874d 100644
--- a/docz/docs/03-demos/04-grid/10-tabulator.md
+++ b/docz/docs/03-demos/04-grid/10-tabulator.md
@@ -25,6 +25,7 @@ This demo was tested in the following deployments:
| Browser | Version | Date |
|:-------------|:--------|:-----------|
| Chromium 133 | `6.3.1` | 2025-03-31 |
+| Konqueror 22 | `6.3.1` | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/04-grid/12-vtl.md b/docz/docs/03-demos/04-grid/12-vtl.md
index 2936a05..d12535c 100644
--- a/docz/docs/03-demos/04-grid/12-vtl.md
+++ b/docz/docs/03-demos/04-grid/12-vtl.md
@@ -28,7 +28,8 @@ This demo was tested in the following deployments:
| Browser | Version | Date |
|:-------------|:--------|:-----------|
-| Chromium 125 | `1.4.0` | 2024-06-13 |
+| Chromium 135 | `1.4.3` | 2025-04-23 |
+| Konqueror 22 | `1.4.3` | 2025-04-23 |
:::
@@ -40,7 +41,7 @@ installation in ViteJS projects using Vue 3 Table Lite.
Using the `npm` tool, this command installs SheetJS and Vue 3 Table Lite:
{`\
-npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.0`}
+npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.3`}
#### Rows and Columns Bindings
@@ -136,7 +137,7 @@ cd sheetjs-vtl
2) Install dependencies:
{`\
-npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.0`}
+npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz vue3-table-lite@1.4.3`}
3) Download [`src/App.vue`](pathname:///vtl/App.vue) and replace the contents:
diff --git a/docz/docs/03-demos/04-grid/14-gdg.md b/docz/docs/03-demos/04-grid/14-gdg.md
index 7ecd972..809b047 100644
--- a/docz/docs/03-demos/04-grid/14-gdg.md
+++ b/docz/docs/03-demos/04-grid/14-gdg.md
@@ -30,7 +30,28 @@ This demo was tested in the following environments:
| Browser | Version | Date |
|:-------------|:--------|:-----------|
-| Chromium 125 | `5.3.2` | 2024-06-09 |
+| Chromium 135 | `5.3.2` | 2025-04-23 |
+| Konqueror 22 | `5.3.2` | 2025-04-23 |
+
+:::
+
+:::danger pass
+
+**Glide Data Grid is not compatible with ReactJS 19!**
+
+When trying to install in a new project, `npm install` will fail:
+
+```
+npm error Found: react@19.1.0
+npm error node_modules/react
+npm error react@"^19.0.0" from the root project
+npm error
+npm error Could not resolve dependency:
+npm error peer react@"^16.12.0 || 17.x || 18.x" from @glideapps/glide-data-grid@5.3.2
+npm error node_modules/@glideapps/glide-data-grid
+```
+
+This demo explicitly uses ReactJS 18.
:::
@@ -344,13 +365,19 @@ cd sheetjs-gdg
npm i
```
-2) Install SheetJS and Glide Data Grid libraries:
+2) Explicitly downgrade ReactJS to version 18:
+
+```bash
+npm i --save react@18 react-dom@18
+```
+
+3) Install SheetJS and Glide Data Grid libraries:
{`\
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @glideapps/glide-data-grid@5.3.2`}
-3) Start dev server:
+4) Start the dev server:
```bash
npm run dev
@@ -359,21 +386,21 @@ npm run dev
The terminal window will display a URL (typically `http://localhost:5173`).
Open the URL with a web browser and confirm that a page loads.
-4) Download [`App.tsx`](pathname:///gdg/App.tsx) and replace `src/App.tsx`:
+5) Download [`App.tsx`](pathname:///gdg/App.tsx) and replace `src/App.tsx`:
```bash
curl -L -o src/App.tsx https://docs.sheetjs.com/gdg/App.tsx
```
-**Testing**
+#### Testing
-5) Refresh the browser window. A grid should be displayed:
+6) Refresh the browser window. A grid should be displayed:

The demo downloads and processes https://docs.sheetjs.com/pres.numbers .
-6) Make some changes to the grid data.
+7) Make some changes to the grid data.
:::note pass
@@ -388,14 +415,14 @@ values should be 41, 42, 43, 44, and 45, as shown in the screenshot below:

-7) Click on the "Export" button. The browser should attempt to download a XLSX
+8) Click on the "Export" button. The browser should attempt to download a XLSX
file (`sheetjs-gdg.xlsx`). Save the file.
Open the generated file and verify the contents match the grid.
-8) Reload the page. The contents will revert back to the original table.
+9) Reload the page. The contents will revert back to the original table.
-9) Click "Choose File" and select the new `sheetjs-gdg.xlsx` file. The table
+10) Click "Choose File" and select the new `sheetjs-gdg.xlsx` file. The table
should update with the data in the file.
[^1]: See ["Array of Objects" in the ReactJS demo](/docs/demos/frontend/react#array-of-objects)
diff --git a/docz/docs/03-demos/04-grid/16-rdg.md b/docz/docs/03-demos/04-grid/16-rdg.md
index 9a88bb0..86e8c80 100644
--- a/docz/docs/03-demos/04-grid/16-rdg.md
+++ b/docz/docs/03-demos/04-grid/16-rdg.md
@@ -26,10 +26,11 @@ user-supplied sheets and exports data to XLSX workbooks:
This demo was tested in the following environments:
-| Version | Date | Notes |
-|:----------------|:-----------|:---------------------|
-| `7.0.0-beta.19` | 2024-06-09 | |
-| `7.0.0-beta.44` | 2024-06-09 | Editing did not work |
+| Browser | Version | Date | Notes |
+|:-------------|:----------------|:-----------|:----------------------------|
+| Chromium 135 | `7.0.0-beta.19` | 2025-04-23 | Requires ReactJS 18 |
+| Chromium 135 | `7.0.0-beta.52` | 2025-04-23 | No edit support |
+| Konqueror 22 | `7.0.0-beta.52` | 2025-04-23 | No edit support, CSS errors |
:::
@@ -38,7 +39,8 @@ This demo was tested in the following environments:
When this demo was last tested against the latest version, the grid correctly
displayed data but data could not be edited by the user.
-The current recommendation is to use version `7.0.0-beta.19`.
+The current recommendation is to use version `7.0.0-beta.19` and to forcefully
+downgrade ReactJS to version 18.
:::
@@ -159,6 +161,18 @@ cd sheetjs-rdg
npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`}
+
+ Installing RDG version that supports editing (click to show)
+
+Editing support requires ReactJS 18 and React DataGrid version `7.0.0-beta.19`:
+
+{`\
+npm i -S react@18 react-dom@18
+npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz react-data-grid@7.0.0-beta.19`}
+
+
+
+
3) Download [`App.tsx`](pathname:///rdg/App.tsx) and replace `src/App.tsx`.
```bash
@@ -174,6 +188,30 @@ npm run dev
The terminal window will display a URL (typically `http://localhost:5173`).
Open the URL with a web browser and confirm that a page loads.
+:::caution pass
+
+**There were breaking changes in point releases of React DataGrid!**
+
+The JavaScript console may show an error message referencing `default`:
+
+```
+Uncaught SyntaxError: The requested module '/node_modules/.vite/deps/react-data-grid.js?v=f9b1b87a' does not provide an export named 'default' (at App.tsx:2:8)
+```
+
+In a point release, `DataGrid` was moved from the default export to a named
+export. The `src/App.tsx` script must be edited to reflect the change:
+
+```js title="src/App.tsx (edit highlighted lines)"
+import React, { useEffect, useState, ChangeEvent } from "react";
+// highlight-next-line
+import { textEditor, Column, DataGrid } from "react-data-grid";
+import { read, utils, WorkSheet, writeFile } from "xlsx";
+```
+
+After updating the script, the webpage must be manually refreshed.
+
+:::
+
#### Testing
5) Confirm the table shows a list of Presidents.
diff --git a/docz/docs/03-demos/04-grid/18-mui.md b/docz/docs/03-demos/04-grid/18-mui.md
index ba54827..e902253 100644
--- a/docz/docs/03-demos/04-grid/18-mui.md
+++ b/docz/docs/03-demos/04-grid/18-mui.md
@@ -184,9 +184,10 @@ export default function MUITableSheetJSExport() {
This demo was tested in the following deployments:
-| Material UI | Emotion | Date |
-|:------------|:----------|:-----------|
-| `5.15.20` | `11.11.4` | 2024-06-12 |
+| Browser | Material UI | Emotion | Date |
+|:-------------|:------------|:----------|:-----------|
+| Chromium 135 | `7.0.2` | `11.11.4` | 2025-04-23 |
+| Konqueror 22 | `7.0.2` | `11.11.4` | 2025-04-23 |
:::
@@ -200,7 +201,7 @@ cd sheetjs-mui
2) Install dependencies:
{`\
-npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/material@5.15.20 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
+npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/material@7.0.2 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
3) Download [`App.tsx`](pathname:///mui/table/App.tsx) and replace `src/App.tsx`.
@@ -215,8 +216,14 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/table/App.tsx
npm run dev
```
-The script should open the live demo in a web browser. Click the "Export" button
-to save the file. Open the generated file in a spreadsheet editor.
+The terminal window will display a URL (typically `http://localhost:5173`).
+Open the URL with a web browser and confirm that a page loads.
+
+Confirm the table shows a list of Presidents. When the page loads, it will fetch
+https://docs.sheetjs.com/pres.numbers, parse with SheetJS, and load the data in
+the data grid.
+
+Click the "Export" button and open the generated file in a spreadsheet editor.
## Material UI Data Grid
@@ -330,9 +337,10 @@ export default function App() {
This demo was tested in the following deployments:
-| Data Grid | Emotion | Date |
-|:----------|:----------|:-----------|
-| `7.6.2` | `11.11.4` | 2024-06-12 |
+| Browser | Data Grid | Emotion | Date |
+|:-------------|:----------|:----------|:-----------|
+| Chromium 125 | `8.0.0` | `11.11.4` | 2025-04-23 |
+| Konqueror 22 | `8.0.0` | `11.11.4` | 2025-04-23 |
:::
@@ -346,7 +354,7 @@ cd sheetjs-muidg
2) Install dependencies:
{`\
-npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/x-data-grid@7.6.2 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
+npm i -S https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz @mui/x-data-grid@8.0.0 @emotion/react@11.11.4 @emotion/styled@11.11.5`}
3) Download [`App.tsx`](pathname:///mui/dg/App.tsx) and replace `src/App.tsx`.
@@ -361,8 +369,30 @@ curl -L -o src/App.tsx https://docs.sheetjs.com/mui/dg/App.tsx
npm run dev
```
+The terminal window will display a URL (typically `http://localhost:5173`).
+Open the URL with a web browser and confirm that a page loads.
+
When the page loads, it will process https://docs.sheetjs.com/pres.numbers
+:::caution pass
+
+The data grid uses nascent ECMAScript features that are not supported in older
+browsers. Shims can be added in the `
` section of `index.html`:
+
+```html title="index.html (add highlighted lines in HEAD)"
+
+
+
+
+
+```
+
+:::
+
[^1]: See ["Sheet Objects"](/docs/csf/sheet)
[^2]: See [`sheet_to_json` in "Utilities"](/docs/api/utilities/array#array-output)
[^3]: See [`table_to_book` in "HTML" Utilities](/docs/api/utilities/html#create-new-sheet)
diff --git a/docz/docs/03-demos/12-static/09-nuxtjs.md b/docz/docs/03-demos/12-static/09-nuxtjs.md
index 3bed3c9..1e22f22 100644
--- a/docz/docs/03-demos/12-static/09-nuxtjs.md
+++ b/docz/docs/03-demos/12-static/09-nuxtjs.md
@@ -48,7 +48,7 @@ This demo was tested in the following environments:
| Nuxt Content | Nuxt | Date |
|:-------------|:-----------|:-----------|
-| `1.15.1` | `2.18.1` | 2024-11-14 |
+| `1.15.1` | `2.18.1` | 2025-04-23 |
| `2.13.4` | `3.14.159` | 2024-11-14 |
:::
@@ -58,7 +58,7 @@ This demo was tested in the following environments:
Nuxt embeds telemetry. According to the docs, it can be disabled with:
```bash
-npx nuxt telemetry disable
+npx -y nuxt telemetry disable
```
**When the demo was last tested, this command did not work.**
@@ -268,7 +268,7 @@ The recommended solution is to switch to Node 18.
1) Create a stock app:
```bash
-npx create-nuxt-app@4.0.0 sheetjs-nuxt
+npx -y create-nuxt-app@4.0.0 sheetjs-nuxt
```
When prompted, enter the following options:
@@ -412,7 +412,7 @@ This will create a static site in the `dist` folder.
9) Serve the static site:
```bash
-npx http-server dist
+npx -y http-server dist
```
Access the displayed URL (typically `http://localhost:8080`) in a web browser.
diff --git a/docz/docs/03-demos/23-data/11-sqlite.md b/docz/docs/03-demos/23-data/11-sqlite.md
index 53e8ab5..b0c6aad 100644
--- a/docz/docs/03-demos/23-data/11-sqlite.md
+++ b/docz/docs/03-demos/23-data/11-sqlite.md
@@ -40,6 +40,7 @@ This demo was tested in the following environments:
| Platform | Connector Library | Date |
|:-----------------|:----------------------------|:-----------|
| Chromium 131 | `sql.js` (`1.8.0`) | 2025-01-08 |
+| Konqueror 22 | `sql.js` (`1.8.0`) | 2025-04-23 |
| NodeJS `20.18.0` | `better-sqlite3` (`11.7.2`) | 2025-01-08 |
| BunJS `1.1.43` | (built-in) | 2025-01-08 |
| Deno `2.1.4` | `sqlite` (`3.9.1`) | 2025-01-09 |
diff --git a/docz/docs/03-demos/23-data/19-alasql.md b/docz/docs/03-demos/23-data/19-alasql.md
index 368a997..34f0519 100644
--- a/docz/docs/03-demos/23-data/19-alasql.md
+++ b/docz/docs/03-demos/23-data/19-alasql.md
@@ -12,6 +12,8 @@ sidebar_custom_props:
import current from '/version.js';
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
import CodeBlock from '@theme/CodeBlock';
[AlaSQL](https://alasql.org/) is a pure JavaScript in-memory SQL database. It
@@ -28,10 +30,12 @@ strategies for general data processing in AlaSQL expressions.
This demo was tested in the following environments:
-| Environment | AlaSQL | Date |
-|:--------------------|:-------|:----------:|
-| NodeJS | 3.1.0 | 2024-06-03 |
-| Standalone (Chrome) | 3.1.0 | 2024-06-03 |
+| Environment | AlaSQL | Date |
+|:-------------|:-------|:----------:|
+| Chromium 135 | 3.1.0 | 2025-04-23 |
+| Konqueror 22 | 3.1.0 | 2025-04-23 |
+| NodeJS | 3.1.0 | 2025-04-23 |
+| BunJS | 3.1.0 | 2025-04-23 |
:::
@@ -263,8 +267,8 @@ const { promise: alasql } = require("alasql");
1) Create an empty folder for the project:
```bash
-mkdir alasql
-cd alasql
+mkdir sheetjs-alasql
+cd sheetjs-alasql
```
2) In the folder, create a stub `package.json` with the `xlsx` override:
@@ -279,10 +283,23 @@ cd alasql
3) Install SheetJS and AlaSQL:
+
+
+
{`\
npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
+
+
+
+{`\
+bun i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz`}
+
+
+
+
+
4) Download the test file https://docs.sheetjs.com/pres.numbers :
```bash
@@ -311,11 +328,24 @@ const { promise: alasql } = require("alasql");
6) Run the test script
+
+
+
```bash
node SheetJSAlaSQL.js
```
-The output should display:
+
+
+
+```bash
+bun run SheetJSAlaSQL.js
+```
+
+
+
+
+The script will print the following array of objects:
```js
[
@@ -325,7 +355,7 @@ The output should display:
]
```
-The script should generate `SheetJSAlaSQL1.xlsx` with the additional row:
+The script will generate `SheetJSAlaSQL1.xlsx` with an additional row:
```csv
Name,Index
diff --git a/docz/docs/03-demos/27-local/01-file.md b/docz/docs/03-demos/27-local/01-file.md
index f2bcb7b..98e8f22 100644
--- a/docz/docs/03-demos/27-local/01-file.md
+++ b/docz/docs/03-demos/27-local/01-file.md
@@ -274,8 +274,8 @@ const u8 = new Uint8Array(array);
:::danger pass
-Not all web APIs are supported in all browsers. For example, Firefox does not
-support the "File System Access API".
+Not all web APIs are supported in all browsers. For example, Konqueror and
+Firefox do not support the "File System Access API".
Even when a browser technically supports a web API, it may be disabled in the
client browser. Some APIs do not give any feedback.
@@ -464,16 +464,17 @@ When this demo was last tested, Google Chrome did not add an entry to the
This browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 131 | 2025-01-07 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 131 | 2025-01-07 |
Some lesser-used browsers do not support File System Access API:
-| Browser | Date |
-|:------------|:-----------|
-| Safari 17.5 | 2025-01-07 |
-| Firefox 133 | 2025-01-07 |
+| Browser | Date |
+|:-------------|:-----------|
+| Safari 17.5 | 2025-01-07 |
+| Konqueror 22 | 2025-04-23 |
+| Firefox 133 | 2025-01-07 |
:::
diff --git a/docz/docs/03-demos/27-local/02-websql.md b/docz/docs/03-demos/27-local/02-websql.md
index 7a186c3..60b2e40 100644
--- a/docz/docs/03-demos/27-local/02-websql.md
+++ b/docz/docs/03-demos/27-local/02-websql.md
@@ -156,17 +156,18 @@ This workbook is typically exported to the filesystem with `writeFile`[^6].
This browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 118 | 2025-03-30 |
+| Browser | Date |
+|:-------------|:-----------|
+| Konqueror 22 | 2025-04-23 |
+| Chromium 118 | 2025-03-30 |
Browsers that do not support WebSQL will throw errors:
-| Browser | Date | Error Message |
-|:------------|:-----------|:------------------------------|
-| Chrome 133 | 2025-03-30 | `openDatabase is not defined` |
-| Safari 18.3 | 2025-03-30 | `Web SQL is deprecated` |
-| Firefox 136 | 2025-03-30 | `openDatabase is not defined` |
+| Browser | Date | Error Message |
+|:-------------|:-----------|:------------------------------|
+| Chromium 133 | 2025-03-30 | `openDatabase is not defined` |
+| Safari 18.3 | 2025-03-30 | `Web SQL is deprecated` |
+| Firefox 136 | 2025-03-30 | `openDatabase is not defined` |
:::
diff --git a/docz/docs/03-demos/27-local/03-storageapi.md b/docz/docs/03-demos/27-local/03-storageapi.md
index db6795d..8506291 100644
--- a/docz/docs/03-demos/27-local/03-storageapi.md
+++ b/docz/docs/03-demos/27-local/03-storageapi.md
@@ -18,10 +18,11 @@ This demo covers two common use patterns:
Each browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 131 | 2024-12-23 |
-| Safari 18.2 | 2024-12-31 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 131 | 2024-12-23 |
+| Safari 18.2 | 2024-12-31 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/27-local/05-clipboard.md b/docz/docs/03-demos/27-local/05-clipboard.md
index 7393454..ecc1c8e 100644
--- a/docz/docs/03-demos/27-local/05-clipboard.md
+++ b/docz/docs/03-demos/27-local/05-clipboard.md
@@ -20,10 +20,17 @@ Not all Clipboard APIs offer access to all clipboard types.
Each browser demo was tested in the following environments:
-| Browser | Date | Notes
-|:------------|:-----------|:-------------------------|
-| Chrome 126 | 2024-06-30 | |
-| Safari 17.3 | 2024-06-30 | `text/rtf` not supported |
+| Browser | Architecture | Date | Notes |
+|:-------------|:-------------|:-----------|:--------------------------------|
+| Chromium 133 | `darwin-arm` | 2025-04-23 | |
+| Safari 17.5 | `darwin-arm` | 2025-04-23 | `text/rtf` not supported |
+| Chromium 116 | `win11-arm` | 2025-04-23 | |
+| Edge 135 | `win11-arm` | 2025-04-23 | |
+| Chromium 135 | `linux-arm` | 2025-04-23 | |
+| Konqueror 22 | `linux-arm` | 2025-04-23 | `text/rtf`, files not supported |
+
+Windows and macOS tests were run against Excel, while Linux tests were run
+against Gnumeric.
:::
diff --git a/docz/docs/03-demos/27-local/09-indexeddb.md b/docz/docs/03-demos/27-local/09-indexeddb.md
index 1ce1d2a..2e23b4e 100644
--- a/docz/docs/03-demos/27-local/09-indexeddb.md
+++ b/docz/docs/03-demos/27-local/09-indexeddb.md
@@ -41,10 +41,11 @@ production sites.
This demo was last tested in the following environments:
-| Browser | Date | `localForage` |
-|:------------|:-----------|:--------------|
-| Chrome 131 | 2024-12-31 | `1.10.0` |
-| Safari 18.2 | 2024-12-31 | `1.10.0` |
+| Browser | Date | `localForage` |
+|:-------------|:-----------|:--------------|
+| Chromium 131 | 2024-12-31 | `1.10.0` |
+| Safari 18.2 | 2024-12-31 | `1.10.0` |
+| Konqueror 22 | 2025-04-23 | `1.10.0` |
:::
@@ -113,10 +114,11 @@ function SheetJSLocalForage() {
This demo was last tested in the following environments:
-| Browser | Date | DexieJS |
-|:------------|:-----------|:---------|
-| Chrome 131 | 2024-12-31 | `4.0.10` |
-| Safari 18.2 | 2024-12-31 | `4.0.10` |
+| Browser | Date | DexieJS |
+|:-------------|:-----------|:---------|
+| Chromium 131 | 2024-12-31 | `4.0.10` |
+| Safari 18.2 | 2024-12-31 | `4.0.10` |
+| Konqueror 22 | 2025-04-23 | `4.0.10` |
:::
diff --git a/docz/docs/03-demos/32-extensions/02-chromium.md b/docz/docs/03-demos/32-extensions/02-chromium.md
index f2abaa8..9ae12a3 100644
--- a/docz/docs/03-demos/32-extensions/02-chromium.md
+++ b/docz/docs/03-demos/32-extensions/02-chromium.md
@@ -23,9 +23,9 @@ tables with a content script and a background script.
This demo was tested in the following deployments:
-| Platform | Date |
-|:------------|:-----------|
-| Chrome 131 | 2025-01-02 |
+| Platform | Date |
+|:-------------|:-----------|
+| Chromium 131 | 2025-01-02 |
:::
diff --git a/docz/docs/03-demos/37-bigdata/01-stream.md b/docz/docs/03-demos/37-bigdata/01-stream.md
index 0eb065d..dde4356 100644
--- a/docz/docs/03-demos/37-bigdata/01-stream.md
+++ b/docz/docs/03-demos/37-bigdata/01-stream.md
@@ -283,10 +283,11 @@ Joseph Biden,46
Each browser demo was tested in the following environments:
-| Browser | Date |
-|:------------|:-----------|
-| Chrome 126 | 2024-07-18 |
-| Safari 17.4 | 2024-07-18 |
+| Browser | Date |
+|:-------------|:-----------|
+| Chromium 126 | 2024-07-18 |
+| Safari 17.4 | 2024-07-18 |
+| Konqueror 22 | 2025-04-23 |
:::
diff --git a/docz/docs/03-demos/37-bigdata/02-worker.md b/docz/docs/03-demos/37-bigdata/02-worker.md
index 583b750..6442883 100644
--- a/docz/docs/03-demos/37-bigdata/02-worker.md
+++ b/docz/docs/03-demos/37-bigdata/02-worker.md
@@ -191,13 +191,14 @@ const worker = new Worker(
Each browser demo was tested in the following environments:
-| Browser | Date | Comments |
-|:------------|:-----------|:----------------------------------------|
-| Chrome 131 | 2024-12-31 | |
-| Edge 131 | 2024-12-31 | |
-| Safari 17.5 | 2024-12-31 | File System Access API is not supported |
-| Brave 1.63 | 2024-12-31 | File System Access API is not supported |
-| Firefox 133 | 2024-12-31 | File System Access API is not supported |
+| Browser | Date | Comments |
+|:-------------|:-----------|:----------------------------------------|
+| Chromium 131 | 2024-12-31 | |
+| Edge 131 | 2024-12-31 | |
+| Safari 17.5 | 2024-12-31 | File System Access API is not supported |
+| Brave 1.63 | 2024-12-31 | File System Access API is not supported |
+| Konqueror 22 | 2025-04-23 | File System Access API is not supported |
+| Firefox 133 | 2024-12-31 | File System Access API is not supported |
:::
diff --git a/docz/docs/03-demos/42-engines/09-hermes.md b/docz/docs/03-demos/42-engines/09-hermes.md
index 5f26f9d..6603efd 100644
--- a/docz/docs/03-demos/42-engines/09-hermes.md
+++ b/docz/docs/03-demos/42-engines/09-hermes.md
@@ -848,10 +848,13 @@ This demo was tested in the following deployments:
| Architecture | Hermes | Date |
|:-------------|:---------|:-----------|
| `darwin-x64` | `0.13.0` | 2025-03-31 |
+| `darwin-arm` | `0.13.0` | 2025-04-23 |
| `win11-x64` | `0.13.0` | 2024-12-20 |
| `win11-arm` | `0.13.0` | 2025-02-23 |
| `linux-x64` | `0.13.0` | 2025-04-21 |
+When this demo was last tested, `jsvu` did not support `linux-arm`.
+
:::
Due to limitations of the standalone binary, this demo will encode a test file
diff --git a/docz/docs/03-demos/42-engines/23-jerryscript.md b/docz/docs/03-demos/42-engines/23-jerryscript.md
index 224dd60..ed4fe5e 100644
--- a/docz/docs/03-demos/42-engines/23-jerryscript.md
+++ b/docz/docs/03-demos/42-engines/23-jerryscript.md
@@ -38,7 +38,7 @@ This demo was tested in the following environments:
|:-------------|:----------|:-----------|
| `darwin-x64` | `5020015` | 2025-03-31 |
| `darwin-arm` | `d2d30df` | 2025-02-13 |
-| `win11-x64` | `d2d30df` | 2024-12-19 |
+| `win11-x64` | `5020015` | 2025-04-23 |
| `win11-arm` | `5020015` | 2025-02-23 |
| `linux-x64` | `5020015` | 2025-04-21 |
| `linux-arm` | `5020015` | 2025-02-15 |
diff --git a/docz/docs/03-demos/42-engines/25-mujs.md b/docz/docs/03-demos/42-engines/25-mujs.md
index 9e96fc6..54befad 100644
--- a/docz/docs/03-demos/42-engines/25-mujs.md
+++ b/docz/docs/03-demos/42-engines/25-mujs.md
@@ -324,7 +324,7 @@ This demo was tested in the following deployments:
|:-------------|:--------|:-----------|
| `darwin-x64` | `1.3.6` | 2025-03-31 |
| `darwin-arm` | `1.3.5` | 2025-02-13 |
-| `win11-x64` | `1.3.5` | 2024-12-19 |
+| `win11-x64` | `1.3.6` | 2025-04-23 |
| `win11-arm` | `1.3.5` | 2025-02-23 |
| `linux-x64` | `1.3.5` | 2025-01-09 |
| `linux-arm` | `1.3.5` | 2025-02-15 |
diff --git a/docz/docs/03-demos/42-engines/26-jurassic.md b/docz/docs/03-demos/42-engines/26-jurassic.md
index 8883150..6f8973b 100644
--- a/docz/docs/03-demos/42-engines/26-jurassic.md
+++ b/docz/docs/03-demos/42-engines/26-jurassic.md
@@ -178,7 +178,7 @@ This demo was tested in the following deployments:
|:-------------|:---------|:-----------|
| `darwin-x64` | `3.2.9` | 2025-03-31 |
| `darwin-arm` | `3.2.9` | 2025-03-30 |
-| `win11-x64` | `3.2.8` | 2024-12-19 |
+| `win11-x64` | `3.2.9` | 2025-04-23 |
| `win11-arm` | `3.2.9` | 2025-02-23 |
| `linux-x64` | `3.2.8` | 2025-01-10 |
| `linux-arm` | `3.2.9` | 2025-02-15 |
diff --git a/docz/docs/09-miscellany/04-testing.md b/docz/docs/09-miscellany/04-testing.md
index 871eb64..9940788 100644
--- a/docz/docs/09-miscellany/04-testing.md
+++ b/docz/docs/09-miscellany/04-testing.md
@@ -83,6 +83,7 @@ ExtendScript Toolkit 3.5 is available as a standalone download for Windows.
- Chrome 26+ (including Android 6.0+)
- Safari 8+ (Desktop) and Safari 10+ (iOS)
- Edge 13-18 and 79+
+ - Konqueror 22
- FF Latest
The automated browser tests seek to test the latest patch version of each major
diff --git a/docz/docs/index.md b/docz/docs/index.md
index 316da67..cfa63c7 100644
--- a/docz/docs/index.md
+++ b/docz/docs/index.md
@@ -381,6 +381,7 @@ In previous runs, tests passed in:
- Android Browser versions starting from 5.1
- Safari macOS versions starting from 6
- Edge 13 - 18 and versions starting from 79
+- Konqueror 22
Sauce Labs has removed many legacy browser versions over the years. SheetJS LLC
still maintains testing infrastructure for legacy deployments. Questions about
diff --git a/docz/docusaurus.config.js b/docz/docusaurus.config.js
index a1514c1..401cabe 100644
--- a/docz/docusaurus.config.js
+++ b/docz/docusaurus.config.js
@@ -198,7 +198,8 @@ const config = {
{
src: "https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js",
async: true
- }
+ },
+ "/shim.js"
],
stylesheets: [
{
diff --git a/docz/package.json b/docz/package.json
index ebf938f..1f0e346 100644
--- a/docz/package.json
+++ b/docz/package.json
@@ -47,7 +47,6 @@
],
"development": [
"last 1 chrome version",
- "last 1 firefox version",
"last 1 safari version"
]
}
diff --git a/docz/static/nuxt/3/sheetformer.ts b/docz/static/nuxt/3/sheetformer.ts
index 9890b92..a85d242 100644
--- a/docz/static/nuxt/3/sheetformer.ts
+++ b/docz/static/nuxt/3/sheetformer.ts
@@ -9,7 +9,7 @@ export default defineTransformer({
extensions: ['.xlsx'],
parse (_id: string, rawContent: string) {
const wb = read(readFileSync(resolve("./content/" + _id.slice(8))));
- const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name])}));
+ const body = wb.SheetNames.map(name => ({ name, data: utils.sheet_to_json(wb.Sheets[name]!)}));
return { _id, body };
}
});
\ No newline at end of file
diff --git a/docz/static/shim.js b/docz/static/shim.js
new file mode 100644
index 0000000..9c8f078
--- /dev/null
+++ b/docz/static/shim.js
@@ -0,0 +1,2 @@
+/* workaround for legacy browsers */
+if(!Object.hasOwn) Object.hasOwn = function(o, v) { return o.hasOwnProperty(v); };
\ No newline at end of file
diff --git a/docz/static/vtl/App.vue b/docz/static/vtl/App.vue
index 54ac812..df9aacd 100644
--- a/docz/static/vtl/App.vue
+++ b/docz/static/vtl/App.vue
@@ -87,7 +87,7 @@ function exportFile(type: string): void {
utils.book_append_sheet(wb, workBook.value[sheet], sheet);
});
- writeFile(wb, `sheet.${type}`);
+ writeFile(wb, `SheetJSVTL.${type}`);
}
function selectSheet(sheet: string): void {
diff --git a/tests/data/alasql-bun.sh b/tests/data/alasql-bun.sh
new file mode 100755
index 0000000..30eb122
--- /dev/null
+++ b/tests/data/alasql-bun.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# https://docs.sheetjs.com/docs/demos/data/alasql/#nodejs-example
+
+cd /tmp
+mkdir sheetjs-alasql
+cd sheetjs-alasql
+cat <package.json
+{
+ "overrides": {
+ "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
+ }
+}
+EOF
+
+bun i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
+
+curl -L -O https://docs.sheetjs.com/pres.numbers
+
+cat <SheetJSAlaSQL.js
+const { promise: alasql } = require("alasql");
+
+(async() => {
+ /* read data from spreadsheet to JS */
+ const data = await alasql(\`
+ SELECT \\\`Name\\\`, \\\`Index\\\`
+ FROM XLSX("pres.numbers", {autoExt:false})
+ WHERE \\\`Index\\\` < 45
+ \`);
+ console.log(data);
+
+ /* write data from JS to spreadsheet */
+ data.push({ Name: "SheetJS Dev", Index: 47 });
+ await alasql(\`SELECT * INTO XLSX("SheetJSAlaSQL1.xlsx") FROM ?\`, [data]);
+})();
+EOF
+
+bun run SheetJSAlaSQL.js
+
+bunx xlsx-cli SheetJSAlaSQL1.xlsx
diff --git a/tests/data/alasql-node.sh b/tests/data/alasql-node.sh
new file mode 100755
index 0000000..a7bf463
--- /dev/null
+++ b/tests/data/alasql-node.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# https://docs.sheetjs.com/docs/demos/data/alasql/#nodejs-example
+
+cd /tmp
+mkdir sheetjs-alasql
+cd sheetjs-alasql
+cat <package.json
+{
+ "overrides": {
+ "xlsx": "https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz"
+ }
+}
+EOF
+
+npm i --save alasql@3.1.0 https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
+
+curl -L -O https://docs.sheetjs.com/pres.numbers
+
+cat <SheetJSAlaSQL.js
+const { promise: alasql } = require("alasql");
+
+(async() => {
+ /* read data from spreadsheet to JS */
+ const data = await alasql(\`
+ SELECT \\\`Name\\\`, \\\`Index\\\`
+ FROM XLSX("pres.numbers", {autoExt:false})
+ WHERE \\\`Index\\\` < 45
+ \`);
+ console.log(data);
+
+ /* write data from JS to spreadsheet */
+ data.push({ Name: "SheetJS Dev", Index: 47 });
+ await alasql(\`SELECT * INTO XLSX("SheetJSAlaSQL1.xlsx") FROM ?\`, [data]);
+})();
+EOF
+
+node SheetJSAlaSQL.js
+
+npx xlsx-cli SheetJSAlaSQL1.xlsx