address architecture review findings and add review document
Fixes from architecture review (4 critical, 10 warnings):
Critical:
- Fix selectNode/setNode docs to accurately describe prop-key
navigation behavior including array support and prop-key writes
- Document RenderContext/Density exported types in host-config
- Resolve ADR dual status ambiguity with clarifying note in README
(frontmatter status = editorial, body Status = decision)
- Effect types already addressed in prior commit
Warnings addressed:
- Add Fragment re-export note to jsx-runtime section in
build-distribution
- Document childCtx/transformCtx helper functions in transforms.md
- Document render() accepting non-root UNode in host-config
- Add Value.Hash re-entrancy constraint to reconciler.md
- Add true-passthrough constraint and h('root') special case
to element-factory constraints
- Add _idCounter bundling caveat note
Review document added at docs/reviews/architecture-review-2026-05-18.md
with full findings, source verification table, and recommendations.
This commit is contained in:
@@ -93,6 +93,18 @@ The "first match wins" semantics mean that priority and registration order resol
|
||||
|
||||
Maps `transform()` over an array, passing each node's index as `ctx.index`. This is a convenience for transforming child lists — it preserves the ancestor stack from `ctx` without requiring callers to manage index tracking.
|
||||
|
||||
## Helper Functions
|
||||
|
||||
The transform module exports two context factory functions used alongside `TransformRegistry`:
|
||||
|
||||
### `ctx<A>(direction, ancestors?, index?, metadata?)`
|
||||
|
||||
Creates a `TransformContext` from its arguments. The `direction` parameter is required; the rest default to `[]`, `0`, and `{}` respectively. Exported as `transformCtx` from the barrel (`@alkdev/ujsx/transform`) to avoid name collision with React's `ctx` naming.
|
||||
|
||||
### `childCtx<A>(parent, ctx, index)`
|
||||
|
||||
Creates a new `TransformContext` with `parent` pushed onto the ancestors stack and `index` set. This is the standard way to descend into a child node during transformation — it preserves the direction and metadata from the parent context while updating traversal state.
|
||||
|
||||
## Direction Definitions
|
||||
|
||||
The six directions pair into three bi-directional channels:
|
||||
|
||||
Reference in New Issue
Block a user