I am working on NodeJS binding to CIRCT / RTL dialect here: https://github.com/circt/node
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 https://nodejs.org/api/n-api.html for the first experiment.
I would probably also use ideas from https://mlir.llvm.org/docs/CAPI/ and https://mlir.llvm.org/docs/Bindings/Python/
The related topic here: NodeJS bindings