mirror of
https://github.com/fluencelabs/aqua-playground
synced 2025-06-26 19:11:34 +00:00
multireturn test
This commit is contained in:
@ -1,11 +1,20 @@
|
|||||||
service GetStr("multiret-test"):
|
service GetStr("multiret-test"):
|
||||||
retStr: string -> string
|
retStr: string -> string
|
||||||
|
|
||||||
|
service GetNum("multiret-num"):
|
||||||
|
retNum: -> u8
|
||||||
|
|
||||||
const someNum = 5
|
const someNum = 5
|
||||||
const someStr = "some-str"
|
const someStr = "some-str"
|
||||||
|
|
||||||
func multiReturnFunc(somethingToReturn: []u8, smthOption: ?string) -> []string, u8, u8, string, []u8, ?string :
|
func tupleFunc() -> string, u8:
|
||||||
|
str <- GetStr.retStr(someStr)
|
||||||
|
n <- GetNum.retNum()
|
||||||
|
<- str, n
|
||||||
|
|
||||||
|
func multiReturnFunc(somethingToReturn: []u8, smthOption: ?string) -> []string, u8, string, []u8, ?string, u8 :
|
||||||
res: *string
|
res: *string
|
||||||
res <- GetStr.retStr(someStr)
|
res <- GetStr.retStr(someStr)
|
||||||
res <- GetStr.retStr("random-str")
|
res <- GetStr.retStr("random-str")
|
||||||
<- res, 5, someNum, someStr, somethingToReturn, smthOption
|
res, tNum <- tupleFunc()
|
||||||
|
<- res, 5, someStr, somethingToReturn, smthOption, tNum
|
6
package-lock.json
generated
6
package-lock.json
generated
@ -5,9 +5,9 @@
|
|||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fluencelabs/aqua-cli": {
|
"@fluencelabs/aqua-cli": {
|
||||||
"version": "0.1.10-188",
|
"version": "0.1.13-196",
|
||||||
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.10-188.tgz",
|
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.13-196.tgz",
|
||||||
"integrity": "sha512-3StvE+xevgQVsGwHGpSY+OuXx86N89MxUpguvZfwufRuSLIO++aMmUGUC14GFc7LQelcP86h6pFZ5o7pNYEIVw==",
|
"integrity": "sha512-ofBALzaUlbFH5k9FyGsslT/H+uN+l9NFxf/dg4N1/iKN6ZND+hT1jtMn7ybkTXe1vCS3DNMLqkfJBaK5f5M3Xw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@fluencelabs/aqua-dht": {
|
"@fluencelabs/aqua-dht": {
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"compile-aqua:air": "aqua-cli -i ./aqua/ -o ./compiled-air -a"
|
"compile-aqua:air": "aqua-cli -i ./aqua/ -o ./compiled-air -a"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@fluencelabs/aqua-cli": "^0.1.10-188",
|
"@fluencelabs/aqua-cli": "^0.1.13-196",
|
||||||
"@fluencelabs/aqua-lib": "^0.1.9",
|
"@fluencelabs/aqua-lib": "^0.1.9",
|
||||||
"@fluencelabs/aqua-dht": "^0.1.35",
|
"@fluencelabs/aqua-dht": "^0.1.35",
|
||||||
"ts-node": "^9.1.1",
|
"ts-node": "^9.1.1",
|
||||||
|
63
src/compiled/examples/multiReturn.ts
Normal file
63
src/compiled/examples/multiReturn.ts
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||||
|
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||||
|
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||||
|
* Aqua version: 0.1.13-SNAPSHOT
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||||
|
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||||
|
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export async function tupleFunc(client: FluenceClient, config?: {ttl?: number}): Promise<string> {
|
||||||
|
let request: RequestFlow;
|
||||||
|
const promise = new Promise<string>((resolve, reject) => {
|
||||||
|
const r = new RequestFlowBuilder()
|
||||||
|
.disableInjections()
|
||||||
|
.withRawScript(
|
||||||
|
`
|
||||||
|
(xor
|
||||||
|
(seq
|
||||||
|
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||||
|
(xor
|
||||||
|
(call %init_peer_id% ("callbackSrv" "response") ["str"])
|
||||||
|
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||||
|
)
|
||||||
|
|
||||||
|
`,
|
||||||
|
)
|
||||||
|
.configHandler((h) => {
|
||||||
|
h.on('getDataSrv', '-relay-', () => {
|
||||||
|
return client.relayPeerId!;
|
||||||
|
});
|
||||||
|
|
||||||
|
h.onEvent('callbackSrv', 'response', (args) => {
|
||||||
|
const [res] = args;
|
||||||
|
resolve(res);
|
||||||
|
});
|
||||||
|
|
||||||
|
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||||
|
// assuming error is the single argument
|
||||||
|
const [err] = args;
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.handleScriptError(reject)
|
||||||
|
.handleTimeout(() => {
|
||||||
|
reject('Request timed out for tupleFunc');
|
||||||
|
})
|
||||||
|
if(config && config.ttl) {
|
||||||
|
r.withTTL(config.ttl)
|
||||||
|
}
|
||||||
|
request = r.build();
|
||||||
|
});
|
||||||
|
await client.initiateFlow(request!);
|
||||||
|
return promise;
|
||||||
|
}
|
||||||
|
|
@ -1,10 +1,14 @@
|
|||||||
import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
|
import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
|
||||||
import {multiReturnFunc} from "../compiled/examples/multiReturn";
|
import {multiReturnFunc} from "../compiled/examples/multiReturn";
|
||||||
|
|
||||||
export async function multiReturnCall(client: FluenceClient): Promise<[string[], number, number, string, number[], string | null]> {
|
export async function multiReturnCall(client: FluenceClient): Promise<[string[], number, string, number[], string | null, number]> {
|
||||||
registerServiceFunction(client, "multiret-test", "retStr", (args: any[], _) => {
|
registerServiceFunction(client, "multiret-test", "retStr", (args: any[], _) => {
|
||||||
return args[0]
|
return args[0]
|
||||||
})
|
})
|
||||||
|
|
||||||
|
registerServiceFunction(client, "multiret-num", "retNum", (args: any[], _) => {
|
||||||
|
return 10
|
||||||
|
})
|
||||||
|
|
||||||
return await multiReturnFunc(client, [1, 2], null)
|
return await multiReturnFunc(client, [1, 2], null)
|
||||||
}
|
}
|
@ -30,13 +30,13 @@ import {literalCall} from "./examples/returnLiteralCall";
|
|||||||
import {multiReturnCall} from "./examples/multiReturnCall";
|
import {multiReturnCall} from "./examples/multiReturnCall";
|
||||||
let deepEqual = require('deep-equal')
|
let deepEqual = require('deep-equal')
|
||||||
|
|
||||||
function checkCall(name: string, expected: any, actual: any, callBackOnError: () => void) {
|
function checkCall(name: string, actual: any, expected: any, callBackOnError: () => void) {
|
||||||
if (!deepEqual(actual, expected)) {
|
if (!deepEqual(expected, actual)) {
|
||||||
console.error(`${name} call has the wrong result`)
|
console.error(`${name} call has the wrong result`)
|
||||||
console.error("expected: ")
|
|
||||||
console.dir(expected)
|
|
||||||
console.error("actual: ")
|
console.error("actual: ")
|
||||||
console.dir(actual)
|
console.dir(actual)
|
||||||
|
console.error("expected: ")
|
||||||
|
console.dir(expected)
|
||||||
callBackOnError()
|
callBackOnError()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -201,7 +201,7 @@ const main = async () => {
|
|||||||
|
|
||||||
checkCall("literalCall", literalCallResult, "some literal", cb)
|
checkCall("literalCall", literalCallResult, "some literal", cb)
|
||||||
|
|
||||||
checkCall("multiReturnResult", multiReturnResult, [ [ 'some-str', 'random-str' ], 5, 5, 'some-str', [ 1, 2 ], null], cb)
|
checkCall("multiReturnResult", multiReturnResult, [ [ 'some-str', 'random-str', 'some-str' ], 5, 'some-str', [ 1, 2 ], null, 10], cb)
|
||||||
|
|
||||||
checkCallBy("tryCatchCall", tryCatchResult, (res) => {
|
checkCallBy("tryCatchCall", tryCatchResult, (res) => {
|
||||||
return (res[0] as string).includes("Error: Service with id 'unex' not found") && res[1] === '/ip4/164.90.171.139/tcp/7770'
|
return (res[0] as string).includes("Error: Service with id 'unex' not found") && res[1] === '/ip4/164.90.171.139/tcp/7770'
|
||||||
|
Reference in New Issue
Block a user