From e0bf641def52db8471d4330d04948056e08e2248 Mon Sep 17 00:00:00 2001
From: Joshua Lochner
Date: Fri, 7 Feb 2025 20:04:41 +0200
Subject: [PATCH] Update Kokoro.js: WebGPU support, v1.0 integration (#60)
* Set up JS project
* Finalise JS library
* Update README
* Fix package.json repository url
* Rename package -> `kokoro-js`
* Fix samples in README
* Cleanup README
* Bump `phonemizer` version
* Create web demo
* Run prettier
* Link to model used in demo
* Enable multithreading in HF space demo (~40% faster)
* Add link to demo in README
* Bump to v1.0.1
* Update voices
* Update versions
* Update phonemize JSDoc
* Use updated voice pack
* Update versions
* Update demo (v1.0 & WebGPU support)
* Update README
* Enforce maximum number of tokens
* Update README
* [version] Update to 1.1.1
---
kokoro.js/README.md | 62 ++-
kokoro.js/demo/package-lock.json | 812 ++++++++++++++++++++++++++---
kokoro.js/demo/src/App.jsx | 38 +-
kokoro.js/demo/src/utils.js | 8 +
kokoro.js/demo/src/worker.js | 17 +-
kokoro.js/package-lock.json | 52 +-
kokoro.js/package.json | 4 +-
kokoro.js/src/kokoro.js | 36 +-
kokoro.js/src/phonemize.js | 7 +
kokoro.js/src/voices.js | 370 ++++++++++++-
kokoro.js/voices/af.bin | Bin 524288 -> 0 bytes
kokoro.js/voices/af_alloy.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_aoede.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_bella.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/af_heart.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_jessica.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_kore.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_nicole.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/af_nova.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_river.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/af_sarah.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/af_sky.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/am_adam.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/am_echo.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/am_eric.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/am_fenrir.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/am_liam.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/am_michael.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/am_onyx.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/am_puck.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/am_santa.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/bf_alice.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/bf_emma.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/bf_isabella.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/bf_lily.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/bm_daniel.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/bm_fable.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/bm_george.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/bm_lewis.bin | Bin 524288 -> 522240 bytes
kokoro.js/voices/ef_dora.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/em_alex.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/em_santa.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/ff_siwis.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/hf_alpha.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/hf_beta.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/hm_omega.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/hm_psi.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/if_sara.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/im_nicola.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/jf_alpha.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/jf_gongitsune.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/jf_nezumi.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/jf_tebukuro.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/jm_kumo.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/pf_dora.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/pm_alex.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/pm_santa.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zf_xiaobei.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zf_xiaoni.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zf_xiaoxiao.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zf_xiaoyi.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zm_yunjian.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zm_yunxi.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zm_yunxia.bin | Bin 0 -> 522240 bytes
kokoro.js/voices/zm_yunyang.bin | Bin 0 -> 522240 bytes
65 files changed, 1242 insertions(+), 164 deletions(-)
create mode 100644 kokoro.js/demo/src/utils.js
delete mode 100644 kokoro.js/voices/af.bin
create mode 100644 kokoro.js/voices/af_alloy.bin
create mode 100644 kokoro.js/voices/af_aoede.bin
create mode 100644 kokoro.js/voices/af_heart.bin
create mode 100644 kokoro.js/voices/af_jessica.bin
create mode 100644 kokoro.js/voices/af_kore.bin
create mode 100644 kokoro.js/voices/af_nova.bin
create mode 100644 kokoro.js/voices/af_river.bin
create mode 100644 kokoro.js/voices/am_echo.bin
create mode 100644 kokoro.js/voices/am_eric.bin
create mode 100644 kokoro.js/voices/am_fenrir.bin
create mode 100644 kokoro.js/voices/am_liam.bin
create mode 100644 kokoro.js/voices/am_onyx.bin
create mode 100644 kokoro.js/voices/am_puck.bin
create mode 100644 kokoro.js/voices/am_santa.bin
create mode 100644 kokoro.js/voices/bf_alice.bin
create mode 100644 kokoro.js/voices/bf_lily.bin
create mode 100644 kokoro.js/voices/bm_daniel.bin
create mode 100644 kokoro.js/voices/bm_fable.bin
create mode 100644 kokoro.js/voices/ef_dora.bin
create mode 100644 kokoro.js/voices/em_alex.bin
create mode 100644 kokoro.js/voices/em_santa.bin
create mode 100644 kokoro.js/voices/ff_siwis.bin
create mode 100644 kokoro.js/voices/hf_alpha.bin
create mode 100644 kokoro.js/voices/hf_beta.bin
create mode 100644 kokoro.js/voices/hm_omega.bin
create mode 100644 kokoro.js/voices/hm_psi.bin
create mode 100644 kokoro.js/voices/if_sara.bin
create mode 100644 kokoro.js/voices/im_nicola.bin
create mode 100644 kokoro.js/voices/jf_alpha.bin
create mode 100644 kokoro.js/voices/jf_gongitsune.bin
create mode 100644 kokoro.js/voices/jf_nezumi.bin
create mode 100644 kokoro.js/voices/jf_tebukuro.bin
create mode 100644 kokoro.js/voices/jm_kumo.bin
create mode 100644 kokoro.js/voices/pf_dora.bin
create mode 100644 kokoro.js/voices/pm_alex.bin
create mode 100644 kokoro.js/voices/pm_santa.bin
create mode 100644 kokoro.js/voices/zf_xiaobei.bin
create mode 100644 kokoro.js/voices/zf_xiaoni.bin
create mode 100644 kokoro.js/voices/zf_xiaoxiao.bin
create mode 100644 kokoro.js/voices/zf_xiaoyi.bin
create mode 100644 kokoro.js/voices/zm_yunjian.bin
create mode 100644 kokoro.js/voices/zm_yunxi.bin
create mode 100644 kokoro.js/voices/zm_yunxia.bin
create mode 100644 kokoro.js/voices/zm_yunyang.bin
diff --git a/kokoro.js/README.md b/kokoro.js/README.md
index 61a76ab..9190fd5 100644
--- a/kokoro.js/README.md
+++ b/kokoro.js/README.md
@@ -5,10 +5,10 @@
-
+
-Kokoro is a frontier TTS model for its size of 82 million parameters (text in/audio out). This JavaScript library allows the model to be run 100% locally in the browser thanks to [π€ Transformers.js](https://huggingface.co/docs/transformers.js). Try it out using our [online demo](https://huggingface.co/spaces/webml-community/kokoro-web)!
+Kokoro is a frontier TTS model for its size of 82 million parameters (text in/audio out). This JavaScript library allows the model to be run 100% locally in the browser thanks to [π€ Transformers.js](https://huggingface.co/docs/transformers.js). Try it out using our [online demo](https://huggingface.co/spaces/webml-community/kokoro-webgpu)!
## Usage
@@ -23,33 +23,59 @@ You can then generate speech as follows:
```js
import { KokoroTTS } from "kokoro-js";
-const model_id = "onnx-community/Kokoro-82M-ONNX";
+const model_id = "onnx-community/Kokoro-82M-v1.0-ONNX";
const tts = await KokoroTTS.from_pretrained(model_id, {
dtype: "q8", // Options: "fp32", "fp16", "q8", "q4", "q4f16"
+ device: "wasm", // Options: "wasm", "webgpu" (web) or "cpu" (node). If using "webgpu", we recommend using dtype="fp32".
});
const text = "Life is like a box of chocolates. You never know what you're gonna get.";
const audio = await tts.generate(text, {
// Use `tts.list_voices()` to list all available voices
- voice: "af_bella",
+ voice: "af_heart",
});
audio.save("audio.wav");
```
## Voices/Samples
-> Life is like a box of chocolates. You never know what you're gonna get.
+> [!TIP]
+> You can find samples for each of the voices in the [model card](https://huggingface.co/onnx-community/Kokoro-82M-v1.0-ONNX#samples) on Hugging Face.
-| Voice | Nationality | Gender | Sample |
-| ------------------------ | ----------- | ------ | -------------------------------------------------------------------------------------------------------- |
-| Default (`af`) | American | Female | |
-| Bella (`af_bella`) | American | Female | |
-| Nicole (`af_nicole`) | American | Female | |
-| Sarah (`af_sarah`) | American | Female | |
-| Sky (`af_sky`) | American | Female | |
-| Adam (`am_adam`) | American | Male | |
-| Michael (`am_michael`) | American | Male | |
-| Emma (`bf_emma`) | British | Female | |
-| Isabella (`bf_isabella`) | British | Female | |
-| George (`bm_george`) | British | Male | |
-| Lewis (`bm_lewis`) | British | Male | |
+### American English
+
+| Name | Traits | Target Quality | Training Duration | Overall Grade |
+| ------------ | ------ | -------------- | ----------------- | ------------- |
+| **af_heart** | πΊβ€οΈ | | | **A** |
+| af_alloy | πΊ | B | MM minutes | C |
+| af_aoede | πΊ | B | H hours | C+ |
+| af_bella | πΊπ₯ | **A** | **HH hours** | **A-** |
+| af_jessica | πΊ | C | MM minutes | D |
+| af_kore | πΊ | B | H hours | C+ |
+| af_nicole | πΊπ§ | B | **HH hours** | B- |
+| af_nova | πΊ | B | MM minutes | C |
+| af_river | πΊ | C | MM minutes | D |
+| af_sarah | πΊ | B | H hours | C+ |
+| af_sky | πΊ | B | _M minutes_ π€ | C- |
+| am_adam | πΉ | D | H hours | F+ |
+| am_echo | πΉ | C | MM minutes | D |
+| am_eric | πΉ | C | MM minutes | D |
+| am_fenrir | πΉ | B | H hours | C+ |
+| am_liam | πΉ | C | MM minutes | D |
+| am_michael | πΉ | B | H hours | C+ |
+| am_onyx | πΉ | C | MM minutes | D |
+| am_puck | πΉ | B | H hours | C+ |
+| am_santa | πΉ | C | _M minutes_ π€ | D- |
+
+### British English
+
+| Name | Traits | Target Quality | Training Duration | Overall Grade |
+| ----------- | ------ | -------------- | ----------------- | ------------- |
+| bf_alice | πΊ | C | MM minutes | D |
+| bf_emma | πΊ | B | **HH hours** | B- |
+| bf_isabella | πΊ | B | MM minutes | C |
+| bf_lily | πΊ | C | MM minutes | D |
+| bm_daniel | πΉ | C | MM minutes | D |
+| bm_fable | πΉ | B | MM minutes | C |
+| bm_george | πΉ | B | MM minutes | C |
+| bm_lewis | πΉ | C | H hours | D+ |
diff --git a/kokoro.js/demo/package-lock.json b/kokoro.js/demo/package-lock.json
index a268ccd..d739996 100644
--- a/kokoro.js/demo/package-lock.json
+++ b/kokoro.js/demo/package-lock.json
@@ -31,10 +31,10 @@
},
"..": {
"name": "kokoro-js",
- "version": "1.0.0",
+ "version": "1.1.0",
"license": "Apache-2.0",
"dependencies": {
- "@huggingface/transformers": "^3.3.1",
+ "@huggingface/transformers": "^3.3.3",
"phonemizer": "^1.2.1"
},
"devDependencies": {
@@ -334,14 +334,151 @@
"node": ">=6.9.0"
}
},
- "node_modules/@esbuild/linux-x64": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz",
- "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==",
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz",
+ "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz",
+ "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz",
+ "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz",
+ "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz",
+ "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz",
+ "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz",
+ "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz",
+ "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
@@ -350,6 +487,278 @@
"node": ">=18"
}
},
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz",
+ "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz",
+ "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz",
+ "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz",
+ "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz",
+ "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz",
+ "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz",
+ "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz",
+ "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz",
+ "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz",
+ "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz",
+ "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz",
+ "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz",
+ "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz",
+ "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@eslint-community/eslint-utils": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz",
@@ -648,32 +1057,272 @@
"node": ">=14"
}
},
- "node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.28.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.0.tgz",
- "integrity": "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==",
+ "node_modules/@rollup/rollup-android-arm-eabi": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.5.tgz",
+ "integrity": "sha512-JXmmQcKQtpf3Z6lvA8akkrHDZ5AEfgc2hLMix1/X5BhQbezBQ0AP5GYLdU8jsQRme8qr2sscCe3wizp7UT0L9g==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-android-arm64": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.5.tgz",
+ "integrity": "sha512-9/A8/ZBOprUjkrJoP9BBEq2vdSud6BPd3LChw09bJQiEZH5oN4kWIkHu90cA0Cj0cSF5cIaD76+0lA+d5KHmpQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-arm64": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.5.tgz",
+ "integrity": "sha512-b9oCfgHKfc1AJEQ5sEpE8Kf6s7aeygj5bZAsl1hTpZc1V9cfZASFSXzzNj7o/BQNPbjmVkVxpCCLRhBfLXhJ5g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-darwin-x64": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.5.tgz",
+ "integrity": "sha512-Gz42gKBQPoFdMYdsVqkcpttYOO/0aP7f+1CgMaeZEz0gss7dop1TsO3hT77Iroz/TV7PdPUG/RYlj9EA39L4dw==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-arm64": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.5.tgz",
+ "integrity": "sha512-JPkafjkOFaupd8VQYsXfGFKC2pfMr7hwSYGkVGNwhbW0k0lHHyIdhCSNBendJ4O7YlT4yRyKXoms1TL7saO7SQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-freebsd-x64": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.5.tgz",
+ "integrity": "sha512-j6Q8VFqyI8hZM33h1JC6DZK2w8ejkXqEMozTrtIEGfRVMpVZL3GrLOOYEUkAgUSpJ9sb2w+FEpjGj7IHRcQfdw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.5.tgz",
+ "integrity": "sha512-6jyiXKF9Xq6x9yQjct5xrRT0VghJk5VzAfed3o0hgncwacZkzOdR0TXLRNjexsEXWN8tG7jWWwsVk7WeFi//gw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm-musleabihf": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.5.tgz",
+ "integrity": "sha512-cOTYe5tLcGAvGztRLIqx87LE7j/qjaAqFrrHsPFlnuhhhFO5LSr2AzvdQYuxomJMzMBrXkMRNl9bQEpDZ5bjLQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-gnu": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.5.tgz",
+ "integrity": "sha512-KHlrd+YqmS7rriW+LBb1kQNYmd5w1sAIG3z7HEpnQOrg/skeYYv9DAcclGL9gpFdpnzmiAEkzsTT74kZWUtChQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-arm64-musl": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.5.tgz",
+ "integrity": "sha512-uOb6hzDqym4Sw+qw3+svS3SmwQGVUhyTdPKyHDdlYg1Z0aHjdNmjwRY7zw/90/UfBe/yD7Mv2mYKhQpOfy4RYA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-loongarch64-gnu": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.5.tgz",
+ "integrity": "sha512-pARu8ZKANZH4wINLdHLKG69EPwJswM6A+Ox1a9LpiclRQoyjacFFTtXN3akKQ2ufJXDasO/pWvxKN9ZfCgEoFA==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.5.tgz",
+ "integrity": "sha512-crUWn12NRmCdao2YwS1GvlPCVypMBMJlexTaantaP2+dAMd2eZBErFcKG8hZYEHjSbbk2UoH1aTlyeA4iKLqSA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-gnu": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.5.tgz",
+ "integrity": "sha512-XtD/oMhCdixi3x8rCNyDRMUsLo1Z+1UQcK+oR7AsjglGov9ETiT3TNFhUPzaGC1jH+uaMtPhxrVRUub+pnAKTg==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-s390x-gnu": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.5.tgz",
+ "integrity": "sha512-V3+BvgyHb21aF7lw0sc78Tv0+xLp4lm2OM7CKFVrBuppsMvtl/9O5y2OX4tdDT0EhIsDP/ObJPqDuEg1ZoTwSQ==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-x64-gnu": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.5.tgz",
+ "integrity": "sha512-SkCIXLGk42yldTcH8UXh++m0snVxp9DLf4meb1mWm0lC8jzxjFBwSLGtUSeLgQDsC05iBaIhyjNX46DlByrApQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.28.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.0.tgz",
- "integrity": "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==",
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.5.tgz",
+ "integrity": "sha512-iUcH3FBtBN2/Ce0rI84suRhD0+bB5BVEffqOwsGaX5py5TuYLOQa7S7oVBP0NKtB5rub3i9IvZtMXiD96l5v0A==",
"cpu": [
"x64"
],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
"linux"
]
},
+ "node_modules/@rollup/rollup-win32-arm64-msvc": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.5.tgz",
+ "integrity": "sha512-PUbWd+h/h6rUowalDYIdc9S9LJXbQDMcJe0BjABl3oT3efYRgZ8aUe8ZZDSie7y+fz6Z+rueNfdorIbkWv5Eqg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-ia32-msvc": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.5.tgz",
+ "integrity": "sha512-3vncGhOJiAUR85fnAXJyvSp2GaDWYByIQmW68ZAr+e8kIxgvJ1VaZbfHD5BO5X6hwRQdY6Um/XfA3l5c2lV+OQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@rollup/rollup-win32-x64-msvc": {
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.5.tgz",
+ "integrity": "sha512-Mi8yVUlQOoeBpY72n75VLATptPGvj2lHa47rQdK9kZ4MoG5Ve86aVIU+PO3tBklTCBtILtdRfXS0EvIbXgmCAg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
"node_modules/@types/babel__core": {
"version": "7.20.5",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
@@ -1621,11 +2270,12 @@
}
},
"node_modules/esbuild": {
- "version": "0.24.0",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz",
- "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==",
+ "version": "0.24.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz",
+ "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
@@ -1633,30 +2283,31 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.24.0",
- "@esbuild/android-arm": "0.24.0",
- "@esbuild/android-arm64": "0.24.0",
- "@esbuild/android-x64": "0.24.0",
- "@esbuild/darwin-arm64": "0.24.0",
- "@esbuild/darwin-x64": "0.24.0",
- "@esbuild/freebsd-arm64": "0.24.0",
- "@esbuild/freebsd-x64": "0.24.0",
- "@esbuild/linux-arm": "0.24.0",
- "@esbuild/linux-arm64": "0.24.0",
- "@esbuild/linux-ia32": "0.24.0",
- "@esbuild/linux-loong64": "0.24.0",
- "@esbuild/linux-mips64el": "0.24.0",
- "@esbuild/linux-ppc64": "0.24.0",
- "@esbuild/linux-riscv64": "0.24.0",
- "@esbuild/linux-s390x": "0.24.0",
- "@esbuild/linux-x64": "0.24.0",
- "@esbuild/netbsd-x64": "0.24.0",
- "@esbuild/openbsd-arm64": "0.24.0",
- "@esbuild/openbsd-x64": "0.24.0",
- "@esbuild/sunos-x64": "0.24.0",
- "@esbuild/win32-arm64": "0.24.0",
- "@esbuild/win32-ia32": "0.24.0",
- "@esbuild/win32-x64": "0.24.0"
+ "@esbuild/aix-ppc64": "0.24.2",
+ "@esbuild/android-arm": "0.24.2",
+ "@esbuild/android-arm64": "0.24.2",
+ "@esbuild/android-x64": "0.24.2",
+ "@esbuild/darwin-arm64": "0.24.2",
+ "@esbuild/darwin-x64": "0.24.2",
+ "@esbuild/freebsd-arm64": "0.24.2",
+ "@esbuild/freebsd-x64": "0.24.2",
+ "@esbuild/linux-arm": "0.24.2",
+ "@esbuild/linux-arm64": "0.24.2",
+ "@esbuild/linux-ia32": "0.24.2",
+ "@esbuild/linux-loong64": "0.24.2",
+ "@esbuild/linux-mips64el": "0.24.2",
+ "@esbuild/linux-ppc64": "0.24.2",
+ "@esbuild/linux-riscv64": "0.24.2",
+ "@esbuild/linux-s390x": "0.24.2",
+ "@esbuild/linux-x64": "0.24.2",
+ "@esbuild/netbsd-arm64": "0.24.2",
+ "@esbuild/netbsd-x64": "0.24.2",
+ "@esbuild/openbsd-arm64": "0.24.2",
+ "@esbuild/openbsd-x64": "0.24.2",
+ "@esbuild/sunos-x64": "0.24.2",
+ "@esbuild/win32-arm64": "0.24.2",
+ "@esbuild/win32-ia32": "0.24.2",
+ "@esbuild/win32-x64": "0.24.2"
}
},
"node_modules/escalade": {
@@ -2055,6 +2706,21 @@
}
}
},
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -3334,9 +4000,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.49",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz",
- "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==",
+ "version": "8.5.1",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
+ "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
"dev": true,
"funding": [
{
@@ -3352,8 +4018,9 @@
"url": "https://github.com/sponsors/ai"
}
],
+ "license": "MIT",
"dependencies": {
- "nanoid": "^3.3.7",
+ "nanoid": "^3.3.8",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -3689,10 +4356,11 @@
}
},
"node_modules/rollup": {
- "version": "4.28.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.0.tgz",
- "integrity": "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==",
+ "version": "4.34.5",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.5.tgz",
+ "integrity": "sha512-GyVCmpo9z/HYqFD8QWoBUnz1Q9xC22t8tPAZm/AvAcUg2U2/+DkboEvSioMwv042zE4I9N3FEhx7fiCT2YHzKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@types/estree": "1.0.6"
},
@@ -3704,24 +4372,25 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.28.0",
- "@rollup/rollup-android-arm64": "4.28.0",
- "@rollup/rollup-darwin-arm64": "4.28.0",
- "@rollup/rollup-darwin-x64": "4.28.0",
- "@rollup/rollup-freebsd-arm64": "4.28.0",
- "@rollup/rollup-freebsd-x64": "4.28.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.28.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.28.0",
- "@rollup/rollup-linux-arm64-gnu": "4.28.0",
- "@rollup/rollup-linux-arm64-musl": "4.28.0",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.28.0",
- "@rollup/rollup-linux-s390x-gnu": "4.28.0",
- "@rollup/rollup-linux-x64-gnu": "4.28.0",
- "@rollup/rollup-linux-x64-musl": "4.28.0",
- "@rollup/rollup-win32-arm64-msvc": "4.28.0",
- "@rollup/rollup-win32-ia32-msvc": "4.28.0",
- "@rollup/rollup-win32-x64-msvc": "4.28.0",
+ "@rollup/rollup-android-arm-eabi": "4.34.5",
+ "@rollup/rollup-android-arm64": "4.34.5",
+ "@rollup/rollup-darwin-arm64": "4.34.5",
+ "@rollup/rollup-darwin-x64": "4.34.5",
+ "@rollup/rollup-freebsd-arm64": "4.34.5",
+ "@rollup/rollup-freebsd-x64": "4.34.5",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.34.5",
+ "@rollup/rollup-linux-arm-musleabihf": "4.34.5",
+ "@rollup/rollup-linux-arm64-gnu": "4.34.5",
+ "@rollup/rollup-linux-arm64-musl": "4.34.5",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.34.5",
+ "@rollup/rollup-linux-powerpc64le-gnu": "4.34.5",
+ "@rollup/rollup-linux-riscv64-gnu": "4.34.5",
+ "@rollup/rollup-linux-s390x-gnu": "4.34.5",
+ "@rollup/rollup-linux-x64-gnu": "4.34.5",
+ "@rollup/rollup-linux-x64-musl": "4.34.5",
+ "@rollup/rollup-win32-arm64-msvc": "4.34.5",
+ "@rollup/rollup-win32-ia32-msvc": "4.34.5",
+ "@rollup/rollup-win32-x64-msvc": "4.34.5",
"fsevents": "~2.3.2"
}
},
@@ -4384,14 +5053,15 @@
"dev": true
},
"node_modules/vite": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.1.tgz",
- "integrity": "sha512-Ldn6gorLGr4mCdFnmeAOLweJxZ34HjKnDm4HGo6P66IEqTxQb36VEdFJQENKxWjupNfoIjvRUnswjn1hpYEpjQ==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.1.0.tgz",
+ "integrity": "sha512-RjjMipCKVoR4hVfPY6GQTgveinjNuyLw+qruksLDvA5ktI1150VmcMBKmQaEWJhg/j6Uaf6dNCNA0AfdzUb/hQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "esbuild": "^0.24.0",
- "postcss": "^8.4.49",
- "rollup": "^4.23.0"
+ "esbuild": "^0.24.2",
+ "postcss": "^8.5.1",
+ "rollup": "^4.30.1"
},
"bin": {
"vite": "bin/vite.js"
diff --git a/kokoro.js/demo/src/App.jsx b/kokoro.js/demo/src/App.jsx
index 49f7f7d..14581ba 100644
--- a/kokoro.js/demo/src/App.jsx
+++ b/kokoro.js/demo/src/App.jsx
@@ -6,11 +6,12 @@ export default function App() {
const worker = useRef(null);
const [inputText, setInputText] = useState("Life is like a box of chocolates. You never know what you're gonna get.");
- const [selectedSpeaker, setSelectedSpeaker] = useState("af");
+ const [selectedSpeaker, setSelectedSpeaker] = useState("af_heart");
+ const [voices, setVoices] = useState([]);
const [status, setStatus] = useState(null);
const [error, setError] = useState(null);
- const [loadingMessage, setLoadingMessage] = useState("Loading model (only downloaded once)...");
+ const [loadingMessage, setLoadingMessage] = useState("Loading...");
const [results, setResults] = useState([]);
@@ -24,18 +25,16 @@ export default function App() {
// Create a callback function for messages from the worker thread.
const onMessageReceived = (e) => {
switch (e.data.status) {
- // TODO: WebGPU feature checking
- // case "feature-success":
- // break;
-
- // case "feature-error":
- // setError(e.data.data);
- // break;
-
+ case "device":
+ setLoadingMessage(`Loading model (device="${e.data.device}")`);
+ break;
case "ready":
setStatus("ready");
+ setVoices(e.data.voices);
+ break;
+ case "error":
+ setError(e.data.data);
break;
-
case "complete":
const { audio, text } = e.data;
// Generation complete: re-enable the "Generate" button
@@ -47,6 +46,7 @@ export default function App() {
const onErrorReceived = (e) => {
console.error("Worker error:", e);
+ setError(e.message);
};
// Attach the callback function as an event listener.
@@ -99,17 +99,11 @@ export default function App() {