Skip to content

Change IRNode to an interface#6

Open
NickCrews wants to merge 4 commits intomainfrom
claude/extensible-irnode-interface-bP59r
Open

Change IRNode to an interface#6
NickCrews wants to merge 4 commits intomainfrom
claude/extensible-irnode-interface-bP59r

Conversation

@NickCrews
Copy link
Copy Markdown
Owner

No description provided.

claude and others added 4 commits March 16, 2026 04:46
… backend

Replace the closed IRNode discriminated union with an open ITableOp interface
that anyone can implement for custom table-valued operations. Add a zero-
dependency RecordsExecutor that operates over plain JS arrays of records,
serving as a lightweight alternative to SQL backends like DuckDB.

- ITableOp interface with schema(), sources(), kind
- Built-in implementations: FromOp, FilterOp, DeriveOp, GroupOp, SortOp, TakeOp
- RecordsExecutor: evaluates full pipelines over in-memory data
- RecordsOp: data source backed by an array of records
- fromRecords() factory with automatic schema inference
- Extensibility via addTableOpHandler() and addValueOpHandler()
- Custom SampleOp in tests proves third-party extensibility
- Two new playground examples: in-memory backend and custom table op

https://claude.ai/code/session_01NneLMS5kRkajzxQc44Ukz6
…classing

- Remove sources() method from ITableOp interface and all implementations
- Remove addTableOpHandler/addValueOpHandler from RecordsExecutor
- Change private execute helpers to protected for subclass access
- Extensibility is now via subclassing: override execute()/evalOp() and
  delegate to super for built-in ops
- Update tests and playground example to use subclassing pattern

https://claude.ai/code/session_01NneLMS5kRkajzxQc44Ukz6
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants