emptyNodeandemptyNodeListinit options — Safe proxy-based initialization for traversing without throwing initial errors.scoped()— Snapshots current entities during a traversal chain so filters from earlier steps stick through complex path jumps.whereNode()— Filter node lists by examining node properties natively.intersect()— Combine node lists, arrays of IDs, or entities by calculating the intersecting graph state.with(fn)— Wrapper method seamlessly closing scopes to return scalar values or encapsulated intersections from traversal chains.
- Removed
whereargument on relation getters — Replaced cleanly with chainable.where(...)API.
node.update(fn)— update entity fields via a callback on any node. The callback receives the full entity and returns the updated version. Theidis always preserved (anyidin the return value is silently ignored). A no-op on non-existing nodes.list.findNode(predicate)— likefindEntity()but returns the node instead of the entity value, allowing further traversal from the result.
insertremoved from public API —graph.insertX()methods have been removed. Usegraph.updateX()instead, which upserts (inserts if the id is not found, updates if it is).
ForbiddenKeystype no longer includesinsert${string}, matching the removed API surface.
Updated the API to be more consistent, ergonomic, and performant, with better support for non-Proxy environments.