Predefined functions for object

deepMerge

Performs a deep merge of two objects, combining their properties recursively. When both objects have the same property key, the value from the second object takes precedence. For nested objects, the merge is performed recursively, preserving properties from both objects.

Parameters

NameTypeDescription
sourceobjectthe object to merge into this object

Returns

A new object containing the merged properties from both objects.

Examples

type LLMConfigV1 = { version: "v1"; model?: string; vendor?: string; apiKey?: string; endpoint?: string; prompt?: string; vendorSpecificOptions?: { [key: string]: string; }; }; node some_node { do { var firstLLM: LLMConfigV1 = { version: "v1", model: "a", prompt: "foo", vendorSpecificOptions: { a: "a", b: "b" } }; var secondLLM: LLMConfigV1 = { version: "v1", model: "b", vendorSpecificOptions: { a: "b", c: "c" } }; var deepMerge = firstLLM.deepMerge(secondLLM); #log(deepMerge["model"]); // "b" #log(deepMerge.keys().length()); // 4 var vendor = deepMerge["vendorSpecificOptions"]; if (vendor is not null) { #log(vendor["a"]); // "b" (overridden) #log(vendor["b"]); // "b" (preserved) #log(vendor["c"]); // "c" (added) #log(vendor.keys().length()); // 3 } } }

merge

Performs a shallow merge of two objects, combining their properties at the top level only. When both objects have the same property key, the value from the second object completely replaces the value from the first object. Unlike deepMerge, nested objects are not merged recursively.

Parameters

NameTypeDescription
sourceobjectthe object to merge into this object

Returns

A new object containing the merged properties from both objects.

Examples

type LLMConfigV1 = { version: "v1"; model?: string; vendor?: string; apiKey?: string; endpoint?: string; prompt?: string; vendorSpecificOptions?: { [key: string]: string; }; }; node some_node { do { var firstLLM: LLMConfigV1 = { version: "v1", model: "a", prompt: "foo", vendorSpecificOptions: { a: "a", b: "b" } }; var secondLLM: LLMConfigV1 = { version: "v1", model: "b", vendorSpecificOptions: { a: "b", c: "c" } }; var merge = firstLLM.merge(secondLLM); #log(merge["model"]); // "b" #log(merge.keys().length()); // 4 var vendor = merge["vendorSpecificOptions"]; if (vendor is not null) { #log(vendor["a"]); // "b" #log(vendor["c"]); // "c" #log(vendor["b"]); // null (not preserved in shallow merge) #log(vendor.keys().length()); // 2 } } }

keys

Returns an array containing all enumerable property names of the object.

Parameters

None

Returns

string[] - an array of strings representing the object's property names.

Examples

node some_node { do { var obj = { name: "John", age: 30, city: "New York" }; var objectKeys = obj.keys(); #log(objectKeys); // ["name", "age", "city"] #log(objectKeys.length()); // 3 var emptyObj = {}; #log(emptyObj.keys().length()); // 0 } }
Found a mistake? Let us know.

Enroll in beta

Request invite to our private Beta program for developers to join the waitlist. No spam, we promise.