QueryForge is a TypeScript library for formatting and syntax highlighting SQL queries, It provides a simple API to format, highlight, and compress SQL strings for better readability in both HTML and CLI environments.
Using Bun:
bun add @devscast/queryforgeUse NullHighlighter when you want formatted SQL without ANSI or HTML markup.
import{NullHighlighter,SqlFormatter}from"@devscast/queryforge";constquery=`SELECT count(*), \`Column1\`, \`Testing\`, \`Testing Three\`FROM \`Table1\`WHERE Column1 = 'testing' AND ((\`Column2\` = \`Column3\` OR Column4 >= NOW()))GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10`;constformatter=newSqlFormatter(newNullHighlighter());console.log(formatter.format(query));highlight() preserves original whitespace and only adds syntax highlighting.
import{HtmlHighlighter,SqlFormatter}from"@devscast/queryforge";constformatter=newSqlFormatter(newHtmlHighlighter());console.log(formatter.highlight("SELECT * FROM users WHERE id = 1"));compress() removes comments and collapses whitespace.
import{NullHighlighter,SqlFormatter}from"@devscast/queryforge";constformatter=newSqlFormatter(newNullHighlighter());constsql=`-- commentSELECT /* block comment */ id, nameFROM usersWHERE active = 1`;console.log(formatter.compress(sql));// SELECT id, name FROM users WHERE active = 1import{compress,format,highlight}from"@devscast/queryforge";format("select * from users");highlight("select * from users","html");highlight("select * from users","cli");compress("select /*x*/ 1");The package provides a compiled binary named sql-forge.
This script builds first, then runs the compiled CLI:
bun run sql-forge "select id,name from users where active = 1"sql-forge "select * from users"echo"select * from users where id = 1"| sql-forgesql-forge "select * from users" --format
sql-forge "select * from users" --highlight
sql-forge "select * from users" --compresssql-forge "select * from users" --plain
sql-forge "select * from users" --cli
sql-forge "select * from users" --htmlsql-forge "select a,b from t" --indent ""
sql-forge "select a,b from t" --indent "\\t"SqlFormatterdefaults to a CLI highlighter in Node/CLI environments and HTML highlighting otherwise.- Use
NullHighlighterfor logs, snapshots, and plain text output.
This project is fully inspired by the architecture and design of doctrine/sql-formatter.
QueryForge is an independent TypeScript/Node implementation and is not affiliated with Doctrine.