Optional_collectedReadonly_decorateReadonly_detachedBy node, what each relation torn down by release wrote and still holds in the store; its next expansion diffs against it, or the outputs that stayed would never be removed.
Readonly_expansionsExpanded connector keys, by the node they belong to. Nested rather than flat: removal untracks a node's expansions, and a flat set makes that a scan of every expansion in the graph per removed node.
Readonly_extensionsReadonly_flushedWhat each connector key last wrote into the store; a key without an entry has never flushed.
Resolves when the current flush completes.
Whether a dirty-flush task is already scheduled.
Readonly_inlineReadonly_registryReadonly_relationReadonly_storeReadonly_trackerThe expanded connectors; a dirty one is read only when flushed.
Readonly_unchangedOptional_unsubscribeResolves when the queued update flush completes.
Whether a flush of updates to connectors already in the store is queued.
Readonly[Readonlyfinalizer: FinalizationRegistry<() => void>Unmounts a collected owner's atoms. One per class, held in a static field: a registry the instance created would be collected with it and never run.
Readonlyregistry: AtomRegistryThe registry the owner's atoms are mounted in.
Readonly[ReadonlyurlThe URL grammar (see UrlGrammar); the keys are absent when URLs are not in play.
Apply a set of node changes for a single connector key.
Keeps what key wrote that survives released, for its next expansion to diff against.
Reads each selected dirty connector, then applies whatever changed, until none is left: applying one key's output can dirty another, such as a key whose node it rewrote. The budget covers the reads, which are most of the cost: a key the budget does not reach stays dirty and unread.
Optionalselect: (key: string) => booleanOptionalbudget: FrameBudgetDrops the expansion, the tracking and the flushed state of key; reading its relation re-expands it.
What an update flush may spend in the current frame; unlimited by default.
A relation of a node was read for the first time; track every connector declared for it. Override to expand additional relations alongside the requested one.
A relation is being torn down by release: drop its expansion so the next read expands it again. Override to unwind whatever expansion bookkeeping the layer keeps.
Reads a connector and returns its output if it differs from what was last flushed; peek leaves it dirty.
Optionalpeek: booleanHand flushes to the scheduler so a large expansion yields to the main thread.
An update to output already in the store flushes on a microtask, so an edit renders in the frame it was made, until the frame's budget runs out; the rest, and a connector's first output, wait for GraphBuilder._schedule.
Where a traversal yields between nodes; overridden alongside GraphBuilder._schedule.
Read the currently registered extensions synchronously.
The generic expansion engine specialized to the app vocabulary: app nodes and relations over an Graph.ExpandableGraph, extensions carrying a UrlBinding, and connector-produced nodes stamped with their URL segment as they enter the graph.