diff --git a/packages/cre-sdk-javy-plugin/dist/javy_chainlink_sdk.wasm b/packages/cre-sdk-javy-plugin/dist/javy_chainlink_sdk.wasm index 9a65e623..f79bda8a 100755 Binary files a/packages/cre-sdk-javy-plugin/dist/javy_chainlink_sdk.wasm and b/packages/cre-sdk-javy-plugin/dist/javy_chainlink_sdk.wasm differ diff --git a/packages/cre-sdk-javy-plugin/src/javy_chainlink_sdk/src/lib.rs b/packages/cre-sdk-javy-plugin/src/javy_chainlink_sdk/src/lib.rs index 5ca551f7..ae454326 100644 --- a/packages/cre-sdk-javy-plugin/src/javy_chainlink_sdk/src/lib.rs +++ b/packages/cre-sdk-javy-plugin/src/javy_chainlink_sdk/src/lib.rs @@ -124,7 +124,10 @@ pub unsafe extern "C" fn initialize_runtime() { ) }; if n < 0 { - return Err(Error::new_into_js("Error", "await_capabilities failed")); + let error_len = (-n) as usize; + let error_msg = String::from_utf8_lossy(&buf[..error_len.min(max_len as usize)]).into_owned(); + let error_msg_static: &'static str = Box::leak(error_msg.into_boxed_str()); + return Err(Error::new_into_js("Error", error_msg_static)); } let out = &buf[..n as usize]; diff --git a/packages/cre-sdk/Makefile b/packages/cre-sdk/Makefile index b1a679fe..8f42b82f 100644 --- a/packages/cre-sdk/Makefile +++ b/packages/cre-sdk/Makefile @@ -1,4 +1,4 @@ -COMMON_VERSION ?= cre-std-tests@0.5.0 +COMMON_VERSION ?= cre-std-tests@0.5.1 MODULE := github.com/smartcontractkit/chainlink-common TEST_PATTERN ?= ^TestStandard diff --git a/packages/cre-sdk/src/standard_tests/host_wasm_write_errors_are_respected/test.ts b/packages/cre-sdk/src/standard_tests/host_wasm_write_errors_are_respected/test.ts new file mode 100644 index 00000000..13070960 --- /dev/null +++ b/packages/cre-sdk/src/standard_tests/host_wasm_write_errors_are_respected/test.ts @@ -0,0 +1,32 @@ +import { BasicActionCapability } from '@cre/generated-sdk/capabilities/internal/basicaction/v1/basicaction_sdk_gen' +import { BasicCapability as BasicTriggerCapability } from '@cre/generated-sdk/capabilities/internal/basictrigger/v1/basic_sdk_gen' +import { cre, type Runtime } from '@cre/sdk/cre' +import { Runner } from '@cre/sdk/wasm' + +const asyncCalls = (runtime: Runtime) => { + const basicAction = new BasicActionCapability() + const input = { inputThing: true } + const p = basicAction.performAction(runtime, input) + + p.result() + + return `We should not get here, result should throw an error` +} + +const initWorkflow = () => { + const basicTrigger = new BasicTriggerCapability() + return [cre.handler(basicTrigger.trigger({}), asyncCalls)] +} + +export async function main() { + console.log( + `TS workflow: standard test: capability calls are async [${new Date().toISOString()}]`, + ) + + const runner = await Runner.newRunner({ + configParser: (c) => c, + }) + runner.run(initWorkflow) +} + +await main()