@sqltools/formatter
Advanced tools
Comparing version 1.2.3 to 1.2.5
@@ -10,3 +10,10 @@ "use strict"; | ||
var Params_1 = __importDefault(require("./Params")); | ||
var trimSpacesEnd = function (str) { return str.replace(/[ \t]+$/u, ''); }; | ||
var spaceChars = [' ', '\t']; | ||
var trimSpacesEnd = function (str) { | ||
var end = str.length - 1; | ||
while (end >= 0 && spaceChars.includes(str[end])) { | ||
end--; | ||
} | ||
return str.substring(0, end + 1); | ||
}; | ||
var Formatter = (function () { | ||
@@ -89,3 +96,3 @@ function Formatter(cfg, tokenizer, tokenOverride) { | ||
&& this.previousToken().value === ';') { | ||
return query.replace(/(\n|\r\n)$/m, '') + token.value; | ||
return query.replace(/(\n|\r\n)$/u, '') + token.value; | ||
} | ||
@@ -132,3 +139,3 @@ return query; | ||
Formatter.prototype.formatTopLevelReservedWord = function (token, query) { | ||
var shouldChangeTopLevel = (this.previousNonWhiteSpace.value !== ',' && !['GRANT'].includes(("" + this.previousNonWhiteSpace.value).toUpperCase())); | ||
var shouldChangeTopLevel = (this.previousNonWhiteSpace.value !== ',' && !['GRANT'].includes("".concat(this.previousNonWhiteSpace.value).toUpperCase())); | ||
if (shouldChangeTopLevel) { | ||
@@ -135,0 +142,0 @@ this.indentation.decreaseTopLevel(); |
@@ -25,3 +25,3 @@ "use strict"; | ||
Indentation.prototype.decreaseTopLevel = function () { | ||
if (last_1["default"](this.indentTypes) === INDENT_TYPE_TOP_LEVEL) { | ||
if ((0, last_1["default"])(this.indentTypes) === INDENT_TYPE_TOP_LEVEL) { | ||
this.indentTypes.pop(); | ||
@@ -28,0 +28,0 @@ } |
@@ -13,3 +13,3 @@ "use strict"; | ||
this.AMBIGUOS_OPERATOR_REGEX = /^(\?\||\?&)/u; | ||
this.OPERATOR_REGEX = /^(!=|<>|>>|<<|==|<=|>=|!<|!>|\|\|\/|\|\/|\|\||~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|:=|&&|@>|<@|#-|@|.)/u; | ||
this.OPERATOR_REGEX = /^(!=|<>|>>|<<|==|<=|>=|!<|!>|\|\|\/|\|\/|\|\||~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|:=|=>|&&|@>|<@|#-|@@|@|.)/u; | ||
this.NO_SPACE_OPERATOR_REGEX = /^(::|->>|->|#>>|#>)/u; | ||
@@ -31,10 +31,11 @@ this.BLOCK_COMMENT_REGEX = /^(\/\*[^]*?(?:\*\/|$))/u; | ||
Tokenizer.prototype.createLineCommentRegex = function (lineCommentTypes) { | ||
return new RegExp("^((?:" + lineCommentTypes.map(function (c) { return escapeRegExp_1["default"](c); }).join('|') + ")[^>]*?(?:\r\n|\r|\n|$))", 'u'); | ||
var unMatchJSONOperators = '((?<!#)>|(?:[^>]))'; | ||
return new RegExp("^((?:".concat(lineCommentTypes.map(function (c) { return (0, escapeRegExp_1["default"])(c); }).join('|'), ")").concat(unMatchJSONOperators, ".*?(?:\r\n|\r|\n|$))"), 'u'); | ||
}; | ||
Tokenizer.prototype.createReservedWordRegex = function (reservedWords) { | ||
var reservedWordsPattern = reservedWords.join('|').replace(/ /gu, '\\s+'); | ||
return new RegExp("^(" + reservedWordsPattern + ")\\b", 'iu'); | ||
return new RegExp("^(".concat(reservedWordsPattern, ")\\b"), 'iu'); | ||
}; | ||
Tokenizer.prototype.createWordRegex = function (specialChars) { | ||
return new RegExp("^([\\p{Alphabetic}\\p{Mark}\\p{Decimal_Number}\\p{Connector_Punctuation}\\p{Join_Control}" + specialChars.join('') + "]+)", 'u'); | ||
return new RegExp("^([\\p{Alphabetic}\\p{Mark}\\p{Decimal_Number}\\p{Connector_Punctuation}\\p{Join_Control}".concat(specialChars.join(''), "]+)"), 'u'); | ||
}; | ||
@@ -50,3 +51,4 @@ Tokenizer.prototype.createStringRegex = function (stringTypes) { | ||
"''": "(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)", | ||
"N''": "((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)" | ||
"N''": "((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)", | ||
"E''": "(((E|e)'[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)" | ||
}; | ||
@@ -61,3 +63,3 @@ return stringTypes.map(function (t) { return patterns[t]; }).join('|'); | ||
if (paren.length === 1) { | ||
return escapeRegExp_1["default"](paren); | ||
return (0, escapeRegExp_1["default"])(paren); | ||
} | ||
@@ -73,3 +75,3 @@ else { | ||
var typesRegex = types.map(escapeRegExp_1["default"]).join('|'); | ||
return new RegExp("^((?:" + typesRegex + ")(?:" + pattern + "))", 'u'); | ||
return new RegExp("^((?:".concat(typesRegex, ")(?:").concat(pattern, "))"), 'u'); | ||
}; | ||
@@ -192,3 +194,3 @@ Tokenizer.prototype.tokenize = function (input) { | ||
var key = _a.key, quoteChar = _a.quoteChar; | ||
return key.replace(new RegExp(escapeRegExp_1["default"]('\\' + quoteChar), 'gu'), quoteChar); | ||
return key.replace(new RegExp((0, escapeRegExp_1["default"])('\\' + quoteChar), 'gu'), quoteChar); | ||
}; | ||
@@ -195,0 +197,0 @@ Tokenizer.prototype.getNumberToken = function (input) { |
@@ -6,6 +6,8 @@ "use strict"; | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
return function (d, b) { | ||
if (typeof b !== "function" && b !== null) | ||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
extendStatics(d, b); | ||
@@ -12,0 +14,0 @@ function __() { this.constructor = d; } |
@@ -6,6 +6,8 @@ "use strict"; | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
return function (d, b) { | ||
if (typeof b !== "function" && b !== null) | ||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
extendStatics(d, b); | ||
@@ -12,0 +14,0 @@ function __() { this.constructor = d; } |
@@ -6,6 +6,8 @@ "use strict"; | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
return function (d, b) { | ||
if (typeof b !== "function" && b !== null) | ||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
extendStatics(d, b); | ||
@@ -12,0 +14,0 @@ function __() { this.constructor = d; } |
@@ -6,6 +6,8 @@ "use strict"; | ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; | ||
return extendStatics(d, b); | ||
}; | ||
return function (d, b) { | ||
if (typeof b !== "function" && b !== null) | ||
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); | ||
extendStatics(d, b); | ||
@@ -32,3 +34,3 @@ function __() { this.constructor = d; } | ||
reservedTopLevelWordsNoIndent: reservedTopLevelWordsNoIndent, | ||
stringTypes: ["\"\"", "N''", "''", '``', '[]'], | ||
stringTypes: ["\"\"", "N''", "''", '``', '[]', "E''"], | ||
openParens: ['(', 'CASE'], | ||
@@ -35,0 +37,0 @@ closeParens: [')', 'END'], |
@@ -11,3 +11,3 @@ "use strict"; | ||
var StandardSqlFormatter_1 = __importDefault(require("./languages/StandardSqlFormatter")); | ||
exports.format = function (query, cfg) { | ||
var format = function (query, cfg) { | ||
if (cfg === void 0) { cfg = {}; } | ||
@@ -26,6 +26,8 @@ switch (cfg.language) { | ||
}; | ||
exports.tokenize = function (query, cfg) { | ||
exports.format = format; | ||
var tokenize = function (query, cfg) { | ||
if (cfg === void 0) { cfg = {}; } | ||
return new StandardSqlFormatter_1["default"](cfg).tokenize(query); | ||
}; | ||
exports.tokenize = tokenize; | ||
exports["default"] = { | ||
@@ -32,0 +34,0 @@ format: exports.format, |
{ | ||
"name": "@sqltools/formatter", | ||
"version": "1.2.3", | ||
"version": "1.2.5", | ||
"description": "Formats SQL queries. Part of SQLTools", | ||
@@ -28,2 +28,3 @@ "license": "MIT", | ||
"scripts": { | ||
"test:tsc": "tsc --noEmit -p ./tsconfig.json --skipLibCheck", | ||
"clean": "rimraf lib dist *.tgz", | ||
@@ -34,3 +35,3 @@ "test": "jest --config jest.config.js", | ||
"precompile": "yarn run check && yarn run clean", | ||
"compile": "./node_modules/.bin/tsc -p tsconfig.json", | ||
"compile": "tsc -p ./tsconfig.json", | ||
"build": "yarn run compile", | ||
@@ -40,3 +41,4 @@ "prepare": "yarn run build", | ||
"release": "npm pack && npm publish *.tgz --tag latest --access public", | ||
"beta": "npm pack && npm publish *.tgz --tag beta --access public" | ||
"beta": "npm pack && npm publish *.tgz --tag beta --access public", | ||
"tag": "git tag formatter/$(node -e 'console.log(require(\"./package.json\").version)')" | ||
}, | ||
@@ -54,8 +56,8 @@ "repository": { | ||
"dedent-js": "^1.0.1", | ||
"jest": "^24.7.0", | ||
"jest-cli": "^24.7.0", | ||
"jest": "^26.6.3", | ||
"jest-cli": "^26.6.3", | ||
"ts-jest": "^26.5.4", | ||
"rimraf": "^3.0.0", | ||
"ts-jest": "^24.0.1", | ||
"typescript": "^3.4.1" | ||
"typescript": "~4.8.3" | ||
} | ||
} |
# SQLTools Formatter | ||
[![GitHub](https://img.shields.io/github/license/mtxr/vscode-sqltools)](https://github.com/mtxr/vscode-sqltools/blob/master/LICENSE) | ||
[![GitHub](https://img.shields.io/github/license/mtxr/vscode-sqltools)](https://github.com/mtxr/vscode-sqltools/blob/dev/LICENSE) | ||
@@ -57,2 +57,7 @@ > Forked from [zeroturnaround/sql-formatter](https://zeroturnaround.github.io/sql-formatter/) but with improvements and ported Typescript. | ||
#### v1.2.4 | ||
- Support PostgreSQL c-style escape strings in formatter. [#935](https://github.com/mtxr/vscode-sqltools/pull/935) - thanks to [@sivaramasubramanian](https://github.com/sivaramasubramanian). | ||
- Support PostgreSQL @@ operator in formatter. [#936](https://github.com/mtxr/vscode-sqltools/pull/936) - thanks to [@remlse](https://github.com/remlse). | ||
#### v1.2.3 | ||
@@ -59,0 +64,0 @@ |
74950
2617
80