Skip to main content

signatureOf()

signatureOf(prev: RuleGroupTypeAny, next: RuleGroupTypeAny): string

Defined in: packages/core/src/utils/signature.ts:109

Describes what changed between two versions of a query as a short string, so that consecutive edits to the same property of the same rule (e.g. typing in a value editor) can be recognized and coalesced into a single history entry.

Returns structuralSignature for changes to the shape of the query, unchangedSignature when the two queries differ by reference only, and "<id>:<props>" otherwise.

The walk prunes on reference equality, so it costs O(depth) rather than O(size) for the single-node edits that make up the overwhelming majority of changes.

Note that this relies on the structural sharing that Immer—and therefore every query produced by RQB's own update functions—guarantees: nodes that did not change keep their identity. A query that has been wholly rebuilt (deep-cloned, round-tripped through JSON, re-parsed from a string) shares no identity with its predecessor, so it is reported as structuralSignature and will not coalesce. That is a graceful degradation—every change simply gets its own history entry—but controlled components that clone the query on every change will not benefit from coalescing.

Parameters

ParameterType
prevRuleGroupTypeAny
nextRuleGroupTypeAny

Returns

string


caution

API documentation is generated from the latest commit on the main branch. It may be somewhat inconsistent with official releases of React Query Builder.