In June 2023, I found myself in an awkward situation. We used a custom database on a project, and I needed a simple query builder to create complex queries dynamically and ensure security against user input. I discovered that there were no solutions to that problem on the JavaScript platform at all. I built a solution and now open-sourced it.
Then you’ve used one without knowing, because somewhere between the ORM you used and the database was SQL, and that SQL was put together by the ORM’s query builder
If by “raw dog SQL” you mean dynamically concatenating strings (conditionally, interpolating runtime values), that’s literally a query builder, albeit a janky SQL-injectable one.