forked from jmug/stoatchat
feat: bindings for node.js
This commit is contained in:
247
Cargo.lock
generated
247
Cargo.lock
generated
@@ -128,7 +128,7 @@ version = "1.1.2"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
|
checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -238,8 +238,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba"
|
checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 2.0.15",
|
"syn 2.0.76",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -302,7 +302,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
|
checksum = "10f203db73a71dfa2fb6dd22763990fa26f3d2625a6da2da900d23b87d26be27"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -319,7 +319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716"
|
checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -648,7 +648,7 @@ dependencies = [
|
|||||||
"cached_proc_macro_types",
|
"cached_proc_macro_types",
|
||||||
"darling 0.14.4",
|
"darling 0.14.4",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -898,7 +898,7 @@ version = "0.1.22"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c"
|
checksum = "f877be4f7c9f246b183111634f75baa039715e3f46ce860677d3b19a69fb229c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -971,7 +971,7 @@ dependencies = [
|
|||||||
"fnv",
|
"fnv",
|
||||||
"ident_case",
|
"ident_case",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"strsim",
|
"strsim",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
@@ -985,7 +985,7 @@ dependencies = [
|
|||||||
"fnv",
|
"fnv",
|
||||||
"ident_case",
|
"ident_case",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"strsim",
|
"strsim",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
@@ -997,7 +997,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
|
checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core 0.13.4",
|
"darling_core 0.13.4",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1008,7 +1008,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
|
checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core 0.14.4",
|
"darling_core 0.14.4",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1084,7 +1084,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "8aed3b3c608dc56cf36c45fe979d04eda51242e6703d8d0bb03426ef7c41db6a"
|
checksum = "8aed3b3c608dc56cf36c45fe979d04eda51242e6703d8d0bb03426ef7c41db6a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"synstructure",
|
"synstructure",
|
||||||
]
|
]
|
||||||
@@ -1096,7 +1096,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
|
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1117,7 +1117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "123c73e7a6e51b05c75fe1a1b2f4e241399ea5740ed810b0e3e6cacd9db5e7b2"
|
checksum = "123c73e7a6e51b05c75fe1a1b2f4e241399ea5740ed810b0e3e6cacd9db5e7b2"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"devise_core",
|
"devise_core",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -1129,7 +1129,7 @@ dependencies = [
|
|||||||
"bitflags",
|
"bitflags",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"proc-macro2-diagnostics",
|
"proc-macro2-diagnostics",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1266,7 +1266,7 @@ checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"heck",
|
"heck",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1286,7 +1286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "828de45d0ca18782232dfb8f3ea9cc428e8ced380eb26a520baaacfc70de39ce"
|
checksum = "828de45d0ca18782232dfb8f3ea9cc428e8ced380eb26a520baaacfc70de39ce"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1467,7 +1467,7 @@ dependencies = [
|
|||||||
"parking_lot",
|
"parking_lot",
|
||||||
"rand 0.8.5",
|
"rand 0.8.5",
|
||||||
"redis-protocol",
|
"redis-protocol",
|
||||||
"semver 1.0.9",
|
"semver 1.0.23",
|
||||||
"socket2 0.5.5",
|
"socket2 0.5.5",
|
||||||
"tokio 1.35.1",
|
"tokio 1.35.1",
|
||||||
"tokio-stream",
|
"tokio-stream",
|
||||||
@@ -1563,7 +1563,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
|
checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -1654,7 +1654,7 @@ checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-error",
|
"proc-macro-error",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -2321,6 +2321,16 @@ dependencies = [
|
|||||||
"pkg-config",
|
"pkg-config",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libloading"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libm"
|
name = "libm"
|
||||||
version = "0.2.7"
|
version = "0.2.7"
|
||||||
@@ -2500,7 +2510,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa"
|
checksum = "49e30813093f757be5cf21e50389a24dc7dbb22c49f23b7e8f51d69b508a5ffa"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -2660,6 +2670,43 @@ dependencies = [
|
|||||||
"tempfile",
|
"tempfile",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "neon"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7d75440242411c87dc39847b0e33e961ec1f10326a9d8ecf9c1ea64a3b3c13dc"
|
||||||
|
dependencies = [
|
||||||
|
"getrandom",
|
||||||
|
"libloading",
|
||||||
|
"neon-macros",
|
||||||
|
"once_cell",
|
||||||
|
"semver 1.0.23",
|
||||||
|
"send_wrapper",
|
||||||
|
"smallvec",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "neon-macros"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c6813fde79b646e47e7ad75f480aa80ef76a5d9599e2717407961531169ee38b"
|
||||||
|
dependencies = [
|
||||||
|
"quote 1.0.37",
|
||||||
|
"syn 2.0.76",
|
||||||
|
"syn-mid",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "neon-serde4"
|
||||||
|
version = "1.0.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8778b4afaa506e067da24566623873c38797987be593232a4f9ad82c84bb3eb3"
|
||||||
|
dependencies = [
|
||||||
|
"neon",
|
||||||
|
"num",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "nom"
|
name = "nom"
|
||||||
version = "7.1.1"
|
version = "7.1.1"
|
||||||
@@ -2679,6 +2726,19 @@ dependencies = [
|
|||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num"
|
||||||
|
version = "0.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23"
|
||||||
|
dependencies = [
|
||||||
|
"num-complex",
|
||||||
|
"num-integer",
|
||||||
|
"num-iter",
|
||||||
|
"num-rational",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-bigint-dig"
|
name = "num-bigint-dig"
|
||||||
version = "0.8.4"
|
version = "0.8.4"
|
||||||
@@ -2697,20 +2757,28 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-integer"
|
name = "num-complex"
|
||||||
version = "0.1.45"
|
version = "0.4.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
|
||||||
|
dependencies = [
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-integer"
|
||||||
|
version = "0.1.46"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 1.1.0",
|
|
||||||
"num-traits",
|
"num-traits",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-iter"
|
name = "num-iter"
|
||||||
version = "0.1.43"
|
version = "0.1.45"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 1.1.0",
|
"autocfg 1.1.0",
|
||||||
"num-integer",
|
"num-integer",
|
||||||
@@ -2718,10 +2786,20 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "num-traits"
|
name = "num-rational"
|
||||||
version = "0.2.15"
|
version = "0.4.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
|
checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
|
||||||
|
dependencies = [
|
||||||
|
"num-integer",
|
||||||
|
"num-traits",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-traits"
|
||||||
|
version = "0.2.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"autocfg 1.1.0",
|
"autocfg 1.1.0",
|
||||||
"libm",
|
"libm",
|
||||||
@@ -2763,7 +2841,7 @@ checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -2775,8 +2853,8 @@ checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 2.0.15",
|
"syn 2.0.76",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -2828,7 +2906,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
|
checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -2963,7 +3041,7 @@ checksum = "82a5ca643c2303ecb740d506539deba189e16f2754040a42901cd8105d0282d0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"proc-macro2-diagnostics",
|
"proc-macro2-diagnostics",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -3040,7 +3118,7 @@ dependencies = [
|
|||||||
"pest",
|
"pest",
|
||||||
"pest_meta",
|
"pest_meta",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -3071,7 +3149,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
|
checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -3180,7 +3258,7 @@ checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro-error-attr",
|
"proc-macro-error-attr",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
@@ -3192,15 +3270,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.78"
|
version = "1.0.86"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
|
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
@@ -3212,7 +3290,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada"
|
checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"version_check",
|
"version_check",
|
||||||
"yansi",
|
"yansi",
|
||||||
@@ -3252,9 +3330,9 @@ checksum = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.26"
|
version = "1.0.37"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
|
checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
@@ -3506,7 +3584,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "a043824e29c94169374ac5183ac0ed43f5724dc4556b19568007486bd840fa1f"
|
checksum = "a043824e29c94169374ac5183ac0ed43f5724dc4556b19568007486bd840fa1f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -3748,6 +3826,18 @@ dependencies = [
|
|||||||
"validator 0.16.0",
|
"validator 0.16.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "revolt-nodejs-bindings"
|
||||||
|
version = "0.7.15"
|
||||||
|
dependencies = [
|
||||||
|
"async-std",
|
||||||
|
"neon",
|
||||||
|
"neon-serde4",
|
||||||
|
"revolt-database",
|
||||||
|
"revolt-result",
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "revolt-permissions"
|
name = "revolt-permissions"
|
||||||
version = "0.7.15"
|
version = "0.7.15"
|
||||||
@@ -3856,7 +3946,7 @@ checksum = "cc6620569d8ac8f0a1690fcca13f488503807a60e96ebf729749b59aca1dbef9"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"darling 0.13.4",
|
"darling 0.13.4",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"rocket_http",
|
"rocket_http",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
@@ -3988,7 +4078,7 @@ dependencies = [
|
|||||||
"glob",
|
"glob",
|
||||||
"indexmap 1.9.3",
|
"indexmap 1.9.3",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"rocket_http",
|
"rocket_http",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"unicode-xid 0.2.3",
|
"unicode-xid 0.2.3",
|
||||||
@@ -4133,7 +4223,7 @@ version = "0.4.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"semver 1.0.9",
|
"semver 1.0.23",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -4250,7 +4340,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "af4d7e1b012cb3d9129567661a63755ea4b8a7386d339dc945ae187e403c6743"
|
checksum = "af4d7e1b012cb3d9129567661a63755ea4b8a7386d339dc945ae187e403c6743"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"serde_derive_internals",
|
"serde_derive_internals",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
@@ -4336,9 +4426,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "semver"
|
name = "semver"
|
||||||
version = "1.0.9"
|
version = "1.0.23"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd"
|
checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "semver-parser"
|
name = "semver-parser"
|
||||||
@@ -4346,6 +4436,12 @@ version = "0.7.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "send_wrapper"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sentry"
|
name = "sentry"
|
||||||
version = "0.31.5"
|
version = "0.31.5"
|
||||||
@@ -4479,8 +4575,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
|
checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 2.0.15",
|
"syn 2.0.76",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -4490,7 +4586,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
|
checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -4536,7 +4632,7 @@ checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"darling 0.13.4",
|
"darling 0.13.4",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -4741,21 +4837,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "syn"
|
||||||
version = "2.0.15"
|
version = "2.0.76"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822"
|
checksum = "578e081a14e0cefc3279b0472138c513f37b41a08d5a3cca9b6e4e8ceb6cd525"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn-mid"
|
||||||
|
version = "0.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b5dc35bb08dd1ca3dfb09dce91fd2d13294d6711c88897d9a9d60acf39bce049"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote 1.0.37",
|
||||||
|
"syn 2.0.76",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "synom"
|
name = "synom"
|
||||||
version = "0.11.3"
|
version = "0.11.3"
|
||||||
@@ -4772,7 +4879,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"unicode-xid 0.2.3",
|
"unicode-xid 0.2.3",
|
||||||
]
|
]
|
||||||
@@ -4836,7 +4943,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -4939,8 +5046,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 2.0.15",
|
"syn 2.0.76",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -5082,8 +5189,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 2.0.15",
|
"syn 2.0.76",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@@ -5212,7 +5319,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c"
|
checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -5473,7 +5580,7 @@ dependencies = [
|
|||||||
"lazy_static",
|
"lazy_static",
|
||||||
"proc-macro-error",
|
"proc-macro-error",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"regex",
|
"regex",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"validator_types",
|
"validator_types",
|
||||||
@@ -5583,7 +5690,7 @@ dependencies = [
|
|||||||
"lazy_static",
|
"lazy_static",
|
||||||
"log",
|
"log",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
]
|
]
|
||||||
@@ -5606,7 +5713,7 @@ version = "0.2.80"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
|
checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"wasm-bindgen-macro-support",
|
"wasm-bindgen-macro-support",
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -5617,7 +5724,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
|
checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote 1.0.26",
|
"quote 1.0.37",
|
||||||
"syn 1.0.107",
|
"syn 1.0.107",
|
||||||
"wasm-bindgen-backend",
|
"wasm-bindgen-backend",
|
||||||
"wasm-bindgen-shared",
|
"wasm-bindgen-shared",
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
resolver = "2"
|
resolver = "2"
|
||||||
members = ["crates/delta", "crates/bonfire", "crates/core/*"]
|
members = [
|
||||||
|
"crates/delta",
|
||||||
|
"crates/bonfire",
|
||||||
|
"crates/core/*",
|
||||||
|
"crates/bindings/node",
|
||||||
|
]
|
||||||
|
|
||||||
[patch.crates-io]
|
[patch.crates-io]
|
||||||
# mobc-redis = { git = "https://github.com/insertish/mobc", rev = "8b880bb59f2ba80b4c7bc40c649c113d8857a186" }
|
# mobc-redis = { git = "https://github.com/insertish/mobc", rev = "8b880bb59f2ba80b4c7bc40c649c113d8857a186" }
|
||||||
|
|||||||
7
crates/bindings/node/.gitignore
vendored
Normal file
7
crates/bindings/node/.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
target
|
||||||
|
index.node
|
||||||
|
**/node_modules
|
||||||
|
**/.DS_Store
|
||||||
|
npm-debug.log*
|
||||||
|
cargo.log
|
||||||
|
cross.log
|
||||||
24
crates/bindings/node/Cargo.toml
Normal file
24
crates/bindings/node/Cargo.toml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
[package]
|
||||||
|
name = "revolt-nodejs-bindings"
|
||||||
|
version = "0.7.15"
|
||||||
|
description = "Node.js bindings for the Revolt software"
|
||||||
|
authors = ["Paul Makles <me@insrt.uk>"]
|
||||||
|
license = "MIT"
|
||||||
|
edition = "2021"
|
||||||
|
exclude = ["index.node"]
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
neon = "1.0.0"
|
||||||
|
neon-serde4 = "1.0.0"
|
||||||
|
|
||||||
|
serde = { version = "1", features = ["derive"] }
|
||||||
|
|
||||||
|
async-std = "1.12.0"
|
||||||
|
|
||||||
|
revolt-result = { version = "0.7.15", path = "../../core/result" }
|
||||||
|
revolt-database = { version = "0.7.15", path = "../../core/database" }
|
||||||
92
crates/bindings/node/README.md
Normal file
92
crates/bindings/node/README.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# revolt.node
|
||||||
|
|
||||||
|
**revolt.node:** Node.js bindings for the Revolt software
|
||||||
|
|
||||||
|
This project was bootstrapped by [create-neon](https://www.npmjs.com/package/create-neon).
|
||||||
|
|
||||||
|
## Building revolt.node
|
||||||
|
|
||||||
|
Building revolt.node requires a [supported version of Node and Rust](https://github.com/neon-bindings/neon#platform-support).
|
||||||
|
|
||||||
|
To run the build, run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
This command uses the [@neon-rs/cli](https://www.npmjs.com/package/@neon-rs/cli) utility to assemble the binary Node addon from the output of `cargo`.
|
||||||
|
|
||||||
|
## Exploring revolt.node
|
||||||
|
|
||||||
|
After building revolt.node, you can explore its exports at the Node console:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ npm i
|
||||||
|
$ npm run build
|
||||||
|
$ node
|
||||||
|
> require('.').hello()
|
||||||
|
'hello node'
|
||||||
|
```
|
||||||
|
|
||||||
|
## Available Scripts
|
||||||
|
|
||||||
|
In the project directory, you can run:
|
||||||
|
|
||||||
|
#### `npm install`
|
||||||
|
|
||||||
|
Installs the project, including running `npm run build`.
|
||||||
|
|
||||||
|
#### `npm run build`
|
||||||
|
|
||||||
|
Builds the Node addon (`index.node`) from source, generating a release build with `cargo --release`.
|
||||||
|
|
||||||
|
Additional [`cargo build`](https://doc.rust-lang.org/cargo/commands/cargo-build.html) arguments may be passed to `npm run build` and similar commands. For example, to enable a [cargo feature](https://doc.rust-lang.org/cargo/reference/features.html):
|
||||||
|
|
||||||
|
```
|
||||||
|
npm run build -- --feature=beetle
|
||||||
|
```
|
||||||
|
|
||||||
|
#### `npm run debug`
|
||||||
|
|
||||||
|
Similar to `npm run build` but generates a debug build with `cargo`.
|
||||||
|
|
||||||
|
#### `npm run cross`
|
||||||
|
|
||||||
|
Similar to `npm run build` but uses [cross-rs](https://github.com/cross-rs/cross) to cross-compile for another platform. Use the [`CARGO_BUILD_TARGET`](https://doc.rust-lang.org/cargo/reference/config.html#buildtarget) environment variable to select the build target.
|
||||||
|
|
||||||
|
#### `npm test`
|
||||||
|
|
||||||
|
Runs the unit tests by calling `cargo test`. You can learn more about [adding tests to your Rust code](https://doc.rust-lang.org/book/ch11-01-writing-tests.html) from the [Rust book](https://doc.rust-lang.org/book/).
|
||||||
|
|
||||||
|
## Project Layout
|
||||||
|
|
||||||
|
The directory structure of this project is:
|
||||||
|
|
||||||
|
```
|
||||||
|
revolt.node/
|
||||||
|
├── Cargo.toml
|
||||||
|
├── README.md
|
||||||
|
├── src/
|
||||||
|
| └── lib.rs
|
||||||
|
├── index.node
|
||||||
|
├── package.json
|
||||||
|
└── target/
|
||||||
|
```
|
||||||
|
|
||||||
|
| Entry | Purpose |
|
||||||
|
|----------------|------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| `Cargo.toml` | The Cargo [manifest file](https://doc.rust-lang.org/cargo/reference/manifest.html), which informs the `cargo` command. |
|
||||||
|
| `README.md` | This file. |
|
||||||
|
| `src/` | The directory tree containing the Rust source code for the project. |
|
||||||
|
| `lib.rs` | Entry point for the Rust source code. |
|
||||||
|
| `index.node` | The main module, a [Node addon](https://nodejs.org/api/addons.html) generated by the build and pointed to by `"main"` in `package.json`. |
|
||||||
|
| `package.json` | The npm [manifest file](https://docs.npmjs.com/cli/v7/configuring-npm/package-json), which informs the `npm` command. |
|
||||||
|
| `target/` | Binary artifacts generated by the Rust build. |
|
||||||
|
|
||||||
|
## Learn More
|
||||||
|
|
||||||
|
Learn more about:
|
||||||
|
|
||||||
|
- [Neon](https://neon-bindings.com).
|
||||||
|
- [Rust](https://www.rust-lang.org).
|
||||||
|
- [Node](https://nodejs.org).
|
||||||
66
crates/bindings/node/index.d.ts
vendored
Normal file
66
crates/bindings/node/index.d.ts
vendored
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import { Channel, User } from "revolt-api";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opaque type for Revolt database
|
||||||
|
*/
|
||||||
|
export declare interface Database {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opaque type for Revolt database
|
||||||
|
*/
|
||||||
|
export declare interface OpaqueUser {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error type from Revolt backend
|
||||||
|
*/
|
||||||
|
export declare interface Err {
|
||||||
|
type: string;
|
||||||
|
location: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a new handle to the Revolt database
|
||||||
|
* @returns {Database} Handle
|
||||||
|
*/
|
||||||
|
export declare function database(): Database;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch user from database
|
||||||
|
* @param {string} userId User's ID
|
||||||
|
* @this {Database}
|
||||||
|
*/
|
||||||
|
export declare function database_fetch_user(userId: string): OpaqueUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch user from database
|
||||||
|
* @param {string} username Username
|
||||||
|
* @param {string} discriminator Discriminator
|
||||||
|
* @this {Database}
|
||||||
|
*/
|
||||||
|
export declare function database_fetch_user_by_username(
|
||||||
|
username: string,
|
||||||
|
discriminator: string
|
||||||
|
): OpaqueUser;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets model data as JSON
|
||||||
|
* @this {OpaqueUser}
|
||||||
|
*/
|
||||||
|
export declare function model_data(): User;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets error if the model failed to fetch
|
||||||
|
* @this {OpaqueUser}
|
||||||
|
*/
|
||||||
|
export declare function model_error(): Err;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open a direct message channel between two users
|
||||||
|
* @param {string} userA User A ID
|
||||||
|
* @param {string} userB User B ID
|
||||||
|
* @returns Existing or newly created channel
|
||||||
|
*/
|
||||||
|
export declare function proc_channels_create_dm(
|
||||||
|
userA: string,
|
||||||
|
userB: string
|
||||||
|
): Promise<Channel & { error: Err }>;
|
||||||
36
crates/bindings/node/package.json
Normal file
36
crates/bindings/node/package.json
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
"name": "revolt-nodejs-bindings",
|
||||||
|
"version": "0.7.15",
|
||||||
|
"description": "Node.js bindings for the Revolt software",
|
||||||
|
"main": "index.node",
|
||||||
|
"scripts": {
|
||||||
|
"test": "cargo test",
|
||||||
|
"cargo-build": "cargo build --message-format=json > cargo.log",
|
||||||
|
"cross-build": "cross build --message-format=json > cross.log",
|
||||||
|
"postcargo-build": "neon dist < cargo.log",
|
||||||
|
"postcross-build": "neon dist -m /target < cross.log",
|
||||||
|
"debug": "npm run cargo-build --",
|
||||||
|
"build": "npm run cargo-build -- --release",
|
||||||
|
"cross": "npm run cross-build -- --release"
|
||||||
|
},
|
||||||
|
"author": "Paul Makles",
|
||||||
|
"license": "AGPL-3.0",
|
||||||
|
"devDependencies": {
|
||||||
|
"@neon-rs/cli": "0.1.73"
|
||||||
|
},
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "git+https://github.com/revoltchat/backend"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"revolt",
|
||||||
|
"chat"
|
||||||
|
],
|
||||||
|
"bugs": {
|
||||||
|
"url": "https://github.com/revoltchat/backend/issues"
|
||||||
|
},
|
||||||
|
"homepage": "https://github.com/revoltchat/backend#readme",
|
||||||
|
"dependencies": {
|
||||||
|
"revolt-api": "^0.7.15"
|
||||||
|
}
|
||||||
|
}
|
||||||
117
crates/bindings/node/pnpm-lock.yaml
generated
Normal file
117
crates/bindings/node/pnpm-lock.yaml
generated
Normal file
@@ -0,0 +1,117 @@
|
|||||||
|
lockfileVersion: '6.0'
|
||||||
|
|
||||||
|
settings:
|
||||||
|
autoInstallPeers: true
|
||||||
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
revolt-api:
|
||||||
|
specifier: ^0.7.15
|
||||||
|
version: 0.7.15
|
||||||
|
|
||||||
|
devDependencies:
|
||||||
|
'@neon-rs/cli':
|
||||||
|
specifier: 0.1.73
|
||||||
|
version: 0.1.73
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
/@cargo-messages/android-arm-eabi@0.1.72:
|
||||||
|
resolution: {integrity: sha512-gGZxIM1mj+Y5x+ULND6ZCNr7f70OJi9wDlycSK8hGONy9wrChN6JAIHryddC5cqcwlYAoQ6IDcDFElnhAYbybA==}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@cargo-messages/darwin-arm64@0.1.72:
|
||||||
|
resolution: {integrity: sha512-EAzN5MLaXPljZKZDO5qR+aBs44eSq2ZbEnS7AI/FziE3MzeXbrGOS3fLba5+7yWPFXJyZolXzePm8N1EBv8ovg==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@cargo-messages/darwin-x64@0.1.72:
|
||||||
|
resolution: {integrity: sha512-RLo6j8s3nYbjdd1LDct4wamfChyRit7zokUuxtIYCu9XOlltkN5vnj1vwnrPvoqCMZ/7CbbuHFwSTn9A71de/w==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@cargo-messages/linux-arm-gnueabihf@0.1.72:
|
||||||
|
resolution: {integrity: sha512-tHsRshuzfjrX6SDW3jg6al8vMNLTMgczGnVYl5RuBZf/yrAUuwe30KxA9ge6w6mW6Ox797DyBchzAc9OLgTgmQ==}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@cargo-messages/linux-x64-gnu@0.1.72:
|
||||||
|
resolution: {integrity: sha512-VGtL6CCnUbhsP4aYuBNT5kfrAL7o0qjrxw97a+ax13t+nJd26tVEEIKHMu5drvvS/Nm/hn7sLT8zMnnCv0pvHg==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@cargo-messages/win32-arm64-msvc@0.1.72:
|
||||||
|
resolution: {integrity: sha512-V93Cgz39K+yqa3MveNbhh29pYCp8izK5uEavjPoxlNxAbsMCWH+s0verGDdUcfGxjR1H2V7oZ4FszPqR2SqMRQ==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@cargo-messages/win32-x64-msvc@0.1.72:
|
||||||
|
resolution: {integrity: sha512-knz3uSrO0OSbq3U5VWfCY8FB4NsM43BOWLZ7x4sfaMOC1XWv+IyvDdkLe6DhJx8KUw46KIAimYs9YROrp6l46Q==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
requiresBuild: true
|
||||||
|
dev: true
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/@neon-rs/cli@0.1.73:
|
||||||
|
resolution: {integrity: sha512-1kv8S/feB6UQWQQwsnGfkSkEBOtlFDNExnioL81E2BwvUWgjQPaseHgpi2EpWVgsPUgur5eBm4QowmlpWkD4/w==}
|
||||||
|
hasBin: true
|
||||||
|
optionalDependencies:
|
||||||
|
'@cargo-messages/android-arm-eabi': 0.1.72
|
||||||
|
'@cargo-messages/darwin-arm64': 0.1.72
|
||||||
|
'@cargo-messages/darwin-x64': 0.1.72
|
||||||
|
'@cargo-messages/linux-arm-gnueabihf': 0.1.72
|
||||||
|
'@cargo-messages/linux-x64-gnu': 0.1.72
|
||||||
|
'@cargo-messages/win32-arm64-msvc': 0.1.72
|
||||||
|
'@cargo-messages/win32-x64-msvc': 0.1.72
|
||||||
|
dev: true
|
||||||
|
|
||||||
|
/axios@0.26.1:
|
||||||
|
resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==}
|
||||||
|
dependencies:
|
||||||
|
follow-redirects: 1.15.6
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- debug
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/follow-redirects@1.15.6:
|
||||||
|
resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==}
|
||||||
|
engines: {node: '>=4.0'}
|
||||||
|
peerDependencies:
|
||||||
|
debug: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
debug:
|
||||||
|
optional: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/lodash.defaultsdeep@4.6.1:
|
||||||
|
resolution: {integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/revolt-api@0.7.15:
|
||||||
|
resolution: {integrity: sha512-rWRnjBFvoXt/RHRxHg9KuP+x1Jk61KdsOpKOczVJg5tIqGDmqp/6QZHw5rJTtG+wCH3Ah3YKwY+MM5NHfg1W3Q==}
|
||||||
|
dependencies:
|
||||||
|
axios: 0.26.1
|
||||||
|
lodash.defaultsdeep: 4.6.1
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- debug
|
||||||
|
dev: false
|
||||||
170
crates/bindings/node/src/lib.rs
Normal file
170
crates/bindings/node/src/lib.rs
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
#[macro_use]
|
||||||
|
extern crate serde;
|
||||||
|
|
||||||
|
use neon::prelude::*;
|
||||||
|
use revolt_database::{Database, DatabaseInfo};
|
||||||
|
|
||||||
|
struct DatabaseBinding(Database, Channel);
|
||||||
|
impl Finalize for DatabaseBinding {}
|
||||||
|
impl DatabaseBinding {
|
||||||
|
fn take(&self) -> (Database, Channel) {
|
||||||
|
(self.0.clone(), self.1.clone())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn js_database(mut cx: FunctionContext) -> JsResult<JsBox<DatabaseBinding>> {
|
||||||
|
let db = async_std::task::block_on(DatabaseInfo::Auto.connect())
|
||||||
|
.or_else(|err| cx.throw_error(err))?;
|
||||||
|
|
||||||
|
let channel = cx.channel();
|
||||||
|
Ok(cx.boxed(DatabaseBinding(db, channel)))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Implementations for models
|
||||||
|
#[derive(Clone)]
|
||||||
|
#[allow(clippy::large_enum_variant)]
|
||||||
|
enum Model {
|
||||||
|
User(revolt_database::User),
|
||||||
|
Error(revolt_result::Error),
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Model {
|
||||||
|
fn give(&self) -> Model {
|
||||||
|
self.clone()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Finalize for Model {}
|
||||||
|
|
||||||
|
macro_rules! shim_boxed {
|
||||||
|
($cx: ident, $name: ident, $model: ident, $( $variable: ident $type: ident $id: expr )+, $cmd: ident, $( $arg: expr, )+) => {
|
||||||
|
fn $name(mut cx: FunctionContext) -> JsResult<JsPromise> {
|
||||||
|
$(
|
||||||
|
let $variable = cx.argument::<$type>($id)?.value(&mut cx);
|
||||||
|
)+
|
||||||
|
|
||||||
|
let (db, channel) = cx.this::<JsBox<DatabaseBinding>>()?.take();
|
||||||
|
let (deferred, promise) = cx.promise();
|
||||||
|
|
||||||
|
async_std::task::spawn(async move {
|
||||||
|
let result = db.$cmd($($arg,)+).await;
|
||||||
|
deferred.settle_with(&channel, move |mut cx| {
|
||||||
|
Ok(cx.boxed(match result {
|
||||||
|
Ok(value) => Model::$model(value),
|
||||||
|
Err(error) => Model::Error(error)
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(promise)
|
||||||
|
}
|
||||||
|
|
||||||
|
$cx.export_function(stringify!($name), $name)?;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn js_data(mut cx: FunctionContext) -> JsResult<JsValue> {
|
||||||
|
match cx.this::<JsBox<Model>>()?.give() {
|
||||||
|
Model::Error(_) => neon_serde4::to_value(&mut cx, &None::<()>),
|
||||||
|
Model::User(user) => neon_serde4::to_value(&mut cx, &user),
|
||||||
|
}
|
||||||
|
.or_else(|e| cx.throw_error(e.to_string()))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn js_error(mut cx: FunctionContext) -> JsResult<JsValue> {
|
||||||
|
let value = match cx.this::<JsBox<Model>>()?.give() {
|
||||||
|
Model::Error(err) => Some(err),
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
|
||||||
|
neon_serde4::to_value(&mut cx, &value).or_else(|e| cx.throw_error(e.to_string()))
|
||||||
|
}
|
||||||
|
|
||||||
|
// Basic data implementation
|
||||||
|
#[derive(Serialize, Deserialize)]
|
||||||
|
struct ResultBinding<T> {
|
||||||
|
#[serde(flatten)]
|
||||||
|
value: Option<T>,
|
||||||
|
error: Option<revolt_result::Error>,
|
||||||
|
}
|
||||||
|
|
||||||
|
macro_rules! shim {
|
||||||
|
($cx: ident, $name: ident, $( $variable: ident $type: ident $id: expr )+, | $db: ident | $closure: expr, $( $arg: expr, )+) => {
|
||||||
|
fn $name(mut cx: FunctionContext) -> JsResult<JsPromise> {
|
||||||
|
$(
|
||||||
|
let $variable = cx.argument::<$type>($id)?.value(&mut cx);
|
||||||
|
)+
|
||||||
|
|
||||||
|
let (db, channel) = cx.this::<JsBox<DatabaseBinding>>()?.take();
|
||||||
|
let (deferred, promise) = cx.promise();
|
||||||
|
|
||||||
|
async_std::task::spawn(async move {
|
||||||
|
#[allow(clippy::redundant_closure_call)]
|
||||||
|
let result = (|$db: $crate::Database| $closure)(db.clone()).await;
|
||||||
|
deferred.settle_with(&channel, move |mut cx| {
|
||||||
|
neon_serde4::to_value(
|
||||||
|
&mut cx,
|
||||||
|
&match result {
|
||||||
|
Ok(value) => ResultBinding {
|
||||||
|
value: Some(value),
|
||||||
|
error: None,
|
||||||
|
},
|
||||||
|
Err(error) => ResultBinding {
|
||||||
|
value: None,
|
||||||
|
error: Some(error),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
)
|
||||||
|
.or_else(|e| cx.throw_error(e.to_string()))
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
Ok(promise)
|
||||||
|
}
|
||||||
|
|
||||||
|
$cx.export_function(stringify!($name), $name)?;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[neon::main]
|
||||||
|
fn main(mut cx: ModuleContext) -> NeonResult<()> {
|
||||||
|
// database & model stuff
|
||||||
|
cx.export_function("database", js_database)?;
|
||||||
|
cx.export_function("model_data", js_data)?;
|
||||||
|
cx.export_function("model_error", js_error)?;
|
||||||
|
|
||||||
|
shim_boxed!(
|
||||||
|
cx,
|
||||||
|
database_fetch_user,
|
||||||
|
User,
|
||||||
|
user_id JsString 0,
|
||||||
|
fetch_user,
|
||||||
|
&user_id,
|
||||||
|
);
|
||||||
|
|
||||||
|
shim_boxed!(
|
||||||
|
cx,
|
||||||
|
database_fetch_user_by_username,
|
||||||
|
User,
|
||||||
|
username JsString 0
|
||||||
|
discriminator JsString 1,
|
||||||
|
fetch_user_by_username,
|
||||||
|
&username, &discriminator,
|
||||||
|
);
|
||||||
|
|
||||||
|
// procedure calls
|
||||||
|
shim!(
|
||||||
|
cx,
|
||||||
|
proc_channels_create_dm,
|
||||||
|
user_a JsString 0
|
||||||
|
user_b JsString 1,
|
||||||
|
|db| async move {
|
||||||
|
let user_a = db.fetch_user(&user_a).await?;
|
||||||
|
let user_b = db.fetch_user(&user_b).await?;
|
||||||
|
revolt_database::Channel::create_dm(&db, &user_a, &user_b).await
|
||||||
|
},
|
||||||
|
&userA, &userB,
|
||||||
|
);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
53
crates/bindings/node/test.js
Normal file
53
crates/bindings/node/test.js
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
const Internal = require(".");
|
||||||
|
|
||||||
|
// playing around with class wrapper, not practical
|
||||||
|
class Model {
|
||||||
|
constructor(model) {
|
||||||
|
this.model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return Internal.model_data.bind(this.model)();
|
||||||
|
}
|
||||||
|
|
||||||
|
error() {
|
||||||
|
return Internal.model_error.bind(this.model)();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class User extends Model {
|
||||||
|
constructor(db, user) {
|
||||||
|
super(user);
|
||||||
|
this.db = db;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Database {
|
||||||
|
constructor() {
|
||||||
|
this.db = Internal.database();
|
||||||
|
}
|
||||||
|
|
||||||
|
async fetchUser(userId) {
|
||||||
|
return new User(
|
||||||
|
this,
|
||||||
|
await Internal.database_fetch_user.bind(this.db)(userId)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
async fetchUserByUsername(username, discriminator) {
|
||||||
|
return new User(
|
||||||
|
this,
|
||||||
|
await Internal.database_fetch_user_by_username.bind(this.db)(
|
||||||
|
username,
|
||||||
|
discriminator
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const db = new Database();
|
||||||
|
db.fetchUserByUsername("dos", "7624").then((user) => console.info(user.data()));
|
||||||
|
db.fetchUserByUsername("dos", "1111").then((user) => console.info(user.data()));
|
||||||
|
db.fetchUserByUsername("dos", "1111").then((user) =>
|
||||||
|
console.info(user.error())
|
||||||
|
);
|
||||||
6
crates/bindings/package-lock.json
generated
Normal file
6
crates/bindings/package-lock.json
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"name": "bindings",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user