make it possible to catch an error on calls

This commit is contained in:
DieMyst
2021-04-26 19:14:07 +03:00
parent 93a9d0e27d
commit 17495f9564
26 changed files with 281 additions and 89 deletions

View File

@ -3,11 +3,11 @@ import "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, c: string -> string):
func passFunctionAsArg(node: string, str: string, c: string -> string):
on node:
Peer.identify()
-- we go here back on a client
res <- c("hello")
res <- c(str)
-- then return on a node
Peer.identify()
print(res)

View File

@ -4,8 +4,9 @@ import "builtin.aqua"
import "func.aqua"
-- just a lot of imports and calls
func doStuff(a: string):
func doStuff(a: string) -> string:
str <- TestSrv.str()
par Println.print(str)
par on a:
Peer.identify()
<- str

116
package-lock.json generated
View File

@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"@fluencelabs/aqua-cli": {
"version": "0.1.1-90",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.1-90.tgz",
"integrity": "sha512-WKAElL9BQ2pX6f6RZx5isum4BrkbG6mBagszY7qchO9cigyUiq5GLWT82EBbbH8XTIbIdmERC9t5vZzyT1BDcA==",
"version": "0.1.1-92",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.1-92.tgz",
"integrity": "sha512-D5boZW20gqhi1ITIuJjWBikDZtBvCQr7V9U0qJu730UxOqUkUYSkv6SKW+rqyPddI7f6zzU8BMsPefLOpqj1yA==",
"dev": true
},
"@fluencelabs/aquamarine-interpreter": {
@ -520,6 +520,35 @@
"type-detect": "^4.0.0"
}
},
"deep-equal": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.0.5.tgz",
"integrity": "sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==",
"requires": {
"call-bind": "^1.0.0",
"es-get-iterator": "^1.1.1",
"get-intrinsic": "^1.0.1",
"is-arguments": "^1.0.4",
"is-date-object": "^1.0.2",
"is-regex": "^1.1.1",
"isarray": "^2.0.5",
"object-is": "^1.1.4",
"object-keys": "^1.1.1",
"object.assign": "^4.1.2",
"regexp.prototype.flags": "^1.3.0",
"side-channel": "^1.0.3",
"which-boxed-primitive": "^1.0.1",
"which-collection": "^1.0.1",
"which-typed-array": "^1.1.2"
},
"dependencies": {
"isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
}
}
},
"default-gateway": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
@ -638,6 +667,28 @@
"unbox-primitive": "^1.0.0"
}
},
"es-get-iterator": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz",
"integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==",
"requires": {
"call-bind": "^1.0.2",
"get-intrinsic": "^1.1.0",
"has-symbols": "^1.0.1",
"is-arguments": "^1.1.0",
"is-map": "^2.0.2",
"is-set": "^2.0.2",
"is-string": "^1.0.5",
"isarray": "^2.0.5"
},
"dependencies": {
"isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
}
}
},
"es-to-primitive": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
@ -1026,6 +1077,11 @@
"resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-1.0.1.tgz",
"integrity": "sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw=="
},
"is-map": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz",
"integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg=="
},
"is-negative-zero": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
@ -1050,6 +1106,11 @@
"has-symbols": "^1.0.1"
}
},
"is-set": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz",
"integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g=="
},
"is-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
@ -1085,6 +1146,16 @@
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"is-weakmap": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz",
"integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA=="
},
"is-weakset": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.1.tgz",
"integrity": "sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw=="
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
@ -2380,6 +2451,15 @@
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz",
"integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA=="
},
"object-is": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
"integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3"
}
},
"object-keys": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@ -2706,6 +2786,15 @@
"ms": "^2.1.1"
}
},
"regexp.prototype.flags": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
"integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3"
}
},
"relative-url": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz",
@ -2806,6 +2895,16 @@
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
},
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
}
},
"signal-exit": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
@ -3113,6 +3212,17 @@
"is-symbol": "^1.0.3"
}
},
"which-collection": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz",
"integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
"requires": {
"is-map": "^2.0.1",
"is-set": "^2.0.1",
"is-weakmap": "^2.0.1",
"is-weakset": "^2.0.1"
}
},
"which-typed-array": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz",

