I am working on NodeJS binding to CIRCT / RTL dialect here: GitHub - circt/node: NodeJS to CIRCT bindings
This is just an experimental work that will be merged into the main CIRCT or MLIR repo if needed.
I plan using NodeJS N-API Node-API | Node.js v18.7.0 Documentation for the first experiment.
I would probably also use ideas from MLIR C API - MLIR and MLIR Python Bindings - MLIR
The related topic here: NodeJS bindings