diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 785459fe..5ae08b8e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -15,82 +15,57 @@ on: - "Cargo.toml" env: CARGO_TERM_COLOR: always - CARGO_INCREMENTAL: true + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse concurrency: group: CI-${{ github.ref }} cancel-in-progress: true jobs: - build: - name: Build and Initialize profile.dev Cache - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3.3.0 - - uses: rui314/setup-mold@v1 - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: stable - override: true - - uses: actions/cache@v3.2.5 - with: - path: | - ./.cargo/.build - ./target - ~/.cargo - key: ${{ runner.os }}-cargo-dev-${{ hashFiles('**/Cargo.lock') }} - - uses: actions-rs/cargo@v1.0.3 - with: - command: build - check: - name: Check - needs: [build] + development-lint: + name: Clippy with debug-assertions runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.3.0 - uses: rui314/setup-mold@v1 - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: stable - override: true - - uses: actions/cache@v3.2.5 + - run: rustup install stable + - run: rustup update + - run: rustup component add clippy + - uses: actions/cache@v3.2.6 with: path: | ./.cargo/.build ./target ~/.cargo key: ${{ runner.os }}-cargo-dev-${{ hashFiles('**/Cargo.lock') }} - - uses: actions-rs/cargo@v1.0.3 + - name: Clippy + uses: actions-rs/cargo@v1.0.3 with: - command: check - - clippy: - name: Clippy - needs: [build] + command: clippy + args: -- -D warnings -C debug-assertions=y + + production-lint: + name: Clippy without debug-assertions runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.3.0 - uses: rui314/setup-mold@v1 - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: stable - override: true + - run: rustup install stable + - run: rustup update - run: rustup component add clippy - - uses: actions/cache@v3.2.5 + - uses: actions/cache@v3.2.6 with: path: | ./.cargo/.build ./target ~/.cargo - key: ${{ runner.os }}-cargo-dev-${{ hashFiles('**/Cargo.lock') }} - - uses: actions-rs/cargo@v1.0.3 + key: ${{ runner.os }}-cargo-prod-${{ hashFiles('**/Cargo.lock') }} + - name: Clippy + uses: actions-rs/cargo@v1.0.3 with: command: clippy - args: -- -D warnings + args: -- -D warnings -C debug-assertions=n # things that use the cargo-test cache test: @@ -99,11 +74,8 @@ jobs: steps: - uses: actions/checkout@v3.3.0 - uses: rui314/setup-mold@v1 - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: stable - override: true + - run: rustup install stable + - run: rustup update - uses: actions/cache@v3.2.5 with: path: | @@ -122,13 +94,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3.3.0 - - uses: actions-rs/toolchain@v1.0.7 - with: - profile: minimal - toolchain: stable - override: true + - run: rustup install stable + - run: rustup update - run: rustup component add rustfmt - uses: actions-rs/cargo@v1.0.3 with: command: fmt - args: --all -- --check + args: --all -- --check \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 5bb68acd..0d99d3ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3105,9 +3105,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.45" +version = "0.10.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b102428fd03bc5edf97f62620f7298614c45cedf287c271e7ed450bbaf83f2e1" +checksum = "518915b97df115dd36109bfa429a48b8f737bd05508cf9588977b599648926d2" dependencies = [ "bitflags", "cfg-if", @@ -3137,9 +3137,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.80" +version = "0.9.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23bbbf7854cd45b83958ebe919f0e8e516793727652e27fda10a8384cfc790b7" +checksum = "666416d899cf077260dac8698d60a60b435a46d57e82acb1be3d0dad87284e5b" dependencies = [ "autocfg", "cc", @@ -3716,9 +3716,9 @@ dependencies = [ [[package]] name = "rust-embed" -version = "6.4.2" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "283ffe2f866869428c92e0d61c2f35dfb4355293cdfdc48f49e895c15f1333d1" +checksum = "1b68543d5527e158213414a92832d2aab11a84d2571a5eb021ebe22c43aab066" dependencies = [ "rust-embed-impl", "rust-embed-utils", @@ -3727,9 +3727,9 @@ dependencies = [ [[package]] name = "rust-embed-impl" -version = "6.3.1" +version = "6.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ab23d42d71fb9be1b643fe6765d292c5e14d46912d13f3ae2815ca048ea04d" +checksum = "4d4e0f0ced47ded9a68374ac145edd65a6c1fa13a96447b873660b2a568a0fd7" dependencies = [ "proc-macro2", "quote", @@ -3741,9 +3741,9 @@ dependencies = [ [[package]] name = "rust-embed-utils" -version = "7.3.0" +version = "7.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1669d81dfabd1b5f8e2856b8bbe146c6192b0ba22162edc738ac0a5de18f054" +checksum = "512b0ab6853f7e14e3c8754acb43d6f748bb9ced66aa5915a6553ac8213f7731" dependencies = [ "sha2", "walkdir", diff --git a/create-rust-app/Cargo.toml b/create-rust-app/Cargo.toml index f31a33c6..b412912a 100644 --- a/create-rust-app/Cargo.toml +++ b/create-rust-app/Cargo.toml @@ -110,6 +110,7 @@ plugin_storage = [ "aws-config", "aws-types", "aws-endpoint", "aws-sdk-s3", "tok plugin_graphql = [] plugin_utoipa = ["utoipa", "utoipa-swagger-ui", "backend_actix-web"] plugin_tasks = ["fang"] +plugin_workspace_support = [] backend_poem = ["poem", "anyhow", "mime_guess", "tokio"] backend_actix-web = ["actix-web", "actix-http", "actix-files", "actix-multipart", "actix-web-httpauth","derive_more", "futures", "env_logger"] backend_axum = ["axum", "axum/ws", "tokio"] diff --git a/create-rust-app/src/database/mod.rs b/create-rust-app/src/database/mod.rs index c8b9f9a4..ddbd053c 100644 --- a/create-rust-app/src/database/mod.rs +++ b/create-rust-app/src/database/mod.rs @@ -1,5 +1,5 @@ -use diesel::PgConnection; use diesel::r2d2::{self, ConnectionManager, PooledConnection}; + use once_cell::sync::OnceCell; #[cfg(feature = "database_postgres")] @@ -8,6 +8,7 @@ type DbCon = diesel::PgConnection; #[cfg(feature = "database_sqlite")] type DbCon = diesel::SqliteConnection; +#[allow(dead_code)] #[cfg(feature = "database_postgres")] pub type DieselBackend = diesel::pg::Pg; diff --git a/create-rust-app/src/dev/mod.rs b/create-rust-app/src/dev/mod.rs index 1abc55ff..bebef395 100644 --- a/create-rust-app/src/dev/mod.rs +++ b/create-rust-app/src/dev/mod.rs @@ -197,7 +197,15 @@ fn get_features(project_dir: &'static str) -> Vec { let cargo_toml = Manifest::from_path(PathBuf::from_iter([project_dir, "Cargo.toml"])) .unwrap_or_else(|_| panic!("Could not find \"{}\"", project_dir)); // .expect(&format!("Could not find \"{project_dir}\"")); + #[cfg(not(feature = "plugin_workspace_support"))] let deps = cargo_toml.dependencies; + #[cfg(feature = "plugin_workspace_support")] + let mut deps = cargo_toml.dependencies; + #[cfg(feature = "plugin_workspace_support")] + if let Some(workspace) = cargo_toml.workspace { + // if the manifest has a workspace table, also read dependencies in there + deps.extend(workspace.dependencies); + } let dep = deps.get("create-rust-app").unwrap_or_else(|| { panic!( "Expected \"{}\" to list 'create-rust-app' as a dependency.", diff --git a/create-rust-app/src/tasks/mod.rs b/create-rust-app/src/tasks/mod.rs index d2ebc9cc..c9cd5525 100644 --- a/create-rust-app/src/tasks/mod.rs +++ b/create-rust-app/src/tasks/mod.rs @@ -1,6 +1,6 @@ +use crate::Database; use fang::Queue; use once_cell::sync::OnceCell; -use crate::Database; // re-export setup for tasks pub use crate::setup; @@ -13,8 +13,6 @@ pub fn queue() -> &'static Queue { QUEUE.get_or_init(|| { let db = Database::new(); - Queue::builder() - .connection_pool(db.pool.clone()) - .build() + Queue::builder().connection_pool(db.pool.clone()).build() }) } diff --git a/create-rust-app/src/util/actix_web_utils.rs b/create-rust-app/src/util/actix_web_utils.rs index e819f78f..52bdb866 100644 --- a/create-rust-app/src/util/actix_web_utils.rs +++ b/create-rust-app/src/util/actix_web_utils.rs @@ -1,10 +1,14 @@ +#[cfg(debug_assertions)] +use actix_http::Uri; +#[cfg(debug_assertions)] use std::str::FromStr; +#[cfg(debug_assertions)] use std::sync::Mutex; use super::template_utils::SinglePageApplication; use crate::util::template_utils::{to_template_name, DEFAULT_TEMPLATE, TEMPLATES}; use actix_files::NamedFile; -use actix_http::Uri; + use actix_web::http::StatusCode; use actix_web::{web, HttpRequest, HttpResponse, Scope}; use tera::Context; @@ -136,11 +140,14 @@ pub async fn render_views(req: HttpRequest) -> HttpResponse { template_response(req, content) } -fn template_response(req: HttpRequest, content: String) -> HttpResponse { +fn template_response(_req: HttpRequest, content: String) -> HttpResponse { + #[cfg(not(debug_assertions))] + let content = content; + #[cfg(debug_assertions)] let mut content = content; #[cfg(debug_assertions)] { - let uri = Uri::from_str(req.connection_info().host()); + let uri = Uri::from_str(_req.connection_info().host()); let hostname = match &uri { Ok(uri) => uri.host().unwrap_or("localhost"), Err(_) => "localhost", diff --git a/create-rust-app/src/util/template_utils.rs b/create-rust-app/src/util/template_utils.rs index 99d87702..ee68a87c 100644 --- a/create-rust-app/src/util/template_utils.rs +++ b/create-rust-app/src/util/template_utils.rs @@ -54,7 +54,9 @@ impl tera::Function for InjectBundle { { let manifest_entry = VITE_MANIFEST .get(&format!("bundles/{bundle_name}")) - .expect(&format!("could not get bundle `{bundle_name}`")); + .unwrap_or_else(|| { + panic!("{}", "could not get bundle `{bundle_name}`") + }); let entry_file = format!( r#""#, file = manifest_entry.file @@ -63,7 +65,7 @@ impl tera::Function for InjectBundle { .css .as_ref() .unwrap_or(&vec![]) - .into_iter() + .iter() .map(|css_file| { format!( r#""#, @@ -76,7 +78,7 @@ impl tera::Function for InjectBundle { .dynamicImports .as_ref() .unwrap_or(&vec![]) - .into_iter() + .iter() .map(|dyn_script_file| { // TODO: make this deferred or async -- look this up!~ format!( diff --git a/create-rust-app_cli/Cargo.toml b/create-rust-app_cli/Cargo.toml index d419c4ac..5f4754a4 100644 --- a/create-rust-app_cli/Cargo.toml +++ b/create-rust-app_cli/Cargo.toml @@ -18,7 +18,7 @@ console = "0.15.5" dialoguer = "0.10.3" indoc = "1.0.8" walkdir = "2.3.2" -rust-embed = "6.4.2" +rust-embed = { version = "6.6.1", features = ["debug-embed"] } clap = {version = "4.1", features = ["wrap_help", "derive", "cargo"]} toml = "0.5.11" tsync = "1" diff --git a/create-rust-app_cli/qsync/src/hook.rs b/create-rust-app_cli/qsync/src/hook.rs index 7a38ebf9..1d2d0504 100644 --- a/create-rust-app_cli/qsync/src/hook.rs +++ b/create-rust-app_cli/qsync/src/hook.rs @@ -226,7 +226,6 @@ impl Hook { .endpoint_url .trim_start_matches("/api/") .split('/') - .into_iter() .map(|t| { // in actix-web, paths which have {} denote a path param if t.starts_with('{') && t.ends_with('}') { diff --git a/create-rust-app_cli/qsync/src/processor.rs b/create-rust-app_cli/qsync/src/processor.rs index 229bbc6b..a66ce6fa 100644 --- a/create-rust-app_cli/qsync/src/processor.rs +++ b/create-rust-app_cli/qsync/src/processor.rs @@ -109,7 +109,7 @@ fn has_qsync_attribute( if has_actix_attribute && has_qsync_attribute { Some(QsyncAttributeProps { is_mutation: is_mutation.unwrap_or_default(), - return_type: return_type, + return_type, }) } else { None diff --git a/create-rust-app_cli/src/content/model.rs b/create-rust-app_cli/src/content/model.rs index 38dc78a7..3f69a3c9 100644 --- a/create-rust-app_cli/src/content/model.rs +++ b/create-rust-app_cli/src/content/model.rs @@ -2,17 +2,20 @@ use crate::inflector::Inflector; use anyhow::Result; use indoc::indoc; +#[allow(dead_code)] pub struct Model { pub config: ModelConfig, pub file_contents: String, } +#[allow(dead_code)] pub struct ModelConfig { pub model_name: String, pub table_name: String, pub file_name: String, } +#[allow(dead_code)] pub fn create(resource_name: &str) -> Result { let resource = generate(resource_name); @@ -25,6 +28,7 @@ pub fn create(resource_name: &str) -> Result { Ok(resource) } +#[allow(dead_code)] fn config(resource_name: &str) -> ModelConfig { let model_name = resource_name.to_pascal_case(); let file_name = model_name.to_snake_case(); @@ -37,6 +41,7 @@ fn config(resource_name: &str) -> ModelConfig { } } +#[allow(dead_code)] fn generate(resource_name: &str) -> Model { let config = config(resource_name); diff --git a/create-rust-app_cli/src/content/project.rs b/create-rust-app_cli/src/content/project.rs index cc411599..23975d43 100644 --- a/create-rust-app_cli/src/content/project.rs +++ b/create-rust-app_cli/src/content/project.rs @@ -44,7 +44,10 @@ fn get_current_cra_lib_version() -> String { "9".to_string() } -fn add_bins_to_cargo_toml(project_dir: &std::path::PathBuf, creations_options: &CreationOptions) -> Result<(), std::io::Error> { +fn add_bins_to_cargo_toml( + project_dir: &std::path::PathBuf, + creations_options: &CreationOptions, +) -> Result<(), std::io::Error> { let mut path = std::path::PathBuf::from(project_dir); path.push("Cargo.toml"); @@ -77,7 +80,10 @@ fn add_bins_to_cargo_toml(project_dir: &std::path::PathBuf, creations_options: & let updated_toml = toml::to_string(&parsed_toml).unwrap(); - let queue_bin = if creations_options.cra_enabled_features.contains(&"plugin_tasks".to_string()) { + let queue_bin = if creations_options + .cra_enabled_features + .contains(&"plugin_tasks".to_string()) + { r##" [[bin]] name = "queue" @@ -115,7 +121,8 @@ path = "backend/main.rs" {queue_bin} [profile.dev] debug-assertions=true -"#); +"# + ); let mut final_toml = String::default(); diff --git a/create-rust-app_cli/src/main.rs b/create-rust-app_cli/src/main.rs index 88410363..9b2b944b 100644 --- a/create-rust-app_cli/src/main.rs +++ b/create-rust-app_cli/src/main.rs @@ -379,7 +379,7 @@ fn create_project( // let install_config = plugins::InstallConfig { - project_name: project_name.clone(), + project_name, project_dir: PathBuf::from("."), backend_framework, backend_database, diff --git a/create-rust-app_cli/src/plugins/tasks.rs b/create-rust-app_cli/src/plugins/tasks.rs index f7cc6d3d..262e9880 100644 --- a/create-rust-app_cli/src/plugins/tasks.rs +++ b/create-rust-app_cli/src/plugins/tasks.rs @@ -2,12 +2,12 @@ use anyhow::Result; use indoc::indoc; use rust_embed::RustEmbed; -use crate::{BackendDatabase, BackendFramework}; use crate::content::cargo_toml::add_dependency; use crate::plugins::InstallConfig; use crate::plugins::Plugin; use crate::utils::fs; use crate::utils::logger::add_file_msg; +use crate::{BackendDatabase, BackendFramework}; pub struct Tasks {} @@ -26,15 +26,11 @@ impl Plugin for Tasks { // =============================== if install_config.backend_database != BackendDatabase::Postgres { - return Err(anyhow::anyhow!( - "The tasks plugin only supports Postgres" - )); + return Err(anyhow::anyhow!("The tasks plugin only supports Postgres")); } if install_config.backend_framework != BackendFramework::ActixWeb { - return Err(anyhow::anyhow!( - "The tasks plugin only supports actix-web" - )); + return Err(anyhow::anyhow!("The tasks plugin only supports actix-web")); } // =============================== @@ -106,12 +102,7 @@ impl Plugin for Tasks { // Add dependencies // =============================== - add_dependency( - &install_config.project_dir, - "fang", - r#"fang = "0.10.3""#, - )?; - + add_dependency(&install_config.project_dir, "fang", r#"fang = "0.10.3""#)?; Ok(()) } diff --git a/create-rust-app_cli/template/frontend/package-lock.json b/create-rust-app_cli/template/frontend/package-lock.json index 32d424e7..c189c7cb 100644 --- a/create-rust-app_cli/template/frontend/package-lock.json +++ b/create-rust-app_cli/template/frontend/package-lock.json @@ -268,156 +268,156 @@ } }, "@esbuild/android-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", - "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.17.tgz", + "integrity": "sha512-E6VAZwN7diCa3labs0GYvhEPL2M94WLF8A+czO8hfjREXxba8Ng7nM5VxV+9ihNXIY1iQO1XxUU4P7hbqbICxg==", "dev": true, "optional": true }, "@esbuild/android-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", - "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.17.tgz", + "integrity": "sha512-jaJ5IlmaDLFPNttv0ofcwy/cfeY4bh/n705Tgh+eLObbGtQBK3EPAu+CzL95JVE4nFAliyrnEu0d32Q5foavqg==", "dev": true, "optional": true }, "@esbuild/android-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", - "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.17.tgz", + "integrity": "sha512-446zpfJ3nioMC7ASvJB1pszHVskkw4u/9Eu8s5yvvsSDTzYh4p4ZIRj0DznSl3FBF0Z/mZfrKXTtt0QCoFmoHA==", "dev": true, "optional": true }, "@esbuild/darwin-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", - "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.17.tgz", + "integrity": "sha512-m/gwyiBwH3jqfUabtq3GH31otL/0sE0l34XKpSIqR7NjQ/XHQ3lpmQHLHbG8AHTGCw8Ao059GvV08MS0bhFIJQ==", "dev": true, "optional": true }, "@esbuild/darwin-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", - "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.17.tgz", + "integrity": "sha512-4utIrsX9IykrqYaXR8ob9Ha2hAY2qLc6ohJ8c0CN1DR8yWeMrTgYFjgdeQ9LIoTOfLetXjuCu5TRPHT9yKYJVg==", "dev": true, "optional": true }, "@esbuild/freebsd-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", - "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.17.tgz", + "integrity": "sha512-4PxjQII/9ppOrpEwzQ1b0pXCsFLqy77i0GaHodrmzH9zq2/NEhHMAMJkJ635Ns4fyJPFOlHMz4AsklIyRqFZWA==", "dev": true, "optional": true }, "@esbuild/freebsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", - "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.17.tgz", + "integrity": "sha512-lQRS+4sW5S3P1sv0z2Ym807qMDfkmdhUYX30GRBURtLTrJOPDpoU0kI6pVz1hz3U0+YQ0tXGS9YWveQjUewAJw==", "dev": true, "optional": true }, "@esbuild/linux-arm": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", - "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.17.tgz", + "integrity": "sha512-biDs7bjGdOdcmIk6xU426VgdRUpGg39Yz6sT9Xp23aq+IEHDb/u5cbmu/pAANpDB4rZpY/2USPhCA+w9t3roQg==", "dev": true, "optional": true }, "@esbuild/linux-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", - "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.17.tgz", + "integrity": "sha512-2+pwLx0whKY1/Vqt8lyzStyda1v0qjJ5INWIe+d8+1onqQxHLLi3yr5bAa4gvbzhZqBztifYEu8hh1La5+7sUw==", "dev": true, "optional": true }, "@esbuild/linux-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", - "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.17.tgz", + "integrity": "sha512-IBTTv8X60dYo6P2t23sSUYym8fGfMAiuv7PzJ+0LcdAndZRzvke+wTVxJeCq4WgjppkOpndL04gMZIFvwoU34Q==", "dev": true, "optional": true }, "@esbuild/linux-loong64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", - "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.17.tgz", + "integrity": "sha512-WVMBtcDpATjaGfWfp6u9dANIqmU9r37SY8wgAivuKmgKHE+bWSuv0qXEFt/p3qXQYxJIGXQQv6hHcm7iWhWjiw==", "dev": true, "optional": true }, "@esbuild/linux-mips64el": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", - "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.17.tgz", + "integrity": "sha512-2kYCGh8589ZYnY031FgMLy0kmE4VoGdvfJkxLdxP4HJvWNXpyLhjOvxVsYjYZ6awqY4bgLR9tpdYyStgZZhi2A==", "dev": true, "optional": true }, "@esbuild/linux-ppc64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", - "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.17.tgz", + "integrity": "sha512-KIdG5jdAEeAKogfyMTcszRxy3OPbZhq0PPsW4iKKcdlbk3YE4miKznxV2YOSmiK/hfOZ+lqHri3v8eecT2ATwQ==", "dev": true, "optional": true }, "@esbuild/linux-riscv64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", - "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.17.tgz", + "integrity": "sha512-Cj6uWLBR5LWhcD/2Lkfg2NrkVsNb2sFM5aVEfumKB2vYetkA/9Uyc1jVoxLZ0a38sUhFk4JOVKH0aVdPbjZQeA==", "dev": true, "optional": true }, "@esbuild/linux-s390x": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", - "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.17.tgz", + "integrity": "sha512-lK+SffWIr0XsFf7E0srBjhpkdFVJf3HEgXCwzkm69kNbRar8MhezFpkIwpk0qo2IOQL4JE4mJPJI8AbRPLbuOQ==", "dev": true, "optional": true }, "@esbuild/linux-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", - "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.17.tgz", + "integrity": "sha512-XcSGTQcWFQS2jx3lZtQi7cQmDYLrpLRyz1Ns1DzZCtn898cWfm5Icx/DEWNcTU+T+tyPV89RQtDnI7qL2PObPg==", "dev": true, "optional": true }, "@esbuild/netbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", - "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.17.tgz", + "integrity": "sha512-RNLCDmLP5kCWAJR+ItLM3cHxzXRTe4N00TQyQiimq+lyqVqZWGPAvcyfUBM0isE79eEZhIuGN09rAz8EL5KdLA==", "dev": true, "optional": true }, "@esbuild/openbsd-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", - "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.17.tgz", + "integrity": "sha512-PAXswI5+cQq3Pann7FNdcpSUrhrql3wKjj3gVkmuz6OHhqqYxKvi6GgRBoaHjaG22HV/ZZEgF9TlS+9ftHVigA==", "dev": true, "optional": true }, "@esbuild/sunos-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", - "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.17.tgz", + "integrity": "sha512-V63egsWKnx/4V0FMYkr9NXWrKTB5qFftKGKuZKFIrAkO/7EWLFnbBZNM1CvJ6Sis+XBdPws2YQSHF1Gqf1oj/Q==", "dev": true, "optional": true }, "@esbuild/win32-arm64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", - "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.17.tgz", + "integrity": "sha512-YtUXLdVnd6YBSYlZODjWzH+KzbaubV0YVd6UxSfoFfa5PtNJNaW+1i+Hcmjpg2nEe0YXUCNF5bkKy1NnBv1y7Q==", "dev": true, "optional": true }, "@esbuild/win32-ia32": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", - "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.17.tgz", + "integrity": "sha512-yczSLRbDdReCO74Yfc5tKG0izzm+lPMYyO1fFTcn0QNwnKmc3K+HdxZWLGKg4pZVte7XVgcFku7TIZNbWEJdeQ==", "dev": true, "optional": true }, "@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.17.tgz", + "integrity": "sha512-FNZw7H3aqhF9OyRQbDDnzUApDXfC1N6fgBhkqEO2jvYCJ+DxMTfZVqg3AX0R1khg1wHTBRD5SdcibSJ+XF6bFg==", "dev": true, "optional": true }, @@ -758,33 +758,33 @@ "dev": true }, "esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", + "version": "0.17.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.17.tgz", + "integrity": "sha512-/jUywtAymR8jR4qsa2RujlAF7Krpt5VWi72Q2yuLD4e/hvtNcFQ0I1j8m/bxq238pf3/0KO5yuXNpuLx8BE1KA==", "dev": true, "requires": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" + "@esbuild/android-arm": "0.17.17", + "@esbuild/android-arm64": "0.17.17", + "@esbuild/android-x64": "0.17.17", + "@esbuild/darwin-arm64": "0.17.17", + "@esbuild/darwin-x64": "0.17.17", + "@esbuild/freebsd-arm64": "0.17.17", + "@esbuild/freebsd-x64": "0.17.17", + "@esbuild/linux-arm": "0.17.17", + "@esbuild/linux-arm64": "0.17.17", + "@esbuild/linux-ia32": "0.17.17", + "@esbuild/linux-loong64": "0.17.17", + "@esbuild/linux-mips64el": "0.17.17", + "@esbuild/linux-ppc64": "0.17.17", + "@esbuild/linux-riscv64": "0.17.17", + "@esbuild/linux-s390x": "0.17.17", + "@esbuild/linux-x64": "0.17.17", + "@esbuild/netbsd-x64": "0.17.17", + "@esbuild/openbsd-x64": "0.17.17", + "@esbuild/sunos-x64": "0.17.17", + "@esbuild/win32-arm64": "0.17.17", + "@esbuild/win32-ia32": "0.17.17", + "@esbuild/win32-x64": "0.17.17" } }, "escalade": { @@ -887,9 +887,9 @@ "dev": true }, "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", + "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", "dev": true, "requires": { "has": "^1.0.3" @@ -966,9 +966,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", "dev": true }, "node-releases": { @@ -999,12 +999,12 @@ "dev": true }, "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", + "version": "8.4.22", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.22.tgz", + "integrity": "sha512-XseknLAfRHzVWjCEtdviapiBtfLdgyzExD50Rg2ePaucEesyh8Wv4VPdW0nbyDa1ydbrAxV19jvMT4+LFmcNUA==", "dev": true, "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -1062,20 +1062,20 @@ "dev": true }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", "dev": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.11.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, "rollup": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.15.0.tgz", - "integrity": "sha512-F9hrCAhnp5/zx/7HYmftvsNBkMfLfk/dXUh73hPSM2E3CRgap65orDNJbLetoiUFwSAk6iHPLvBrZ5iHYvzqsg==", + "version": "3.20.6", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.20.6.tgz", + "integrity": "sha512-2yEB3nQXp/tBQDN0hJScJQheXdvU2wFhh6ld7K/aiZ1vYcak6N/BKjY1QrU6BvO2JWYS8bEs14FRaxXosxy2zw==", "dev": true, "requires": { "fsevents": "~2.3.2" @@ -1191,16 +1191,16 @@ } }, "vite": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.1.tgz", - "integrity": "sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.2.tgz", + "integrity": "sha512-PcNtT5HeDxb3QaSqFYkEum8f5sCVe0R3WK20qxgIvNBZPXU/Obxs/+ubBMeE7nLWeCo2LDzv+8hRYSlcaSehig==", "dev": true, "requires": { - "esbuild": "^0.16.14", + "esbuild": "^0.17.5", "fsevents": "~2.3.2", "postcss": "^8.4.21", "resolve": "^1.22.1", - "rollup": "^3.10.0" + "rollup": "^3.18.0" } }, "web-vitals": { diff --git a/create-rust-app_cli/template/frontend/package.json b/create-rust-app_cli/template/frontend/package.json index cbdb871a..3636a2c5 100644 --- a/create-rust-app_cli/template/frontend/package.json +++ b/create-rust-app_cli/template/frontend/package.json @@ -45,7 +45,7 @@ "concurrently": "^7.6.0", "glob": "^8.1.0", "reconnecting-websocket": "4.4.0", - "vite": "^4.1.1" + "vite": "^4.2.2" }, "overrides": { "ansi-to-react": {