mirror of
https://github.com/fluencelabs/fluence-js.git
synced 2024-12-05 02:10:18 +00:00
Fix tests
This commit is contained in:
parent
d6eb91b76f
commit
942a203d4a
@ -9,16 +9,13 @@
|
||||
* If you find any bugs in generated JS/TS, please write an issue on GitHub: https://github.com/fluencelabs/js-client/issues
|
||||
*
|
||||
*/
|
||||
import type {
|
||||
IFluenceClient as IFluenceClient$$,
|
||||
ParticleContext as ParticleContext$$,
|
||||
} from "@fluencelabs/js-client";
|
||||
import type { IFluenceClient as IFluenceClient$$, ParticleContext as ParticleContext$$ } from '@fluencelabs/js-client';
|
||||
|
||||
import {
|
||||
v5_callFunction as callFunction$$,
|
||||
v5_registerService as registerService$$,
|
||||
FluencePeer as FluencePeer$$,
|
||||
} from "@fluencelabs/js-client";
|
||||
v5_callFunction as callFunction$$,
|
||||
v5_registerService as registerService$$,
|
||||
FluencePeer as FluencePeer$$
|
||||
} from '@fluencelabs/js-client';
|
||||
|
||||
/**
|
||||
* @typedef {import("@fluencelabs/js-client").NonArrowSimpleType} NonArrowSimpleType
|
||||
@ -31,48 +28,53 @@ import {
|
||||
* @returns {JSONValue} value represented in typescript
|
||||
*/
|
||||
export function aqua2ts(value, schema) {
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
} else if (schema.tag === "option") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
}
|
||||
if (value.length === 0) {
|
||||
return null;
|
||||
} else {
|
||||
return aqua2ts(value[0], schema.type);
|
||||
else if (schema.tag === "option") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
if (value.length === 0) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return aqua2ts(value[0], schema.type);
|
||||
}
|
||||
}
|
||||
} else if (
|
||||
schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType"
|
||||
) {
|
||||
return value;
|
||||
} else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType") {
|
||||
return value;
|
||||
}
|
||||
return value.map((y) => {
|
||||
return aqua2ts(y, schema.type);
|
||||
});
|
||||
} else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y) => {
|
||||
return aqua2ts(y, schema.type);
|
||||
});
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return aqua2ts(y, schema.items[i]);
|
||||
});
|
||||
} else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return aqua2ts(y, schema.items[i]);
|
||||
});
|
||||
}
|
||||
else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = aqua2ts(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
}
|
||||
else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = aqua2ts(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
} else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Convert value from its typescript representation to representation in aqua
|
||||
@ -81,46 +83,49 @@ export function aqua2ts(value, schema) {
|
||||
* @returns {JSONValue} represented in aqua
|
||||
*/
|
||||
export function ts2aqua(value, schema) {
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
} else if (schema.tag === "option") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
}
|
||||
return value === null ? [] : [ts2aqua(value, schema.type)];
|
||||
} else if (
|
||||
schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType"
|
||||
) {
|
||||
return value;
|
||||
} else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "option") {
|
||||
return value == null ? [] : [ts2aqua(value, schema.type)];
|
||||
}
|
||||
return value.map((y) => {
|
||||
return ts2aqua(y, schema.type);
|
||||
});
|
||||
} else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType") {
|
||||
return value;
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return ts2aqua(y, schema.items[i]);
|
||||
});
|
||||
} else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y) => {
|
||||
return ts2aqua(y, schema.type);
|
||||
});
|
||||
}
|
||||
else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return ts2aqua(y, schema.items[i]);
|
||||
});
|
||||
}
|
||||
else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = ts2aqua(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
}
|
||||
else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = ts2aqua(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
} else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Functions
|
||||
export const test_script = `
|
||||
(seq
|
||||
@ -135,38 +140,41 @@ export const test_script = `
|
||||
)
|
||||
`;
|
||||
|
||||
export function test(config?: { ttl?: number }): Promise<void>;
|
||||
export function test(
|
||||
config?: {ttl?: number}
|
||||
): Promise<void>;
|
||||
|
||||
export function test(
|
||||
peer: IFluenceClient$$,
|
||||
config?: { ttl?: number },
|
||||
peer: IFluenceClient$$,
|
||||
config?: {ttl?: number}
|
||||
): Promise<void>;
|
||||
|
||||
export async function test(...args: any[]) {
|
||||
const argNames = [];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
const callArgs = Object.fromEntries(
|
||||
args.slice(0, argCount).map((arg, i) => [argNames[i], arg]),
|
||||
);
|
||||
|
||||
const params = {
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount],
|
||||
};
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: test_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result, {
|
||||
tag: "nil",
|
||||
});
|
||||
const argNames = [];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
|
||||
const callArgs = Object.fromEntries(args.slice(0, argCount).map((arg, i) => [argNames[i], arg]));
|
||||
|
||||
const params = ({
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount]
|
||||
});
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: test_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result,
|
||||
{
|
||||
"tag": "nil"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -9,16 +9,13 @@
|
||||
* If you find any bugs in generated JS/TS, please write an issue on GitHub: https://github.com/fluencelabs/js-client/issues
|
||||
*
|
||||
*/
|
||||
import type {
|
||||
IFluenceClient as IFluenceClient$$,
|
||||
ParticleContext as ParticleContext$$,
|
||||
} from "@fluencelabs/js-client";
|
||||
import type { IFluenceClient as IFluenceClient$$, ParticleContext as ParticleContext$$ } from '@fluencelabs/js-client';
|
||||
|
||||
import {
|
||||
v5_callFunction as callFunction$$,
|
||||
v5_registerService as registerService$$,
|
||||
FluencePeer as FluencePeer$$,
|
||||
} from "@fluencelabs/js-client";
|
||||
v5_callFunction as callFunction$$,
|
||||
v5_registerService as registerService$$,
|
||||
FluencePeer as FluencePeer$$
|
||||
} from '@fluencelabs/js-client';
|
||||
|
||||
/**
|
||||
* @typedef {import("@fluencelabs/js-client").NonArrowSimpleType} NonArrowSimpleType
|
||||
@ -31,48 +28,53 @@ import {
|
||||
* @returns {JSONValue} value represented in typescript
|
||||
*/
|
||||
export function aqua2ts(value, schema) {
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
} else if (schema.tag === "option") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
}
|
||||
if (value.length === 0) {
|
||||
return null;
|
||||
} else {
|
||||
return aqua2ts(value[0], schema.type);
|
||||
else if (schema.tag === "option") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
if (value.length === 0) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
return aqua2ts(value[0], schema.type);
|
||||
}
|
||||
}
|
||||
} else if (
|
||||
schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType"
|
||||
) {
|
||||
return value;
|
||||
} else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType") {
|
||||
return value;
|
||||
}
|
||||
return value.map((y) => {
|
||||
return aqua2ts(y, schema.type);
|
||||
});
|
||||
} else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y) => {
|
||||
return aqua2ts(y, schema.type);
|
||||
});
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return aqua2ts(y, schema.items[i]);
|
||||
});
|
||||
} else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return aqua2ts(y, schema.items[i]);
|
||||
});
|
||||
}
|
||||
else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = aqua2ts(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
}
|
||||
else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = aqua2ts(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
} else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Convert value from its typescript representation to representation in aqua
|
||||
@ -81,196 +83,143 @@ export function aqua2ts(value, schema) {
|
||||
* @returns {JSONValue} represented in aqua
|
||||
*/
|
||||
export function ts2aqua(value, schema) {
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
} else if (schema.tag === "option") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
if (schema.tag === "nil") {
|
||||
return null;
|
||||
}
|
||||
return value === null ? [] : [ts2aqua(value, schema.type)];
|
||||
} else if (
|
||||
schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType"
|
||||
) {
|
||||
return value;
|
||||
} else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "option") {
|
||||
return value == null ? [] : [ts2aqua(value, schema.type)];
|
||||
}
|
||||
return value.map((y) => {
|
||||
return ts2aqua(y, schema.type);
|
||||
});
|
||||
} else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "scalar" ||
|
||||
schema.tag === "bottomType" ||
|
||||
schema.tag === "topType") {
|
||||
return value;
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return ts2aqua(y, schema.items[i]);
|
||||
});
|
||||
} else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
else if (schema.tag === "array") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y) => {
|
||||
return ts2aqua(y, schema.type);
|
||||
});
|
||||
}
|
||||
else if (schema.tag === "unlabeledProduct") {
|
||||
if (!Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return value.map((y, i) => {
|
||||
return ts2aqua(y, schema.items[i]);
|
||||
});
|
||||
}
|
||||
else if (schema.tag === "struct" || schema.tag === "labeledProduct") {
|
||||
if (typeof value !== "object" || value == null || Array.isArray(value)) {
|
||||
throw new Error("Bad schema");
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = ts2aqua(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
}
|
||||
else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
return Object.entries(schema.fields).reduce((agg, [key, type]) => {
|
||||
const val = ts2aqua(value[key], type);
|
||||
return { ...agg, [key]: val };
|
||||
}, {});
|
||||
} else {
|
||||
throw new Error("Unexpected tag: " + JSON.stringify(schema));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Services
|
||||
export interface SrvDef {
|
||||
create: (
|
||||
wasm_b64_content: string,
|
||||
callParams: ParticleContext$$,
|
||||
) =>
|
||||
| { error: string | null; service_id: string | null; success: boolean }
|
||||
| Promise<{
|
||||
error: string | null;
|
||||
service_id: string | null;
|
||||
success: boolean;
|
||||
}>;
|
||||
list: (callParams: ParticleContext$$) => string[] | Promise<string[]>;
|
||||
remove: (
|
||||
service_id: string,
|
||||
callParams: ParticleContext$$,
|
||||
) =>
|
||||
| { error: string | null; success: boolean }
|
||||
| Promise<{ error: string | null; success: boolean }>;
|
||||
create: (wasm_b64_content: string, callParams: ParticleContext$$) => { error: string | null; service_id: string | null; success: boolean; } | Promise<{ error: string | null; service_id: string | null; success: boolean; }>;
|
||||
list: (callParams: ParticleContext$$) => string[] | Promise<string[]>;
|
||||
remove: (service_id: string, callParams: ParticleContext$$) => { error: string | null; success: boolean; } | Promise<{ error: string | null; success: boolean; }>;
|
||||
}
|
||||
export function registerSrv(service: SrvDef): void;
|
||||
export function registerSrv(serviceId: string, service: SrvDef): void;
|
||||
export function registerSrv(peer: IFluenceClient$$, service: SrvDef): void;
|
||||
export function registerSrv(
|
||||
peer: IFluenceClient$$,
|
||||
serviceId: string,
|
||||
service: SrvDef,
|
||||
): void;
|
||||
export function registerSrv(peer: IFluenceClient$$, serviceId: string, service: SrvDef): void;
|
||||
export function registerSrv(...args: any[]) {
|
||||
const service = args.pop();
|
||||
const defaultServiceId = "single_module_srv";
|
||||
|
||||
const params =
|
||||
args[0] instanceof FluencePeer$$
|
||||
? {
|
||||
peer: args[0],
|
||||
serviceId: args[1] ?? defaultServiceId,
|
||||
}
|
||||
: {
|
||||
peer: undefined,
|
||||
serviceId: args[0] ?? defaultServiceId,
|
||||
};
|
||||
|
||||
if (params.serviceId == null) {
|
||||
throw new Error("Service ID is not provided");
|
||||
}
|
||||
|
||||
registerService$$({
|
||||
service,
|
||||
...params,
|
||||
});
|
||||
const service = args.pop();
|
||||
const defaultServiceId = "single_module_srv";
|
||||
|
||||
const params = args[0] instanceof FluencePeer$$ ? ({
|
||||
peer: args[0],
|
||||
serviceId: args[1] ?? defaultServiceId
|
||||
}) : ({
|
||||
peer: undefined,
|
||||
serviceId: args[0] ?? defaultServiceId
|
||||
});
|
||||
|
||||
if (params.serviceId == null) {
|
||||
throw new Error("Service ID is not provided");
|
||||
}
|
||||
|
||||
registerService$$({
|
||||
service,
|
||||
...params
|
||||
});
|
||||
}
|
||||
|
||||
export interface CalcServiceDef {
|
||||
divide: (
|
||||
num: number,
|
||||
callParams: ParticleContext$$,
|
||||
) => number | Promise<number>;
|
||||
clear_state: (callParams: ParticleContext$$) => void | Promise<void>;
|
||||
test_logs: (callParams: ParticleContext$$) => void | Promise<void>;
|
||||
multiply: (
|
||||
num: number,
|
||||
callParams: ParticleContext$$,
|
||||
) => number | Promise<number>;
|
||||
add: (num: number, callParams: ParticleContext$$) => number | Promise<number>;
|
||||
state: (callParams: ParticleContext$$) => number | Promise<number>;
|
||||
subtract: (
|
||||
num: number,
|
||||
callParams: ParticleContext$$,
|
||||
) => number | Promise<number>;
|
||||
divide: (num: number, callParams: ParticleContext$$) => number | Promise<number>;
|
||||
clear_state: (callParams: ParticleContext$$) => void | Promise<void>;
|
||||
test_logs: (callParams: ParticleContext$$) => void | Promise<void>;
|
||||
multiply: (num: number, callParams: ParticleContext$$) => number | Promise<number>;
|
||||
add: (num: number, callParams: ParticleContext$$) => number | Promise<number>;
|
||||
state: (callParams: ParticleContext$$) => number | Promise<number>;
|
||||
subtract: (num: number, callParams: ParticleContext$$) => number | Promise<number>;
|
||||
}
|
||||
export function registerCalcService(
|
||||
serviceId: string,
|
||||
service: CalcServiceDef,
|
||||
): void;
|
||||
export function registerCalcService(
|
||||
peer: IFluenceClient$$,
|
||||
serviceId: string,
|
||||
service: CalcServiceDef,
|
||||
): void;
|
||||
export function registerCalcService(serviceId: string, service: CalcServiceDef): void;
|
||||
export function registerCalcService(peer: IFluenceClient$$, serviceId: string, service: CalcServiceDef): void;
|
||||
export function registerCalcService(...args: any[]) {
|
||||
const service = args.pop();
|
||||
const defaultServiceId = undefined;
|
||||
|
||||
const params =
|
||||
args[0] instanceof FluencePeer$$
|
||||
? {
|
||||
peer: args[0],
|
||||
serviceId: args[1] ?? defaultServiceId,
|
||||
}
|
||||
: {
|
||||
peer: undefined,
|
||||
serviceId: args[0] ?? defaultServiceId,
|
||||
};
|
||||
|
||||
if (params.serviceId == null) {
|
||||
throw new Error("Service ID is not provided");
|
||||
}
|
||||
|
||||
registerService$$({
|
||||
service,
|
||||
...params,
|
||||
});
|
||||
const service = args.pop();
|
||||
const defaultServiceId = undefined;
|
||||
|
||||
const params = args[0] instanceof FluencePeer$$ ? ({
|
||||
peer: args[0],
|
||||
serviceId: args[1] ?? defaultServiceId
|
||||
}) : ({
|
||||
peer: undefined,
|
||||
serviceId: args[0] ?? defaultServiceId
|
||||
});
|
||||
|
||||
if (params.serviceId == null) {
|
||||
throw new Error("Service ID is not provided");
|
||||
}
|
||||
|
||||
registerService$$({
|
||||
service,
|
||||
...params
|
||||
});
|
||||
}
|
||||
|
||||
export interface HelloWorldDef {
|
||||
hello: (
|
||||
str: string,
|
||||
callParams: ParticleContext$$,
|
||||
) => string | Promise<string>;
|
||||
hello: (str: string, callParams: ParticleContext$$) => string | Promise<string>;
|
||||
}
|
||||
export function registerHelloWorld(service: HelloWorldDef): void;
|
||||
export function registerHelloWorld(
|
||||
serviceId: string,
|
||||
service: HelloWorldDef,
|
||||
): void;
|
||||
export function registerHelloWorld(
|
||||
peer: IFluenceClient$$,
|
||||
service: HelloWorldDef,
|
||||
): void;
|
||||
export function registerHelloWorld(
|
||||
peer: IFluenceClient$$,
|
||||
serviceId: string,
|
||||
service: HelloWorldDef,
|
||||
): void;
|
||||
export function registerHelloWorld(serviceId: string, service: HelloWorldDef): void;
|
||||
export function registerHelloWorld(peer: IFluenceClient$$, service: HelloWorldDef): void;
|
||||
export function registerHelloWorld(peer: IFluenceClient$$, serviceId: string, service: HelloWorldDef): void;
|
||||
export function registerHelloWorld(...args: any[]) {
|
||||
const service = args.pop();
|
||||
const defaultServiceId = "hello-world";
|
||||
|
||||
const params =
|
||||
args[0] instanceof FluencePeer$$
|
||||
? {
|
||||
peer: args[0],
|
||||
serviceId: args[1] ?? defaultServiceId,
|
||||
}
|
||||
: {
|
||||
peer: undefined,
|
||||
serviceId: args[0] ?? defaultServiceId,
|
||||
};
|
||||
|
||||
if (params.serviceId == null) {
|
||||
throw new Error("Service ID is not provided");
|
||||
}
|
||||
|
||||
registerService$$({
|
||||
service,
|
||||
...params,
|
||||
});
|
||||
const service = args.pop();
|
||||
const defaultServiceId = "hello-world";
|
||||
|
||||
const params = args[0] instanceof FluencePeer$$ ? ({
|
||||
peer: args[0],
|
||||
serviceId: args[1] ?? defaultServiceId
|
||||
}) : ({
|
||||
peer: undefined,
|
||||
serviceId: args[0] ?? defaultServiceId
|
||||
});
|
||||
|
||||
if (params.serviceId == null) {
|
||||
throw new Error("Service ID is not provided");
|
||||
}
|
||||
|
||||
registerService$$({
|
||||
service,
|
||||
...params
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// Functions
|
||||
export const resourceTest_script = `
|
||||
(seq
|
||||
@ -495,62 +444,63 @@ export const resourceTest_script = `
|
||||
)
|
||||
`;
|
||||
|
||||
export type ResourceTestResult = [string | null, string[]];
|
||||
export type ResourceTestResult = [string | null, string[]]
|
||||
|
||||
export function resourceTest(
|
||||
label: string,
|
||||
config?: { ttl?: number },
|
||||
label: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<ResourceTestResult>;
|
||||
|
||||
export function resourceTest(
|
||||
peer: IFluenceClient$$,
|
||||
label: string,
|
||||
config?: { ttl?: number },
|
||||
peer: IFluenceClient$$,
|
||||
label: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<ResourceTestResult>;
|
||||
|
||||
export async function resourceTest(...args: any[]) {
|
||||
const argNames = ["label"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
const callArgs = Object.fromEntries(
|
||||
args.slice(0, argCount).map((arg, i) => [argNames[i], arg]),
|
||||
);
|
||||
|
||||
const params = {
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount],
|
||||
};
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: resourceTest_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result, {
|
||||
items: [
|
||||
{
|
||||
type: {
|
||||
name: "string",
|
||||
tag: "scalar",
|
||||
const argNames = ["label"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
|
||||
const callArgs = Object.fromEntries(args.slice(0, argCount).map((arg, i) => [argNames[i], arg]));
|
||||
|
||||
const params = ({
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount]
|
||||
});
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: resourceTest_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result,
|
||||
{
|
||||
"items": [
|
||||
{
|
||||
"type": {
|
||||
"name": "string",
|
||||
"tag": "scalar"
|
||||
},
|
||||
"tag": "option"
|
||||
},
|
||||
tag: "option",
|
||||
},
|
||||
{
|
||||
type: {
|
||||
name: "string",
|
||||
tag: "scalar",
|
||||
},
|
||||
tag: "array",
|
||||
},
|
||||
{
|
||||
"type": {
|
||||
"name": "string",
|
||||
"tag": "scalar"
|
||||
},
|
||||
"tag": "array"
|
||||
}
|
||||
],
|
||||
tag: "unlabeledProduct",
|
||||
});
|
||||
"tag": "unlabeledProduct"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const helloTest_script = `
|
||||
@ -566,41 +516,44 @@ export const helloTest_script = `
|
||||
)
|
||||
`;
|
||||
|
||||
export function helloTest(config?: { ttl?: number }): Promise<string>;
|
||||
export function helloTest(
|
||||
config?: {ttl?: number}
|
||||
): Promise<string>;
|
||||
|
||||
export function helloTest(
|
||||
peer: IFluenceClient$$,
|
||||
config?: { ttl?: number },
|
||||
peer: IFluenceClient$$,
|
||||
config?: {ttl?: number}
|
||||
): Promise<string>;
|
||||
|
||||
export async function helloTest(...args: any[]) {
|
||||
const argNames = [];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
const callArgs = Object.fromEntries(
|
||||
args.slice(0, argCount).map((arg, i) => [argNames[i], arg]),
|
||||
);
|
||||
|
||||
const params = {
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount],
|
||||
};
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: helloTest_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result, {
|
||||
name: "string",
|
||||
tag: "scalar",
|
||||
});
|
||||
const argNames = [];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
|
||||
const callArgs = Object.fromEntries(args.slice(0, argCount).map((arg, i) => [argNames[i], arg]));
|
||||
|
||||
const params = ({
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount]
|
||||
});
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: helloTest_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result,
|
||||
{
|
||||
"name": "string",
|
||||
"tag": "scalar"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const callHappy_script = `
|
||||
@ -629,50 +582,51 @@ export const callHappy_script = `
|
||||
`;
|
||||
|
||||
export function callHappy(
|
||||
a: string,
|
||||
b: number,
|
||||
c: number,
|
||||
d: (arg0: string) => number | Promise<number>,
|
||||
config?: { ttl?: number },
|
||||
a: string,
|
||||
b: number,
|
||||
c: number,
|
||||
d: (arg0: string) => number | Promise<number>,
|
||||
config?: {ttl?: number}
|
||||
): Promise<number>;
|
||||
|
||||
export function callHappy(
|
||||
peer: IFluenceClient$$,
|
||||
a: string,
|
||||
b: number,
|
||||
c: number,
|
||||
d: (arg0: string) => number | Promise<number>,
|
||||
config?: { ttl?: number },
|
||||
peer: IFluenceClient$$,
|
||||
a: string,
|
||||
b: number,
|
||||
c: number,
|
||||
d: (arg0: string) => number | Promise<number>,
|
||||
config?: {ttl?: number}
|
||||
): Promise<number>;
|
||||
|
||||
export async function callHappy(...args: any[]) {
|
||||
const argNames = ["a", "b", "c", "d"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
const callArgs = Object.fromEntries(
|
||||
args.slice(0, argCount).map((arg, i) => [argNames[i], arg]),
|
||||
);
|
||||
|
||||
const params = {
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount],
|
||||
};
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: callHappy_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result, {
|
||||
name: "f64",
|
||||
tag: "scalar",
|
||||
});
|
||||
const argNames = ["a", "b", "c", "d"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
|
||||
const callArgs = Object.fromEntries(args.slice(0, argCount).map((arg, i) => [argNames[i], arg]));
|
||||
|
||||
const params = ({
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount]
|
||||
});
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: callHappy_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result,
|
||||
{
|
||||
"name": "f64",
|
||||
"tag": "scalar"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const demo_calculation_script = `
|
||||
@ -707,44 +661,45 @@ export const demo_calculation_script = `
|
||||
`;
|
||||
|
||||
export function demo_calculation(
|
||||
service_id: string,
|
||||
config?: { ttl?: number },
|
||||
service_id: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<number>;
|
||||
|
||||
export function demo_calculation(
|
||||
peer: IFluenceClient$$,
|
||||
service_id: string,
|
||||
config?: { ttl?: number },
|
||||
peer: IFluenceClient$$,
|
||||
service_id: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<number>;
|
||||
|
||||
export async function demo_calculation(...args: any[]) {
|
||||
const argNames = ["service_id"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
const callArgs = Object.fromEntries(
|
||||
args.slice(0, argCount).map((arg, i) => [argNames[i], arg]),
|
||||
);
|
||||
|
||||
const params = {
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount],
|
||||
};
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: demo_calculation_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result, {
|
||||
name: "f64",
|
||||
tag: "scalar",
|
||||
});
|
||||
const argNames = ["service_id"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
|
||||
const callArgs = Object.fromEntries(args.slice(0, argCount).map((arg, i) => [argNames[i], arg]));
|
||||
|
||||
const params = ({
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount]
|
||||
});
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: demo_calculation_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result,
|
||||
{
|
||||
"name": "f64",
|
||||
"tag": "scalar"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
export const marineTest_script = `
|
||||
@ -782,42 +737,43 @@ export const marineTest_script = `
|
||||
`;
|
||||
|
||||
export function marineTest(
|
||||
wasm64: string,
|
||||
config?: { ttl?: number },
|
||||
wasm64: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<number>;
|
||||
|
||||
export function marineTest(
|
||||
peer: IFluenceClient$$,
|
||||
wasm64: string,
|
||||
config?: { ttl?: number },
|
||||
peer: IFluenceClient$$,
|
||||
wasm64: string,
|
||||
config?: {ttl?: number}
|
||||
): Promise<number>;
|
||||
|
||||
export async function marineTest(...args: any[]) {
|
||||
const argNames = ["wasm64"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
const callArgs = Object.fromEntries(
|
||||
args.slice(0, argCount).map((arg, i) => [argNames[i], arg]),
|
||||
);
|
||||
|
||||
const params = {
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount],
|
||||
};
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: marineTest_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result, {
|
||||
name: "f64",
|
||||
tag: "scalar",
|
||||
});
|
||||
const argNames = ["wasm64"];
|
||||
const argCount = argNames.length;
|
||||
let peer = undefined;
|
||||
if (args[0] instanceof FluencePeer$$) {
|
||||
peer = args[0];
|
||||
args = args.slice(1);
|
||||
}
|
||||
|
||||
|
||||
const callArgs = Object.fromEntries(args.slice(0, argCount).map((arg, i) => [argNames[i], arg]));
|
||||
|
||||
const params = ({
|
||||
peer,
|
||||
args: callArgs,
|
||||
config: args[argCount]
|
||||
});
|
||||
|
||||
const result = await callFunction$$({
|
||||
script: marineTest_script,
|
||||
...params,
|
||||
});
|
||||
|
||||
return aqua2ts(result,
|
||||
{
|
||||
"name": "f64",
|
||||
"tag": "scalar"
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
import { Fluence, type ClientConfig } from "@fluencelabs/js-client";
|
||||
import { fromByteArray } from "base64-js";
|
||||
|
||||
import { test as particleTest } from "./_aqua/finalize_particle.js";
|
||||
// import { test as particleTest } from "./_aqua/finalize_particle.js";
|
||||
import {
|
||||
registerHelloWorld,
|
||||
helloTest,
|
||||
@ -90,11 +90,12 @@ export const runTest = async (): Promise<TestResult> => {
|
||||
|
||||
console.log("running marine test...");
|
||||
const marine = await marineTest(wasm);
|
||||
console.log("marine test finished, result: ", marine);
|
||||
|
||||
console.log("running particle test...");
|
||||
await particleTest();
|
||||
|
||||
console.log("marine test finished, result: ", marine);
|
||||
// TODO: Currently this behavior will timeout after TTL bcs this function don't call 'responseSrc'. Will be attended in the next updates
|
||||
//await particleTest();
|
||||
|
||||
const returnVal = {
|
||||
hello,
|
||||
|
Loading…
Reference in New Issue
Block a user