Skip to content

FluxbaseRPC

FluxbaseRPC provides methods for invoking RPC procedures

// Invoke a procedure synchronously
const { data, error } = await fluxbase.rpc.invoke('get-user-orders', {
user_id: '123',
limit: 10
});
// Invoke asynchronously
const { data: asyncResult } = await fluxbase.rpc.invoke('long-running-report', {
start_date: '2024-01-01'
}, { async: true });
// Poll for status
const { data: status } = await fluxbase.rpc.getStatus(asyncResult.execution_id);

new FluxbaseRPC(fetch): FluxbaseRPC

ParameterType
fetchRPCFetch

FluxbaseRPC

getLogs(executionId, afterLine?): Promise<object>

Get execution logs (for debugging and monitoring)

ParameterTypeDescription
executionIdstringThe execution ID
afterLine?numberOptional line number to get logs after (for polling)

Promise<object>

Promise resolving to { data, error } tuple with execution logs

NameType
datanull | ExecutionLog[]
errornull | Error
const { data: logs } = await fluxbase.rpc.getLogs('execution-uuid');
for (const log of logs) {
console.log(`[${log.level}] ${log.message}`);
}

getStatus(executionId): Promise<object>

Get execution status (for async invocations or checking history)

ParameterTypeDescription
executionIdstringThe execution ID returned from async invoke

Promise<object>

Promise resolving to { data, error } tuple with execution details

NameType
datanull | RPCExecution
errornull | Error
const { data, error } = await fluxbase.rpc.getStatus('execution-uuid');
if (data.status === 'completed') {
console.log('Result:', data.result);
} else if (data.status === 'running') {
console.log('Still running...');
}

invoke<T>(name, params?, options?): Promise<object>

Invoke an RPC procedure

Type ParameterDefault type
Tunknown
ParameterTypeDescription
namestringProcedure name
params?Record<string, unknown>Optional parameters to pass to the procedure
options?RPCInvokeOptionsOptional invocation options

Promise<object>

Promise resolving to { data, error } tuple with invocation response

NameType
datanull | RPCInvokeResponse<T>
errornull | Error
// Synchronous invocation
const { data, error } = await fluxbase.rpc.invoke('get-user-orders', {
user_id: '123',
limit: 10
});
console.log(data.result); // Query results
// Asynchronous invocation
const { data: asyncData } = await fluxbase.rpc.invoke('generate-report', {
year: 2024
}, { async: true });
console.log(asyncData.execution_id); // Use to poll status

list(namespace?): Promise<object>

List available RPC procedures (public, enabled)

ParameterTypeDescription
namespace?stringOptional namespace filter

Promise<object>

Promise resolving to { data, error } tuple with array of procedure summaries

NameType
datanull | RPCProcedureSummary[]
errornull | Error

waitForCompletion(executionId, options?): Promise<object>

Poll for execution completion with exponential backoff

ParameterTypeDescription
executionIdstringThe execution ID to poll
options?objectPolling options
options.initialIntervalMs?numberInitial polling interval in milliseconds (default: 500)
options.maxIntervalMs?numberMaximum polling interval in milliseconds (default: 5000)
options.maxWaitMs?numberMaximum time to wait in milliseconds (default: 30000)
options.onProgress?(execution) => voidCallback for progress updates

Promise<object>

Promise resolving to final execution state

NameType
datanull | RPCExecution
errornull | Error
const { data: result } = await fluxbase.rpc.invoke('long-task', {}, { async: true });
const { data: final } = await fluxbase.rpc.waitForCompletion(result.execution_id, {
maxWaitMs: 60000, // Wait up to 1 minute
onProgress: (exec) => console.log(`Status: ${exec.status}`)
});
console.log('Final result:', final.result);