Skip to content

Commit 721e05c

Browse files
authored
Merge pull request #1694 from polywrap/namesty/plugin-rs-env
Rust Plugins Env Bindings Refactor
2 parents 96e777d + c3dbf05 commit 721e05c

7 files changed

Lines changed: 48 additions & 53 deletions

File tree

packages/js/manifests/polywrap/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@
1818
"@polywrap/logging-js": "0.10.0",
1919
"@polywrap/polywrap-manifest-schemas": "0.10.0",
2020
"jsonschema": "1.4.0",
21-
"semver": "7.4.0",
21+
"semver": "7.5.0",
2222
"yaml": "2.1.3"
2323
},
2424
"devDependencies": {
2525
"@polywrap/os-js": "0.10.0",
2626
"@types/jest": "26.0.8",
2727
"@types/mustache": "4.0.1",
2828
"@types/prettier": "2.6.0",
29-
"@types/semver": "7.3.8",
29+
"@types/semver": "7.3.11",
3030
"jest": "26.6.3",
3131
"json-schema-to-typescript": "11.0.2",
3232
"mustache": "4.0.1",

packages/js/manifests/wrap/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"dependencies": {
1818
"@apidevtools/json-schema-ref-parser": "9.0.9",
1919
"jsonschema": "1.4.0",
20-
"semver": "7.4.0"
20+
"semver": "7.5.0"
2121
},
2222
"devDependencies": {
2323
"@polywrap/msgpack-js": "0.10.0",
@@ -26,7 +26,7 @@
2626
"@types/jest": "26.0.8",
2727
"@types/mustache": "4.0.1",
2828
"@types/prettier": "2.6.0",
29-
"@types/semver": "7.3.8",
29+
"@types/semver": "7.3.11",
3030
"jest": "26.6.3",
3131
"json-schema-to-typescript": "11.0.2",
3232
"mustache": "4.0.1",

packages/schema/bind/src/bindings/rust/plugin/templates/module-rs.mustache

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
/// All modifications will be overwritten.
33

44
use std::sync::Arc;
5-
use polywrap_core::invoke::Invoker;
5+
use polywrap_core::{invoke::Invoker};
66
use polywrap_plugin::error::PluginError;
77
use polywrap_plugin::module::PluginModule;
88
use serde::{Serialize, Deserialize};
99
use super::types::*;
10-
use async_trait::async_trait;
1110

1211
{{#moduleType}}
1312
{{#methods}}
@@ -20,11 +19,10 @@ pub struct Args{{#toUpper}}{{name}}{{/toUpper}} {
2019

2120
{{/methods}}
2221
{{/moduleType}}
23-
#[async_trait]
2422
pub trait Module: PluginModule {
2523
{{#moduleType}}
2624
{{#methods}}
27-
async fn {{#detectKeyword}}{{#toLower}}{{name}}{{/toLower}}{{/detectKeyword}}(&mut self, args: &Args{{#toUpper}}{{name}}{{/toUpper}}, invoker: Arc<dyn Invoker>) -> Result<{{#return}}{{#toWasm}}{{toGraphQLType}}{{/toWasm}}{{/return}}, PluginError>;
25+
fn {{#detectKeyword}}{{#toLower}}{{name}}{{/toLower}}{{/detectKeyword}}(&mut self, args: &Args{{#toUpper}}{{name}}{{/toUpper}}, invoker: Arc<dyn Invoker>{{#env}}, env: {{^required}}Option<{{/required}}Env{{^required}}>{{/required}}{{/env}}) -> Result<{{#return}}{{#toWasm}}{{toGraphQLType}}{{/toWasm}}{{/return}}, PluginError>;
2826
{{^last}}
2927

3028
{{/last}}

packages/schema/bind/src/bindings/rust/plugin/templates/types-rs.mustache

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use serde::{Serialize, Deserialize};
77
use num_bigint::BigInt;
88
use bigdecimal::BigDecimal as BigNumber;
99
use serde_json as JSON;
10-
use std::collections::BTreeMap as Map;
10+
use polywrap_msgpack::extensions::generic_map::GenericMap as Map;
1111
{{#importedModuleTypes}}
1212
use std::sync::Arc;
1313
use polywrap_msgpack::{decode, serialize};
@@ -114,7 +114,7 @@ impl {{#detectKeyword}}{{#toUpper}}{{type}}{{/toUpper}}{{/detectKeyword}} {
114114
}
115115
116116
{{#methods}}
117-
pub async fn {{#detectKeyword}}{{#toLower}}{{name}}{{/toLower}}{{/detectKeyword}}(args: &{{#toUpper}}{{parent.type}}{{/toUpper}}Args{{#toUpper}}{{name}}{{/toUpper}}, invoker: Arc<dyn Invoker>) -> Result<{{#return}}{{#toWasm}}{{toGraphQLType}}{{/toWasm}}{{/return}}, PluginError> {
117+
pub fn {{#detectKeyword}}{{#toLower}}{{name}}{{/toLower}}{{/detectKeyword}}(args: &{{#toUpper}}{{parent.type}}{{/toUpper}}Args{{#toUpper}}{{name}}{{/toUpper}}, invoker: Arc<dyn Invoker>) -> Result<{{#return}}{{#toWasm}}{{toGraphQLType}}{{/toWasm}}{{/return}}, PluginError> {
118118
let uri = {{#parent}}{{#toUpper}}{{type}}{{/toUpper}}{{/parent}}::URI;
119119
let serialized_args = serialize(args.clone()).unwrap();
120120
let opt_args = Some(serialized_args.as_slice());
@@ -126,7 +126,6 @@ impl {{#detectKeyword}}{{#toUpper}}{{type}}{{/toUpper}}{{/detectKeyword}} {
126126
None,
127127
None
128128
)
129-
.await
130129
.map_err(|e| PluginError::SubinvocationError {
131130
uri: uri.to_string(),
132131
method: "{{name}}".to_string(),
@@ -156,7 +155,7 @@ impl<'a> {{#detectKeyword}}{{#toUpper}}{{type}}{{/toUpper}}{{/detectKeyword}}<'a
156155
}
157156

158157
{{#methods}}
159-
pub async fn {{#toLower}}{{name}}{{/toLower}}(&self, args: &{{#toUpper}}{{parent.type}}{{/toUpper}}Args{{#toUpper}}{{name}}{{/toUpper}}) -> Result<{{#return}}{{#toWasm}}{{toGraphQLType}}{{/toWasm}}{{/return}}, PluginError> {
158+
pub fn {{#toLower}}{{name}}{{/toLower}}(&self, args: &{{#toUpper}}{{parent.type}}{{/toUpper}}Args{{#toUpper}}{{name}}{{/toUpper}}) -> Result<{{#return}}{{#toWasm}}{{toGraphQLType}}{{/toWasm}}{{/return}}, PluginError> {
160159
let uri = self.uri;
161160
let serialized_args = serialize(args.clone()).unwrap();
162161
let result = invoker.invoke_raw(
@@ -165,7 +164,7 @@ impl<'a> {{#detectKeyword}}{{#toUpper}}{{type}}{{/toUpper}}{{/detectKeyword}}<'a
165164
serialized_args,
166165
None,
167166
None
168-
.await
167+
)
169168
.map_err(|e| PluginError::SubinvocationError {
170169
uri: uri.to_string(),
171170
method: "{{name}}".to_string(),

packages/test-cases/cases/bind/sanity/output/plugin-rs/module.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,11 @@
22
/// All modifications will be overwritten.
33
44
use std::sync::Arc;
5-
use polywrap_core::invoke::Invoker;
5+
use polywrap_core::{invoke::Invoker};
66
use polywrap_plugin::error::PluginError;
77
use polywrap_plugin::module::PluginModule;
88
use serde::{Serialize, Deserialize};
99
use super::types::*;
10-
use async_trait::async_trait;
1110

1211
#[derive(Clone, Debug, Deserialize, Serialize)]
1312
pub struct ArgsModuleMethod {
@@ -46,13 +45,12 @@ pub struct ArgsIf {
4645
pub _if: Else,
4746
}
4847

49-
#[async_trait]
5048
pub trait Module: PluginModule {
51-
async fn module_method(&mut self, args: &ArgsModuleMethod, invoker: Arc<dyn Invoker>) -> Result<i32, PluginError>;
49+
fn module_method(&mut self, args: &ArgsModuleMethod, invoker: Arc<dyn Invoker>) -> Result<i32, PluginError>;
5250

53-
async fn object_method(&mut self, args: &ArgsObjectMethod, invoker: Arc<dyn Invoker>) -> Result<Option<AnotherType>, PluginError>;
51+
fn object_method(&mut self, args: &ArgsObjectMethod, invoker: Arc<dyn Invoker>, env: Env) -> Result<Option<AnotherType>, PluginError>;
5452

55-
async fn optional_env_method(&mut self, args: &ArgsOptionalEnvMethod, invoker: Arc<dyn Invoker>) -> Result<Option<AnotherType>, PluginError>;
53+
fn optional_env_method(&mut self, args: &ArgsOptionalEnvMethod, invoker: Arc<dyn Invoker>, env: Option<Env>) -> Result<Option<AnotherType>, PluginError>;
5654

57-
async fn _if(&mut self, args: &ArgsIf, invoker: Arc<dyn Invoker>) -> Result<Else, PluginError>;
55+
fn _if(&mut self, args: &ArgsIf, invoker: Arc<dyn Invoker>) -> Result<Else, PluginError>;
5856
}

packages/test-cases/cases/bind/sanity/output/plugin-rs/types.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use serde::{Serialize, Deserialize};
77
use num_bigint::BigInt;
88
use bigdecimal::BigDecimal as BigNumber;
99
use serde_json as JSON;
10-
use std::collections::BTreeMap as Map;
10+
use polywrap_msgpack::extensions::generic_map::GenericMap as Map;
1111
use std::sync::Arc;
1212
use polywrap_msgpack::{decode, serialize};
1313
use polywrap_core::{invoke::{Invoker}, uri::Uri};
@@ -187,7 +187,7 @@ impl<'a> TestImportModule<'a> {
187187
TestImportModule { uri: uri }
188188
}
189189

190-
pub async fn imported_method(&self, args: &TestImportModuleArgsImportedMethod) -> Result<Option<TestImportObject>, PluginError> {
190+
pub fn imported_method(&self, args: &TestImportModuleArgsImportedMethod) -> Result<Option<TestImportObject>, PluginError> {
191191
let uri = self.uri;
192192
let serialized_args = serialize(args.clone()).unwrap();
193193
let result = invoker.invoke_raw(
@@ -196,7 +196,7 @@ impl<'a> TestImportModule<'a> {
196196
serialized_args,
197197
None,
198198
None
199-
.await
199+
)
200200
.map_err(|e| PluginError::SubinvocationError {
201201
uri: uri.to_string(),
202202
method: "importedMethod".to_string(),
@@ -207,7 +207,7 @@ impl<'a> TestImportModule<'a> {
207207
Ok(Some(decode(result.as_slice())?))
208208
}
209209

210-
pub async fn another_method(&self, args: &TestImportModuleArgsAnotherMethod) -> Result<i32, PluginError> {
210+
pub fn another_method(&self, args: &TestImportModuleArgsAnotherMethod) -> Result<i32, PluginError> {
211211
let uri = self.uri;
212212
let serialized_args = serialize(args.clone()).unwrap();
213213
let result = invoker.invoke_raw(
@@ -216,7 +216,7 @@ impl<'a> TestImportModule<'a> {
216216
serialized_args,
217217
None,
218218
None
219-
.await
219+
)
220220
.map_err(|e| PluginError::SubinvocationError {
221221
uri: uri.to_string(),
222222
method: "anotherMethod".to_string(),
@@ -227,7 +227,7 @@ impl<'a> TestImportModule<'a> {
227227
Ok(decode(result.as_slice())?)
228228
}
229229

230-
pub async fn returns_array_of_enums(&self, args: &TestImportModuleArgsReturnsArrayOfEnums) -> Result<Vec<Option<TestImportEnumReturn>>, PluginError> {
230+
pub fn returns_array_of_enums(&self, args: &TestImportModuleArgsReturnsArrayOfEnums) -> Result<Vec<Option<TestImportEnumReturn>>, PluginError> {
231231
let uri = self.uri;
232232
let serialized_args = serialize(args.clone()).unwrap();
233233
let result = invoker.invoke_raw(
@@ -236,7 +236,7 @@ impl<'a> TestImportModule<'a> {
236236
serialized_args,
237237
None,
238238
None
239-
.await
239+
)
240240
.map_err(|e| PluginError::SubinvocationError {
241241
uri: uri.to_string(),
242242
method: "returnsArrayOfEnums".to_string(),

yarn.lock

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2516,9 +2516,9 @@
25162516
integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw==
25172517

25182518
"@types/lodash@^4.14.182":
2519-
version "4.14.192"
2520-
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285"
2521-
integrity sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==
2519+
version "4.14.194"
2520+
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.194.tgz#b71eb6f7a0ff11bff59fc987134a093029258a76"
2521+
integrity sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==
25222522

25232523
"@types/minimatch@*", "@types/minimatch@^5.1.2":
25242524
version "5.1.2"
@@ -2593,10 +2593,10 @@
25932593
"@types/glob" "*"
25942594
"@types/node" "*"
25952595

2596-
"@types/semver@7.3.8":
2597-
version "7.3.8"
2598-
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.8.tgz#508a27995498d7586dcecd77c25e289bfaf90c59"
2599-
integrity sha512-D/2EJvAlCEtYFEYmmlGwbGXuK886HzyCc3nZX/tkFTQdEU8jZDAgiv08P162yB17y4ZXZoq7yFAnW4GDBb9Now==
2596+
"@types/semver@7.3.11":
2597+
version "7.3.11"
2598+
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.11.tgz#7a84d3228f34e68d14955fc406f8e66fdbe9e65e"
2599+
integrity sha512-R9HhjC4aKx3jL0FLwU7x6qMTysTvLh7jesRslXmxgCOXZwyh5dsnmrPQQToMyess8D4U+8G9x9mBFZoC/1o/Tw==
26002600

26012601
"@types/shelljs@0.8.9":
26022602
version "0.8.9"
@@ -3536,9 +3536,9 @@ camelcase@^6.0.0:
35363536
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
35373537

35383538
caniuse-lite@^1.0.30001449:
3539-
version "1.0.30001478"
3540-
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a"
3541-
integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==
3539+
version "1.0.30001480"
3540+
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001480.tgz#9bbd35ee44c2480a1e3a3b9f4496f5066817164a"
3541+
integrity sha512-q7cpoPPvZYgtyC4VaBSN0Bt+PJ4c4EYRf0DrduInOz2SkFpHD5p3LnvEpqBp7UnJn+8x1Ogl1s38saUxe+ihQQ==
35423542

35433543
capture-exit@^2.0.0:
35443544
version "2.0.0"
@@ -4357,9 +4357,9 @@ electron-fetch@^1.7.2:
43574357
encoding "^0.1.13"
43584358

43594359
electron-to-chromium@^1.4.284:
4360-
version "1.4.362"
4361-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.362.tgz#1dfd7a076fc4785a16941f06410d0668e1a7a1aa"
4362-
integrity sha512-PYzAoScDfUcAwZfJQvr6hK2xXzLsMocj/Wuz6LpW6TZQNVv9TflBSB+UoEPuFujc478BgAxCoCFarcVPmjzsog==
4360+
version "1.4.367"
4361+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.367.tgz#d9ddc529ba2315fc852b722c359e4a40e86aa742"
4362+
integrity sha512-mNuDxb+HpLhPGUKrg0hSxbTjHWw8EziwkwlJNkFUj3W60ypigLDRVz04vU+VRsJPi8Gub+FDhYUpuTm9xiEwRQ==
43634363

43644364
elliptic@6.5.4:
43654365
version "6.5.4"
@@ -4606,9 +4606,9 @@ eslint-import-resolver-node@^0.3.4:
46064606
resolve "^1.22.1"
46074607

46084608
eslint-module-utils@^2.6.0:
4609-
version "2.7.4"
4610-
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974"
4611-
integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==
4609+
version "2.8.0"
4610+
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz#e439fee65fc33f6bba630ff621efc38ec0375c49"
4611+
integrity sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==
46124612
dependencies:
46134613
debug "^3.2.7"
46144614

@@ -7286,9 +7286,9 @@ long@^4.0.0:
72867286
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
72877287

72887288
long@^5.2.0:
7289-
version "5.2.1"
7290-
resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f"
7291-
integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==
7289+
version "5.2.3"
7290+
resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1"
7291+
integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==
72927292

72937293
lru-cache@^5.1.1:
72947294
version "5.1.1"
@@ -9315,10 +9315,10 @@ semver@7.3.8:
93159315
dependencies:
93169316
lru-cache "^6.0.0"
93179317

9318-
semver@7.4.0, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
9319-
version "7.4.0"
9320-
resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318"
9321-
integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==
9318+
semver@7.5.0, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
9319+
version "7.5.0"
9320+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.0.tgz#ed8c5dc8efb6c629c88b23d41dc9bf40c1d96cd0"
9321+
integrity sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==
93229322
dependencies:
93239323
lru-cache "^6.0.0"
93249324

@@ -10343,9 +10343,9 @@ upath@^2.0.1:
1034310343
integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==
1034410344

1034510345
update-browserslist-db@^1.0.10:
10346-
version "1.0.10"
10347-
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
10348-
integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
10346+
version "1.0.11"
10347+
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940"
10348+
integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==
1034910349
dependencies:
1035010350
escalade "^3.1.1"
1035110351
picocolors "^1.0.0"

0 commit comments

Comments
 (0)