demo refresh

This commit is contained in:
SheetJS 2025-01-11 00:52:44 -05:00
parent 7be3c234c3
commit 1d24026091
39 changed files with 360 additions and 193 deletions

@ -35,7 +35,7 @@ This demo was tested in the following configurations:
| Platform | Architecture | Date |
|:------------------------------------------------------------------|:-------------|:-----------|
| NVIDIA RTX 4090 (24 GB VRAM) + Ryzen Z1 Extreme (16 GB RAM) | `win11-x64` | 2024-12-20 |
| NVIDIA RTX 4090 (24 GB VRAM) + Ryzen Z1 Extreme (16 GB RAM) | `win11-x64` | 2025-01-08 |
| NVIDIA RTX 4080 SUPER (16 GB VRAM) + Ryzen Z1 Extreme (16 GB RAM) | `win11-x64` | 2024-12-19 |
| AMD RX 7900 XTX (24 GB VRAM) + Ryzen Z1 Extreme (16 GB RAM) | `win11-x64` | 2024-09-21 |
| AMD RX 6800 XT (16 GB VRAM) + Ryzen Z1 Extreme (16 GB RAM) | `win11-x64` | 2024-10-07 |
@ -67,9 +67,7 @@ Special thanks to:
- [Nathan Ayers](https://infocommww.org/)
- [Rasmus Tengstedt](https://tengstedt.dev/)
- [Triston Armstrong](https://tristonarmstrong.com/)
- [Ben Halverson](https://benhalverson.dev/)
- [Navid Nami](https://navidnami.com/)
- [Benjamin Gregg](https://bgregg.dev/)
- [Andreas Karydopoulos](https://smor.dev/)
- [Tim Brugman](https://timbrugman.com/)
@ -793,7 +791,7 @@ npm i --save https://sheet.lol/balls/xlsx-${current}.tgz`}
4) Install dependencies:
```bash
npm i --save @langchain/community@0.3.11 @langchain/core@0.3.16 langchain@0.3.5 peggy@3.0.2
npm i --save @langchain/community@0.3.22 @langchain/core@0.3.27 langchain@0.3.10 peggy@3.0.2
```
:::note pass
@ -802,7 +800,7 @@ In some test runs, there were error messages relating to dependency and peer
dependency versions. The `--force` flag will suppress version mismatch errors:
```bash
npm i --save @langchain/community@0.3.11 @langchain/core@0.3.16 langchain@0.3.5 peggy@3.0.2 --force
npm i --save @langchain/community@0.3.22 @langchain/core@0.3.27 langchain@0.3.10 peggy@3.0.2 --force
```
:::

@ -211,8 +211,8 @@ This demo was tested in the following environments:
| KnockoutJS | Date | Live Demo |
|:-----------|:-----------|:-----------------------------------------------|
| `3.5.0` | 2024-04-07 | [**KO3**](pathname:///knockout/knockout3.html) |
| `2.3.0` | 2024-04-07 | [**KO2**](pathname:///knockout/knockout2.html) |
| `3.5.0` | 2025-01-08 | [**KO3**](pathname:///knockout/knockout3.html) |
| `2.3.0` | 2025-01-08 | [**KO2**](pathname:///knockout/knockout2.html) |
:::

@ -47,19 +47,22 @@ This demo was tested in the following environments:
| ESBuild | Date |
|:----------|:-----------|
| `0.21.4` | 2024-06-07 |
| `0.20.2` | 2024-06-07 |
| `0.19.12` | 2024-06-07 |
| `0.18.20` | 2024-06-07 |
| `0.17.19` | 2024-06-07 |
| `0.16.17` | 2024-06-07 |
| `0.15.18` | 2024-06-07 |
| `0.14.54` | 2024-06-07 |
| `0.13.15` | 2024-06-07 |
| `0.12.29` | 2024-06-07 |
| `0.11.23` | 2024-06-07 |
| `0.10.2` | 2024-06-07 |
| `0.9.7` | 2024-06-07 |
| `0.24.2` | 2025-01-07 |
| `0.23.1` | 2025-01-07 |
| `0.22.0` | 2025-01-07 |
| `0.21.5` | 2025-01-07 |
| `0.20.2` | 2025-01-07 |
| `0.19.12` | 2025-01-07 |
| `0.18.20` | 2025-01-07 |
| `0.17.19` | 2025-01-07 |
| `0.16.17` | 2025-01-07 |
| `0.15.18` | 2025-01-07 |
| `0.14.54` | 2025-01-07 |
| `0.13.15` | 2025-01-07 |
| `0.12.29` | 2025-01-07 |
| `0.11.23` | 2025-01-07 |
| `0.10.2` | 2025-01-07 |
| `0.9.7` | 2025-01-07 |
:::
@ -87,7 +90,7 @@ Assuming the primary source file is `in.js`, the following command will bundle
the script and generate `out.js`:
```bash
npx -y esbuild@0.19.8 in.js --bundle --outfile=out.js
npx -y esbuild@0.24.2 in.js --bundle --outfile=out.js
```
### Browser Demo

@ -34,21 +34,21 @@ This demo was tested in the following environments:
| Browserify | Date |
|:-----------|:-----------|
| `17.0.0` | 2024-04-13 |
| `16.5.2` | 2024-04-13 |
| `15.2.0` | 2024-04-13 |
| `14.5.0` | 2024-04-13 |
| `13.3.0` | 2024-04-13 |
| `12.0.2` | 2024-04-13 |
| `11.2.0` | 2024-04-13 |
| `10.2.6` | 2024-04-13 |
| `9.0.8` | 2024-04-13 |
| `8.1.3` | 2024-04-13 |
| `7.1.0` | 2024-04-13 |
| `6.3.4` | 2024-04-13 |
| `5.13.1` | 2024-04-13 |
| `4.2.3` | 2024-04-13 |
| `3.46.1` | 2024-04-13 |
| `17.0.1` | 2025-01-07 |
| `16.5.2` | 2025-01-07 |
| `15.2.0` | 2025-01-07 |
| `14.5.0` | 2025-01-07 |
| `13.3.0` | 2025-01-07 |
| `12.0.2` | 2025-01-07 |
| `11.2.0` | 2025-01-07 |
| `10.2.6` | 2025-01-07 |
| `9.0.8` | 2025-01-07 |
| `8.1.3` | 2025-01-07 |
| `7.1.0` | 2025-01-07 |
| `6.3.4` | 2025-01-07 |
| `5.13.1` | 2025-01-07 |
| `4.2.3` | 2025-01-07 |
| `3.46.1` | 2025-01-07 |
:::

@ -40,8 +40,8 @@ This demo was tested in the following environments:
| RequireJS | Date |
|:----------|:-----------|
| `2.3.6` | 2024-04-27 |
| `2.1.22` | 2024-04-27 |
| `2.3.7` | 2025-01-07 |
| `2.1.22` | 2025-01-07 |
:::

@ -35,7 +35,7 @@ This demo was tested in the following environments:
| Version | Date |
|:----------|:-----------|
| `1.2.246` | 2024-04-27 |
| `1.2.246` | 2025-01-07 |
:::
@ -73,7 +73,7 @@ thread '<unnamed>' panicked at 'cannot access a scoped thread local variable wit
**This is a bug in SWC**
This bug is known to affect versions `1.3.100` and `1.4.17`.
This bug is known to affect versions `1.3.100`, `1.4.17`, and `1.10.6`.
Until the bug is fixed, it is strongly recommended to use `@swc/core@1.2.246`.

@ -62,7 +62,7 @@ This demo was tested in the following environments:
| Version | Date |
|:--------|:-----------|
| `3.8.8` | 2024-04-14 |
| `3.8.8` | 2025-01-07 |
:::
@ -161,12 +161,14 @@ Unlike other bundlers, Snowpack requires a full page including `HEAD` element.
npx snowpack@3.8.8 build
```
5) Start a local HTTP server, then go to `http://localhost:8080/`
5) Start a local HTTP server:
```bash
npx http-server build/
```
6) Open a web browser to the displayed URL (typically `http://localhost:8080/`).
Click on "Click here to export" to generate a file.
</details>
@ -192,7 +194,7 @@ This demo was tested in the following environments:
| Version | Date |
|:--------|:-----------|
| `3.8.0` | 2024-04-14 |
| `3.8.0` | 2025-01-07 |
:::
@ -285,12 +287,14 @@ writeFileXLSX(workbook, "Presidents.xlsx");
npx wmr@3.8.0 build
```
5) Start a local HTTP server in `dist` folder and go to `http://localhost:8080/`
5) Start a local HTTP server:
```bash
npx http-server dist/
```
6) Open a web browser to the displayed URL (typically `http://localhost:8080/`).
Click on "Click here to export" to generate a file.
</details>

@ -590,8 +590,8 @@ This demo was tested in the following environments:
| NodeJS | Date |
|:-----------|:-----------|
| `20.12.1` | 2024-04-07 |
| `21.7.2` | 2024-04-07 |
| `22.13.0` | 2025-01-08 |
| `20.18.1` | 2025-01-08 |
:::
@ -704,17 +704,18 @@ This demo was tested in the following environments:
| NodeJS | `request` | Date |
|:-----------|:----------|:-----------|
| `0.10.48` | `2.88.2` | 2024-04-07 |
| `0.12.18` | `2.88.2` | 2024-04-07 |
| `4.9.1` | `2.88.2` | 2024-04-07 |
| `6.17.1` | `2.88.2` | 2024-04-07 |
| `8.17.0` | `2.88.2` | 2024-04-07 |
| `10.24.1` | `2.88.2` | 2024-04-07 |
| `12.22.12` | `2.88.2` | 2024-04-07 |
| `14.21.3` | `2.88.2` | 2024-04-07 |
| `16.20.2` | `2.88.2` | 2024-04-07 |
| `18.20.1` | `2.88.2` | 2024-04-07 |
| `20.12.1` | `2.88.2` | 2024-04-07 |
| `22.13.0` | `2.88.2` | 2025-01-08 |
| `20.18.1` | `2.88.2` | 2025-01-08 |
| `18.20.5` | `2.88.2` | 2025-01-08 |
| `16.20.2` | `2.88.2` | 2025-01-08 |
| `14.21.3` | `2.88.2` | 2025-01-08 |
| `12.22.12` | `2.88.2` | 2025-01-08 |
| `10.24.1` | `2.88.2` | 2025-01-08 |
| `8.17.0` | `2.88.2` | 2025-01-08 |
| `6.17.1` | `2.88.2` | 2025-01-08 |
| `4.9.1` | `2.81.0` | 2025-01-08 |
| `0.12.18` | `2.81.0` | 2025-01-08 |
| `0.10.48` | `2.81.0` | 2025-01-08 |
:::
@ -731,6 +732,13 @@ and `request` module:
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz request`}
</CodeBlock>
:::note pass
The current version of `request` requires NodeJS 6 or later. For older versions
of NodeJS, `request` version `2.81.0` should be installed.
:::
2) Save the following to `SheetJSRequest.js`:
```js title="SheetJSRequest.js"

@ -379,7 +379,7 @@ This demo was tested in the following environments:
|:-------------|:----------|:-----------|
| `darwin-x64` | `2.1.1` | 2024-12-17 |
| `win11-x64` | `2.1.1` | 2024-05-22 |
| `linux-x64` | `2.1.1` | 2024-04-25 |
| `linux-x64` | `2.1.1` | 2025-01-07 |
:::

@ -376,7 +376,7 @@ This demo was tested in the following deployments:
| `darwin-arm` | 0.1.48 | 2.0.4 | 2024-10-30 |
| `win11-x64` | 0.1.48 | 2.0.4 | 2024-10-30 |
| `win11-arm` | 0.1.48 | 2.0.4 | 2024-10-30 |
| `linux-x64` | 0.1.48 | 2.0.4 | 2024-10-30 |
| `linux-x64` | 0.1.48 | 2.0.5 | 2025-01-10 |
| `linux-arm` | 0.1.48 | 2.0.4 | 2024-10-30 |
:::

@ -204,19 +204,23 @@ This demo was tested in the following environments:
| `esbuild` | Date |
|:----------|:-----------|
| `0.20.2` | 2024-04-07 |
| `0.19.12` | 2024-04-07 |
| `0.18.20` | 2024-04-07 |
| `0.17.19` | 2024-04-07 |
| `0.16.17` | 2024-04-07 |
| `0.15.18` | 2024-04-07 |
| `0.14.54` | 2024-04-07 |
| `0.13.15` | 2024-04-07 |
| `0.12.29` | 2024-04-07 |
| `0.11.23` | 2024-04-07 |
| `0.10.2` | 2024-04-07 |
| `0.9.7` | 2024-04-07 |
| `0.9.1` | 2024-04-07 |
| `0.24.2` | 2025-01-07 |
| `0.23.1` | 2025-01-07 |
| `0.22.0` | 2025-01-07 |
| `0.21.5` | 2025-01-07 |
| `0.20.2` | 2025-01-07 |
| `0.19.12` | 2025-01-07 |
| `0.18.20` | 2025-01-07 |
| `0.17.19` | 2025-01-07 |
| `0.16.17` | 2025-01-07 |
| `0.15.18` | 2025-01-07 |
| `0.14.54` | 2025-01-07 |
| `0.13.15` | 2025-01-07 |
| `0.12.29` | 2025-01-07 |
| `0.11.23` | 2025-01-07 |
| `0.10.2` | 2025-01-07 |
| `0.9.7` | 2025-01-07 |
| `0.9.1` | 2025-01-07 |
:::

@ -188,7 +188,7 @@ This demo was tested in the following deployments:
| Version | Date |
|:---------|:-----------|
| `5.91.0` | 2024-04-06 |
| `5.97.1` | 2025-01-08 |
:::
@ -200,7 +200,7 @@ This demo was tested in the following deployments:
mkdir sheetjs-wp5
cd sheetjs-wp5
npm init -y
npm install webpack@5.91.0 webpack-cli@5.1.4 webpack-dev-server@5.0.4 --save
npm install webpack@5.97.1 webpack-cli@6.0.1 webpack-dev-server@5.2.0 --save
mkdir -p dist
mkdir -p src
mkdir -p data

@ -52,8 +52,14 @@ This demo was tested in the following environments:
| AstroJS | Template | Date |
|:--------|:-----------------|:-----------|
| `3.6.5` | Starlight 0.14.0 | 2024-04-14 |
| `4.6.1` | Starlight 0.21.5 | 2024-04-14 |
| `4.6.1` | Starlight 0.22.4 | 2025-01-07 |
| `5.1.3` | Starlight 0.30.5 | 2025-01-07 |
In previous test runs, this demo successfully ran using older AstroJS versions:
| AstroJS | Template |
|:--------|:-----------------|
| `3.6.5` | Starlight 0.14.0 |
:::
@ -215,10 +221,10 @@ cd sheetjs-astro
To test an older version of AstroJS, install the specific version of `astro` and
a supported starter template after creating the project.
For major version 3, Starlight must be version `0.14.0`:
For major version 4, Starlight must be version `0.22.4`:
```bash
npm install --force astro@3.6.5 @astrojs/starlight@0.14.0
npm install --force astro@4 @astrojs/starlight@0.22.4
```
The version can be verified by running:
@ -227,6 +233,22 @@ The version can be verified by running:
npx astro --version
```
**When using older versions of AstroJS, the sidebar must be removed!**
In `astro.config.mjs`, the `sidebar` property in the config must be removed:
```js title="astro.config.mjs (snippet)"
export default defineConfig({
integrations: [
starlight({
// ...
// remove the `sidebar` array if it exists in the object
sidebar: [
// remove this entire array
],
}),
```
:::
2) Fetch the example file [`pres.numbers`](https://docs.sheetjs.com/pres.numbers):
@ -327,8 +349,7 @@ npx http-server dist
```
Open a web browser and access the displayed URL ( `http://localhost:8080` ).
View the page source and confirm that no JS was added to the page. It only
contains the content from the file in an HTML table.
View the page source and confirm that the raw data is stored in an HTML table.
:::caution pass

@ -117,7 +117,7 @@ This demo was tested in the following environments:
| macOS 14.5 | `darwin-arm` | `0.88.0` | 2024-05-28 | |
| Windows 11 | `win11-x64` | `0.94.0` | 2024-12-19 | |
| Windows 11 | `win11-arm` | `0.88.0` | 2024-05-28 | |
| Linux (HoloOS) | `linux-x64` | `0.89.0` | 2024-07-07 | |
| Linux (HoloOS) | `linux-x64` | `0.89.0` | 2025-01-10 | |
| Linux (Debian) | `linux-arm` | `0.60.0` | 2024-05-23 | Unofficial build[^1] |
:::

@ -83,7 +83,7 @@ This demo was last tested in the following deployments:
| `darwin-arm` | `1.1.40` | 2024-12-19 |
| `win11-x64` | `1.1.40` | 2024-12-19 |
| `win11-arm` | `1.1.33` | 2024-10-25 |
| `linux-x64` | `1.1.12` | 2024-06-09 |
| `linux-x64` | `1.1.43` | 2025-01-10 |
| `linux-arm` | `1.1.12` | 2024-06-10 |
:::

@ -37,12 +37,12 @@ SQLite-compatible database built into Chromium and Google Chrome.
This demo was tested in the following environments:
| Platform | Connector Library | Date |
|:-----------------|:---------------------------|:-----------|
| Chromium 122 | `sql.js` (`1.8.0`) | 2024-04-09 |
| NodeJS `20.12.1` | `better-sqlite3` (`9.4.5`) | 2024-04-09 |
| BunJS `1.1.3` | (built-in) | 2024-04-09 |
| Deno `1.42.1` | `sqlite` (`3.8`) | 2024-04-09 |
| Platform | Connector Library | Date |
|:-----------------|:----------------------------|:-----------|
| Chromium 131 | `sql.js` (`1.8.0`) | 2025-01-08 |
| 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 |
:::
@ -315,6 +315,16 @@ curl -LO https://docs.sheetjs.com/sqlite/SheetJSQLiteDeno.ts
deno run --allow-read --allow-write SheetJSQLiteDeno.ts
```
:::caution pass
Deno 2 requires the `--allow-import` entitlement:
```bash
deno run --allow-read --allow-write --allow-import SheetJSQLiteDeno.ts
```
:::
Open `SheetJSQLiteDeno.xlsx` with a spreadsheet editor.
[^1]: See [`json_to_sheet` in "Utilities"](/docs/api/utilities/array#array-of-objects-input)

@ -25,10 +25,10 @@ This demo was tested in the following environments:
| Version | Database | Connector Module | Date |
|:----------|:---------|:-----------------|:-----------|
| `0.21.20` | SQLite | `sqlite3` | 2024-04-09 |
| `2.4.2` | SQLite | `better-sqlite3` | 2024-04-09 |
| `2.5.1` | SQLite | `better-sqlite3` | 2024-04-09 |
| `3.1.0` | SQLite | `better-sqlite3` | 2024-04-09 |
| `0.21.20` | SQLite | `sqlite3` | 2025-01-09 |
| `2.4.2` | SQLite | `better-sqlite3` | 2025-01-09 |
| `2.5.1` | SQLite | `better-sqlite3` | 2025-01-09 |
| `3.1.0` | SQLite | `better-sqlite3` | 2025-01-09 |
:::
@ -192,7 +192,7 @@ npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz knex be
For KnexJS version `0.21.20`, the `sqlite3` module must be installed:
<CodeBlock language="bash">{`\
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz knex sqlite3`}
npm i --save https://cdn.sheetjs.com/xlsx-${current}/xlsx-${current}.tgz knex@0.21.20 sqlite3`}
</CodeBlock>
:::

@ -38,12 +38,12 @@ from XLSX files to a Redis database and to serialize a database to a workbook.
This demo was tested in the following environments:
| Server | Connector Module | Date |
|:---------------|:-------------------|:----------:|
| KeyDB `6.3.4` | `redis` (`4.6.13`) | 2024-04-23 |
| Redis `6.2.14` | `redis` (`4.6.13`) | 2024-04-23 |
| Redis `7.2.4` | `redis` (`4.6.13`) | 2024-04-23 |
| Valkey `7.2.5` | `redis` (`4.6.13`) | 2024-04-23 |
| Server | Connector Module | Date |
|:----------------|:------------------|:----------:|
| KeyDB `6.3.4` | `redis` (`4.7.0`) | 2025-01-08 |
| Redis `6.2.17` | `redis` (`4.7.0`) | 2025-01-08 |
| Valkey `8.0.2` | `redis` (`4.7.0`) | 2025-01-08 |
| Garnet `1.0.49` | `redis` (`4.7.0`) | 2025-01-08 |
:::
@ -286,7 +286,7 @@ brew link valkey
The following command started the server process:
```bash
redis-server /usr/local/etc/redis.conf
redis-server $(brew config | grep HOMEBREW_PREFIX | awk '{print $2}')/etc/redis.conf
```
_Redis 6_
@ -300,36 +300,26 @@ brew install redis@6.2
The following command started the server process:
```bash
redis-server /usr/local/etc/redis.conf
redis-server $(brew config | grep HOMEBREW_PREFIX | awk '{print $2}')/etc/redis.conf
```
_Redis 7_
:::caution pass
Redis 7 was installed with:
```bash
brew install redis@7.2
```
The following command started the server process:
```bash
redis-server /usr/local/etc/redis.conf
```
:::danger pass
When the demo was last tested, Redis 7.2.4 was installed. The output from the
Redis server will display the version number:
```
69385:C 23 Apr 2024 13:24:48.520 * Redis version=7.2.4, bits=64, commit=00000000, modified=0, pid=69385, just started
```
Please raise an issue with Homebrew if a later version is installed.
When this demo was last tested, `brew install redis` installed a proprietary
version of Redis.
:::
_Garnet_
After installing `dotnet` and .NET runtime, install the `garnet-server` tool:
```bash
dotnet tool install --global garnet-server
export PATH="$PATH:~/.dotnet/tools"
garnet-server
```
</details>
1) Download the following scripts:
@ -361,28 +351,12 @@ Inspect the output and compare with the data in `SheetJSRedisTest.mjs`.
<details>
<summary><b>Expected Output</b> (click to show)</summary>
```
The order of lines may be different in different servers. The following output
is from KeyDB `6.3.4`:
```text title="Output from KeyDB 6.3.4"
SET [ 'baz', '0' ]
SET [ 'foo', 'bar' ]
HSET [
'user:1000',
{
name: 'John Smith',
email: 'john.smith@example.com',
password: 's3cret',
visits: '1'
}
]
HSET [
'user:1001',
{
name: 'Mary Jones',
email: 'mjones@example.com',
password: 'hunter2'
}
]
SADD [ 'superpowers', [ 'flight', 'x-ray vision' ] ]
SADD [ 'birdpowers', [ 'flight', 'pecking' ] ]
RPUSH [ 'friends', [ 'sam', 'alice', 'bob' ] ]
ZADD [
'hackers',
@ -397,6 +371,25 @@ ZADD [
{ value: 'Linus Torvalds', score: 1969 }
]
]
SADD [ 'birdpowers', [ 'pecking', 'flight' ] ]
SADD [ 'superpowers', [ 'x-ray vision', 'flight' ] ]
HSET [
'user:1001',
{
name: 'Mary Jones',
email: 'mjones@example.com',
password: 'hunter2'
}
]
HSET [
'user:1000',
{
name: 'John Smith',
email: 'john.smith@example.com',
password: 's3cret',
visits: '1'
}
]
```
</details>

@ -466,14 +466,14 @@ This browser demo was tested in the following environments:
| Browser | Date |
|:------------|:-----------|
| Chrome 122 | 2024-04-07 |
| Chrome 131 | 2025-01-07 |
Some lesser-used browsers do not support File System Access API:
| Browser | Date |
|:------------|:-----------|
| Safari 17.4 | 2024-04-07 |
| Firefox 124 | 2024-04-07 |
| Safari 17.5 | 2025-01-07 |
| Firefox 133 | 2025-01-07 |
:::

@ -53,11 +53,11 @@ This demo was tested in the following deployments:
| Architecture | Version | Date |
|:-------------|:------------------|:-----------|
| `darwin-x64` | `18.0` | 2024-04-10 |
| `darwin-x64` | `18.5` (StataNow) | 2025-01-08 |
| `darwin-arm` | `18.5` (StataNow) | 2024-12-15 |
| `win11-x64` | `18.5` (StataNow) | 2024-12-19 |
| `win11-arm` | `18.5` (StataNow) | 2024-12-15 |
| `linux-x64` | `18.0` | 2024-04-25 |
| `linux-x64` | `18.5` (StataNow) | 2025-01-09 |
:::
@ -214,7 +214,7 @@ The output will be the default data directory. On macOS this is typically
Stata data directory:
```bash
# `cd` to the Stata data directory
: # `cd` to the Stata data directory
cd ~/Documents/Stata
mkdir sheetjs-stata
cd sheetjs-stata

@ -36,7 +36,7 @@ This demo was tested by SheetJS users in the following deployments:
| Architecture | Version | Date |
|:-------------|:---------|:-----------|
| `darwin-x64` | `2024.0` | 2024-04-25 |
| `darwin-x64` | `2024.0` | 2025-01-10 |
| `win11-x64` | `2024.0` | 2024-12-19 |
:::

@ -966,7 +966,7 @@ This demo was last tested in the following deployments:
| `darwin-x64` | `0.92.0` | 2024-05-28 |
| `darwin-arm` | `0.92.0` | 2024-05-25 |
| `win11-x64` | `130.0.2` | 2024-12-20 |
| `linux-x64` | `0.91.0` | 2024-04-25 |
| `linux-x64` | `130.0.7` | 2025-01-09 |
| `linux-arm` | `0.92.0` | 2024-05-25 |
:::
@ -1209,7 +1209,7 @@ This demo was last tested in the following deployments:
| `darwin-arm` | `12.3.219.12` | 2024-07-16 |
| `win11-x64` | `12.3.219.12` | 2024-12-20 |
| `win11-arm` | `12.3.219.12` | 2024-07-16 |
| `linux-x64` | `12.3.219.12` | 2024-07-16 |
| `linux-x64` | `12.3.219.12` | 2025-01-10 |
| `linux-arm` | `12.3.219.12` | 2024-07-16 |
:::

@ -30,21 +30,22 @@ This demo was tested in the following deployments:
| OpenJDK | Rhino | Date |
|:--------|:---------|:-----------|
| 22 | `1.7.14` | 2024-04-04 |
| 21.0.3 | `1.7.15` | 2024-05-24 |
| 20.0.2 | `1.7.15` | 2024-05-25 |
| 19.0.2 | `1.7.15` | 2024-05-25 |
| 18.0.2 | `1.7.15` | 2024-05-25 |
| 17.0.11 | `1.7.15` | 2024-05-25 |
| 16.0.1 | `1.7.15` | 2024-05-25 |
| 15.0.10 | `1.7.15` | 2024-05-25 |
| 14.0.2 | `1.7.15` | 2024-05-25 |
| 13.0.14 | `1.7.15` | 2024-05-25 |
| 12.0.2 | `1.7.15` | 2024-05-25 |
| 11.0.22 | `1.7.15` | 2024-05-25 |
| 10.0.2 | `1.7.15` | 2024-05-25 |
| 9 | `1.7.15` | 2024-05-25 |
| 1.8.0 | `1.7.14` | 2024-04-25 |
| 23.0.1 | `1.7.15` | 2025-01-10 |
| 22.0.2 | `1.7.15` | 2025-01-10 |
| 21.0.5 | `1.7.15` | 2025-01-10 |
| 20.0.2 | `1.7.15` | 2025-01-10 |
| 19.0.2 | `1.7.15` | 2025-01-10 |
| 18.0.2 | `1.7.15` | 2025-01-10 |
| 17.0.13 | `1.7.15` | 2025-01-10 |
| 16.0.2 | `1.7.15` | 2025-01-10 |
| 15.0.2 | `1.7.15` | 2025-01-10 |
| 14.0.2 | `1.7.15` | 2025-01-10 |
| 13.0.2 | `1.7.15` | 2025-01-10 |
| 12.0.2 | `1.7.15` | 2025-01-10 |
| 11.0.25 | `1.7.15` | 2025-01-10 |
| 10.0.2 | `1.7.15` | 2025-01-10 |
| 9.0.4 | `1.7.15` | 2025-01-10 |
| 1.8.0 | `1.7.15` | 2025-01-10 |
:::

@ -41,7 +41,7 @@ JavaScriptCore can be built from source and linked in C / C++ programs.
| Architecture | Version | Date |
|:-------------|:-----------------|:-----------|
| `darwin-x64` | `7618.1.15.14.7` | 2024-04-24 |
| `darwin-x64` | `7618.2.12.11.7` | 2025-01-10 |
| `darwin-arm` | `7618.2.12.11.7` | 2024-05-24 |
| `linux-x64` | `7618.2.12.11.7` | 2024-06-22 |
| `linux-arm` | `7618.2.12.11.7` | 2024-06-22 |
@ -416,6 +416,12 @@ to `SheetJSwift.xlsx`. That file can be verified by opening in Excel / Numbers.
The build requires CMake and Ruby.
On macOS, dependencies should be installed with `brew`:
```bash
brew install cmake ruby
```
On the Steam Deck, dependencies should be installed with `pacman`:
```bash
@ -498,7 +504,7 @@ namespace WTF {
:::caution pass
When this demo was tested on ARM64 macOS, the build failed with the error message
When this demo was tested, the build failed with the error message
```
Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp:37:10: fatal error: 'wtf/spi/darwin/dyldSPI.h' file not found

@ -167,7 +167,7 @@ This demo was tested in the following deployments:
| `darwin-arm` | `3.1.2` | 2024-05-25 |
| `win11-x64` | `4.1.0` | 2024-12-20 |
| `win11-arm` | `3.1.2` | 2024-05-25 |
| `linux-x64` | `3.1.0` | 2024-04-25 |
| `linux-x64` | `4.1.0` | 2025-01-09 |
| `linux-arm` | `3.1.2` | 2024-05-25 |
:::

@ -267,7 +267,7 @@ This demo was tested in the following deployments:
| `darwin-arm` | `6e2e68f` | 2024-12-17 |
| `win11-x64` | `6e2e68f` | 2024-12-19 |
| `win11-arm` | `d378a9f` | 2024-05-25 |
| `linux-x64` | `3b45d15` | 2024-04-25 |
| `linux-x64` | `6e2e68f` | 2025-01-09 |
| `linux-arm` | `d378a9f` | 2024-05-25 |
When the demo was tested, `6e2e68f` was the HEAD commit on the `master` branch.
@ -343,7 +343,7 @@ This demo was tested in the following environments:
| Git Commit | Date |
|:-----------|:-----------|
| `6e2e68f` | 2024-12-17 |
| `6e2e68f` | 2025-01-09 |
When the demo was tested, `6e2e68f` was the HEAD commit on the `master` branch.

@ -136,7 +136,7 @@ This demo was tested in the following deployments:
| `darwin-arm` | `3a7b120` | 2024-05-23 |
| `win11-x64` | `e26c81f` | 2024-12-19 |
| `win11-arm` | `13358c6` | 2024-07-14 |
| `linux-x64` | `1f6e17c` | 2024-04-25 |
| `linux-x64` | `e26c81f` | 2025-01-09 |
:::
@ -492,7 +492,7 @@ If successful, the program will print the contents of the first sheet as CSV.
:::note Tested Deployments
This demo was last tested on 2024-12-17 against `ch` commit `e26c81f`.
This demo was last tested on 2025-01-09 against `ch` commit `e26c81f`.
:::

@ -129,7 +129,7 @@ This demo was tested in the following deployments:
|:-------------|:--------|:-----------|
| `darwin-x64` | `0.066` | 2024-12-17 |
| `darwin-arm` | `0.066` | 2024-05-25 |
| `linux-x64` | `0.066` | 2024-06-29 |
| `linux-x64` | `0.066` | 2025-01-10 |
| `linux-arm` | `0.066` | 2024-05-25 |
:::

@ -326,7 +326,7 @@ This demo was tested in the following deployments:
| `darwin-arm` | `1.3.4` | 2024-05-23 |
| `win11-x64` | `1.3.5` | 2024-12-19 |
| `win11-arm` | `1.3.4` | 2024-06-20 |
| `linux-x64` | `1.3.4` | 2024-04-21 |
| `linux-x64` | `1.3.5` | 2025-01-09 |
| `linux-arm` | `1.3.4` | 2024-05-25 |
:::

@ -180,7 +180,7 @@ This demo was tested in the following deployments:
| `darwin-arm` | `3.2.7` | 2024-06-15 |
| `win11-x64` | `3.2.8` | 2024-12-19 |
| `win11-arm` | `3.2.7` | 2024-07-14 |
| `linux-x64` | `3.2.7` | 2024-06-20 |
| `linux-x64` | `3.2.8` | 2025-01-10 |
| `linux-arm` | `3.2.7` | 2024-06-20 |
:::

@ -41,7 +41,7 @@ These instructions were tested on the following platforms:
| Platform | Architecture | Test Date |
|:------------------------------|:-------------|:-----------|
| Linux (Steam Deck Holo x64) | `linux-x64` | 2024-09-20 |
| Linux (Steam Deck Holo x64) | `linux-x64` | 2025-01-10 |
| Linux (Arch Linux AArch64) | `linux-arm` | 2024-05-10 |
| MacOS 14.4 (x64) | `darwin-x64` | 2024-07-12 |
| MacOS 15.1 (ARM64) | `darwin-arm` | 2024-11-10 |

@ -11,10 +11,10 @@ try { program = require('commander'); } catch (e) {
"The `xlsx` command line tool is deprecated in favor of `xlsx-cli`.",
"",
"For new versions of node, we recommend using `npx`:",
" $ npx xlsx-cli --help",
" $ npx https://cdn.sheetjs.com/xlsx-cli/xlsx-cli-1.1.4.tgz --help",
"",
"For older versions of node, explicitly install `xlsx-cli` globally:",
" $ npm i -g xlsx-cli",
" $ npm i -g https://cdn.sheetjs.com/xlsx-cli/xlsx-cli-1.1.4.tgz",
" $ xlsx-cli --help"
].forEach(function (m) { console.error(m); });
process.exit(1);
@ -197,7 +197,8 @@ workbook_formats.forEach(function (m) {
} catch (e) {}
if (wb) X.writeFile(wb, program.output || sheetname || ((filename || "") + "." + m[2]), wopts);
process.exit(0);
} });
}
});
wb_formats_2.forEach(function (m) {
if (program[m[0]] || isfmt(m[0])) {
@ -243,15 +244,15 @@ if (!program.quiet && !program.book) console.error(target_sheet);
['dif', '.dif']
].forEach(function (m) {
if (program[m[0]] || isfmt(m[1])) {
wopts.bookType = m[0];
wopts.bookType = m[0];
if (program.book) {
/*:: if (wb == null) throw new Error("Unreachable"); */
wb.SheetNames.forEach(function (n, i) {
wopts.sheet = n;
X.writeFile(wb, (program.output || sheetname || filename || "") + m[1] + "." + i, wopts);
});
} else X.writeFile(wb, program.output || sheetname || ((filename || "") + m[1]), wopts);
process.exit(0);
wopts.sheet = n;
X.writeFile(wb, (program.output || sheetname || filename || "") + m[1] + "." + i, wopts);
});
} else X.writeFile(wb, program.output || sheetname || ((filename || "") + m[1]), wopts);
process.exit(0);
}
});

@ -13,7 +13,7 @@ mkdir sheetjs-browserify-$n
cd sheetjs-browserify-$n
npm init -y
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz puppeteer
cat >index.js <<EOF
const { utils, version, writeFileXLSX } = require('xlsx');

@ -8,6 +8,7 @@ cd sheetjs-esbrowser
npm init -y
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
npm i --save puppeteer express
curl -LO https://docs.sheetjs.com/esbuild/esbrowser.js
curl -LO https://docs.sheetjs.com/esbuild/esbnode.js
@ -39,7 +40,7 @@ app.listen(7262, async() => {
});
EOF
for n in 0.9.7 0.10.2 0.11.23 0.12.29 0.13.15 0.14.54 0.15.18 0.16.17 0.17.19 0.18.20 0.19.12 0.20.2 0.21.4; do
for n in 0.{9..24}; do
npx -y esbuild@$n --version
## Browser Test

@ -10,6 +10,8 @@ mkdir sheetjs-requirejs
cd sheetjs-requirejs
curl -LO https://cdn.sheetjs.com/xlsx-latest/package/dist/xlsx.full.min.js
npm init -y
npm i puppeteer express
cat >SheetJSRequire.js <<EOF
require(["xlsx"], function(XLSX) {
@ -105,7 +107,7 @@ app.listen(7262, async() => {
});
EOF
for n in 2.3.6 2.1.22; do
for n in 2.3.7 2.1.22; do
echo $n Standalone

40
tests/data-knexjs.sh Executable file

@ -0,0 +1,40 @@
#!/bin/bash
# https://docs.sheetjs.com/docs/demos/data/knex
cd /tmp
mkdir sheetjs-knexjs
cd sheetjs-knexjs
npm init -y
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
curl -LO https://docs.sheetjs.com/knex/SheetJSKnexTest.js
curl -L -O https://docs.sheetjs.com/pres.numbers
cp SheetJSKnexTest.js SheetJSKnexTestOrig.js
# Workaround for KnexJS 0.21.20
cat SheetJSKnexTestOrig.js | sed 's/better-sqlite3/sqlite/g' > SheetJSKnexTest.js
for n in 0.21.20; do
npm i --save knex@$n sqlite3
npm ls | grep knex
node SheetJSKnexTest.js
npx xlsx-cli SheetJSKnex.xlsx
sqlite3 SheetJSKnex.db 'select * from Test_Table'
done
# Newer KnexJS versions
mv SheetJSKnexTestOrig.js SheetJSKnexTest.js
for n in 2.4 2.5 3.1; do
npm i --save knex@$n better-sqlite3
npm ls | grep knex
node SheetJSKnexTest.js
npx xlsx-cli SheetJSKnex.xlsx
sqlite3 SheetJSKnex.db 'select * from Test_Table'
done

@ -2,10 +2,11 @@
# https://docs.sheetjs.com/docs/demos/data/postgresql
## NOTE: these steps are for darwin-arm
cd /tmp
mkdir sheetjs-pg
cd sheetjs-pg
npm init -y
npm i --save https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz pg@8.13.1 pg-format@1.0.4
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz pg@8.13.1 pg-format@1.0.4
curl -LO https://docs.sheetjs.com/postgresql/SheetJSPG.js
curl -L -O https://docs.sheetjs.com/pres.numbers

@ -42,7 +42,7 @@ public class SheetJSRhino {
}
EOF
for n in 1.8 {9..22}; do
for n in 1.8 {9..23}; do
export JAVA_HOME=`/usr/libexec/java_home -v $n`
java -version
find . -name \*.class | while read x; do rm $x; done

74
tests/static-esbuild.sh Executable file

@ -0,0 +1,74 @@
#!/bin/bash
# https://docs.sheetjs.com/docs/demos/static/esbuild
cd /tmp
rm -rf sheetjs-esb
mkdir sheetjs-esb
cd sheetjs-esb
npm init -y
npm i --save https://cdn.sheetjs.com/xlsx-latest/xlsx-latest.tgz
npm i --save puppeteer express
cat >index.html <<EOF
<!DOCTYPE html>
<html>
<head>
<title>SheetJS + ESBuild</title>
</head>
<body>
<script src="out.js"></script>
</body>
</html>
EOF
cat >app.js <<EOF
import data from './pres.numbers'
const elt = document.createElement('div');
elt.innerHTML = "<table><tr><th>Name</th><th>Index</th></tr>" +
data.map((row) => \`<tr>
<td>\${row.Name}</td>
<td>\${row.Index}</td>
</tr>\`).join("") +
"</table>";
document.body.appendChild(elt);
EOF
curl -LO https://docs.sheetjs.com/esbuild/build.mjs
curl -LO https://docs.sheetjs.com/pres.numbers
cat >test.js <<EOF
const puppeteer = require('puppeteer');
const express = require('express');
const app = express();
app.use(express.static('./'));
app.listen(7262, async() => {
await new Promise((res,rej) => setTimeout(res, 1000));
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on("console", msg => console.log("PAGE LOG:", msg.text()));
await page.setViewport({width: 1920, height: 1080});
const client = await page.target().createCDPSession();
await client.send('Browser.setDownloadBehavior', {
behavior: 'allow',
downloadPath: require("path").resolve('./')
});
page.on('request', req => console.log(req.url()));
await page.goto('http://localhost:7262/');
await new Promise((res,rej) => setTimeout(res, 1000));
const innerText = await page.evaluate(() => document.body.innerText);
console.log(innerText);
await browser.close();
process.exit();
});
EOF
for n in 0.9.1 0.{9..24}; do
npm i --save esbuild@$n
npm ls | grep esbuild
rm -f out.js
node build.mjs
echo "Clinton" $(grep Clinton out.js | wc -l) "BESSELJ" $(grep BESSELJ out.js | wc -l)
node test.js
done