prettier-sql
Version:
Format whitespace in a SQL query to make it more readable
172 lines (121 loc) • 5.57 kB
Markdown
# CHANGELOG
## [5.1.1] : 2022-04-06
### Updated
- restored itemCount setting for VScode extension
- added JSDocs for all files
- added conditional skips for Jest tests
- added missing BigQuery, hive from demo page language dropdown
### Fixed
- fixed bug with CASE and Inline Block interaction
- fixed bug with END not adding spacings before END
- fixed bug with CommaPosition.before when the line had no preceding whitespace
- fixed bug where AS in CAST functions would get deleted when AliasAs.never
- fixed bug where AS would get deleted in CTE definition when AliasAs.never
## [5.1.0] : 2021-12-21
### Known Issues
- `newline: number` does not work with `[foo]`, `[` and `]` both count as 1 token each so `[foo]` would be 3 items
- `array[0]` or `map[key]` do still work as they are parsed as WORD
- BigQuery formatter fails a few tests (ALTER TABLE, tricky line comments) due to those tests not including valid BigQuery SQL, those tests are currently skipped
### Added
Source:
- consumed VSCode Extension as subrepo
- added support for Hive language
- added support for BigQuery language
- added keyword dedupe on Formatter classes via Set
VSCode:
- added command `prettier-sql-vscode.format-selection`
- Formats SQL selections
- added settings to override user/workspace `tabSize` and `insertSpaces` settings
- added error message on format fail
- added setting to override formatting language for `sql` files when SQL flavour does not have a VSCode language ID (Microsoft PostgreSQL and MSSQL Extensions)
Other:
- demo page now deployed as git repo subtree, served from root/ (subtree of static/)
### Updated
- fixed handling of `newline` options
- simplified `NewlineMode` config
- fixed ; indentation when used with `semicolonNewline` and `tenSpace` configs
- Formatter now uses numeric for loop to allow for index manipulation
- updated `linesBetweenQueries` to add an extra newline (0 lines = 1 line break, no space in between)
- renamed Formatter class files to `<flavour>.formatter.ts`
- renamed test files to `<flavour>.test.js`
### Removed
- removed `newline: hybrid` config
- `newline: number` now acts like `hybrid`
## [5.0.1] : 2021-11-24
### Updated
- fixed bug when using SELECT \* and `denseOperators`
- fixed aliasAs option on demo page
- fixed handling of tokens with `aliasAs` flag
- demo page now prints stack trace in textarea on error
## [5.0.0] : 2021-11-22
### Added
Source:
- added support for ES6 module exports with TypeScript
- updated webpack with ts-loader for module types
- added tsc to babel commonjs build command
- added index.ts pass-through export
Other:
- added GH Actions for CI build
- added issue templates
### Updated
Source:
- updated demo page for all new options
Other:
- renamed library to `prettier-sql`
### Fixed
- fixed bugs related to operator tokens
### Removed
- removed Travis CI (replaced by GH Actions)
## [5.0.0-beta] : 2021-11-03
### Added
Source:
- added option `aliasAs` to toggle use of AS in column, table, query aliases
- modes: always (SELECT and table), select (SELECT only), never
- added option `newline` to specify rules for inserting newlines within SQL Statements
- modes: \
always (break before all arguments) \
lineWidth (break after line exceeds lineWidth) \
itemCount (break after n items) \
hybrid (lineWidth OR itemCount) \
never (place all Statements on one line)
- added flag `denseOperators` to toggle spaces around binary operators (=, +, %, etc.)
- added flag `semicolonNewline` to toggle placing semicolon on newline vs same line
- added flag `tabulateAlias` for alias tabular mode, aligned on longest line, not including AS
- added option `commaPosition` to specify comma placement within listed Statements
- modes: \
before(comma goes before column), \
after(standard), \
tabular(aligned to longest line)
- added option `keywordPosition` to support vertically aligned keywords
- modes: \
standard, \
tenSpaceLeft(left-aligned within keyword column), \
tenSpaceRight(right-aligned within keyword column)
- added flag `breakBeforeBooleanOperator` to toggle breaking before or after logical operators like AND and OR
- added options `parenOptions` for misc rules regarding parenthesis position
- `openParenNewline` - flag for opening paren on newline or same line
- `closeParenNewline` - flag for closing paren on newline or same line
Other:
- added enums for all typed config options
Files Added:
- test/comma.js (tests for comma position)
- test/alias.js (tests for alias AS and alias position)
- test/keywordPosition.js (tests for keyword position modes)
- test/newline.js (tests for newline modes)
- test/parenthesis.js (tests for paren positions)
### Updated
Source:
- converted repo to Typescript
- overhauled Keyword lists for all languages
- added default options for all configs
- updated CLI to use config file
- renamed Keyword categories to semantic Keyword types
- reservedTopLevelWord → reservedCommand
- reservedTopLevelWordNoIndent → reservedBinaryCommand
- reservedNewline → reservedDependentClause & reservedLogicalOperator
- reservedWord → reservedKeyword
- added reservedFunctions
- updated Tokenizer class and token.ts to be more DRY
### Removed
- tokenTypes.ts (token types moved to TokenType enum in token.ts)
- sqlFormatter.d.ts (converted to TypeScript)