Skip to content

Repository files navigation

QueryForge: TypeScript SQL Formatter and Highlighter

npmnpmCILintTestsGitHub

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.

Installation

Using Bun:

bun add @devscast/queryforge

Usage

Programmatic API

Format (plain text)

Use 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 only (HTML)

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 query

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 = 1

Convenience functions

import{compress,format,highlight}from"@devscast/queryforge";format("select * from users");highlight("select * from users","html");highlight("select * from users","cli");compress("select /*x*/ 1");

CLI Usage

The package provides a compiled binary named sql-forge.

Run in this repo

This script builds first, then runs the compiled CLI:

bun run sql-forge "select id,name from users where active = 1"

Run installed binary

sql-forge "select * from users"

Read SQL from stdin

echo"select * from users where id = 1"| sql-forge

Modes

sql-forge "select * from users" --format
sql-forge "select * from users" --highlight
sql-forge "select * from users" --compress

Output styles

sql-forge "select * from users" --plain
sql-forge "select * from users" --cli
sql-forge "select * from users" --html

Custom indentation

sql-forge "select a,b from t" --indent ""
sql-forge "select a,b from t" --indent "\\t"

Notes

  • SqlFormatter defaults to a CLI highlighter in Node/CLI environments and HTML highlighting otherwise.
  • Use NullHighlighter for logs, snapshots, and plain text output.

Attribution

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.

Contributors

contributors

About

A lightweight utility for formatting sql statements. Handles automatic indentation and syntax highlighting.

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages