diff --git a/bindings/matrix-sdk-crypto-nodejs/Cargo.toml b/bindings/matrix-sdk-crypto-nodejs/Cargo.toml index ee16a92b0..8fc02a806 100644 --- a/bindings/matrix-sdk-crypto-nodejs/Cargo.toml +++ b/bindings/matrix-sdk-crypto-nodejs/Cargo.toml @@ -30,8 +30,8 @@ matrix-sdk-common = { version = "0.5.0", path = "../../crates/matrix-sdk-common" matrix-sdk-sled = { version = "0.1.0", path = "../../crates/matrix-sdk-sled", default-features = false, features = ["crypto-store"] } ruma = { git = "https://github.com/ruma/ruma", rev = "96155915f", features = ["client-api-c", "rand", "unstable-msc2676", "unstable-msc2677"] } vodozemac = { git = "https://github.com/matrix-org/vodozemac/", rev = "2404f83f7d3a3779c1f518e4d949f7da9677c3dd" } -napi = { version = "2.6.1", default-features = false, features = ["napi6", "tokio_rt"] } -napi-derive = "2.6.0" +napi = { git = "https://github.com/Hywan/napi-rs", branch = "fix-napi-strict-on-t-and-ref-t", default-features = false, features = ["napi6", "tokio_rt"] } +napi-derive = { git = "https://github.com/Hywan/napi-rs", branch = "fix-napi-strict-on-t-and-ref-t" } serde_json = "1.0.79" http = "0.2.6" zeroize = "1.3.0" diff --git a/bindings/matrix-sdk-crypto-nodejs/src/identifiers.rs b/bindings/matrix-sdk-crypto-nodejs/src/identifiers.rs index eb45873b8..f5b6c4b55 100644 --- a/bindings/matrix-sdk-crypto-nodejs/src/identifiers.rs +++ b/bindings/matrix-sdk-crypto-nodejs/src/identifiers.rs @@ -24,7 +24,7 @@ impl From for UserId { #[napi] impl UserId { /// Parse/validate and create a new `UserId`. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new(id: String) -> napi::Result { Ok(Self::from(ruma::UserId::parse(id.as_str()).map_err(into_err)?)) } @@ -78,7 +78,7 @@ impl From for DeviceId { #[napi] impl DeviceId { /// Create a new `DeviceId`. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new(id: String) -> Self { Self::from(Into::::into(id)) } @@ -109,7 +109,7 @@ impl From for DeviceKeyId { #[napi] impl DeviceKeyId { /// Parse/validate and create a new `DeviceKeyId`. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new(id: String) -> napi::Result { Ok(Self::from(ruma::DeviceKeyId::parse(id.as_str()).map_err(into_err)?)) } @@ -212,7 +212,7 @@ impl From for RoomId { #[napi] impl RoomId { /// Parse/validate and create a new `RoomId`. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new(id: String) -> napi::Result { Ok(Self::from(ruma::RoomId::parse(id).map_err(into_err)?)) } @@ -252,7 +252,7 @@ pub struct ServerName { #[napi] impl ServerName { /// Parse/validate and create a new `ServerName`. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new(name: String) -> napi::Result { Ok(Self { inner: ruma::ServerName::parse(name).map_err(into_err)? }) } diff --git a/bindings/matrix-sdk-crypto-nodejs/src/machine.rs b/bindings/matrix-sdk-crypto-nodejs/src/machine.rs index 9128f2f4f..5348ad54a 100644 --- a/bindings/matrix-sdk-crypto-nodejs/src/machine.rs +++ b/bindings/matrix-sdk-crypto-nodejs/src/machine.rs @@ -56,7 +56,7 @@ impl OlmMachine { /// data at rest in the store. **Warning**, if no passphrase is given, the /// store and all its data will remain unencrypted. This argument is /// ignored if `store_path` is not set. - #[napi] + #[napi(strict)] pub async fn initialize( user_id: &identifiers::UserId, device_id: &identifiers::DeviceId, @@ -144,7 +144,7 @@ impl OlmMachine { /// response. /// * `one_time_keys_count`, the current one-time keys counts that the sync /// response returned. - #[napi] + #[napi(strict)] pub async fn receive_sync_changes( &self, to_device_events: String, @@ -227,7 +227,7 @@ impl OlmMachine { /// * `request_type`, the request type associated to the request ID. /// * `response`, the response that was received from the server after the /// outgoing request was sent out. - #[napi] + #[napi(strict)] pub async fn mark_request_as_sent( &self, request_id: String, @@ -272,7 +272,7 @@ impl OlmMachine { /// * `users`, the list of users that we should check if we lack a session /// with one of their devices. This can be an empty array or `null` when /// calling this method between sync requests. - #[napi] + #[napi(strict)] pub async fn get_missing_sessions( &self, users: Option>, @@ -312,7 +312,7 @@ impl OlmMachine { /// # Arguments /// /// * `users`, an array over user IDs that should be marked for tracking. - #[napi] + #[napi(strict)] pub async fn update_tracked_users(&self, users: Vec<&identifiers::UserId>) { let users = users.into_iter().map(|user| user.inner.clone()).collect::>(); @@ -326,7 +326,7 @@ impl OlmMachine { /// * `room_id`, the room ID of the room where the room key will be used. /// * `users`, the list of users that should receive the room key. /// * `encryption_settings`, the encryption settings. - #[napi] + #[napi(strict)] pub async fn share_room_key( &self, room_id: &identifiers::RoomId, @@ -357,7 +357,7 @@ impl OlmMachine { /// * `event_type`, the plaintext type of the event. /// * `content`, the JSON-encoded content of the message that should be /// encrypted. - #[napi] + #[napi(strict)] pub async fn encrypt_room_event( &self, room_id: &identifiers::RoomId, @@ -383,7 +383,7 @@ impl OlmMachine { /// /// * `event`, the event that should be decrypted. /// * `room_id`, the ID of the room where the event was sent to. - #[napi] + #[napi(strict)] pub async fn decrypt_room_event( &self, event: String, @@ -409,7 +409,7 @@ impl OlmMachine { /// Sign the given message using our device key and if available /// cross-signing master key. - #[napi] + #[napi(strict)] pub async fn sign(&self, message: String) -> types::Signatures { self.inner.sign(message.as_str()).await.into() } diff --git a/bindings/matrix-sdk-crypto-nodejs/src/sync_events.rs b/bindings/matrix-sdk-crypto-nodejs/src/sync_events.rs index 1f7f1619e..63e017021 100644 --- a/bindings/matrix-sdk-crypto-nodejs/src/sync_events.rs +++ b/bindings/matrix-sdk-crypto-nodejs/src/sync_events.rs @@ -13,7 +13,7 @@ pub struct DeviceLists { #[napi] impl DeviceLists { /// Create an empty `DeviceLists`. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new( changed: Option>, left: Option>, diff --git a/bindings/matrix-sdk-crypto-nodejs/src/types.rs b/bindings/matrix-sdk-crypto-nodejs/src/types.rs index ca68adab4..89d1027d5 100644 --- a/bindings/matrix-sdk-crypto-nodejs/src/types.rs +++ b/bindings/matrix-sdk-crypto-nodejs/src/types.rs @@ -29,7 +29,7 @@ impl Signatures { /// Add the given signature from the given signer and the given key ID to /// the collection. - #[napi] + #[napi(strict)] pub fn add_signature( &mut self, signer: &UserId, @@ -43,13 +43,13 @@ impl Signatures { /// Try to find an Ed25519 signature from the given signer with /// the given key ID. - #[napi] + #[napi(strict)] pub fn get_signature(&self, signer: &UserId, key_id: &DeviceKeyId) -> Option { self.inner.get_signature(signer.inner.as_ref(), key_id.inner.as_ref()).map(Into::into) } /// Get the map of signatures that belong to the given user. - #[napi] + #[napi(strict)] pub fn get(&self, signer: &UserId) -> Option> { self.inner.get(signer.inner.as_ref()).map(|map| { map.iter() diff --git a/bindings/matrix-sdk-crypto-nodejs/src/vodozemac.rs b/bindings/matrix-sdk-crypto-nodejs/src/vodozemac.rs index eacc15196..f2ecfc06b 100644 --- a/bindings/matrix-sdk-crypto-nodejs/src/vodozemac.rs +++ b/bindings/matrix-sdk-crypto-nodejs/src/vodozemac.rs @@ -42,7 +42,7 @@ impl From for Ed25519Signature { impl Ed25519Signature { /// Try to create an Ed25519 signature from an unpadded base64 /// representation. - #[napi(constructor)] + #[napi(constructor, strict)] pub fn new(signature: String) -> napi::Result { Ok(Self { inner: vodozemac::Ed25519Signature::from_base64(signature.as_str())