astro 4 is out of beta

This commit is contained in:
SheetJS 2024-04-14 22:52:56 -04:00
parent b571592055
commit 09e390a090
5 changed files with 48 additions and 27 deletions

@ -43,6 +43,14 @@ Complete Examples are included [in the "Dojo" demo](/docs/demos/frontend/dojo)
## Snowpack
Snowpack was a development tool built by the AstroJS team.
:::caution pass
Snowpack is no longer maintained. The developers recommend [ViteJS](/docs/demos/frontend/bundler/vitejs)
:::
Snowpack works with no caveats.
<details>
@ -54,7 +62,7 @@ This demo was tested in the following environments:
| Version | Date |
|:--------|:-----------|
| `3.8.8` | 2023-12-04 |
| `3.8.8` | 2024-04-14 |
:::
@ -165,6 +173,14 @@ Click on "Click here to export" to generate a file.
## WMR
WMR was a development tool built by the PreactJS team.
:::caution pass
WMR is no longer maintained. The developers recommend [ViteJS](/docs/demos/frontend/bundler/vitejs)
:::
WMR works with no caveats.
<details>
@ -176,7 +192,7 @@ This demo was tested in the following environments:
| Version | Date |
|:--------|:-----------|
| `3.8.0` | 2023-12-04 |
| `3.8.0` | 2024-04-14 |
:::