View File

@ -22,13 +22,14 @@
"compile-aqua:air": "aqua-cli -i ./aqua/ -o ./compiled-air -a"
},
"devDependencies": {
"@fluencelabs/aqua-cli": "^0.1.1-90",
"@fluencelabs/aqua-cli": "^0.1.1-92",
"ts-node": "^9.1.1",
"typescript": "^4.2.4"
},
"dependencies": {
"@fluencelabs/fluence": "0.9.43",
"@fluencelabs/fluence-network-environment": "1.0.8"
"@fluencelabs/fluence": "^0.9.43",
"@fluencelabs/fluence-network-environment": "1.0.8",
"deep-equal": "^2.0.5"
},
"description": "Minimal template for aquamarine project."
}

View File

@ -1,8 +1,12 @@
import { FluenceClient } from "@fluencelabs/fluence";
import { passFunctionAsArg } from "./compiled/callArrow";
import {FluenceClient} from "@fluencelabs/fluence";
import {passFunctionAsArg} from "./compiled/callArrow";
export async function callArrowCall(client: FluenceClient) {
await passFunctionAsArg(client, client.relayPeerId!, (a: string) => {
return "Hello, " + a + "!";
export async function callArrowCall(client: FluenceClient): Promise<string> {
return new Promise<string>((resolve, reject) => {
passFunctionAsArg(client, client.relayPeerId!, "callArrow call", (a: string) => {
let result = "Hello, " + a + "!";
resolve(result)
return result;
});
})
}

View File

@ -31,7 +31,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});

View File

@ -34,7 +34,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'str', () => {return str;});
@ -78,7 +78,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
@ -101,7 +101,7 @@ export async function id(client: FluenceClient): Promise<void> {
export async function passFunctionAsArg(client: FluenceClient, node: string, c: (arg0: string) => string): Promise<void> {
export async function passFunctionAsArg(client: FluenceClient, node: string, str: string, c: (arg0: string) => string): Promise<void> {
let request;
const promise = new Promise<void>((resolve, reject) => {
request = new RequestFlowBuilder()
@ -109,11 +109,14 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, c:
.withRawScript(
`
(xor
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "relay") [] relay)
(call %init_peer_id% ("getDataSrv" "node") [] node)
)
(call %init_peer_id% ("getDataSrv" "str") [] str)
)
(seq
(seq
(seq
@ -124,7 +127,7 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, c:
(call node ("peer" "identify") [])
(seq
(call relay ("op" "identity") [])
(call %init_peer_id% ("callbackSrv" "c") ["hello"] init_call_res)
(call %init_peer_id% ("callbackSrv" "c") [str] init_call_res)
)
)
(call relay ("op" "identity") [])
@ -146,10 +149,11 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, c:
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'node', () => {return node;});
h.on('getDataSrv', 'str', () => {return str;});
h.on('callbackSrv', 'c', (args) => {return c(args[0]);});
h.onEvent('errorHandlingSrv', 'error', (args) => {

View File

@ -37,7 +37,7 @@ export async function helloWorld(client: FluenceClient, name: string): Promise<s
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'name', () => {return name;});
@ -88,7 +88,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'str', () => {return str;});
@ -132,7 +132,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
@ -179,7 +179,7 @@ export async function testFunc(client: FluenceClient): Promise<string> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
@ -206,14 +206,15 @@ export async function testFunc(client: FluenceClient): Promise<string> {
export async function doStuff(client: FluenceClient, a: string): Promise<void> {
export async function doStuff(client: FluenceClient, a: string): Promise<string> {
let request;
const promise = new Promise<void>((resolve, reject) => {
const promise = new Promise<string>((resolve, reject) => {
request = new RequestFlowBuilder()
.disableInjections()
.withRawScript(
`
(xor
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "relay") [] relay)
@ -230,6 +231,8 @@ export async function doStuff(client: FluenceClient, a: string): Promise<void> {
)
)
)
(call %init_peer_id% ("callbackSrv" "response") [str])
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error%])
)
@ -239,10 +242,14 @@ export async function doStuff(client: FluenceClient, a: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'a', () => {return a;});
h.onEvent('callbackSrv', 'response', (args) => {
const [res] = args;
resolve(res);
});
h.onEvent('errorHandlingSrv', 'error', (args) => {
// assuming error is the single argument
@ -257,6 +264,6 @@ export async function doStuff(client: FluenceClient, a: string): Promise<void> {
.build();
});
await client.initiateFlow(request);
return Promise.race([promise, Promise.resolve()]);
return promise;
}

