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";
const query = `
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
`;
const formatter = new SqlFormatter(new NullHighlighter());
console.log(formatter.format(query));highlight() preserves original whitespace and only adds syntax highlighting.
import { HtmlHighlighter, SqlFormatter } from "@devscast/queryforge";
const formatter = new SqlFormatter(new HtmlHighlighter());
console.log(formatter.highlight("SELECT * FROM users WHERE id = 1"));compress() removes comments and collapses whitespace.
import { NullHighlighter, SqlFormatter } from "@devscast/queryforge";
const formatter = new SqlFormatter(new NullHighlighter());
const sql = `
-- comment
SELECT /* block comment */ id, name
FROM users
WHERE 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.