aqua-playground/src/compiled/examples/recursiveStreams.ts

163 lines
4.9 KiB
TypeScript
Raw Normal View History

/**
*
* 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
2022-03-10 12:44:09 +03:00
* Aqua version: 0.6.3-SNAPSHOT
*
*/
import { Fluence, FluencePeer } from '@fluencelabs/fluence';
import {
callFunction,
registerService,
2022-03-14 13:14:39 +03:00
} from '@fluencelabs/fluence/dist/internal/compilerSupport/v3';
import {
CallParams
} from '@fluencelabs/fluence/dist/internal/compilerSupport/v2';
// Services
export interface YesNoServiceDef {
get: (callParams: CallParams<null>) => string | Promise<string>;
}
export function registerYesNoService(service: YesNoServiceDef): void;
export function registerYesNoService(serviceId: string, service: YesNoServiceDef): void;
export function registerYesNoService(peer: FluencePeer, service: YesNoServiceDef): void;
export function registerYesNoService(peer: FluencePeer, serviceId: string, service: YesNoServiceDef): void;
export function registerYesNoService(...args: any) {
registerService(
args,
{
"defaultServiceId" : "yesno",
2022-03-14 13:14:39 +03:00
"functions" : {
"tag" : "labeledProduct",
"fields" : {
"get" : {
"tag" : "arrow",
"domain" : {
"tag" : "nil"
},
"codomain" : {
"tag" : "unlabeledProduct",
"items" : [
{
"tag" : "scalar",
"name" : "string"
}
]
}
}
}
2022-03-14 13:14:39 +03:00
}
}
);
}
// Functions
2022-03-10 12:44:09 +03:00
export type RecursiveStreamResult = [string[], string[]]
export function recursiveStream(
config?: {ttl?: number}
2022-03-10 12:44:09 +03:00
): Promise<RecursiveStreamResult>;
export function recursiveStream(
peer: FluencePeer,
config?: {ttl?: number}
2022-03-10 12:44:09 +03:00
): Promise<RecursiveStreamResult>;
export function recursiveStream(...args: any) {
let script = `
(xor
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(new $loop
2022-03-10 12:44:09 +03:00
(seq
(new $result
(seq
2022-03-10 12:44:09 +03:00
(seq
(ap "yes" $loop)
(fold $loop l
(seq
2022-03-10 12:44:09 +03:00
(seq
(xor
(match l "yes"
(xor
(call %init_peer_id% ("yesno" "get") [] $loop)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
2022-03-10 12:44:09 +03:00
(null)
)
2022-03-10 12:44:09 +03:00
(ap "success" $result)
)
2022-03-10 12:44:09 +03:00
(next l)
)
)
)
2022-03-10 12:44:09 +03:00
(call %init_peer_id% ("op" "identity") [$result] result-fix)
)
)
2022-03-10 12:44:09 +03:00
(call %init_peer_id% ("op" "identity") [$loop] loop-fix)
)
)
)
(xor
2022-03-10 12:44:09 +03:00
(call %init_peer_id% ("callbackSrv" "response") [result-fix loop-fix])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
`
return callFunction(
args,
{
"functionName" : "recursiveStream",
2022-03-14 13:14:39 +03:00
"arrow" : {
"tag" : "arrow",
"domain" : {
"tag" : "labeledProduct",
"fields" : {
2022-03-10 12:44:09 +03:00
}
2022-03-14 13:14:39 +03:00
},
"codomain" : {
"tag" : "unlabeledProduct",
"items" : [
{
"tag" : "array",
"type" : {
"tag" : "scalar",
"name" : "string"
}
},
{
"tag" : "array",
"type" : {
"tag" : "scalar",
"name" : "string"
}
}
]
}
},
"names" : {
"relay" : "-relay-",
"getDataSrv" : "getDataSrv",
"callbackSrv" : "callbackSrv",
"responseSrv" : "callbackSrv",
"responseFnName" : "response",
"errorHandlingSrv" : "errorHandlingSrv",
"errorFnName" : "error"
}
},
script
)
}