View File

@ -34,7 +34,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'str', () => {return str;});
@ -83,7 +83,7 @@ export async function printConstant(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});

View File

@ -34,7 +34,7 @@ export async function getAliasedData(client: FluenceClient): Promise<string> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});

View File

@ -34,7 +34,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'str', () => {return str;});
@ -78,7 +78,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
@ -130,7 +130,7 @@ export async function iterateAndPrint(client: FluenceClient, strings: string[]):
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'strings', () => {return strings;});
@ -191,7 +191,7 @@ export async function iterateAndPrintParallel(client: FluenceClient, nodes: stri
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'nodes', () => {return nodes;});

View File

@ -34,7 +34,7 @@ export async function testFunc(client: FluenceClient): Promise<string> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});

View File

@ -37,7 +37,7 @@ export async function helloWorld(client: FluenceClient, name: string): Promise<s
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'name', () => {return name;});

View File

@ -34,7 +34,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'str', () => {return str;});
@ -86,7 +86,7 @@ export async function ifElseCall(client: FluenceClient, condition: boolean): Pro
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'condition', () => {return condition;});
@ -138,7 +138,7 @@ export async function ifElseNumCall(client: FluenceClient, condition: number): P
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'condition', () => {return condition;});

View File

@ -31,7 +31,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
@ -87,7 +87,7 @@ export async function getPeerExternalAddresses(client: FluenceClient, otherNodeP
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'otherNodePeerId', () => {return otherNodePeerId;});
@ -156,7 +156,7 @@ export async function getDistantAddresses(client: FluenceClient, target: string,
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'target', () => {return target;});

View File

@ -31,7 +31,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
@ -93,7 +93,7 @@ export async function parFunc(client: FluenceClient, node: string, c: (arg0: {ex
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'node', () => {return node;});

View File

@ -34,7 +34,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!;
});
h.on('getRelayService', 'hasReleay', () => {// Not Used
h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined;
});
h.on('getDataSrv', 'str', () => {return str;});

View File

@ -2,5 +2,5 @@ import {FluenceClient} from "@fluencelabs/fluence";
import {doStuff} from "./compiled/complex";
export async function complexCall(client: FluenceClient) {
await doStuff(client, client.relayPeerId!)
return await doStuff(client, client.relayPeerId!)
}

View File

@ -9,6 +9,5 @@ export async function dataAliasCall(client: FluenceClient) {
}
})
const peerId = await getAliasedData(client)
console.log("PeerId: ", peerId);
return await getAliasedData(client)
}

View File

@ -3,7 +3,11 @@
export async function foldCall(client: FluenceClient) {
await iterateAndPrint(client, [client.relayPeerId!])
await iterateAndPrintParallel(client, [client.relayPeerId!], (c) => {
return new Promise<string[]>((resolve, reject) => {
iterateAndPrintParallel(client, [client.relayPeerId!], (c) => {
console.log("iterateAndPrintParallel. external addresses: " + c.external_addresses)
resolve(c.external_addresses)
})
})
}

View File

@ -6,6 +6,5 @@ export async function funcCall(client: FluenceClient) {
return `some str`
})
const res = await testFunc(client);
console.log("Message: ", res);
return await testFunc(client);
}

View File

@ -7,6 +7,5 @@ export async function helloWorldCall(client: FluenceClient) {
return `Hello, ${args[0]}!`
})
const hello = await helloWorld(client, "NAME");
console.log("Message: ", hello);
return await helloWorld(client, "NAME");
}

