diff --git a/.gitignore b/.gitignore
index 2221a37..f2ab6ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@ pnpm-debug.log*
lerna-debug.log*
node_modules
-dist
dist-ssr
*.local
diff --git a/Cargo.lock b/Cargo.lock
index 2c0e3d8..31dc0db 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -866,18 +866,6 @@ version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
-[[package]]
-name = "example"
-version = "0.0.0"
-dependencies = [
- "serde",
- "serde_json",
- "specta",
- "tauri",
- "tauri-build",
- "tauri-specta",
-]
-
[[package]]
name = "fastrand"
version = "1.9.0"
@@ -3177,8 +3165,9 @@ dependencies = [
[[package]]
name = "specta"
-version = "2.0.0-rc.1"
-source = "git+https://github.com/oscartbeaumont/specta?rev=5948d80f2551780eda2c7bf38450fc796c74cfbf#5948d80f2551780eda2c7bf38450fc796c74cfbf"
+version = "2.0.0-rc.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "065150caa210db01913bb6f3c6d2540030937f3b0a0d9fad3dc453011f350c52"
dependencies = [
"document-features",
"indoc",
@@ -3192,8 +3181,9 @@ dependencies = [
[[package]]
name = "specta-macros"
-version = "2.0.0-rc.1"
-source = "git+https://github.com/oscartbeaumont/specta?rev=5948d80f2551780eda2c7bf38450fc796c74cfbf#5948d80f2551780eda2c7bf38450fc796c74cfbf"
+version = "2.0.0-rc.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "99a53b00ba374af8b6bd7c9061019df8b5ee0d7ab0d10d1c7c98c527d2fdb0fd"
dependencies = [
"Inflector",
"itertools",
@@ -3559,6 +3549,40 @@ dependencies = [
"thiserror",
]
+[[package]]
+name = "tauri-specta-example-app"
+version = "0.0.0"
+dependencies = [
+ "serde",
+ "serde_json",
+ "specta",
+ "tauri",
+ "tauri-build",
+ "tauri-specta",
+]
+
+[[package]]
+name = "tauri-specta-example-custom-plugin"
+version = "0.1.0"
+dependencies = [
+ "rand 0.8.5",
+ "serde",
+ "specta",
+ "tauri",
+ "tauri-specta",
+]
+
+[[package]]
+name = "tauri-specta-example-custom-plugin-app"
+version = "0.0.0"
+dependencies = [
+ "serde",
+ "serde_json",
+ "tauri",
+ "tauri-build",
+ "tauri-specta-example-custom-plugin",
+]
+
[[package]]
name = "tauri-specta-macros"
version = "0.1.0"
diff --git a/Cargo.toml b/Cargo.toml
index 67173ee..94ebe38 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -18,15 +18,15 @@ rustdoc-args = ["--cfg", "docsrs"]
[features]
default = []
-javascript = []
+javascript = ["specta/typescript"]
typescript = ["specta/typescript"]
[dependencies]
specta = { workspace = true, features = ["functions", "tauri"] }
tauri-specta-macros = { path = "./macros" }
-serde = "1.0.188"
+serde = { workspace = true }
serde_json = "1.0.106"
-tauri = "1.4.1"
+tauri = { workspace = true }
thiserror = "1.0.48"
heck = "0.4.1"
indoc = "2.0.3"
@@ -36,11 +36,13 @@ doc-comment = "0.3.3"
[workspace]
members = [
- "example/src-tauri",
- "macros"
+ "examples/app/src-tauri",
+ "examples/custom-plugin/app/src-tauri",
+ "examples/custom-plugin/plugin",
+ "macros",
]
-
[workspace.dependencies]
-# specta = { version = "=2.0.0-rc.1" }
-specta = { git = "https://github.com/oscartbeaumont/specta", rev = "5948d80f2551780eda2c7bf38450fc796c74cfbf" }
+specta = { version = "=2.0.0-rc.2" }
+serde = "1.0.188"
+tauri = "1.4.1"
diff --git a/examples/app/dist/.gitignore b/examples/app/dist/.gitignore
new file mode 100644
index 0000000..df24eb8
--- /dev/null
+++ b/examples/app/dist/.gitignore
@@ -0,0 +1,5 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
+# This is done so that Tauri never complains that '../dist does not exist'
\ No newline at end of file
diff --git a/example/index.html b/examples/app/index.html
similarity index 100%
rename from example/index.html
rename to examples/app/index.html
diff --git a/example/package.json b/examples/app/package.json
similarity index 89%
rename from example/package.json
rename to examples/app/package.json
index 6662651..17dd72c 100644
--- a/example/package.json
+++ b/examples/app/package.json
@@ -1,7 +1,6 @@
{
- "name": "example",
+ "name": "tauri-specta-example-app",
"private": true,
- "version": "0.0.0",
"type": "module",
"scripts": {
"dev": "pnpm tauri dev",
diff --git a/example/pnpm-lock.yaml b/examples/app/pnpm-lock.yaml
similarity index 100%
rename from example/pnpm-lock.yaml
rename to examples/app/pnpm-lock.yaml
diff --git a/example/src-tauri/.gitignore b/examples/app/src-tauri/.gitignore
similarity index 100%
rename from example/src-tauri/.gitignore
rename to examples/app/src-tauri/.gitignore
diff --git a/example/src-tauri/Cargo.toml b/examples/app/src-tauri/Cargo.toml
similarity index 68%
rename from example/src-tauri/Cargo.toml
rename to examples/app/src-tauri/Cargo.toml
index 89a41e7..fc72bfe 100644
--- a/example/src-tauri/Cargo.toml
+++ b/examples/app/src-tauri/Cargo.toml
@@ -1,5 +1,5 @@
[package]
-name = "example"
+name = "tauri-specta-example-app"
version = "0.0.0"
description = "A Tauri App"
authors = ["you"]
@@ -17,8 +17,8 @@ serde_json = "1.0"
specta.workspace = true
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.4.1", features = ["api-all"] }
-tauri-specta = { path = "../../", features = ["typescript", "javascript"] }
+tauri-specta = { path = "../../../", features = ["typescript", "javascript"] }
[features]
-default = [ "custom-protocol" ]
-custom-protocol = [ "tauri/custom-protocol" ]
+default = ["custom-protocol"]
+custom-protocol = ["tauri/custom-protocol"]
diff --git a/example/src-tauri/build.rs b/examples/app/src-tauri/build.rs
similarity index 100%
rename from example/src-tauri/build.rs
rename to examples/app/src-tauri/build.rs
diff --git a/example/src-tauri/icons/128x128.png b/examples/app/src-tauri/icons/128x128.png
similarity index 100%
rename from example/src-tauri/icons/128x128.png
rename to examples/app/src-tauri/icons/128x128.png
diff --git a/example/src-tauri/icons/128x128@2x.png b/examples/app/src-tauri/icons/128x128@2x.png
similarity index 100%
rename from example/src-tauri/icons/128x128@2x.png
rename to examples/app/src-tauri/icons/128x128@2x.png
diff --git a/example/src-tauri/icons/32x32.png b/examples/app/src-tauri/icons/32x32.png
similarity index 100%
rename from example/src-tauri/icons/32x32.png
rename to examples/app/src-tauri/icons/32x32.png
diff --git a/example/src-tauri/icons/Square107x107Logo.png b/examples/app/src-tauri/icons/Square107x107Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square107x107Logo.png
rename to examples/app/src-tauri/icons/Square107x107Logo.png
diff --git a/example/src-tauri/icons/Square142x142Logo.png b/examples/app/src-tauri/icons/Square142x142Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square142x142Logo.png
rename to examples/app/src-tauri/icons/Square142x142Logo.png
diff --git a/example/src-tauri/icons/Square150x150Logo.png b/examples/app/src-tauri/icons/Square150x150Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square150x150Logo.png
rename to examples/app/src-tauri/icons/Square150x150Logo.png
diff --git a/example/src-tauri/icons/Square284x284Logo.png b/examples/app/src-tauri/icons/Square284x284Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square284x284Logo.png
rename to examples/app/src-tauri/icons/Square284x284Logo.png
diff --git a/example/src-tauri/icons/Square30x30Logo.png b/examples/app/src-tauri/icons/Square30x30Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square30x30Logo.png
rename to examples/app/src-tauri/icons/Square30x30Logo.png
diff --git a/example/src-tauri/icons/Square310x310Logo.png b/examples/app/src-tauri/icons/Square310x310Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square310x310Logo.png
rename to examples/app/src-tauri/icons/Square310x310Logo.png
diff --git a/example/src-tauri/icons/Square44x44Logo.png b/examples/app/src-tauri/icons/Square44x44Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square44x44Logo.png
rename to examples/app/src-tauri/icons/Square44x44Logo.png
diff --git a/example/src-tauri/icons/Square71x71Logo.png b/examples/app/src-tauri/icons/Square71x71Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square71x71Logo.png
rename to examples/app/src-tauri/icons/Square71x71Logo.png
diff --git a/example/src-tauri/icons/Square89x89Logo.png b/examples/app/src-tauri/icons/Square89x89Logo.png
similarity index 100%
rename from example/src-tauri/icons/Square89x89Logo.png
rename to examples/app/src-tauri/icons/Square89x89Logo.png
diff --git a/example/src-tauri/icons/StoreLogo.png b/examples/app/src-tauri/icons/StoreLogo.png
similarity index 100%
rename from example/src-tauri/icons/StoreLogo.png
rename to examples/app/src-tauri/icons/StoreLogo.png
diff --git a/example/src-tauri/icons/icon.icns b/examples/app/src-tauri/icons/icon.icns
similarity index 100%
rename from example/src-tauri/icons/icon.icns
rename to examples/app/src-tauri/icons/icon.icns
diff --git a/example/src-tauri/icons/icon.ico b/examples/app/src-tauri/icons/icon.ico
similarity index 100%
rename from example/src-tauri/icons/icon.ico
rename to examples/app/src-tauri/icons/icon.ico
diff --git a/example/src-tauri/icons/icon.png b/examples/app/src-tauri/icons/icon.png
similarity index 100%
rename from example/src-tauri/icons/icon.png
rename to examples/app/src-tauri/icons/icon.png
diff --git a/example/src-tauri/src/main.rs b/examples/app/src-tauri/src/main.rs
similarity index 100%
rename from example/src-tauri/src/main.rs
rename to examples/app/src-tauri/src/main.rs
diff --git a/example/src-tauri/tauri.conf.json b/examples/app/src-tauri/tauri.conf.json
similarity index 100%
rename from example/src-tauri/tauri.conf.json
rename to examples/app/src-tauri/tauri.conf.json
diff --git a/example/src/assets/tauri.svg b/examples/app/src/assets/tauri.svg
similarity index 100%
rename from example/src/assets/tauri.svg
rename to examples/app/src/assets/tauri.svg
diff --git a/example/src/assets/typescript.svg b/examples/app/src/assets/typescript.svg
similarity index 100%
rename from example/src/assets/typescript.svg
rename to examples/app/src/assets/typescript.svg
diff --git a/example/src/assets/vite.svg b/examples/app/src/assets/vite.svg
similarity index 100%
rename from example/src/assets/vite.svg
rename to examples/app/src/assets/vite.svg
diff --git a/example/src/bindings.ts b/examples/app/src/bindings.ts
similarity index 100%
rename from example/src/bindings.ts
rename to examples/app/src/bindings.ts
diff --git a/example/src/main.ts b/examples/app/src/main.ts
similarity index 100%
rename from example/src/main.ts
rename to examples/app/src/main.ts
diff --git a/example/src/style.css b/examples/app/src/style.css
similarity index 100%
rename from example/src/style.css
rename to examples/app/src/style.css
diff --git a/example/tsconfig.json b/examples/app/tsconfig.json
similarity index 100%
rename from example/tsconfig.json
rename to examples/app/tsconfig.json
diff --git a/example/vite.config.js b/examples/app/vite.config.js
similarity index 100%
rename from example/vite.config.js
rename to examples/app/vite.config.js
diff --git a/examples/custom-plugin/app/dist/.gitignore b/examples/custom-plugin/app/dist/.gitignore
new file mode 100644
index 0000000..df24eb8
--- /dev/null
+++ b/examples/custom-plugin/app/dist/.gitignore
@@ -0,0 +1,5 @@
+# Ignore everything in this directory
+*
+# Except this file
+!.gitignore
+# This is done so that Tauri never complains that '../dist does not exist'
\ No newline at end of file
diff --git a/examples/custom-plugin/app/index.html b/examples/custom-plugin/app/index.html
new file mode 100644
index 0000000..9c2276a
--- /dev/null
+++ b/examples/custom-plugin/app/index.html
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+ Tauri + Solid + Typescript App
+
+
+
+
+
+
+
+
+
diff --git a/examples/custom-plugin/app/package.json b/examples/custom-plugin/app/package.json
new file mode 100644
index 0000000..01a0f3d
--- /dev/null
+++ b/examples/custom-plugin/app/package.json
@@ -0,0 +1,24 @@
+{
+ "name": "tauri-specta-example-custom-plugin-app",
+ "version": "0.0.0",
+ "description": "",
+ "scripts": {
+ "start": "vite",
+ "dev": "vite",
+ "build": "vite build",
+ "serve": "vite preview",
+ "tauri": "tauri"
+ },
+ "license": "MIT",
+ "dependencies": {
+ "solid-js": "^1.7.8",
+ "@tauri-apps/api": "^1.4.0",
+ "tauri-specta-custom-plugin": "workspace:*"
+ },
+ "devDependencies": {
+ "typescript": "^5.0.2",
+ "vite": "^4.4.4",
+ "vite-plugin-solid": "^2.7.0",
+ "@tauri-apps/cli": "^1.4.0"
+ }
+}
diff --git a/examples/custom-plugin/app/public/tauri.svg b/examples/custom-plugin/app/public/tauri.svg
new file mode 100644
index 0000000..31b62c9
--- /dev/null
+++ b/examples/custom-plugin/app/public/tauri.svg
@@ -0,0 +1,6 @@
+
diff --git a/examples/custom-plugin/app/public/vite.svg b/examples/custom-plugin/app/public/vite.svg
new file mode 100644
index 0000000..e7b8dfb
--- /dev/null
+++ b/examples/custom-plugin/app/public/vite.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/examples/custom-plugin/app/src-tauri/.gitignore b/examples/custom-plugin/app/src-tauri/.gitignore
new file mode 100644
index 0000000..f4dfb82
--- /dev/null
+++ b/examples/custom-plugin/app/src-tauri/.gitignore
@@ -0,0 +1,4 @@
+# Generated by Cargo
+# will have compiled files and executables
+/target/
+
diff --git a/examples/custom-plugin/app/src-tauri/Cargo.toml b/examples/custom-plugin/app/src-tauri/Cargo.toml
new file mode 100644
index 0000000..2b7c660
--- /dev/null
+++ b/examples/custom-plugin/app/src-tauri/Cargo.toml
@@ -0,0 +1,24 @@
+[package]
+name = "tauri-specta-example-custom-plugin-app"
+version = "0.0.0"
+description = "A Tauri App"
+authors = ["you"]
+license = ""
+repository = ""
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[build-dependencies]
+tauri-build = { version = "1.4", features = [] }
+
+[dependencies]
+tauri = { version = "1.4", features = ["shell-open"] }
+serde = { version = "1.0", features = ["derive"] }
+serde_json = "1.0"
+tauri-specta-example-custom-plugin = { path = "../../plugin" }
+
+[features]
+# this feature is used for production builds or when `devPath` points to the filesystem
+# DO NOT REMOVE!!
+custom-protocol = ["tauri/custom-protocol"]
diff --git a/examples/custom-plugin/app/src-tauri/build.rs b/examples/custom-plugin/app/src-tauri/build.rs
new file mode 100644
index 0000000..795b9b7
--- /dev/null
+++ b/examples/custom-plugin/app/src-tauri/build.rs
@@ -0,0 +1,3 @@
+fn main() {
+ tauri_build::build()
+}
diff --git a/examples/custom-plugin/app/src-tauri/icons/128x128.png b/examples/custom-plugin/app/src-tauri/icons/128x128.png
new file mode 100644
index 0000000..6be5e50
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/128x128.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/128x128@2x.png b/examples/custom-plugin/app/src-tauri/icons/128x128@2x.png
new file mode 100644
index 0000000..e81bece
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/128x128@2x.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/32x32.png b/examples/custom-plugin/app/src-tauri/icons/32x32.png
new file mode 100644
index 0000000..a437dd5
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/32x32.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square107x107Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square107x107Logo.png
new file mode 100644
index 0000000..0ca4f27
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square107x107Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square142x142Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square142x142Logo.png
new file mode 100644
index 0000000..b81f820
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square142x142Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square150x150Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square150x150Logo.png
new file mode 100644
index 0000000..624c7bf
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square150x150Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square284x284Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square284x284Logo.png
new file mode 100644
index 0000000..c021d2b
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square284x284Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square30x30Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square30x30Logo.png
new file mode 100644
index 0000000..6219700
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square30x30Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square310x310Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square310x310Logo.png
new file mode 100644
index 0000000..f9bc048
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square310x310Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square44x44Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square44x44Logo.png
new file mode 100644
index 0000000..d5fbfb2
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square44x44Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square71x71Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square71x71Logo.png
new file mode 100644
index 0000000..63440d7
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square71x71Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/Square89x89Logo.png b/examples/custom-plugin/app/src-tauri/icons/Square89x89Logo.png
new file mode 100644
index 0000000..f3f705a
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/Square89x89Logo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/StoreLogo.png b/examples/custom-plugin/app/src-tauri/icons/StoreLogo.png
new file mode 100644
index 0000000..4556388
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/StoreLogo.png differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/icon.icns b/examples/custom-plugin/app/src-tauri/icons/icon.icns
new file mode 100644
index 0000000..12a5bce
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/icon.icns differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/icon.ico b/examples/custom-plugin/app/src-tauri/icons/icon.ico
new file mode 100644
index 0000000..b3636e4
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/icon.ico differ
diff --git a/examples/custom-plugin/app/src-tauri/icons/icon.png b/examples/custom-plugin/app/src-tauri/icons/icon.png
new file mode 100644
index 0000000..e1cd261
Binary files /dev/null and b/examples/custom-plugin/app/src-tauri/icons/icon.png differ
diff --git a/examples/custom-plugin/app/src-tauri/src/main.rs b/examples/custom-plugin/app/src-tauri/src/main.rs
new file mode 100644
index 0000000..445fc18
--- /dev/null
+++ b/examples/custom-plugin/app/src-tauri/src/main.rs
@@ -0,0 +1,9 @@
+// Prevents additional console window on Windows in release, DO NOT REMOVE!!
+#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
+
+fn main() {
+ tauri::Builder::default()
+ .plugin(tauri_specta_example_custom_plugin::init())
+ .run(tauri::generate_context!())
+ .expect("error while running tauri application");
+}
diff --git a/examples/custom-plugin/app/src-tauri/tauri.conf.json b/examples/custom-plugin/app/src-tauri/tauri.conf.json
new file mode 100644
index 0000000..8fe71c5
--- /dev/null
+++ b/examples/custom-plugin/app/src-tauri/tauri.conf.json
@@ -0,0 +1,46 @@
+{
+ "build": {
+ "beforeDevCommand": "pnpm dev",
+ "beforeBuildCommand": "pnpm build",
+ "devPath": "http://localhost:1420",
+ "distDir": "../dist",
+ "withGlobalTauri": false
+ },
+ "package": {
+ "productName": "app",
+ "version": "0.0.0"
+ },
+ "tauri": {
+ "allowlist": {
+ "all": false,
+ "shell": {
+ "all": false,
+ "open": true
+ }
+ },
+ "bundle": {
+ "active": true,
+ "targets": "all",
+ "identifier": "com.tauri.dev",
+ "icon": [
+ "icons/32x32.png",
+ "icons/128x128.png",
+ "icons/128x128@2x.png",
+ "icons/icon.icns",
+ "icons/icon.ico"
+ ]
+ },
+ "security": {
+ "csp": null
+ },
+ "windows": [
+ {
+ "fullscreen": false,
+ "resizable": true,
+ "title": "app",
+ "width": 800,
+ "height": 600
+ }
+ ]
+ }
+}
diff --git a/examples/custom-plugin/app/src/App.tsx b/examples/custom-plugin/app/src/App.tsx
new file mode 100644
index 0000000..75c473a
--- /dev/null
+++ b/examples/custom-plugin/app/src/App.tsx
@@ -0,0 +1,50 @@
+import { Match, Switch, createSignal, onCleanup } from "solid-js";
+import { events, addNumbers } from "tauri-specta-custom-plugin";
+
+function App() {
+ const [latestNumber, setLatestNumber] = createSignal(null);
+
+ const [generatedNumber, setGeneratedNumber] = createSignal<
+ { type: "loading" } | { type: "loaded"; value: number } | null
+ >(null);
+
+ events.randomNumber
+ .listen((e) => setLatestNumber(e.payload))
+ .then((unlisten) => onCleanup(unlisten));
+
+ return (
+
+
Latest Random Number: {latestNumber()}
+
+
+
+ Loading number...
+
+ {
+ const n = generatedNumber();
+ return n?.type === "loaded" && n.value;
+ })()}
+ >
+ {(value) => value()}
+
+
+
+ );
+}
+
+export default App;
diff --git a/examples/custom-plugin/app/src/index.tsx b/examples/custom-plugin/app/src/index.tsx
new file mode 100644
index 0000000..0f53b43
--- /dev/null
+++ b/examples/custom-plugin/app/src/index.tsx
@@ -0,0 +1,6 @@
+/* @refresh reload */
+import { render } from "solid-js/web";
+
+import App from "./App";
+
+render(() => , document.getElementById("root") as HTMLElement);
diff --git a/examples/custom-plugin/app/tsconfig.json b/examples/custom-plugin/app/tsconfig.json
new file mode 100644
index 0000000..d2064db
--- /dev/null
+++ b/examples/custom-plugin/app/tsconfig.json
@@ -0,0 +1,28 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "skipLibCheck": true,
+
+ /* Bundler mode */
+ "moduleResolution": "bundler",
+ "allowImportingTsExtensions": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "jsx": "preserve",
+ "jsxImportSource": "solid-js",
+
+ /* Linting */
+ "strict": true,
+ "noUnusedLocals": true,
+ "noUnusedParameters": true,
+ "noFallthroughCasesInSwitch": true,
+
+ "checkJs": true
+ },
+ "include": ["src"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/examples/custom-plugin/app/vite-env.d.ts b/examples/custom-plugin/app/vite-env.d.ts
new file mode 100644
index 0000000..11f02fe
--- /dev/null
+++ b/examples/custom-plugin/app/vite-env.d.ts
@@ -0,0 +1 @@
+///
diff --git a/examples/custom-plugin/app/vite.config.ts b/examples/custom-plugin/app/vite.config.ts
new file mode 100644
index 0000000..c8d4569
--- /dev/null
+++ b/examples/custom-plugin/app/vite.config.ts
@@ -0,0 +1,20 @@
+import { defineConfig } from "vite";
+import solidPlugin from "vite-plugin-solid";
+
+// https://vitejs.dev/config/
+export default defineConfig(async () => ({
+ plugins: [solidPlugin()],
+
+ // Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
+ //
+ // 1. prevent vite from obscuring rust errors
+ clearScreen: false,
+ // 2. tauri expects a fixed port, fail if that port is not available
+ server: {
+ port: 1420,
+ strictPort: true,
+ },
+ // 3. to make use of `TAURI_DEBUG` and other env variables
+ // https://tauri.studio/v1/api/config#buildconfig.beforedevcommand
+ envPrefix: ["VITE_", "TAURI_"],
+}));
diff --git a/examples/custom-plugin/plugin/Cargo.toml b/examples/custom-plugin/plugin/Cargo.toml
new file mode 100644
index 0000000..b23183d
--- /dev/null
+++ b/examples/custom-plugin/plugin/Cargo.toml
@@ -0,0 +1,13 @@
+[package]
+name = "tauri-specta-example-custom-plugin"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+rand = "0.8.5"
+serde = { workspace = true }
+specta = { workspace = true }
+tauri = { workspace = true }
+tauri-specta = { path = "../../../", features = ["typescript"] }
diff --git a/examples/custom-plugin/plugin/bindings.ts b/examples/custom-plugin/plugin/bindings.ts
new file mode 100644
index 0000000..c4ce6f2
--- /dev/null
+++ b/examples/custom-plugin/plugin/bindings.ts
@@ -0,0 +1,77 @@
+// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually.
+
+export const commands = {
+ /**
+ * Adds two numbers, returning the result.
+ */
+ async addNumbers(a: number, b: number): Promise {
+ return await TAURI_INVOKE("plugin:custom-plugin|add_numbers", { a, b });
+ },
+};
+
+export const events = __makeEvents__<{
+ randomNumber: RandomNumber;
+}>({
+ randomNumber: "plugin:custom-plugin:random-number",
+});
+
+/** user-defined types **/
+
+export type RandomNumber = number;
+
+/** tauri-specta globals **/
+
+import { invoke as TAURI_INVOKE } from "@tauri-apps/api";
+import * as TAURI_API_EVENT from "@tauri-apps/api/event";
+import { type WebviewWindowHandle as __WebviewWindowHandle__ } from "@tauri-apps/api/window";
+
+type __EventObj__ = {
+ listen: (
+ cb: TAURI_API_EVENT.EventCallback
+ ) => ReturnType>;
+ once: (
+ cb: TAURI_API_EVENT.EventCallback
+ ) => ReturnType>;
+ emit: T extends null
+ ? (payload?: T) => ReturnType
+ : (payload: T) => ReturnType;
+};
+
+type __Result__ =
+ | { status: "ok"; data: T }
+ | { status: "error"; error: E };
+
+function __makeEvents__>(
+ mappings: Record
+) {
+ return new Proxy(
+ {} as unknown as {
+ [K in keyof T]: __EventObj__ & {
+ (handle: __WebviewWindowHandle__): __EventObj__;
+ };
+ },
+ {
+ get: (_, event) => {
+ const name = mappings[event as keyof T];
+
+ return new Proxy((() => {}) as any, {
+ apply: (_, __, [window]: [__WebviewWindowHandle__]) => ({
+ listen: (arg: any) => window.listen(name, arg),
+ once: (arg: any) => window.once(name, arg),
+ emit: (arg: any) => window.emit(name, arg),
+ }),
+ get: (_, command: keyof __EventObj__) => {
+ switch (command) {
+ case "listen":
+ return (arg: any) => TAURI_API_EVENT.listen(name, arg);
+ case "once":
+ return (arg: any) => TAURI_API_EVENT.once(name, arg);
+ case "emit":
+ return (arg: any) => TAURI_API_EVENT.emit(name, arg);
+ }
+ },
+ });
+ },
+ }
+ );
+}
diff --git a/examples/custom-plugin/plugin/index.ts b/examples/custom-plugin/plugin/index.ts
new file mode 100644
index 0000000..e8b6ccd
--- /dev/null
+++ b/examples/custom-plugin/plugin/index.ts
@@ -0,0 +1,4 @@
+import { commands, events } from "./bindings";
+
+export const { addNumbers } = commands;
+export { events };
diff --git a/examples/custom-plugin/plugin/package.json b/examples/custom-plugin/plugin/package.json
new file mode 100644
index 0000000..68c4609
--- /dev/null
+++ b/examples/custom-plugin/plugin/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "tauri-specta-custom-plugin",
+ "private": true,
+ "exports": {
+ "./package.json": "./package.json",
+ ".": {
+ "types": "./dist/index.d.ts",
+ "import": "./dist/index.js",
+ "default": "./dist/index.js"
+ }
+ },
+ "scripts": {
+ "post-install": "build",
+ "build": "pnpm tsc",
+ "codegen": "cargo test && pnpm build"
+ },
+ "devDependencies": {
+ "typescript": "^5.2.2"
+ }
+}
diff --git a/examples/custom-plugin/plugin/src/lib.rs b/examples/custom-plugin/plugin/src/lib.rs
new file mode 100644
index 0000000..1845f94
--- /dev/null
+++ b/examples/custom-plugin/plugin/src/lib.rs
@@ -0,0 +1,58 @@
+use tauri::{
+ plugin::{Builder, TauriPlugin},
+ Runtime,
+};
+use tauri_specta::*;
+
+/// Adds two numbers, returning the result.
+#[tauri::command]
+#[specta::specta]
+fn add_numbers(a: i32, b: i32) -> i32 {
+ a + b
+}
+
+#[derive(Clone, serde::Serialize, specta::Type, Event)]
+struct RandomNumber(i32);
+
+macro_rules! specta_builder {
+ () => {
+ ts::builder()
+ .commands(collect_commands![add_numbers])
+ .events(collect_events![RandomNumber])
+ };
+}
+
+const PLUGIN_NAME: &str = "custom-plugin";
+
+pub fn init() -> TauriPlugin {
+ let plugin_utils = specta_builder!().into_plugin_utils(PLUGIN_NAME);
+
+ Builder::new(PLUGIN_NAME)
+ .invoke_handler(plugin_utils.invoke_handler)
+ .setup(move |app| {
+ let app = app.clone();
+ (plugin_utils.setup)(&app.clone());
+
+ std::thread::spawn(move || loop {
+ RandomNumber(rand::random()).emit_all(&app).unwrap();
+ std::thread::sleep(std::time::Duration::from_secs(1));
+ });
+
+ Ok(())
+ })
+ .build()
+}
+
+#[cfg(test)]
+mod test {
+ use super::*;
+
+ #[test]
+ fn export_types() {
+ specta_builder!()
+ .path("./bindings.ts")
+ .config(specta::ts::ExportConfig::default().formatter(specta::ts::prettier))
+ .export_for_plugin(PLUGIN_NAME)
+ .ok();
+ }
+}
diff --git a/examples/custom-plugin/plugin/tsconfig.json b/examples/custom-plugin/plugin/tsconfig.json
new file mode 100644
index 0000000..ceefafa
--- /dev/null
+++ b/examples/custom-plugin/plugin/tsconfig.json
@@ -0,0 +1,110 @@
+{
+ "compilerOptions": {
+ /* Visit https://aka.ms/tsconfig to read more about this file */
+
+ /* Projects */
+ // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
+ // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
+ // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
+ // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
+ // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
+ // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
+
+ /* Language and Environment */
+ "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
+ // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
+ // "jsx": "preserve", /* Specify what JSX code is generated. */
+ // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
+ // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
+ // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
+ // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
+ // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
+ // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
+ // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
+ // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
+ // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
+
+ /* Modules */
+ "module": "ES6" /* Specify what module code is generated. */,
+ // "rootDir": "./", /* Specify the root folder within your source files. */
+ "moduleResolution": "node" /* Specify how TypeScript looks up a file from a given module specifier. */,
+ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
+ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
+ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
+ // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
+ // "types": [], /* Specify type package names to be included without being referenced in a source file. */
+ // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
+ // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
+ // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
+ // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
+ // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
+ // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
+ // "resolveJsonModule": true, /* Enable importing .json files. */
+ // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
+ // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
+
+ /* JavaScript Support */
+ // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
+ // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
+ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
+
+ /* Emit */
+ "declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */,
+ // "declarationMap": true, /* Create sourcemaps for d.ts files. */
+ // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
+ // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
+ // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
+ // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
+ "outDir": "./dist" /* Specify an output folder for all emitted files. */,
+ // "removeComments": true, /* Disable emitting comments. */
+ // "noEmit": true, /* Disable emitting files from a compilation. */
+ // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
+ // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
+ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
+ // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
+ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
+ // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
+ // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
+ // "newLine": "crlf", /* Set the newline character for emitting files. */
+ // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
+ // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
+ // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
+ // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
+ // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
+ // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
+
+ /* Interop Constraints */
+ // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
+ // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
+ // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
+ "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
+ // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
+ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
+
+ /* Type Checking */
+ "strict": true /* Enable all strict type-checking options. */,
+ // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
+ // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
+ // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
+ // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
+ // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
+ // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
+ // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
+ // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
+ // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
+ // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
+ // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
+ // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
+ // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
+ // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
+ // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
+ // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
+ // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
+ // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
+
+ /* Completeness */
+ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
+ "skipLibCheck": true /* Skip type checking all .d.ts files. */
+ },
+ "include": ["index.ts"]
+}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index e118357..ff1df80 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -28,8 +28,367 @@ importers:
specifier: ^4.1.1
version: 4.1.1
+ examples/custom-plugin/app:
+ dependencies:
+ '@tauri-apps/api':
+ specifier: ^1.4.0
+ version: 1.4.0
+ solid-js:
+ specifier: ^1.7.8
+ version: 1.7.8
+ tauri-specta-custom-plugin:
+ specifier: workspace:*
+ version: link:../plugin
+ devDependencies:
+ '@tauri-apps/cli':
+ specifier: ^1.4.0
+ version: 1.4.0
+ typescript:
+ specifier: ^5.0.2
+ version: 5.0.2
+ vite:
+ specifier: ^4.4.4
+ version: 4.4.4
+ vite-plugin-solid:
+ specifier: ^2.7.0
+ version: 2.7.0(solid-js@1.7.8)(vite@4.4.4)
+
+ examples/custom-plugin/plugin:
+ devDependencies:
+ typescript:
+ specifier: ^5.2.2
+ version: 5.2.2
+
packages:
+ /@ampproject/remapping@2.2.1:
+ resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.19
+ dev: true
+
+ /@babel/code-frame@7.22.13:
+ resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/highlight': 7.22.13
+ chalk: 2.4.2
+ dev: true
+
+ /@babel/compat-data@7.22.9:
+ resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/core@7.22.15:
+ resolution: {integrity: sha512-PtZqMmgRrvj8ruoEOIwVA3yoF91O+Hgw9o7DAUTNBA6Mo2jpu31clx9a7Nz/9JznqetTR6zwfC4L3LAjKQXUwA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@ampproject/remapping': 2.2.1
+ '@babel/code-frame': 7.22.13
+ '@babel/generator': 7.22.15
+ '@babel/helper-compilation-targets': 7.22.15
+ '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15)
+ '@babel/helpers': 7.22.15
+ '@babel/parser': 7.22.16
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.22.15
+ '@babel/types': 7.22.15
+ convert-source-map: 1.9.0
+ debug: 4.3.4
+ gensync: 1.0.0-beta.2
+ json5: 2.2.3
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/generator@7.22.15:
+ resolution: {integrity: sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ '@jridgewell/gen-mapping': 0.3.3
+ '@jridgewell/trace-mapping': 0.3.19
+ jsesc: 2.5.2
+ dev: true
+
+ /@babel/helper-annotate-as-pure@7.22.5:
+ resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-compilation-targets@7.22.15:
+ resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/compat-data': 7.22.9
+ '@babel/helper-validator-option': 7.22.15
+ browserslist: 4.21.10
+ lru-cache: 5.1.1
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-create-class-features-plugin@7.22.15(@babel/core@7.22.15):
+ resolution: {integrity: sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-annotate-as-pure': 7.22.5
+ '@babel/helper-environment-visitor': 7.22.5
+ '@babel/helper-function-name': 7.22.5
+ '@babel/helper-member-expression-to-functions': 7.22.15
+ '@babel/helper-optimise-call-expression': 7.22.5
+ '@babel/helper-replace-supers': 7.22.9(@babel/core@7.22.15)
+ '@babel/helper-skip-transparent-expression-wrappers': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ semver: 6.3.1
+ dev: true
+
+ /@babel/helper-environment-visitor@7.22.5:
+ resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-function-name@7.22.5:
+ resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.22.15
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-hoist-variables@7.22.5:
+ resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-member-expression-to-functions@7.22.15:
+ resolution: {integrity: sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-module-imports@7.18.6:
+ resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-module-imports@7.22.15:
+ resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-module-transforms@7.22.15(@babel/core@7.22.15):
+ resolution: {integrity: sha512-l1UiX4UyHSFsYt17iQ3Se5pQQZZHa22zyIXURmvkmLCD4t/aU+dvNWHatKac/D9Vm9UES7nvIqHs4jZqKviUmQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-environment-visitor': 7.22.5
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/helper-simple-access': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/helper-validator-identifier': 7.22.15
+ dev: true
+
+ /@babel/helper-optimise-call-expression@7.22.5:
+ resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-plugin-utils@7.22.5:
+ resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-replace-supers@7.22.9(@babel/core@7.22.15):
+ resolution: {integrity: sha512-LJIKvvpgPOPUThdYqcX6IXRuIcTkcAub0IaDRGCZH0p5GPUp7PhRU9QVgFcDDd51BaPkk77ZjqFwh6DZTAEmGg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-environment-visitor': 7.22.5
+ '@babel/helper-member-expression-to-functions': 7.22.15
+ '@babel/helper-optimise-call-expression': 7.22.5
+ dev: true
+
+ /@babel/helper-simple-access@7.22.5:
+ resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-skip-transparent-expression-wrappers@7.22.5:
+ resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-split-export-declaration@7.22.6:
+ resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/helper-string-parser@7.22.5:
+ resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-identifier@7.22.15:
+ resolution: {integrity: sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helper-validator-option@7.22.15:
+ resolution: {integrity: sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/helpers@7.22.15:
+ resolution: {integrity: sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/template': 7.22.15
+ '@babel/traverse': 7.22.15
+ '@babel/types': 7.22.15
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/highlight@7.22.13:
+ resolution: {integrity: sha512-C/BaXcnnvBCmHTpz/VGZ8jgtE2aYlW4hxDhseJAWZb7gqGM/qtCK6iZUb0TyKFf7BOUsBH7Q7fkRsDRhg1XklQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.22.15
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ dev: true
+
+ /@babel/parser@7.22.16:
+ resolution: {integrity: sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.15):
+ resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-plugin-utils': 7.22.5
+ dev: true
+
+ /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.15):
+ resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-plugin-utils': 7.22.5
+ dev: true
+
+ /@babel/plugin-transform-modules-commonjs@7.22.15(@babel/core@7.22.15):
+ resolution: {integrity: sha512-jWL4eh90w0HQOTKP2MoXXUpVxilxsB2Vl4ji69rSjS3EcZ/v4sBmn+A3NpepuJzBhOaEBbR7udonlHHn5DWidg==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-module-transforms': 7.22.15(@babel/core@7.22.15)
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/helper-simple-access': 7.22.5
+ dev: true
+
+ /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.15):
+ resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-annotate-as-pure': 7.22.5
+ '@babel/helper-create-class-features-plugin': 7.22.15(@babel/core@7.22.15)
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.15)
+ dev: true
+
+ /@babel/preset-typescript@7.22.15(@babel/core@7.22.15):
+ resolution: {integrity: sha512-HblhNmh6yM+cU4VwbBRpxFhxsTdfS1zsvH9W+gEjD0ARV9+8B4sNfpI6GuhePti84nuvhiwKS539jKPFHskA9A==}
+ engines: {node: '>=6.9.0'}
+ peerDependencies:
+ '@babel/core': ^7.0.0-0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-plugin-utils': 7.22.5
+ '@babel/helper-validator-option': 7.22.15
+ '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15)
+ '@babel/plugin-transform-modules-commonjs': 7.22.15(@babel/core@7.22.15)
+ '@babel/plugin-transform-typescript': 7.22.15(@babel/core@7.22.15)
+ dev: true
+
+ /@babel/template@7.22.15:
+ resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/parser': 7.22.16
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@babel/traverse@7.22.15:
+ resolution: {integrity: sha512-DdHPwvJY0sEeN4xJU5uRLmZjgMMDIvMPniLuYzUVXj/GGzysPl0/fwt44JBkyUIzGJPV8QgHMcQdQ34XFuKTYQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/code-frame': 7.22.13
+ '@babel/generator': 7.22.15
+ '@babel/helper-environment-visitor': 7.22.5
+ '@babel/helper-function-name': 7.22.5
+ '@babel/helper-hoist-variables': 7.22.5
+ '@babel/helper-split-export-declaration': 7.22.6
+ '@babel/parser': 7.22.16
+ '@babel/types': 7.22.15
+ debug: 4.3.4
+ globals: 11.12.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@babel/types@7.22.15:
+ resolution: {integrity: sha512-X+NLXr0N8XXmN5ZsaQdm9U2SSC3UbIYq/doL++sueHOTisgZHoKaQtZxGuV2cUPQHMfjKEfg/g6oy7Hm6SKFtA==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-string-parser': 7.22.5
+ '@babel/helper-validator-identifier': 7.22.15
+ to-fast-properties: 2.0.0
+ dev: true
+
/@esbuild/android-arm64@0.16.17:
resolution: {integrity: sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==}
engines: {node: '>=12'}
@@ -39,6 +398,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-arm64@0.18.20:
+ resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-arm@0.16.17:
resolution: {integrity: sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==}
engines: {node: '>=12'}
@@ -48,6 +416,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-arm@0.18.20:
+ resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/android-x64@0.16.17:
resolution: {integrity: sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==}
engines: {node: '>=12'}
@@ -57,6 +434,15 @@ packages:
dev: true
optional: true
+ /@esbuild/android-x64@0.18.20:
+ resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [android]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/darwin-arm64@0.16.17:
resolution: {integrity: sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==}
engines: {node: '>=12'}
@@ -66,6 +452,15 @@ packages:
dev: true
optional: true
+ /@esbuild/darwin-arm64@0.18.20:
+ resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/darwin-x64@0.16.17:
resolution: {integrity: sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==}
engines: {node: '>=12'}
@@ -75,6 +470,15 @@ packages:
dev: true
optional: true
+ /@esbuild/darwin-x64@0.18.20:
+ resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/freebsd-arm64@0.16.17:
resolution: {integrity: sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==}
engines: {node: '>=12'}
@@ -84,6 +488,15 @@ packages:
dev: true
optional: true
+ /@esbuild/freebsd-arm64@0.18.20:
+ resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/freebsd-x64@0.16.17:
resolution: {integrity: sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==}
engines: {node: '>=12'}
@@ -93,6 +506,15 @@ packages:
dev: true
optional: true
+ /@esbuild/freebsd-x64@0.18.20:
+ resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [freebsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-arm64@0.16.17:
resolution: {integrity: sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==}
engines: {node: '>=12'}
@@ -102,6 +524,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-arm64@0.18.20:
+ resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-arm@0.16.17:
resolution: {integrity: sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==}
engines: {node: '>=12'}
@@ -111,6 +542,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-arm@0.18.20:
+ resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
+ engines: {node: '>=12'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-ia32@0.16.17:
resolution: {integrity: sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==}
engines: {node: '>=12'}
@@ -120,6 +560,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-ia32@0.18.20:
+ resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-loong64@0.16.17:
resolution: {integrity: sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==}
engines: {node: '>=12'}
@@ -129,6 +578,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-loong64@0.18.20:
+ resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
+ engines: {node: '>=12'}
+ cpu: [loong64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-mips64el@0.16.17:
resolution: {integrity: sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==}
engines: {node: '>=12'}
@@ -138,6 +596,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-mips64el@0.18.20:
+ resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
+ engines: {node: '>=12'}
+ cpu: [mips64el]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-ppc64@0.16.17:
resolution: {integrity: sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==}
engines: {node: '>=12'}
@@ -147,6 +614,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-ppc64@0.18.20:
+ resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
+ engines: {node: '>=12'}
+ cpu: [ppc64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-riscv64@0.16.17:
resolution: {integrity: sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==}
engines: {node: '>=12'}
@@ -156,6 +632,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-riscv64@0.18.20:
+ resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
+ engines: {node: '>=12'}
+ cpu: [riscv64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-s390x@0.16.17:
resolution: {integrity: sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==}
engines: {node: '>=12'}
@@ -165,6 +650,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-s390x@0.18.20:
+ resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
+ engines: {node: '>=12'}
+ cpu: [s390x]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/linux-x64@0.16.17:
resolution: {integrity: sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==}
engines: {node: '>=12'}
@@ -174,6 +668,15 @@ packages:
dev: true
optional: true
+ /@esbuild/linux-x64@0.18.20:
+ resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/netbsd-x64@0.16.17:
resolution: {integrity: sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==}
engines: {node: '>=12'}
@@ -183,6 +686,15 @@ packages:
dev: true
optional: true
+ /@esbuild/netbsd-x64@0.18.20:
+ resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [netbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/openbsd-x64@0.16.17:
resolution: {integrity: sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==}
engines: {node: '>=12'}
@@ -192,6 +704,15 @@ packages:
dev: true
optional: true
+ /@esbuild/openbsd-x64@0.18.20:
+ resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [openbsd]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/sunos-x64@0.16.17:
resolution: {integrity: sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==}
engines: {node: '>=12'}
@@ -201,6 +722,15 @@ packages:
dev: true
optional: true
+ /@esbuild/sunos-x64@0.18.20:
+ resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [sunos]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-arm64@0.16.17:
resolution: {integrity: sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==}
engines: {node: '>=12'}
@@ -210,6 +740,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-arm64@0.18.20:
+ resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
+ engines: {node: '>=12'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-ia32@0.16.17:
resolution: {integrity: sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==}
engines: {node: '>=12'}
@@ -219,6 +758,15 @@ packages:
dev: true
optional: true
+ /@esbuild/win32-ia32@0.18.20:
+ resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
+ engines: {node: '>=12'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@esbuild/win32-x64@0.16.17:
resolution: {integrity: sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==}
engines: {node: '>=12'}
@@ -226,13 +774,57 @@ packages:
os: [win32]
requiresBuild: true
dev: true
- optional: true
+ optional: true
+
+ /@esbuild/win32-x64@0.18.20:
+ resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
+ engines: {node: '>=12'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@jridgewell/gen-mapping@0.3.3:
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.19
+ dev: true
+
+ /@jridgewell/resolve-uri@3.1.1:
+ resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/set-array@1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec@1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: true
+
+ /@jridgewell/trace-mapping@0.3.19:
+ resolution: {integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ dev: true
/@tauri-apps/api@1.2.0:
resolution: {integrity: sha512-lsI54KI6HGf7VImuf/T9pnoejfgkNoXveP14pVV7XarrQ46rOejIVJLFqHI9sRReJMGdh2YuCoI3cc/yCWCsrw==}
engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
dev: false
+ /@tauri-apps/api@1.4.0:
+ resolution: {integrity: sha512-Jd6HPoTM1PZSFIzq7FB8VmMu3qSSyo/3lSwLpoapW+lQ41CL5Dow2KryLg+gyazA/58DRWI9vu/XpEeHK4uMdw==}
+ engines: {node: '>= 14.6.0', npm: '>= 6.6.0', yarn: '>= 1.19.1'}
+ dev: false
+
/@tauri-apps/cli-darwin-arm64@1.2.3:
resolution: {integrity: sha512-phJN3fN8FtZZwqXg08bcxfq1+X1JSDglLvRxOxB7VWPq+O5SuB8uLyssjJsu+PIhyZZnIhTGdjhzLSFhSXfLsw==}
engines: {node: '>= 10'}
@@ -242,6 +834,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-darwin-arm64@1.4.0:
+ resolution: {integrity: sha512-nA/ml0SfUt6/CYLVbHmT500Y+ijqsuv5+s9EBnVXYSLVg9kbPUZJJHluEYK+xKuOj6xzyuT/+rZFMRapmJD3jQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-darwin-x64@1.2.3:
resolution: {integrity: sha512-jFZ/y6z8z6v4yliIbXKBXA7BJgtZVMsITmEXSuD6s5+eCOpDhQxbRkr6CA+FFfr+/r96rWSDSgDenDQuSvPAKw==}
engines: {node: '>= 10'}
@@ -251,6 +852,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-darwin-x64@1.4.0:
+ resolution: {integrity: sha512-ov/F6Zr+dg9B0PtRu65stFo2G0ow2TUlneqYYrkj+vA3n+moWDHfVty0raDjMLQbQt3rv3uayFMXGPMgble9OA==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-linux-arm-gnueabihf@1.2.3:
resolution: {integrity: sha512-C7h5vqAwXzY0kRGSU00Fj8PudiDWFCiQqqUNI1N+fhCILrzWZB9TPBwdx33ZfXKt/U4+emdIoo/N34v3TiAOmQ==}
engines: {node: '>= 10'}
@@ -260,6 +870,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-linux-arm-gnueabihf@1.4.0:
+ resolution: {integrity: sha512-zwjbiMncycXDV7doovymyKD7sCg53ouAmfgpUqEBOTY3vgBi9TwijyPhJOqoG5vUVWhouNBC08akGmE4dja15g==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-linux-arm64-gnu@1.2.3:
resolution: {integrity: sha512-buf1c8sdkuUzVDkGPQpyUdAIIdn5r0UgXU6+H5fGPq/Xzt5K69JzXaeo6fHsZEZghbV0hOK+taKV4J0m30UUMQ==}
engines: {node: '>= 10'}
@@ -269,6 +888,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-linux-arm64-gnu@1.4.0:
+ resolution: {integrity: sha512-5MCBcziqXC72mMXnkZU68mutXIR6zavDxopArE2gQtK841IlE06bIgtLi0kUUhlFJk2nhPRgiDgdLbrPlyt7fw==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-linux-arm64-musl@1.2.3:
resolution: {integrity: sha512-x88wPS9W5xAyk392vc4uNHcKBBvCp0wf4H9JFMF9OBwB7vfd59LbQCFcPSu8f0BI7bPrOsyHqspWHuFL8ojQEA==}
engines: {node: '>= 10'}
@@ -278,6 +906,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-linux-arm64-musl@1.4.0:
+ resolution: {integrity: sha512-7J3pRB6n6uNYgIfCeKt2Oz8J7oSaz2s8GGFRRH2HPxuTHrBNCinzVYm68UhVpJrL3bnGkU0ziVZLsW/iaOGfUg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-linux-x64-gnu@1.2.3:
resolution: {integrity: sha512-ZMz1jxEVe0B4/7NJnlPHmwmSIuwiD6ViXKs8F+OWWz2Y4jn5TGxWKFg7DLx5OwQTRvEIZxxT7lXHi5CuTNAxKg==}
engines: {node: '>= 10'}
@@ -287,6 +924,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-linux-x64-gnu@1.4.0:
+ resolution: {integrity: sha512-Zh5gfAJxOv5AVWxcwuueaQ2vIAhlg0d6nZui6nMyfIJ8dbf3aZQ5ZzP38sYow5h/fbvgL+3GSQxZRBIa3c2E1w==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-linux-x64-musl@1.2.3:
resolution: {integrity: sha512-B/az59EjJhdbZDzawEVox0LQu2ZHCZlk8rJf85AMIktIUoAZPFbwyiUv7/zjzA/sY6Nb58OSJgaPL2/IBy7E0A==}
engines: {node: '>= 10'}
@@ -296,6 +942,24 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-linux-x64-musl@1.4.0:
+ resolution: {integrity: sha512-OLAYoICU3FaYiTdBsI+lQTKnDHeMmFMXIApN0M+xGiOkoIOQcV9CConMPjgmJQ867+NHRNgUGlvBEAh9CiJodQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /@tauri-apps/cli-win32-arm64-msvc@1.4.0:
+ resolution: {integrity: sha512-gZ05GENFbI6CB5MlOUsLlU0kZ9UtHn9riYtSXKT6MYs8HSPRffPHaHSL0WxsJweWh9nR5Hgh/TUU8uW3sYCzCg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-win32-ia32-msvc@1.2.3:
resolution: {integrity: sha512-ypdO1OdC5ugNJAKO2m3sb1nsd+0TSvMS9Tr5qN/ZSMvtSduaNwrcZ3D7G/iOIanrqu/Nl8t3LYlgPZGBKlw7Ng==}
engines: {node: '>= 10'}
@@ -305,6 +969,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-win32-ia32-msvc@1.4.0:
+ resolution: {integrity: sha512-JsetT/lTx/Zq98eo8T5CiRyF1nKeX04RO8JlJrI3ZOYsZpp/A5RJvMd/szQ17iOzwiHdge+tx7k2jHysR6oBlQ==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli-win32-x64-msvc@1.2.3:
resolution: {integrity: sha512-CsbHQ+XhnV/2csOBBDVfH16cdK00gNyNYUW68isedmqcn8j+s0e9cQ1xXIqi+Hue3awp8g3ImYN5KPepf3UExw==}
engines: {node: '>= 10'}
@@ -314,6 +987,15 @@ packages:
dev: true
optional: true
+ /@tauri-apps/cli-win32-x64-msvc@1.4.0:
+ resolution: {integrity: sha512-z8Olcnwp5aYhzqUAarFjqF+oELCjuYWnB2HAJHlfsYNfDCAORY5kct3Fklz8PSsubC3U2EugWn8n42DwnThurg==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+ requiresBuild: true
+ dev: true
+ optional: true
+
/@tauri-apps/cli@1.2.3:
resolution: {integrity: sha512-erxtXuPhMEGJPBtnhPILD4AjuT81GZsraqpFvXAmEJZ2p8P6t7MVBifCL8LznRknznM3jn90D3M8RNBP3wcXTw==}
engines: {node: '>= 10'}
@@ -330,6 +1012,138 @@ packages:
'@tauri-apps/cli-win32-x64-msvc': 1.2.3
dev: true
+ /@tauri-apps/cli@1.4.0:
+ resolution: {integrity: sha512-VXYr2i2iVFl98etQSQsqLzXgX96bnWiNZd1YADgatqwy/qecbd6Kl5ZAPB5R4ynsgE8A1gU7Fbzh7dCEQYFfmA==}
+ engines: {node: '>= 10'}
+ hasBin: true
+ optionalDependencies:
+ '@tauri-apps/cli-darwin-arm64': 1.4.0
+ '@tauri-apps/cli-darwin-x64': 1.4.0
+ '@tauri-apps/cli-linux-arm-gnueabihf': 1.4.0
+ '@tauri-apps/cli-linux-arm64-gnu': 1.4.0
+ '@tauri-apps/cli-linux-arm64-musl': 1.4.0
+ '@tauri-apps/cli-linux-x64-gnu': 1.4.0
+ '@tauri-apps/cli-linux-x64-musl': 1.4.0
+ '@tauri-apps/cli-win32-arm64-msvc': 1.4.0
+ '@tauri-apps/cli-win32-ia32-msvc': 1.4.0
+ '@tauri-apps/cli-win32-x64-msvc': 1.4.0
+ dev: true
+
+ /@types/babel__core@7.20.1:
+ resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==}
+ dependencies:
+ '@babel/parser': 7.22.16
+ '@babel/types': 7.22.15
+ '@types/babel__generator': 7.6.4
+ '@types/babel__template': 7.4.1
+ '@types/babel__traverse': 7.20.1
+ dev: true
+
+ /@types/babel__generator@7.6.4:
+ resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@types/babel__template@7.4.1:
+ resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==}
+ dependencies:
+ '@babel/parser': 7.22.16
+ '@babel/types': 7.22.15
+ dev: true
+
+ /@types/babel__traverse@7.20.1:
+ resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==}
+ dependencies:
+ '@babel/types': 7.22.15
+ dev: true
+
+ /ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ /babel-plugin-jsx-dom-expressions@0.36.10(@babel/core@7.22.15):
+ resolution: {integrity: sha512-QA2k/14WGw+RgcGGnEuLWwnu4em6CGhjeXtjvgOYyFHYS2a+CzPeaVQHDOlfuiBcjq/3hWMspHMIMnPEOIzdBg==}
+ peerDependencies:
+ '@babel/core': ^7.20.12
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/helper-module-imports': 7.18.6
+ '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.15)
+ '@babel/types': 7.22.15
+ html-entities: 2.3.3
+ validate-html-nesting: 1.2.2
+ dev: true
+
+ /babel-preset-solid@1.7.7(@babel/core@7.22.15):
+ resolution: {integrity: sha512-tdxVzx3kgcIjNXAOmGRbzIhFBPeJjSakiN9yM+IYdL/+LtXNnbGqb0Va5tJb8Sjbk+QVEriovCyuzB5T7jeTvg==}
+ peerDependencies:
+ '@babel/core': ^7.0.0
+ dependencies:
+ '@babel/core': 7.22.15
+ babel-plugin-jsx-dom-expressions: 0.36.10(@babel/core@7.22.15)
+ dev: true
+
+ /browserslist@4.21.10:
+ resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==}
+ engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+ hasBin: true
+ dependencies:
+ caniuse-lite: 1.0.30001528
+ electron-to-chromium: 1.4.510
+ node-releases: 2.0.13
+ update-browserslist-db: 1.0.11(browserslist@4.21.10)
+ dev: true
+
+ /caniuse-lite@1.0.30001528:
+ resolution: {integrity: sha512-0Db4yyjR9QMNlsxh+kKWzQtkyflkG/snYheSzkjmvdEtEXB1+jt7A2HmSEiO6XIJPIbo92lHNGNySvE5pZcs5Q==}
+ dev: true
+
+ /chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
+ /color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ dev: true
+
+ /convert-source-map@1.9.0:
+ resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
+ dev: true
+
+ /csstype@3.1.2:
+ resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
+
+ /debug@4.3.4:
+ resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.2
+ dev: true
+
+ /electron-to-chromium@1.4.510:
+ resolution: {integrity: sha512-xPfLIPFcN/WLXBpQ/K4UgE98oUBO5Tia6BD4rkSR0wE7ep/PwBVlgvPJQrIBpmJGVAmUzwPKuDbVt9XV6+uC2g==}
+ dev: true
+
/esbuild@0.16.17:
resolution: {integrity: sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==}
engines: {node: '>=12'}
@@ -360,6 +1174,46 @@ packages:
'@esbuild/win32-x64': 0.16.17
dev: true
+ /esbuild@0.18.20:
+ resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
+ engines: {node: '>=12'}
+ hasBin: true
+ requiresBuild: true
+ optionalDependencies:
+ '@esbuild/android-arm': 0.18.20
+ '@esbuild/android-arm64': 0.18.20
+ '@esbuild/android-x64': 0.18.20
+ '@esbuild/darwin-arm64': 0.18.20
+ '@esbuild/darwin-x64': 0.18.20
+ '@esbuild/freebsd-arm64': 0.18.20
+ '@esbuild/freebsd-x64': 0.18.20
+ '@esbuild/linux-arm': 0.18.20
+ '@esbuild/linux-arm64': 0.18.20
+ '@esbuild/linux-ia32': 0.18.20
+ '@esbuild/linux-loong64': 0.18.20
+ '@esbuild/linux-mips64el': 0.18.20
+ '@esbuild/linux-ppc64': 0.18.20
+ '@esbuild/linux-riscv64': 0.18.20
+ '@esbuild/linux-s390x': 0.18.20
+ '@esbuild/linux-x64': 0.18.20
+ '@esbuild/netbsd-x64': 0.18.20
+ '@esbuild/openbsd-x64': 0.18.20
+ '@esbuild/sunos-x64': 0.18.20
+ '@esbuild/win32-arm64': 0.18.20
+ '@esbuild/win32-ia32': 0.18.20
+ '@esbuild/win32-x64': 0.18.20
+ dev: true
+
+ /escalade@3.1.1:
+ resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
/fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -372,6 +1226,21 @@ packages:
resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
dev: true
+ /gensync@1.0.0-beta.2:
+ resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /globals@11.12.0:
+ resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+ dev: true
+
/has@1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
@@ -379,18 +1248,70 @@ packages:
function-bind: 1.1.1
dev: true
+ /html-entities@2.3.3:
+ resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
+ dev: true
+
/is-core-module@2.11.0:
resolution: {integrity: sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==}
dependencies:
has: 1.0.3
dev: true
+ /is-what@4.1.15:
+ resolution: {integrity: sha512-uKua1wfy3Yt+YqsD6mTUEa2zSi3G1oPlqTflgaPJ7z63vUGN5pxFpnQfeSLMFnJDEsdvOtkp1rUWkYjB4YfhgA==}
+ engines: {node: '>=12.13'}
+ dev: true
+
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /jsesc@2.5.2:
+ resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /json5@2.2.3:
+ resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dev: true
+
+ /lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+ dev: true
+
+ /merge-anything@5.1.7:
+ resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
+ engines: {node: '>=12.13'}
+ dependencies:
+ is-what: 4.1.15
+ dev: true
+
+ /ms@2.1.2:
+ resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ dev: true
+
/nanoid@3.3.4:
resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: true
+ /nanoid@3.3.6:
+ resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+ dev: true
+
+ /node-releases@2.0.13:
+ resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
+ dev: true
+
/path-parse@1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: true
@@ -408,6 +1329,15 @@ packages:
source-map-js: 1.0.2
dev: true
+ /postcss@8.4.29:
+ resolution: {integrity: sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==}
+ engines: {node: ^10 || ^12 || >=14}
+ dependencies:
+ nanoid: 3.3.6
+ picocolors: 1.0.0
+ source-map-js: 1.0.2
+ dev: true
+
/resolve@1.22.1:
resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
hasBin: true
@@ -425,22 +1355,114 @@ packages:
fsevents: 2.3.2
dev: true
+ /rollup@3.29.0:
+ resolution: {integrity: sha512-nszM8DINnx1vSS+TpbWKMkxem0CDWk3cSit/WWCBVs9/JZ1I/XLwOsiUglYuYReaeWWSsW9kge5zE5NZtf/a4w==}
+ engines: {node: '>=14.18.0', npm: '>=8.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+ dev: true
+
+ /seroval@0.5.1:
+ resolution: {integrity: sha512-ZfhQVB59hmIauJG5Ydynupy8KHyr5imGNtdDhbZG68Ufh1Ynkv9KOYOAABf71oVbQxJ8VkWnMHAjEHE7fWkH5g==}
+ engines: {node: '>=10'}
+
+ /solid-js@1.7.8:
+ resolution: {integrity: sha512-XHBWk1FvFd0JMKljko7FfhefJMTSgYEuVKcQ2a8hzRXfiuSJAGsrPPafqEo+f6l+e8Oe3cROSpIL6kbzjC1fjQ==}
+ dependencies:
+ csstype: 3.1.2
+ seroval: 0.5.1
+
+ /solid-refresh@0.5.3(solid-js@1.7.8):
+ resolution: {integrity: sha512-Otg5it5sjOdZbQZJnvo99TEBAr6J7PQ5AubZLNU6szZzg3RQQ5MX04oteBIIGDs0y2Qv8aXKm9e44V8z+UnFdw==}
+ peerDependencies:
+ solid-js: ^1.3
+ dependencies:
+ '@babel/generator': 7.22.15
+ '@babel/helper-module-imports': 7.22.15
+ '@babel/types': 7.22.15
+ solid-js: 1.7.8
+ dev: true
+
/source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
dev: true
+ /supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
/supports-preserve-symlinks-flag@1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
dev: true
+ /to-fast-properties@2.0.0:
+ resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
+ engines: {node: '>=4'}
+ dev: true
+
/typescript@4.9.5:
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
engines: {node: '>=4.2.0'}
hasBin: true
dev: true
+ /typescript@5.0.2:
+ resolution: {integrity: sha512-wVORMBGO/FAs/++blGNeAVdbNKtIh1rbBL2EyQ1+J9lClJ93KiiKe8PmFIVdXhHcyv44SL9oglmfeSsndo0jRw==}
+ engines: {node: '>=12.20'}
+ hasBin: true
+ dev: true
+
+ /typescript@5.2.2:
+ resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==}
+ engines: {node: '>=14.17'}
+ hasBin: true
+ dev: true
+
+ /update-browserslist-db@1.0.11(browserslist@4.21.10):
+ resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.21.10
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: true
+
+ /validate-html-nesting@1.2.2:
+ resolution: {integrity: sha512-hGdgQozCsQJMyfK5urgFcWEqsSSrK63Awe0t/IMR0bZ0QMtnuaiHzThW81guu3qx9abLi99NEuiaN6P9gVYsNg==}
+ dev: true
+
+ /vite-plugin-solid@2.7.0(solid-js@1.7.8)(vite@4.4.4):
+ resolution: {integrity: sha512-avp/Jl5zOp/Itfo67xtDB2O61U7idviaIp4mLsjhCa13PjKNasz+IID0jYTyqUp9SFx6/PmBr6v4KgDppqompg==}
+ peerDependencies:
+ solid-js: ^1.7.2
+ vite: ^3.0.0 || ^4.0.0
+ dependencies:
+ '@babel/core': 7.22.15
+ '@babel/preset-typescript': 7.22.15(@babel/core@7.22.15)
+ '@types/babel__core': 7.20.1
+ babel-preset-solid: 1.7.7(@babel/core@7.22.15)
+ merge-anything: 5.1.7
+ solid-js: 1.7.8
+ solid-refresh: 0.5.3(solid-js@1.7.8)
+ vite: 4.4.4
+ vitefu: 0.2.4(vite@4.4.4)
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
/vite@4.1.1:
resolution: {integrity: sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==}
engines: {node: ^14.18.0 || >=16.0.0}
@@ -473,3 +1495,53 @@ packages:
optionalDependencies:
fsevents: 2.3.2
dev: true
+
+ /vite@4.4.4:
+ resolution: {integrity: sha512-4mvsTxjkveWrKDJI70QmelfVqTm+ihFAb6+xf4sjEU2TmUCTlVX87tmg/QooPEMQb/lM9qGHT99ebqPziEd3wg==}
+ engines: {node: ^14.18.0 || >=16.0.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>= 14'
+ less: '*'
+ lightningcss: ^1.21.0
+ sass: '*'
+ stylus: '*'
+ sugarss: '*'
+ terser: ^5.4.0
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ less:
+ optional: true
+ lightningcss:
+ optional: true
+ sass:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ dependencies:
+ esbuild: 0.18.20
+ postcss: 8.4.29
+ rollup: 3.29.0
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /vitefu@0.2.4(vite@4.4.4):
+ resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==}
+ peerDependencies:
+ vite: ^3.0.0 || ^4.0.0
+ peerDependenciesMeta:
+ vite:
+ optional: true
+ dependencies:
+ vite: 4.4.4
+ dev: true
+
+ /yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: true
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
index e6e37e1..dd41ea1 100644
--- a/pnpm-workspace.yaml
+++ b/pnpm-workspace.yaml
@@ -1,2 +1,3 @@
packages:
- - 'example/'
+ - 'examples/app'
+ - 'examples/custom-plugin/*'
diff --git a/src/js.rs b/src/js.rs
index 52e1a6c..05cf476 100644
--- a/src/js.rs
+++ b/src/js.rs
@@ -1,5 +1,5 @@
use crate::{
- js_ts, ts::ExportConfig, EventDataType, ExportLanguage, NoCommands, NoEvents, PluginBuilder,
+ js_ts::{self, ExportConfig}, EventDataType, ExportLanguage, NoCommands, NoEvents, PluginBuilder,
};
use heck::ToLowerCamelCase;
use indoc::formatdoc;
diff --git a/src/js_ts.rs b/src/js_ts.rs
index 025a6b2..4cd5b2d 100644
--- a/src/js_ts.rs
+++ b/src/js_ts.rs
@@ -1,4 +1,4 @@
-use std::borrow::Cow;
+use std::{borrow::Cow, path::PathBuf};
use heck::ToLowerCamelCase;
use indoc::formatdoc;
@@ -8,9 +8,12 @@ use specta::{
DataType, TypeMap,
};
-use crate::{ts::ExportConfig, EventDataType, ExportLanguage, ItemType};
+use crate::{PluginName, EventDataType, ExportLanguage, ItemType};
pub const DO_NOT_EDIT: &str = "// This file was generated by [tauri-specta](https://github.com/oscartbeaumont/tauri-specta). Do not edit this file manually.";
+const CRINGE_ESLINT_DISABLE: &str = "/* eslint-disable */
+";
+
pub fn render_all_parts(
commands: &[FunctionDataType],
@@ -170,3 +173,33 @@ pub fn events_data(
events_map(events, cfg),
))
}
+
+/// The configuration for the generator
+#[derive(Default, Clone)]
+pub struct ExportConfig {
+ /// The name of the plugin to invoke.
+ ///
+ /// If there is no plugin name (i.e. this is an app), this should be `None`.
+ pub(crate) plugin_name: PluginName,
+ /// The specta export configuration
+ pub(crate) inner: specta::ts::ExportConfig,
+ pub(crate) path: Option,
+ pub(crate) header: Cow<'static, str>,
+}
+
+impl ExportConfig {
+ /// Creates a new [`ExportConfiguration`] from a [`specta::ts::ExportConfiguration`]
+ pub fn new(config: specta::ts::ExportConfig) -> Self {
+ Self {
+ inner: config,
+ header: CRINGE_ESLINT_DISABLE.into(),
+ ..Default::default()
+ }
+ }
+}
+
+impl From for ExportConfig {
+ fn from(config: specta::ts::ExportConfig) -> Self {
+ Self::new(config)
+ }
+}
diff --git a/src/lib.rs b/src/lib.rs
index c0e0a60..65368a3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -100,8 +100,8 @@ use std::{
path::Path,
};
-use crate::ts::ExportConfig;
use specta::{functions::FunctionDataType, ts::TsExportError, ExportError, TypeMap};
+use js_ts::ExportConfig;
use tauri::{Invoke, Manager, Runtime};
pub use tauri_specta_macros::Event;
@@ -139,9 +139,6 @@ macro_rules! collect_commands {
}};
}
-pub(crate) const CRINGE_ESLINT_DISABLE: &str = "/* eslint-disable */
-";
-
// TODO
// #[cfg(doctest)]
// doc_comment::doctest!("../README.md");
diff --git a/src/ts.rs b/src/ts.rs
index e942bf6..41e5dc6 100644
--- a/src/ts.rs
+++ b/src/ts.rs
@@ -1,8 +1,6 @@
-use std::{borrow::Cow, path::PathBuf};
-
use crate::{
- js_ts, EventDataType, ExportLanguage, NoCommands, NoEvents, PluginBuilder, PluginName,
- CRINGE_ESLINT_DISABLE,
+ js_ts::{self, ExportConfig},
+ EventDataType, ExportLanguage, NoCommands, NoEvents, PluginBuilder,
};
use heck::ToLowerCamelCase;
use indoc::formatdoc;
@@ -101,33 +99,3 @@ impl ExportLanguage for Language {
js_ts::render_all_parts::(commands, events, type_map, cfg, &dependant_types, GLOBALS)
}
}
-
-/// The configuration for the generator
-#[derive(Default, Clone)]
-pub struct ExportConfig {
- /// The name of the plugin to invoke.
- ///
- /// If there is no plugin name (i.e. this is an app), this should be `None`.
- pub(crate) plugin_name: PluginName,
- /// The specta export configuration
- pub(crate) inner: specta::ts::ExportConfig,
- pub(crate) path: Option,
- pub(crate) header: Cow<'static, str>,
-}
-
-impl ExportConfig {
- /// Creates a new [`ExportConfiguration`] from a [`specta::ts::ExportConfiguration`]
- pub fn new(config: specta::ts::ExportConfig) -> Self {
- Self {
- inner: config,
- header: CRINGE_ESLINT_DISABLE.into(),
- ..Default::default()
- }
- }
-}
-
-impl From for ExportConfig {
- fn from(config: specta::ts::ExportConfig) -> Self {
- Self::new(config)
- }
-}