WaveBinder API Reference
Available public methods and usage guidelines for runtime and nodes.
Constructor
Show example
const wb = new WaveBinder(license, protoNodes, services, customFunctions);
The constructor initializes runtime and license bootstrap in background. Nodes are connected with tangleNodes().
Main WaveBinder methods
| Method | Use | Example |
|---|---|---|
tangleNodes() | Connects node dependencies. If license is still pending, tangle is automatically deferred. | wb.tangleNodes() |
getNodes() | Returns runtime nodes. | wb.getNodes() |
getNodeByName(name) | Find node by name. | wb.getNodeByName("region") |
getNodeByNameAndType(name, type) | Find by name and type. | wb.getNodeByNameAndType("region", "MULTI") |
getNodeChoicesByName(name) | MULTI node choices. | wb.getNodeChoicesByName("region") |
getDataPool() | Current value snapshot. | wb.getDataPool() |
getNodesInfo(logDepth?) | Debug node state. | wb.getNodesInfo(10) |
addCustomFunction(fn, name) | Register runtime custom function. | wb.addCustomFunction((a, b) => a + b, "sum") |
Exported node types
The package also exports runtime node classes: SingleNode, MultiNode, ListNode, ComplexNode.
Show example
import { WaveBinder, ComplexNode, ListNode, MultiNode, SingleNode } from "wave-binder";
const child = wb.getNodeByName("robotBehavior");
if (child?.node?.type === "COMPLEX") {
(child as ComplexNode).fields.forEach(field => {
// ...
});
}
Useful runtime node methods
| Node type | Method | Use case | Example |
|---|---|---|---|
SingleNode | next(value) | Set value from user input. | wb.getNodeByName("qty").next(10) |
MultiNode | setSelection(index) | Select an option among choices. | wb.getNodeByNameAndType("region", "MULTI").setSelection(1) |
ListNode | next(size) | Resize dynamic list. | wb.getNodeByNameAndType("items", "LIST").next(3) |
ListNode | moveElement(from, to) | Reorder elements. | list.moveElement(3, 0) |
ListNode | swapElements(x, y) | Swap two elements. | list.swapElements(0, 1) |
ComplexNode | next(obj) | Update composed object. | customer.next({ firstName: "Mario" }) |