4 files changed
+100
-26
Cargo.lock
+63
-12
@@ -404,6 +404,19 @@ dependencies = [
404
"wasi 0.11.0+wasi-snapshot-preview1",
405
]
406
407
+[[package]]
408
+name = "gloo-utils"
409
+version = "0.1.7"
410
+source = "registry+https://github.com/rust-lang/crates.io-index"
411
+checksum = "037fcb07216cb3a30f7292bd0176b050b7b9a052ba830ef7d5d65f6dc64ba58e"
412
+dependencies = [
413
+ "js-sys",
414
+ "serde",
415
+ "serde_json",
416
+ "wasm-bindgen",
417
+ "web-sys",
418
+]
419
+
420
[[package]]
421
name = "h2"
422
version = "0.3.15"
@@ -1134,6 +1147,17 @@ dependencies = [
1147
"syn 1.0.107",
1148
]
1149
1150
+[[package]]
1151
+name = "serde_derive_internals"
1152
+version = "0.28.0"
1153
+source = "registry+https://github.com/rust-lang/crates.io-index"
1154
+checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509"
1155
+dependencies = [
1156
+ "proc-macro2",
1157
+ "quote",
1158
+ "syn 2.0.30",
1159
+]
1160
+
1161
[[package]]
1162
name = "serde_json"
1163
version = "1.0.93"
@@ -1246,6 +1270,8 @@ dependencies = [
1270
"serde_json",
1271
"serde_repr",
1272
"spinners",
1273
+ "tsify",
1274
+ "wasm-bindgen",
1275
]
1276
1277
[[package]]
@@ -1623,6 +1649,31 @@ version = "0.2.4"
1649
source = "registry+https://github.com/rust-lang/crates.io-index"
1650
checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
1651
1652
+[[package]]
1653
+name = "tsify"
1654
+version = "0.4.5"
1655
+source = "registry+https://github.com/rust-lang/crates.io-index"
1656
+checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0"
1657
+dependencies = [
1658
+ "gloo-utils",
1659
+ "serde",
1660
+ "serde_json",
1661
+ "tsify-macros",
1662
+ "wasm-bindgen",
1663
+]
1664
+
1665
+[[package]]
1666
+name = "tsify-macros"
1667
+version = "0.4.5"
1668
+source = "registry+https://github.com/rust-lang/crates.io-index"
1669
+checksum = "7a94b0f0954b3e59bfc2c246b4c8574390d94a4ad4ad246aaf2fb07d7dfd3b47"
1670
+dependencies = [
1671
+ "proc-macro2",
1672
+ "quote",
1673
+ "serde_derive_internals",
1674
+ "syn 2.0.30",
1675
+]
1676
+
1677
[[package]]
1678
name = "unicode-bidi"
1679
version = "0.3.10"
@@ -1709,9 +1760,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
1760
1761
[[package]]
1762
name = "wasm-bindgen"
1712
-version = "0.2.84"
1763
+version = "0.2.87"
1764
source = "registry+https://github.com/rust-lang/crates.io-index"
1714
-checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
1765
+checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342"
1766
dependencies = [
1767
"cfg-if",
1768
"wasm-bindgen-macro",
@@ -1719,16 +1770,16 @@ dependencies = [
1770
1771
[[package]]
1772
name = "wasm-bindgen-backend"
1722
-version = "0.2.84"
1773
+version = "0.2.87"
1774
source = "registry+https://github.com/rust-lang/crates.io-index"
1724
-checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
1775
+checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd"
1776
dependencies = [
1777
"bumpalo",
1778
"log",
1779
"once_cell",
1780
"proc-macro2",
1781
"quote",
1731
- "syn 1.0.107",
1782
+ "syn 2.0.30",
1783
"wasm-bindgen-shared",
1784
]
1785
@@ -1746,9 +1797,9 @@ dependencies = [
1797
1798
[[package]]
1799
name = "wasm-bindgen-macro"
1749
-version = "0.2.84"
1800
+version = "0.2.87"
1801
source = "registry+https://github.com/rust-lang/crates.io-index"
1751
-checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
1802
+checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d"
1803
dependencies = [
1804
"quote",
1805
"wasm-bindgen-macro-support",
@@ -1756,22 +1807,22 @@ dependencies = [
1807
1808
[[package]]
1809
name = "wasm-bindgen-macro-support"
1759
-version = "0.2.84"
1810
+version = "0.2.87"
1811
source = "registry+https://github.com/rust-lang/crates.io-index"
1761
-checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
1812
+checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
1813
dependencies = [
1814
"proc-macro2",
1815
"quote",
1765
- "syn 1.0.107",
1816
+ "syn 2.0.30",
1817
"wasm-bindgen-backend",
1818
"wasm-bindgen-shared",
1819
]
1820
1821
[[package]]
1822
name = "wasm-bindgen-shared"
1772
-version = "0.2.84"
1823
+version = "0.2.87"
1824
source = "registry+https://github.com/rust-lang/crates.io-index"
1774
-checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
1825
+checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1"
1826
1827
[[package]]
1828
name = "web-sys"
smbpndk-model/Cargo.toml
+5
@@ -17,3 +17,8 @@ serde = { version = "1", features = ["derive"] }
17
serde_json = "1.0.82"
18
serde_repr = "0.1"
19
spinners = "4.1.0"
20
+tsify = "0.4.5"
21
+wasm-bindgen = { version = "0.2" }
22
+
23
+[lib]
24
+crate-type = ["cdylib", "rlib"]
smbpndk-model/src/account.rs
+13
-6
@@ -2,9 +2,11 @@ use crate::signup::GithubEmail;
2
use serde::{Deserialize, Serialize};
3
use serde_repr::Serialize_repr;
4
use std::fmt::{Display, Formatter};
5
+use tsify::Tsify;
6
7
// SMBPNDK Users.
7
-#[derive(Debug, Serialize, Deserialize)]
8
+#[derive(Debug, Serialize, Deserialize, Tsify)]
9
+#[tsify(into_wasm_abi)]
10
pub struct User {
11
pub id: i32,
12
pub email: String,
@@ -16,13 +18,15 @@ impl Display for User {
18
}
19
}
20
19
-#[derive(Debug, Serialize, Deserialize)]
21
+#[derive(Debug, Serialize, Deserialize, Tsify)]
22
+#[tsify(into_wasm_abi)]
23
pub struct Status {
24
pub code: Option<i32>,
25
pub message: String,
26
}
27
25
-#[derive(Debug, Serialize, Deserialize)]
28
+#[derive(Debug, Serialize, Deserialize, Tsify)]
29
+#[tsify(into_wasm_abi)]
30
pub struct Data {
31
id: i32,
32
email: String,
@@ -30,7 +34,8 @@ pub struct Data {
34
}
35
36
// This is smb authorization model.
33
-#[derive(Debug, Serialize, Deserialize)]
37
+#[derive(Debug, Serialize, Deserialize, Tsify)]
38
+#[tsify(into_wasm_abi)]
39
pub struct SmbAuthorization {
40
pub message: String,
41
pub user: Option<User>,
@@ -39,7 +44,8 @@ pub struct SmbAuthorization {
44
pub error_code: Option<ErrorCode>,
45
}
46
42
-#[derive(Debug, Serialize_repr, Deserialize, PartialEq)]
47
+#[derive(Debug, Serialize_repr, Deserialize, PartialEq, Tsify)]
48
+#[tsify(namespace)]
49
#[repr(u32)]
50
pub enum ErrorCode {
51
EmailNotFound = 1000,
@@ -67,7 +73,8 @@ impl Clone for ErrorCode {
73
}
74
}
75
70
-#[derive(Debug, Serialize, Deserialize)]
76
+#[derive(Debug, Serialize, Deserialize, Tsify)]
77
+#[tsify(into_wasm_abi)]
78
pub struct GithubInfo {
79
pub id: i64,
80
pub login: String,
smbpndk-model/src/signup.rs
+19
-8
@@ -1,7 +1,10 @@
1
use crate::account::{Data, Status};
2
use serde::{Deserialize, Serialize};
3
use std::fmt::{Display, Formatter};
4
+use tsify::Tsify;
5
6
+#[derive(Debug, Serialize, Tsify)]
7
+#[tsify(into_wasm_abi)]
8
pub struct SignupArgs {
9
pub email: String,
10
pub password: Option<String>,
@@ -9,47 +12,55 @@ pub struct SignupArgs {
12
pub authorizations_attributes: Vec<Provider>,
13
}
14
12
-#[derive(Debug, Serialize)]
15
+#[derive(Debug, Serialize, Tsify)]
16
+#[tsify(into_wasm_abi)]
17
pub struct Provider {
18
pub uid: String,
19
pub provider: i8,
20
}
21
18
-#[derive(Debug, Serialize)]
22
+#[derive(Debug, Serialize, Tsify)]
23
+#[tsify(into_wasm_abi)]
24
pub struct SignupGithubParams {
25
pub user: SignupUserGithub,
26
}
27
23
-#[derive(Debug, Serialize)]
28
+#[derive(Debug, Serialize, Tsify)]
29
+#[tsify(into_wasm_abi)]
30
pub struct SignupEmailParams {
31
pub user: SignupUserEmail,
32
}
33
28
-#[derive(Debug, Serialize)]
34
+#[derive(Debug, Serialize, Tsify)]
35
+#[tsify(into_wasm_abi)]
36
pub struct SignupUserGithub {
37
pub email: String,
38
pub authorizations_attributes: Vec<Provider>,
39
}
40
34
-#[derive(Debug, Serialize)]
41
+#[derive(Debug, Serialize, Tsify)]
42
+#[tsify(into_wasm_abi)]
43
pub struct SignupUserEmail {
44
pub email: String,
45
pub password: String,
46
}
47
40
-#[derive(Debug, Serialize, Deserialize)]
48
+#[derive(Debug, Serialize, Deserialize, Tsify)]
49
+#[tsify(into_wasm_abi)]
50
pub struct SignupResult {
51
pub status: Status,
52
pub data: Option<Data>,
53
}
54
46
-#[derive(Debug, Serialize, Deserialize)]
55
+#[derive(Debug, Serialize, Deserialize, Tsify)]
56
+#[tsify(into_wasm_abi)]
57
pub struct GithubUser {
58
pub email: Option<String>,
59
pub name: String,
60
}
61
52
-#[derive(Debug, Serialize, Deserialize)]
62
+#[derive(Debug, Serialize, Deserialize, Tsify)]
63
+#[tsify(into_wasm_abi)]
64
pub struct GithubEmail {
65
pub email: String,
66
primary: bool,