@ -50,10 +50,10 @@ npx astro telemetry disable
This demo was tested in the following environments:
| AstroJS | Date |
|:---------------|:-----------|
| `3.6.4` | 2023-12-04 |
| `4.0.0-beta.4` | 2023-12-04 |
| AstroJS | Template | Date |
|:--------|:------------------|:-----------|
| `3.6.5` |: Starlight 0.14.0 | 2024-04-14 |
| `4.6.1` |: Starlight 0.21.5 | 2024-04-14 |
:::
@ -212,10 +212,13 @@ cd sheetjs-astro
:::note pass
To test the AstroJS 4 beta release, run the following command:
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`:
```bash
npm install --force @astrojs/starlight@^0.14.0 astro@4.0.0-beta.4
npm install --force astro@3.6.5 @astrojs/starlight@0.14.0
```
The version can be verified by running:
@ -251,7 +254,7 @@ declare module '*.xlsx' { const data: string; export default data; }
- At the top of the script, import `readFileSync`:
```js title="astro.config.mjs"
```js title="astro.config.mjs (add higlighted lines)"
// highlight-start
/* import `readFileSync` at the top of the script*/
import { readFileSync } from 'fs';
@ -261,7 +264,7 @@ import { defineConfig } from 'astro/config';
- In the object argument to `defineConfig`, add a `vite` section:
```js title="astro.config.mjs"
```js title="astro.config.mjs (add highlighted lines)"
export default defineConfig({
// highlight-start
/* this vite section should be added as a property of the object */

@ -1477,7 +1477,7 @@ The Numbers app will load the spreadsheet, confirming that the file is valid.
[^2]: See ["Array of Arrays" in the API reference](/docs/api/utilities/array#array-of-arrays)
[^3]: See ["Array Output" in "Utility Functions"](/docs/api/utilities/array#array-output)
[^4]: See ["Array of Arrays Input" in "Utility Functions"](/docs/api/utilities/array#array-of-arrays-input)
[^5]: React-Native commit [`5b597b5`](https://github.com/facebook/react-native/commit/5b597b5ff94953accc635ed3090186baeecb3873) added the final piece required for `fetch` support. It landed in version `0.72.0-rc.1` and is available in official releases starting from `0.72.0`.
[^5]: React-Native commit [`5b597b5`](https://github.com/facebook/react-native/commit/5b597b5ff94953accc635ed3090186baeecb3873) added the final piece required for `fetch` support. It is available in official releases starting from `0.72.0`.
[^6]: When the demo was last tested, the Temurin distribution of Java 17 was installed through the macOS Brew package manager by running `brew install temurin17`. [Direct downloads are available at `adoptium.net`](https://adoptium.net/temurin/releases/?version=17)
[^7]: See ["Running On Device"](https://reactnative.dev/docs/running-on-device) in the React Native documentation
[^8]: See [`UIFileSharingEnabled`](https://developer.apple.com/documentation/bundleresources/information_property_list/uifilesharingenabled) in the Apple Developer Documentation.

@ -38,7 +38,7 @@ This demo was tested in the following environments:
|:-------------|:----------|:-----------|
| `darwin-x64` | `cefd391` | 2024-03-15 |
| `darwin-arm` | `ef4cb2b` | 2023-12-08 |
| `win11-x64` | `ef4cb2b` | 2023-12-08 |
| `win10-x64` | `47bd5d4` | 2024-04-14 |
| `win11-arm` | `ef4cb2b` | 2023-12-08 |
| `linux-x64` | `cefd391` | 2024-03-21 |
| `linux-arm` | `ef4cb2b` | 2023-12-08 |

@ -14,8 +14,7 @@ import EngineData from '/data/engines.js'
data from spreadsheets.
JavaScript code cannot be directly executed on most modern computers. A software
component ("JavaScript engine") executes code. There are many engines designed
for embedding in other applications. After embedding a JS engine in software,
component ("JavaScript engine") executes code. After embedding a JS engine,
programs can leverage SheetJS libraries to process spreadsheets and data.
The demos in this section showcase a number of JS engines and language bindings.
@ -25,23 +24,23 @@ SheetJS library scripts, and reads and writes spreadsheet files.
## General Caveats
There are many other JS engines with different design goals. Some are designed
for low-power or low-memory environments. Others aim for interoperability with
There are many JS engines with different design goals. Some are designed for
low-power or low-memory environments. Others aim for interoperability with
specific programming languages or environments. Typically they support ES3 and
are capable of running SheetJS code.
Common browser and NodeJS APIs are often missing from light-weight JS engines.
#### Global
**Global**
Some engines do not provide `globalThis` or `global` or `window`. A `global`
Some engines do not provide `globalThis` or `global` or `window`. A `global`
variable can be exposed in one line that should be run in the JS engine:
```js
var global = (function(){ return this; }).call(null);
```
#### Console
**Console**
Some engines do not provide a `console` object but offer other ways to print to
standard output. For example, Hermes[^1] provides `print()`. A `console` object
@ -51,16 +50,17 @@ should be created using the engine print function:
var console = { log: function(x) { print(x); } };
```
#### Binary Data
**Binary Data**
Some engines do not provide easy ways to exchange binary data. For example, it
is common to pass null-terminated arrays, which would truncate XLSX, XLS, and
other exports. APIs that accept pointers without length should be avoided.
Some engines do not provide easy ways to exchange binary data. For example, some
libraries pass null-terminated arrays, which would truncate XLSX, XLS, and other
exports. APIs that accept pointers without length should be avoided.
Base64 strings are safe for passing between JS and native code, but they should
only be used when there is no safe way to pass `ArrayBuffer` or `Uint8Array`.
Base64 strings are safe, as they do not use null characters, but should only be
used when there is no safe way to pass `ArrayBuffer` or `Uint8Array` objects.
The SheetJS `read`[^2] and `write`[^3] methods directly support Base64 strings.
#### Byte Conventions
**Byte Conventions**
Java has no native concept of unsigned bytes. Values in a `byte[]` are limited
to the range `-128 .. 127`. They need to be fixed within the JS engine.
@ -173,4 +173,6 @@ The demo includes examples in C++ and Rust.
The ["Python + Pandas" demo](/docs/demos/math/pandas) uses V8 with Python.
[^1]: See ["Initialize Hermes"](/docs/demos/engines/hermes#initialize-hermes) in the Hermes demo.
[^1]: See ["Initialize Hermes"](/docs/demos/engines/hermes#initialize-hermes) in the Hermes demo.
[^2]: See [`read` in "Reading Files"](/docs/api/parse-options)
[^3]: See [`write` in "Writing Files"](/docs/api/write-options)