From 1f082bfb56fbb1b96f9bcd33f8566ce83245618a Mon Sep 17 00:00:00 2001 From: naskya Date: Tue, 21 May 2024 16:12:11 +0900 Subject: [PATCH] chore (macro-rs): ts_only_warn -> ts_export --- packages/backend-rs/src/federation/acct.rs | 6 +-- packages/backend-rs/src/lib.rs | 2 +- packages/backend-rs/src/misc/emoji.rs | 31 +------------ .../src/service/nodeinfo/generate.rs | 4 +- packages/macro-rs/src/lib.rs | 43 +++---------------- 5 files changed, 13 insertions(+), 73 deletions(-) diff --git a/packages/backend-rs/src/federation/acct.rs b/packages/backend-rs/src/federation/acct.rs index 7aa9460008..21e067c04e 100644 --- a/packages/backend-rs/src/federation/acct.rs +++ b/packages/backend-rs/src/federation/acct.rs @@ -48,14 +48,12 @@ impl From for String { } } -#[crate::ts_only_warn("Use `acct.parse().unwrap()` or `Acct::from_str(acct).unwrap()` instead.")] -#[crate::export] +#[crate::ts_export] pub fn string_to_acct(acct: &str) -> Acct { Acct::from_str(acct).unwrap() } -#[crate::ts_only_warn("Use `acct.to_string()` instead.")] -#[crate::export] +#[crate::ts_export] pub fn acct_to_string(acct: &Acct) -> String { acct.to_string() } diff --git a/packages/backend-rs/src/lib.rs b/packages/backend-rs/src/lib.rs index 50a98ad787..9152a81543 100644 --- a/packages/backend-rs/src/lib.rs +++ b/packages/backend-rs/src/lib.rs @@ -1,4 +1,4 @@ -pub use macro_rs::{export, ts_only_warn}; +pub use macro_rs::{export, ts_export}; pub mod config; pub mod database; diff --git a/packages/backend-rs/src/misc/emoji.rs b/packages/backend-rs/src/misc/emoji.rs index e974f8060d..b244dbd8e1 100644 --- a/packages/backend-rs/src/misc/emoji.rs +++ b/packages/backend-rs/src/misc/emoji.rs @@ -1,33 +1,4 @@ -#[crate::ts_only_warn("Use `emojis::get(str).is_some()` instead.")] -#[crate::export] +#[crate::ts_export] pub fn is_unicode_emoji(s: &str) -> bool { emojis::get(s).is_some() } - -#[cfg(test)] -mod unit_test { - #[allow(deprecated)] - use super::is_unicode_emoji; - - #[test] - #[allow(deprecated)] - fn test_unicode_emoji_check() { - assert!(is_unicode_emoji("⭐")); - assert!(is_unicode_emoji("👍")); - assert!(is_unicode_emoji("❤")); - assert!(is_unicode_emoji("♥️")); - assert!(is_unicode_emoji("❤️")); - assert!(is_unicode_emoji("💙")); - assert!(is_unicode_emoji("🩷")); - assert!(is_unicode_emoji("🖖🏿")); - assert!(is_unicode_emoji("🏃‍➡️")); - assert!(is_unicode_emoji("👩‍❤️‍👨")); - assert!(is_unicode_emoji("👩‍👦‍👦")); - assert!(is_unicode_emoji("🏳️‍🌈")); - - assert!(!is_unicode_emoji("⭐⭐")); - assert!(!is_unicode_emoji("x")); - assert!(!is_unicode_emoji("\t")); - assert!(!is_unicode_emoji(":meow_aww:")); - } -} diff --git a/packages/backend-rs/src/service/nodeinfo/generate.rs b/packages/backend-rs/src/service/nodeinfo/generate.rs index 09bec87c77..5d7b8b30c1 100644 --- a/packages/backend-rs/src/service/nodeinfo/generate.rs +++ b/packages/backend-rs/src/service/nodeinfo/generate.rs @@ -130,12 +130,12 @@ pub async fn nodeinfo_2_0() -> Result { Ok(nodeinfo_2_1().await?.into()) } -#[crate::export(js_name = "nodeinfo_2_1")] +#[crate::ts_export(js_name = "nodeinfo_2_1")] pub async fn nodeinfo_2_1_as_json() -> Result { Ok(serde_json::to_value(nodeinfo_2_1().await?)?) } -#[crate::export(js_name = "nodeinfo_2_0")] +#[crate::ts_export(js_name = "nodeinfo_2_0")] pub async fn nodeinfo_2_0_as_json() -> Result { Ok(serde_json::to_value(nodeinfo_2_0().await?)?) } diff --git a/packages/macro-rs/src/lib.rs b/packages/macro-rs/src/lib.rs index b70bfdbe2e..1f734f62e7 100644 --- a/packages/macro-rs/src/lib.rs +++ b/packages/macro-rs/src/lib.rs @@ -33,49 +33,20 @@ pub fn export( .into() } -/// Denotes that this function should only be used in TypeScript. -/// -/// # Example -/// ``` -/// # use macro_rs::ts_only_warn; -/// # use std::fmt::{Display, Formatter, Result}; -/// # pub struct Thing {} -/// # impl Display for Thing { fn fmt(&self, fmt: &mut Formatter) -> Result { Ok(()) } } // dummy -/// #[ts_only_warn("Use `thing.to_string()` instead.")] -/// pub fn thing_to_string(thing: Thing) -> String { -/// thing.to_string() -/// } -/// ``` -/// generates -/// ``` -/// # use macro_rs::ts_only_warn; -/// # use std::fmt::{Display, Formatter, Result}; -/// # pub struct Thing {} -/// # impl Display for Thing { fn fmt(&self, fmt: &mut Formatter) -> Result { Ok(()) } } // dummy -/// #[cfg_attr(not(feature = "napi"), deprecated = "This function is only for TypeScript export. Use `thing.to_string()` instead.")] -/// pub fn thing_to_string(thing: Thing) -> String { -/// thing.to_string() -/// } -/// ``` +/// Export this function, struct, enum, const, etc. to TypeScript +/// and make it unable to use in Rust #[proc_macro_attribute] -pub fn ts_only_warn( +pub fn ts_export( attr: proc_macro::TokenStream, item: proc_macro::TokenStream, ) -> proc_macro::TokenStream { + let attr: TokenStream = attr.into(); let item: TokenStream = item.into(); - let attr_str = Into::::into(attr).to_string(); - let msg = { - let mut chars = attr_str.as_str().chars(); - chars.next(); - chars.next_back(); - chars.as_str() - }; - let prefixed_msg = format!("This function is only for TypeScript export. {}", msg); - quote! { - #[cfg_attr(not(feature = "napi"), deprecated = #prefixed_msg)] - #item + #[cfg(feature = "napi")] + #[macro_rs::napi(#attr)] + #item } .into() }