diff --git a/e2e/contracts/check_system/Cargo.toml b/e2e/contracts/check_system/Cargo.toml index 6ffb353e55..d27f4547f2 100755 --- a/e2e/contracts/check_system/Cargo.toml +++ b/e2e/contracts/check_system/Cargo.toml @@ -15,6 +15,7 @@ scale = { package = "parity-scale-codec", version = "3", default-features = fals scale-info = { version = "2", default-features = false, features = ["derive"], optional = true } pink-extension = { version = "0.4", default-features = false, path = "../../../crates/pink/pink-extension" } +phat_js = { version = "0.1.1", default-features = false } [dependencies.indeterministic_functions] version = "0.1" @@ -34,6 +35,7 @@ default = ["std"] std = [ "ink/std", "scale/std", + "phat_js/std", "scale-info/std", "pink-extension/std", "indeterministic_functions/std", diff --git a/e2e/contracts/check_system/lib.rs b/e2e/contracts/check_system/lib.rs index 4629cb49bb..e10e451f6d 100755 --- a/e2e/contracts/check_system/lib.rs +++ b/e2e/contracts/check_system/lib.rs @@ -11,7 +11,7 @@ mod check_system { use pink::system::{ContractDeposit, DriverError, Result, SystemRef}; use pink::PinkEnvironment; - use crate::js; + use phat_js as js; use alloc::string::String; use indeterministic_functions::Usd; @@ -83,10 +83,10 @@ mod check_system { call::ExecutionInput::new(call::Selector::new(0xafead99e_u32.to_be_bytes())) .push_arg(json), ) - .returns::>>() + .returns::>() .invoke(); pink::info!("parse_usd result: {result:?}"); - result.unwrap() + result } #[ink(message)] @@ -96,7 +96,7 @@ mod check_system { script: String, args: Vec, ) -> Result { - js::eval(delegate, &script, args) + js::eval_with(delegate, &script, &args) } #[ink(message)] @@ -106,7 +106,7 @@ mod check_system { script: Vec, args: Vec, ) -> Result { - js::eval_bytecode(delegate, script, args) + js::eval_bytecode_with(delegate, script, &args) } #[ink(message)] @@ -156,56 +156,3 @@ mod check_system { } } } - -// Haven't much thought on the API shape so far. So it isn't turned into a crate yet. -mod js { - use super::*; - use alloc::string::String; - use alloc::vec::Vec; - use ink::primitives::Hash; - use scale::{Decode, Encode}; - - #[derive(Debug, Encode, Decode)] - #[cfg_attr(feature = "std", derive(scale_info::TypeInfo))] - pub enum Output { - String(String), - Bytes(Vec), - Undefined, - } - - pub fn eval(delegate: Hash, script: &str, args: Vec) -> Result { - use ink::env::call; - - let result = call::build_call::() - .call_type(call::DelegateCall::new(delegate)) - .exec_input( - call::ExecutionInput::new(call::Selector::new(0x49bfcd24_u32.to_be_bytes())) - .push_arg(script) - .push_arg(args), - ) - .returns::>>() - .invoke(); - pink::info!("eval result: {result:?}"); - result.unwrap() - } - - pub fn eval_bytecode( - delegate: Hash, - script: alloc::vec::Vec, - args: Vec, - ) -> Result { - use ink::env::call; - - let result = call::build_call::() - .call_type(call::DelegateCall::new(delegate)) - .exec_input( - call::ExecutionInput::new(call::Selector::new(0xbf0ec203_u32.to_be_bytes())) - .push_arg(script) - .push_arg(args), - ) - .returns::>>() - .invoke(); - pink::info!("eval result: {result:?}"); - result.unwrap() - } -}