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
Name | Type | Description |
---|---|---|
source | object | the 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
Name | Type | Description |
---|---|---|
source | object | the 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 } }