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 -- 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 -- `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: on node:
Peer.identify() Peer.identify()
-- we go here back on a client -- we go here back on a client
res <- c("hello") res <- c(str)
-- then return on a node -- then return on a node
Peer.identify() Peer.identify()
print(res) print(res)

View File

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

116
package-lock.json generated
View File

@ -5,9 +5,9 @@
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@fluencelabs/aqua-cli": { "@fluencelabs/aqua-cli": {
"version": "0.1.1-90", "version": "0.1.1-92",
"resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.1-90.tgz", "resolved": "https://registry.npmjs.org/@fluencelabs/aqua-cli/-/aqua-cli-0.1.1-92.tgz",
"integrity": "sha512-WKAElL9BQ2pX6f6RZx5isum4BrkbG6mBagszY7qchO9cigyUiq5GLWT82EBbbH8XTIbIdmERC9t5vZzyT1BDcA==", "integrity": "sha512-D5boZW20gqhi1ITIuJjWBikDZtBvCQr7V9U0qJu730UxOqUkUYSkv6SKW+rqyPddI7f6zzU8BMsPefLOpqj1yA==",
"dev": true "dev": true
}, },
"@fluencelabs/aquamarine-interpreter": { "@fluencelabs/aquamarine-interpreter": {
@ -520,6 +520,35 @@
"type-detect": "^4.0.0" "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": { "default-gateway": {
"version": "6.0.3", "version": "6.0.3",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
@ -638,6 +667,28 @@
"unbox-primitive": "^1.0.0" "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": { "es-to-primitive": {
"version": "1.2.1", "version": "1.2.1",
"resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "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", "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-1.0.1.tgz",
"integrity": "sha512-DhWU/kqY7X2F6KrrVTu7mHlbd2Pbo4D1YkAzasBMjQs6lJAoefxaA6m6CpSX0K6pjt9D0b9PNFI5zduy/vzOYw==" "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": { "is-negative-zero": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz",
@ -1050,6 +1106,11 @@
"has-symbols": "^1.0.1" "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": { "is-stream": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", "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", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
"integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" "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": { "isarray": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "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", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.2.tgz",
"integrity": "sha512-gz58rdPpadwztRrPjZE9DZLOABUpTGdcANUgOwBFO1C+HZZhePoP83M65WGDmbpwFYJSWqavbl4SgDn4k8RYTA==" "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": { "object-keys": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
@ -2706,6 +2786,15 @@
"ms": "^2.1.1" "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": { "relative-url": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/relative-url/-/relative-url-1.0.2.tgz", "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", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" "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": { "signal-exit": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
@ -3113,6 +3212,17 @@
"is-symbol": "^1.0.3" "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": { "which-typed-array": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", "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" "compile-aqua:air": "aqua-cli -i ./aqua/ -o ./compiled-air -a"
}, },
"devDependencies": { "devDependencies": {
"@fluencelabs/aqua-cli": "^0.1.1-90", "@fluencelabs/aqua-cli": "^0.1.1-92",
"ts-node": "^9.1.1", "ts-node": "^9.1.1",
"typescript": "^4.2.4" "typescript": "^4.2.4"
}, },
"dependencies": { "dependencies": {
"@fluencelabs/fluence": "0.9.43", "@fluencelabs/fluence": "^0.9.43",
"@fluencelabs/fluence-network-environment": "1.0.8" "@fluencelabs/fluence-network-environment": "1.0.8",
"deep-equal": "^2.0.5"
}, },
"description": "Minimal template for aquamarine project." "description": "Minimal template for aquamarine project."
} }

View File

@ -1,8 +1,12 @@
import {FluenceClient} from "@fluencelabs/fluence"; import {FluenceClient} from "@fluencelabs/fluence";
import {passFunctionAsArg} from "./compiled/callArrow"; import {passFunctionAsArg} from "./compiled/callArrow";
export async function callArrowCall(client: FluenceClient) { export async function callArrowCall(client: FluenceClient): Promise<string> {
await passFunctionAsArg(client, client.relayPeerId!, (a: string) => { return new Promise<string>((resolve, reject) => {
return "Hello, " + a + "!"; 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', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });

View File

@ -34,7 +34,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on('getDataSrv', 'str', () => {return str;}); h.on('getDataSrv', 'str', () => {return str;});
@ -78,7 +78,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; 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; let request;
const promise = new Promise<void>((resolve, reject) => { const promise = new Promise<void>((resolve, reject) => {
request = new RequestFlowBuilder() request = new RequestFlowBuilder()
@ -109,11 +109,14 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, c:
.withRawScript( .withRawScript(
` `
(xor (xor
(seq
(seq (seq
(seq (seq
(call %init_peer_id% ("getDataSrv" "relay") [] relay) (call %init_peer_id% ("getDataSrv" "relay") [] relay)
(call %init_peer_id% ("getDataSrv" "node") [] node) (call %init_peer_id% ("getDataSrv" "node") [] node)
) )
(call %init_peer_id% ("getDataSrv" "str") [] str)
)
(seq (seq
(seq (seq
(seq (seq
@ -124,7 +127,7 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, c:
(call node ("peer" "identify") []) (call node ("peer" "identify") [])
(seq (seq
(call relay ("op" "identity") []) (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") []) (call relay ("op" "identity") [])
@ -146,10 +149,11 @@ export async function passFunctionAsArg(client: FluenceClient, node: string, c:
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on('getDataSrv', 'node', () => {return node;}); h.on('getDataSrv', 'node', () => {return node;});
h.on('getDataSrv', 'str', () => {return str;});
h.on('callbackSrv', 'c', (args) => {return c(args[0]);}); h.on('callbackSrv', 'c', (args) => {return c(args[0]);});
h.onEvent('errorHandlingSrv', 'error', (args) => { 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', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on('getDataSrv', 'name', () => {return name;}); h.on('getDataSrv', 'name', () => {return name;});
@ -88,7 +88,7 @@ export async function print(client: FluenceClient, str: string): Promise<void> {
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on('getDataSrv', 'str', () => {return str;}); h.on('getDataSrv', 'str', () => {return str;});
@ -132,7 +132,7 @@ export async function id(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
@ -179,7 +179,7 @@ export async function testFunc(client: FluenceClient): Promise<string> {
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; 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; let request;
const promise = new Promise<void>((resolve, reject) => { const promise = new Promise<string>((resolve, reject) => {
request = new RequestFlowBuilder() request = new RequestFlowBuilder()
.disableInjections() .disableInjections()
.withRawScript( .withRawScript(
` `
(xor (xor
(seq
(seq (seq
(seq (seq
(call %init_peer_id% ("getDataSrv" "relay") [] relay) (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%]) (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', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on('getDataSrv', 'a', () => {return a;}); h.on('getDataSrv', 'a', () => {return a;});
h.onEvent('callbackSrv', 'response', (args) => {
const [res] = args;
resolve(res);
});
h.onEvent('errorHandlingSrv', 'error', (args) => { h.onEvent('errorHandlingSrv', 'error', (args) => {
// assuming error is the single argument // assuming error is the single argument
@ -257,6 +264,6 @@ export async function doStuff(client: FluenceClient, a: string): Promise<void> {
.build(); .build();
}); });
await client.initiateFlow(request); 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', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });
h.on('getDataSrv', 'str', () => {return str;}); h.on('getDataSrv', 'str', () => {return str;});
@ -83,7 +83,7 @@ export async function printConstant(client: FluenceClient): Promise<void> {
h.on('getDataSrv', 'relay', () => { h.on('getDataSrv', 'relay', () => {
return client.relayPeerId!; return client.relayPeerId!;
}); });
h.on('getRelayService', 'hasReleay', () => {// Not Used h.on('getRelayService', 'hasRelay', () => {// Not Used
return client.relayPeerId !== undefined; return client.relayPeerId !== undefined;
}); });

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -2,5 +2,5 @@ import {FluenceClient} from "@fluencelabs/fluence";
import {doStuff} from "./compiled/complex"; import {doStuff} from "./compiled/complex";
export async function complexCall(client: FluenceClient) { 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) return await getAliasedData(client)
console.log("PeerId: ", peerId);
} }

View File

@ -3,7 +3,11 @@
export async function foldCall(client: FluenceClient) { export async function foldCall(client: FluenceClient) {
await iterateAndPrint(client, [client.relayPeerId!]) 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) 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` return `some str`
}) })
const res = await testFunc(client); return await testFunc(client);
console.log("Message: ", res);
} }

View File

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

View File

@ -11,6 +11,16 @@ import {foldCall} from "./foldCall";
import {ifCall} from "./if"; import {ifCall} from "./if";
import {parCall} from "./parCall"; import {parCall} from "./parCall";
import {complexCall} from "./complex"; 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 main = async () => {
const client = await createClient(testNet[0]); 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, // these calls return void, so they could be executed at any time,
// because promise waits only a fact that particle was sent // 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 ifCall(client)
await parCall(client)
// par.aqua
let parCallResult = await parCall(client)
// these calls waiting for a result, so it will be called sequentially // these calls waiting for a result, so it will be called sequentially
await helloWorldCall(client) // helloWorld.aqua
await funcCall(client) let helloWorldResult = await helloWorldCall(client)
await onCall(client)
await dataAliasCall(client)
await complexCall(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) process.exit(0)
} else {
process.exit(1)
}
}; };
main(); main();

View File

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

View File

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

View File

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