nested func example broken

This commit is contained in:
DieMyst
2021-06-04 14:10:34 +03:00
parent 02fa57911e
commit 694c6c65f4
9 changed files with 173 additions and 26 deletions

View File

@ -4,6 +4,7 @@ import "@fluencelabs/aqua-lib/builtin.aqua"
-- functions like `c` are called an 'arrow function' in Aqua
-- `c` passed to a function from a client, so, it could be called only on a client
func passFunctionAsArg(node: string, str: string, c: string -> string):
Op.identity()
on node:
Peer.identify()
-- we go here back on a client

View File

@ -1,6 +1,6 @@
import "@fluencelabs/aqua-lib/builtin.aqua"
service OpH("op"):
service OpH("opa"):
identity(s: string) -> string
func a(b: string) -> string:

38
package-lock.json generated
View File

@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"@fluencelabs/aqua-cli": {
"version": "0.1.2-129",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.2-129.tgz",
"integrity": "sha512-F1+ZjvZe2xqIH6NMI2CZJb7F51ux+eoaN51PKVNF1TXeyGCbEU3hO/lhHWkpf62/bL2BPqUd0acVxKBbyVsRiw==",
"version": "0.1.4-136",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.4-136.tgz",
"integrity": "sha512-hvoS+Mc5xOlyWV2i7tCvnABSuSifoKQehoepaREerUhRvymAFwg7nOSc9HPtLY9Ou0j3H3TWhRgTI27+4wZrlA==",
"dev": true
},
"@fluencelabs/aqua-lib": {
@ -32,9 +32,9 @@
}
},
"@fluencelabs/fluence": {
"version": "0.9.47",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.9.47.tgz",
"integrity": "sha512-NueaISvOvE1dDoeyfDcVmcDteXLyMbhb/hU7Z9O+5rJEvMYo2CzhIGAQo9bTDFLNBoamXFJdpqV3iLBn/kRs9Q==",
"version": "0.9.50",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence/-/fluence-0.9.50.tgz",
"integrity": "sha512-BQv3+CXm8fmuMRDcYVRhkm6e8zZiFs8my8TSzwg4bTO0CJC+vdzylinl0KWIDgic4FFohWQc/0v/PKzTf+1KnA==",
"requires": {
"@fluencelabs/avm": "0.9.12",
"async": "3.2.0",
@ -176,9 +176,9 @@
"integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w=="
},
"@types/node": {
"version": "15.6.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.6.1.tgz",
"integrity": "sha512-7EIraBEyRHEe7CH+Fm1XvgqU6uwZN8Q7jppJGcqjROMT29qhAuuOxYB1uEY5UMYQKEmA5D+5tBnhdaPXSsLONA=="
"version": "15.12.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-15.12.0.tgz",
"integrity": "sha512-+aHJvoCsVhO2ZCuT4o5JtcPrCPyDE3+1nvbDprYes+pPkEsbjH7AGUCNtjMOXS0fqH14t+B7yLzaqSz92FPWyw=="
},
"@types/retry": {
"version": "0.12.0",
@ -736,9 +736,9 @@
"integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="
},
"execa": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.0.1.tgz",
"integrity": "sha512-4hFTjFbFzQa3aCLobpbPJR/U+VoL1wdV5ozOWjeet0AWDeYr9UFGM1eUFWHX+VtOWFq4p0xXUXfW1YxUaP4fpw==",
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/execa/-/execa-5.1.0.tgz",
"integrity": "sha512-CkdUB7s2y6S+d4y+OM/+ZtQcJCiKUCth4cNImGMqrt2zEVtW2rfHGspQBE1GDo6LjeNIQmTPKXqTCKjqFKyu3A==",
"requires": {
"cross-spawn": "^7.0.3",
"get-stream": "^6.0.0",
@ -2102,16 +2102,16 @@
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
},
"mime-db": {
"version": "1.47.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
"integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw=="
"version": "1.48.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
"integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
},
"mime-types": {
"version": "2.1.30",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz",
"integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==",
"version": "2.1.31",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
"integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
"requires": {
"mime-db": "1.47.0"
"mime-db": "1.48.0"
}
},
"mimic-fn": {

View File

@ -24,13 +24,13 @@
"compile-aqua:air": "aqua-cli -i ./aqua/ -o ./compiled-air -a"
},
"devDependencies": {
"@fluencelabs/aqua-cli": "^0.1.4-133",
"@fluencelabs/aqua-cli": "^0.1.4-136",
"@fluencelabs/aqua-lib": "^0.1.3",
"ts-node": "^9.1.1",
"typescript": "^4.2.4"
},
"dependencies": {
"@fluencelabs/fluence": "^0.9.47",
"@fluencelabs/fluence": "^0.9.50",
"@fluencelabs/fluence-network-environment": "^1.0.9",
"deep-equal": "^2.0.5"
},

View File

@ -68,6 +68,7 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, str
(seq
(seq
(seq
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
@ -75,6 +76,8 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, str
)
(call %init_peer_id% ("getDataSrv" "str") [] str)
)
(call %init_peer_id% ("op" "identity") [])
)
(call -relay- ("op" "identity") [])
)
(xor

View File

@ -0,0 +1,126 @@
/**
*
* 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.4-136
*
*/
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 a(client: FluenceClient, b: string): Promise<string> {
let request: RequestFlow;
const promise = new Promise<string>((resolve, reject) => {
request = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "b") [] b)
)
(call %init_peer_id% ("opa" "identity") [b] c)
)
(xor
(call %init_peer_id% ("callbackSrv" "response") [c])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
(seq
(call -relay- ("op" "identity") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return client.relayPeerId!;
});
h.on('getDataSrv', 'b', () => {return b;});
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 a');
})
.build();
});
await client.initiateFlow(request!);
return promise;
}
export async function d(client: FluenceClient, e: string): Promise<string> {
let request: RequestFlow;
const promise = new Promise<string>((resolve, reject) => {
request = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "e") [] e)
)
(call %init_peer_id% ("opa" "identity") [e] c)
)
(xor
(call %init_peer_id% ("callbackSrv" "response") [f])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
(seq
(call -relay- ("op" "identity") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
`,
)
.configHandler((h) => {
h.on('getDataSrv', '-relay-', () => {
return client.relayPeerId!;
});
h.on('getDataSrv', 'e', () => {return e;});
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 d');
})
.build();
});
await client.initiateFlow(request!);
return promise;
}

View File

@ -0,0 +1,12 @@
import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
import {getTwoResults} from "../compiled/examples/foldJoin";
import {useOptional} from "../compiled/examples/option";
import {d} from "../compiled/examples/nestedFuncs";
export async function nestedFuncsCall(client: FluenceClient): Promise<string> {
registerServiceFunction(client, "opa", "identity", (args: any[], _) => {
return args[0]
})
return await d(client, "some-str")
}

View File

@ -1,5 +1,4 @@
import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
import {getTwoResults} from "../compiled/examples/foldJoin";
import {useOptional} from "../compiled/examples/option";
export async function useOptionalCall(client: FluenceClient): Promise<string> {

View File

@ -17,6 +17,7 @@ import {topologyCall} from "./examples/topologyCall";
import {foldJoinCall} from "./examples/foldJoinCall";
import {useOptionalCall} from "./examples/useOptionalCall";
import {viaCall} from "./examples/viaCall";
import {nestedFuncsCall} from "./examples/nestedFuncsCall";
let deepEqual = require('deep-equal')
function checkCall(name: string, expected: any, actual: any, callBackOnError: () => void) {
@ -100,6 +101,9 @@ const main = async () => {
// via.aqua
let viaResult = await viaCall(client)
// nestedFuncs.aqua
let nestedFuncsResult = await nestedFuncsCall(client)
await client.disconnect();
let success = true;
@ -135,6 +139,8 @@ const main = async () => {
checkCallBy("via", viaResult, (res) => res.every( (val, i, arr) => deepEqual(val, arr[0]) ), cb)
checkCall("nestedFuncsCall", optionResult, "some-str", cb)
if (success) {
process.exit(0)
} else {