From 2a9edd63b2da8bfe6d7cf9688fecc0472433eca4 Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Mon, 30 Oct 2023 00:26:45 +0000 Subject: [PATCH] chore: declare external types for remaining crates --- actix-files/Cargo.toml | 11 ++++++++--- actix-http-test/Cargo.toml | 14 +++++++++++--- actix-http/Cargo.toml | 4 ---- actix-multipart/Cargo.toml | 15 +++++++++++++++ actix-router/Cargo.toml | 8 +++++--- actix-test/Cargo.toml | 16 ++++++++++++++++ actix-web-actors/Cargo.toml | 12 +++++++++--- actix-web/Cargo.toml | 28 +++++++++++++++++++++++++--- awc/Cargo.toml | 25 +++++++++++++++++++++---- justfile | 25 ++++++++++++++++++++++--- 10 files changed, 132 insertions(+), 26 deletions(-) diff --git a/actix-files/Cargo.toml b/actix-files/Cargo.toml index 80c609d1d..3b31bfb60 100644 --- a/actix-files/Cargo.toml +++ b/actix-files/Cargo.toml @@ -13,9 +13,14 @@ categories = ["asynchronous", "web-programming::http-server"] license = "MIT OR Apache-2.0" edition = "2021" -[lib] -name = "actix_files" -path = "src/lib.rs" +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_http::*", + "actix_service::*", + "actix_web::*", + "http::*", + "mime::*", +] [features] experimental-io-uring = ["actix-web/experimental-io-uring", "tokio-uring"] diff --git a/actix-http-test/Cargo.toml b/actix-http-test/Cargo.toml index 7f00ba30a..514c9798a 100644 --- a/actix-http-test/Cargo.toml +++ b/actix-http-test/Cargo.toml @@ -18,9 +18,17 @@ edition = "2021" [package.metadata.docs.rs] features = [] -[lib] -name = "actix_http_test" -path = "src/lib.rs" +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_codec::*", + "actix_http::*", + "actix_server::*", + "awc::*", + "bytes::*", + "futures_core::*", + "http::*", + "tokio::*", +] [features] default = [] diff --git a/actix-http/Cargo.toml b/actix-http/Cargo.toml index 879b10d78..f5150511b 100644 --- a/actix-http/Cargo.toml +++ b/actix-http/Cargo.toml @@ -44,10 +44,6 @@ allowed_external_types = [ "tokio::*", ] -[lib] -name = "actix_http" -path = "src/lib.rs" - [features] default = [] diff --git a/actix-multipart/Cargo.toml b/actix-multipart/Cargo.toml index 455d7db78..661d3812b 100644 --- a/actix-multipart/Cargo.toml +++ b/actix-multipart/Cargo.toml @@ -16,6 +16,21 @@ edition = "2021" rustdoc-args = ["--cfg", "docsrs"] all-features = true +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_http::*", + "actix_multipart_derive::*", + "actix_utils::*", + "actix_web::*", + "bytes::*", + "futures_core::*", + "mime::*", + "serde_json::*", + "serde_plain::*", + "serde::*", + "tempfile::*", +] + [features] default = ["tempfile", "derive"] derive = ["actix-multipart-derive"] diff --git a/actix-router/Cargo.toml b/actix-router/Cargo.toml index adf43a086..7fc800a94 100644 --- a/actix-router/Cargo.toml +++ b/actix-router/Cargo.toml @@ -12,9 +12,11 @@ repository = "https://github.com/actix/actix-web.git" license = "MIT OR Apache-2.0" edition = "2021" -[lib] -name = "actix_router" -path = "src/lib.rs" +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "http::*", + "serde::*", +] [features] default = ["http"] diff --git a/actix-test/Cargo.toml b/actix-test/Cargo.toml index 38b40ccfa..5cb12810a 100644 --- a/actix-test/Cargo.toml +++ b/actix-test/Cargo.toml @@ -18,6 +18,22 @@ categories = [ license = "MIT OR Apache-2.0" edition = "2021" +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_codec::*", + "actix_http_test::*", + "actix_http::*", + "actix_service::*", + "actix_web::*", + "awc::*", + "bytes::*", + "futures_core::*", + "http::*", + "openssl::*", + "rustls::*", + "tokio::*", +] + [features] default = [] diff --git a/actix-web-actors/Cargo.toml b/actix-web-actors/Cargo.toml index c6f14554a..696d539b8 100644 --- a/actix-web-actors/Cargo.toml +++ b/actix-web-actors/Cargo.toml @@ -9,9 +9,15 @@ repository = "https://github.com/actix/actix-web" license = "MIT OR Apache-2.0" edition = "2021" -[lib] -name = "actix_web_actors" -path = "src/lib.rs" +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix::*", + "actix_http::*", + "actix_web::*", + "bytes::*", + "bytestring::*", + "futures_core::*", +] [dependencies] actix = { version = ">=0.12, <0.14", default-features = false } diff --git a/actix-web/Cargo.toml b/actix-web/Cargo.toml index 0f874d3f8..2e4dd1253 100644 --- a/actix-web/Cargo.toml +++ b/actix-web/Cargo.toml @@ -24,9 +24,31 @@ rust-version.workspace = true features = ["macros", "openssl", "rustls-0_20", "rustls-0_21", "compress-brotli", "compress-gzip", "compress-zstd", "cookies", "secure-cookies"] rustdoc-args = ["--cfg", "docsrs"] -[lib] -name = "actix_web" -path = "src/lib.rs" +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_http::*", + "actix_router::*", + "actix_rt::*", + "actix_server::*", + "actix_service::*", + "actix_utils::*", + "actix_web_codegen::*", + "bytes::*", + "cookie::*", + "cookie", + "futures_core::*", + "http::*", + "language_tags::*", + "mime::*", + "openssl::*", + "rustls::*", + "serde_json::*", + "serde_urlencoded::*", + "serde::*", + "serde::*", + "tokio::*", + "url::*", +] [features] default = ["macros", "compress-brotli", "compress-gzip", "compress-zstd", "cookies", "http2"] diff --git a/awc/Cargo.toml b/awc/Cargo.toml index 027bb161e..67c90df88 100644 --- a/awc/Cargo.toml +++ b/awc/Cargo.toml @@ -15,14 +15,31 @@ repository = "https://github.com/actix/actix-web.git" license = "MIT OR Apache-2.0" edition = "2021" -[lib] -name = "awc" -path = "src/lib.rs" - [package.metadata.docs.rs] # features that docs.rs will build with features = ["openssl", "rustls-0_20", "rustls-0_21", "compress-brotli", "compress-gzip", "compress-zstd", "cookies"] +[package.metadata.cargo_check_external_types] +allowed_external_types = [ + "actix_codec::*", + "actix_http::*", + "actix_rt::*", + "actix_service::*", + "actix_tls::*", + "bytes::*", + "cookie::*", + "cookie", + "futures_core::*", + "h2::*", + "http::*", + "openssl::*", + "rustls::*", + "serde_json::*", + "serde_urlencoded::*", + "serde::*", + "tokio::*", +] + [features] default = ["compress-brotli", "compress-gzip", "compress-zstd", "cookies"] diff --git a/justfile b/justfile index 3506f3497..3895e03de 100644 --- a/justfile +++ b/justfile @@ -10,9 +10,28 @@ doc-watch: RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl --open cargo watch -- RUSTDOCFLAGS="--cfg=docsrs" cargo +nightly doc --no-deps --workspace --features=rustls,openssl +# Check for unintentional external type exposure on all crates in workspace. check-external-types-all: #!/usr/bin/env bash - set -euxo pipefail - for f in $(find . -mindepth 2 -maxdepth 2 -name Cargo.toml); do - cargo +nightly check-external-types --manifest-path "$f" + set -euo pipefail + exit=0 + for f in $(find . -mindepth 2 -maxdepth 2 -name Cargo.toml | grep -vE "\-codegen/|\-derive/|\-macros/"); do + if ! just check-external-types-manifest "$f"; then exit=1; fi + echo + echo done + exit $exit + +# Check for unintentional external type exposure on all crates in workspace. +check-external-types-all-table: + #!/usr/bin/env bash + set -euo pipefail + for f in $(find . -mindepth 2 -maxdepth 2 -name Cargo.toml | grep -vE "\-codegen/|\-derive/|\-macros/"); do + echo + echo "Checking for $f" + just check-external-types-manifest "$f" --output-format=markdown-table + done + +# Check for unintentional external type exposure on a crate. +check-external-types-manifest manifest_path *extra_args: + cargo +nightly check-external-types --manifest-path "{{manifest_path}}" {{extra_args}}