View File

@ -11,6 +11,16 @@ import {foldCall} from "./foldCall";
import {ifCall} from "./if";
import {parCall} from "./parCall";
import {complexCall} from "./complex";
let deepEqual = require('deep-equal')
function checkCall(name: string, expected: any, actual: any, callBackOnError: () => void) {
if (!deepEqual(actual, expected)) {
console.error(`${name} call has the wrong result`)
console.error("expected: " + expected)
console.error("actual: " + actual)
callBackOnError()
}
}
const main = async () => {
const client = await createClient(testNet[0]);
@ -25,20 +35,64 @@ const main = async () => {
// these calls return void, so they could be executed at any time,
// because promise waits only a fact that particle was sent
await callArrowCall(client)
await foldCall(client)
// callArrow.aqua
let callArrowResult = await callArrowCall(client)
// fold.aqua
let foldCallResult = await foldCall(client)
//if.aqua
await ifCall(client)
await parCall(client)
// par.aqua
let parCallResult = await parCall(client)
// these calls waiting for a result, so it will be called sequentially
await helloWorldCall(client)
await funcCall(client)
await onCall(client)
await dataAliasCall(client)
await complexCall(client)
// helloWorld.aqua
let helloWorldResult = await helloWorldCall(client)
client.disconnect();
// func.aqua
let funcCallResult = await funcCall(client)
// on.aqua
let onCallResult = await onCall(client)
// dataAlias.aqua
let dataAliasResult = await dataAliasCall(client)
// complex.aqua
let complexCallResult = await complexCall(client)
await client.disconnect();
let success = true;
let cb: () => void = () => {
success = false;
}
checkCall("callArrow", callArrowResult, "Hello, callArrow call!", cb)
checkCall("foldCall", foldCallResult, ["/ip4/165.227.164.206/tcp/7001", "/ip4/165.227.164.206/tcp/9001/ws"], cb)
checkCall("onCall", onCallResult, ["/ip4/165.227.164.206/tcp/7001", "/ip4/165.227.164.206/tcp/9001/ws"], cb)
checkCall("parArrow", parCallResult, "hello", cb)
checkCall("helloWorldCall", helloWorldResult, "Hello, NAME!", cb)
checkCall("funcCall", funcCallResult, "some str", cb)
checkCall("dataAliasCall", dataAliasResult, "peer id str", cb)
checkCall("complexCall", complexCallResult, "some str", cb)
if (success) {
process.exit(0)
} else {
process.exit(1)
}
};
main();

View File

@ -1,7 +1,6 @@
import { FluenceClient, registerServiceFunction } from "@fluencelabs/fluence";
import { getPeerExternalAddresses } from "./compiled/on";
import {FluenceClient} from "@fluencelabs/fluence";
import {getPeerExternalAddresses} from "./compiled/on";
export async function onCall(client: FluenceClient) {
const addresses = await getPeerExternalAddresses(client, client.relayPeerId!)
console.log("Addresses: ", addresses);
export async function onCall(client: FluenceClient): Promise<string[]> {
return await getPeerExternalAddresses(client, client.relayPeerId!)
}

View File

@ -2,12 +2,19 @@ import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
import {parFunc} from "./compiled/par";
export async function parCall(client: FluenceClient) {
let promise = new Promise<string>((resolve, reject) => {
registerServiceFunction(client, "parservice-id", "call", (args: any[], _) => {
console.log("hello from parservice-id")
return `hello`
let result = "hello"
resolve(result)
return result
})
})
await parFunc(client, client.relayPeerId!, (c) => {
console.log("parFunc. external addresses par: " + c.external_addresses)
})
return promise
}

View File

@ -10,12 +10,16 @@
],
"declaration": true,
"outDir": "dist",
"moduleResolution": "node",
"strict": true,
"esModuleInterop": true,
"noImplicitAny": false
},
"exclude": [
"node_modules",
"dist"
]
"dist",
"bundle",
"src/__test__"
],
"include": ["src/**/*"]
}