All notable changes to this project will be documented in this file. See commit-and-tag-version for commit guidelines.
6.0.7 (2026-04-23)
6.0.6 (2026-04-17)
6.0.5 (2026-04-14)
6.0.4 (2026-04-14)
6.0.3 (2026-04-14)
6.0.2 (2026-04-14)
This is a modernization release. The public API is unchanged — existing calls to squel.select(), squel.useFlavour("postgres"), and friends continue to work.
engines.noderaised to>=18(from>=0.12).- Package shape changed: the
squel.js/squel.min.js/squel-basic.js/squel-basic.min.jsUMD bundles are replaced bydist/esm/,dist/cjs/, anddist/browser/squel.min.js(IIFE for CDN / script tags). - The separate "basic" bundle is gone — the main entry contains all flavours. ESM tree-shaking removes unused flavours for bundler users.
- Source rewritten in TypeScript with first-class type declarations generated from source (no more hand-maintained
.d.ts). - Dual CJS + ESM output with conditional
exportsmap. - Biome for lint + format; Bun as the toolchain; bun:test for tests.
- GitHub Actions CI and automated releases on
mastervia commit-and-tag-version with npm provenance. - Conventional Commits enforced via husky + commitlint.
- Deprecate in NPM (#384)
- Added note to top of README stating that Squel is no longer actively maintained.
- Fix Node.js CVE (update growl dev dependency)
## 17 Jul 2017 (5.11.1)
- #322 - Tyepscript definitions
- #321 - Allow
LIMITandOFFSETwith0 - #320 - Ensure string formatter doesn't get lost in cloning
## 17 May 2017 (5.10.0)
- #317 - Postgres
ON CONFLICTimprovements, thanks alexturek
- Performance improvements (#309, #310) - thanks schmod
- Enable custom value handlers to return values that do not get automatically nested - #292
- #301 - Add
rstr()to enable "raw" nesting of query builders - Renamed
_isSquelBuilder()call toisSquelBuilder()
- #288 - more flexible
RETURNINGclauses
- #256 - expression nesting
- #255, #283 - mixing flavours
- #118 - pass extra formatting options (when available) to custom value handler
- #273 - parameterized
LIMITandOFFSETqueries
- #266 - Postgres
ON CONFLICTsupport
- A better check for detecting when custom value formatting has been applied.
- Allow for any builder to passed in as an expression
- #261 - passing a string for
orderclause
- #249 - Postgres
DISTINCT ONclause
- #234 - Fix handling of expression field names
- #158, #239 - Support for CTE queries (
WITHclause) - #242 - Fix auto-quoting table names
- Removed bower.json
- Re-fix for #109 - custom string formatting wasn't quite working
- Fix for #109 - custom string formatting function enabled
- Fix for #235 - fix a regression
- Fix for #231 - try not to add extra brackets
- Fix for #233 - ability to specify target table in
DELETEqueries
- Fix for #227 - MSSQL insert without fields fails
- Fix for #225 - auto-quote field names had stopped working
- Fix for #226 - empty expressions in where clause
- Fix for #223 - array looping should not use
for-in
- Complete architectural rewrite - see #201
- Fix for #220 and #221 and other similar issues
- Fixed for #219
- Ported coffeescript to ES6
- Fix for #216
- Fix for #210
- #208 - Rework expressions to allow for easier cloning.
- #207 - Added
CASEclauses anduseAsForTableAliasNamesoption.
- #199 - Added
FROMtoUPDATEfor postgres flavour
- Placeholder parameter character is now configurable
- Guide docs now print results below code
- Re-instituted CHANGELOG.md
- Can now get current flavour of Squel using
flavourprop
- Merged #191
- #90 - custom value handlers with primitives
- #87 - OrderBlock not compatible by values
- #76 - MSSQL flavour
- #85 - Using expressions in .where() followed by .toParam()
- Better fix for #82
- Treat
*as a special case when auto-quoting field names - Fix for #84
- #82 -
ON DUPLIATE KEY UPDATEenchancements - #25, #72, #73 - parameter substitution in expressions
- #79 - smarter automatic fieldname quoting
- #75 - disable automatic string quoting on a per-field basis
- #55 - specify sub-query as a field
- #80, #81 - Bugfixes
- #62 - can specify query separator string
- Shifted
replaceSingleQuotesand related option into Squel core.
- Added DELETE..RETURNING for Postgres (#60)
- Auto-generate version string (#61)
- Don't commit docs/ folder anymore. Also don't auto-build docs as part of build.
- Don't format parameter values returned from the toParam() call, unless their custom value types (#54)
- Added
setFieldsandsetFieldRowsto make setting multple fields and inserting multiple rows easier (#50) - Removed
usingValuePlaceholdersoption that was deprecated in 2.0.0
- Added
RETURNINGclause toUPDATEqueries for Postgres flavour (#42) - Added better support for parameterized queries (#34)
- Added
squel.VERSIONconstant
- Added ON DUPLICATE KEY UPDATE clause for MySQL flavour (#36)
- Added single quote replacement option for Postgres flavour (#35)
- Switched from Make to Grunt
- Added
fields()method to SELECT builder (#29) - Expression trees can now be cloned (#31)
- Added concept of SQL 'flavours' and merged in the Postgres
RETURNINGcommand #33
- Table names in SELECT queries can now be queries themselves (i.e. SQL sub statements)
- Parameterised WHERE clauses now supported.
- Custom value types can now be handled in a special way. Global and per-instance handlers supported.
- Squel can now be customized to include proprietary commands and queries.
- AMD support added.
- Squel can now be told to auto-quote table and field names.
- DELETE queries can now contain JOINs
- Query builder instances can be clone()'d
- Cleaner and more thorough tests (and replaced Vows with Mocha, Sinon and Chai)
- Fixed documentation errors
- QueryBuilder base class for all query builders
- Exporting query builders
- Escaping strings with single quotes for PostgreSQL compatibility
- Migrating to make
- Added 'usingValuePlaceholders' option for INSERT and UPDATE query builders.
- Initial version.