New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

sql-formatter

Package Overview
Dependencies
Maintainers
2
Versions
150
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

sql-formatter - npm Package Compare versions

Comparing version 8.2.0 to 9.0.0-beta.5

lib/expandPhrases.js

4

lib/formatter/AliasAs.js

@@ -102,3 +102,3 @@ "use strict";

var nextToken = this.lookAhead();
return (this.aliasAs === 'always' || this.aliasAs === 'select') && this.isWithinSelect() && token.type === _token.TokenType.IDENTIFIER && (_token.isToken.END(prevToken) || (prevToken.type === _token.TokenType.IDENTIFIER || prevToken.type === _token.TokenType.NUMBER) && (nextToken.type === _token.TokenType.COMMA || (0, _token.isCommand)(nextToken)));
return (this.aliasAs === 'always' || this.aliasAs === 'select') && this.isWithinSelect() && token.type === _token.TokenType.IDENTIFIER && (_token.isToken.END(prevToken) || (prevToken.type === _token.TokenType.IDENTIFIER || prevToken.type === _token.TokenType.NUMBER) && (nextToken.type === _token.TokenType.COMMA || nextToken.type === _token.TokenType.RESERVED_COMMAND));
}

@@ -116,3 +116,3 @@ /** True when AS keyword should be added *after* current token */

value: function isMissingTypeCastAs() {
return this.aliasAs === 'never' && this.isWithinSelect() && _token.isToken.CAST(this.getPreviousReservedToken()) && _token.isToken.AS(this.lookAhead()) && (this.lookAhead(2).type === _token.TokenType.IDENTIFIER || this.lookAhead(2).type === _token.TokenType.RESERVED_KEYWORD) && this.lookAhead(3).value === ')';
return this.aliasAs === 'never' && this.isWithinSelect() && _token.isToken.CAST(this.getPreviousReservedToken()) && _token.isToken.AS(this.lookAhead()) && (this.lookAhead(2).type === _token.TokenType.IDENTIFIER || this.lookAhead(2).type === _token.TokenType.RESERVED_KEYWORD || this.lookAhead(2).type === _token.TokenType.RESERVED_FUNCTION_NAME) && this.lookAhead(3).value === ')';
} // checks for WITH `table` [AS] (

@@ -119,0 +119,0 @@

@@ -99,4 +99,4 @@ "use strict";

case _ast.NodeType.binary_clause:
this.formatBinaryClause(node);
case _ast.NodeType.set_operation:
this.formatSetOperation(node);
break;

@@ -160,3 +160,3 @@

value: function formatBetweenPredicate(node) {
this.layout.add(this.show(node.betweenToken), _Layout.WS.SPACE, this.show(node.expr1), _Layout.WS.SPACE, this.show(node.andToken), _Layout.WS.SPACE, this.show(node.expr2), _Layout.WS.SPACE);
this.layout.add(this.show(node.betweenToken), _Layout.WS.SPACE, this.show(node.expr1), _Layout.WS.SPACE, this.showNonTabular(node.andToken), _Layout.WS.SPACE, this.show(node.expr2), _Layout.WS.SPACE);
}

@@ -182,4 +182,4 @@ }, {

}, {
key: "formatBinaryClause",
value: function formatBinaryClause(node) {
key: "formatSetOperation",
value: function formatSetOperation(node) {
this.layout.indentation.decreaseTopLevel();

@@ -240,5 +240,2 @@ this.layout.add(_Layout.WS.NEWLINE, _Layout.WS.INDENT, this.show(node.nameToken), _Layout.WS.NEWLINE);

case _token.TokenType.RESERVED_JOIN_CONDITION:
return this.formatJoinCondition(token);
case _token.TokenType.RESERVED_LOGICAL_OPERATOR:

@@ -248,2 +245,3 @@ return this.formatLogicalOperator(token);

case _token.TokenType.RESERVED_KEYWORD:
case _token.TokenType.RESERVED_FUNCTION_NAME:
return this.formatKeyword(token);

@@ -257,8 +255,2 @@

case _token.TokenType.NAMED_PARAMETER:
case _token.TokenType.QUOTED_PARAMETER:
case _token.TokenType.INDEXED_PARAMETER:
case _token.TokenType.POSITIONAL_PARAMETER:
return this.formatParameter(token);
case _token.TokenType.COMMA:

@@ -275,3 +267,7 @@ return this.formatComma(token);

case _token.TokenType.VARIABLE:
return this.formatWord(token);
case _token.TokenType.NAMED_PARAMETER:
case _token.TokenType.QUOTED_PARAMETER:
case _token.TokenType.INDEXED_PARAMETER:
case _token.TokenType.POSITIONAL_PARAMETER:
return this.formatLiteral(token);

@@ -282,9 +278,7 @@ default:

}
/**
* Formats ident/string/number/variable tokens
*/
/** Default formatting for most token types */
}, {
key: "formatWord",
value: function formatWord(token) {
key: "formatLiteral",
value: function formatLiteral(token) {
this.layout.add(this.show(token), _Layout.WS.SPACE);

@@ -366,8 +360,2 @@ }

this.layout.add(_Layout.WS.NEWLINE, _Layout.WS.INDENT, this.show(token), _Layout.WS.SPACE);
} // Formats ON and USING keywords
}, {
key: "formatJoinCondition",
value: function formatJoinCondition(token) {
this.layout.add(this.show(token), _Layout.WS.SPACE);
}

@@ -388,2 +376,6 @@ /**

return;
} // special case for PLSQL @ dblink syntax
else if (token.value === '@' && this.cfg.language === 'plsql') {
this.layout.add(_Layout.WS.NO_SPACE, this.show(token));
return;
} // other operators

@@ -436,11 +428,2 @@

/**
* Formats a parameter placeholder item onto query, to be replaced with the value of the placeholder
*/
}, {
key: "formatParameter",
value: function formatParameter(token) {
this.layout.add(this.params.get(token), _Layout.WS.SPACE);
}
/**
* Formats a comma Operator onto query, ending line unless in an Inline Block

@@ -466,5 +449,11 @@ */

}
} // don't call this directly, always use show() instead.
} // Like show(), but skips tabular formatting
}, {
key: "showNonTabular",
value: function showNonTabular(token) {
return this.showToken(token);
} // don't call this directly, always use show() or showNonTabular() instead.
}, {
key: "showToken",

@@ -483,2 +472,4 @@ value: function showToken(token) {

}
} else if ((0, _token.isParameter)(token)) {
return this.params.get(token);
} else {

@@ -485,0 +476,0 @@ return token.value;

@@ -81,3 +81,3 @@ "use strict";

case _ast.NodeType.limit_clause:
case _ast.NodeType.binary_clause:
case _ast.NodeType.set_operation:
return Infinity;

@@ -84,0 +84,0 @@

@@ -64,4 +64,4 @@ "use strict";

function isTabularToken(token) {
return token.type === _token.TokenType.RESERVED_LOGICAL_OPERATOR || token.type === _token.TokenType.RESERVED_DEPENDENT_CLAUSE || token.type === _token.TokenType.RESERVED_COMMAND || token.type === _token.TokenType.RESERVED_BINARY_COMMAND || token.type === _token.TokenType.RESERVED_JOIN;
return token.type === _token.TokenType.RESERVED_LOGICAL_OPERATOR || token.type === _token.TokenType.RESERVED_DEPENDENT_CLAUSE || token.type === _token.TokenType.RESERVED_COMMAND || token.type === _token.TokenType.RESERVED_SET_OPERATION || token.type === _token.TokenType.RESERVED_JOIN;
}
//# sourceMappingURL=tabularStyle.js.map

@@ -19,15 +19,2 @@ "use strict";

});
var _types = require("./types");
Object.keys(_types).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (key in exports && exports[key] === _types[key]) return;
Object.defineProperty(exports, key, {
enumerable: true,
get: function get() {
return _types[key];
}
});
});
//# sourceMappingURL=index.js.map

@@ -12,2 +12,18 @@ "use strict";

var _templateObject;
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
/**

@@ -89,2 +105,29 @@ * Builds a RegExp for valid line comments in a SQL dialect

return (0, _regexUtil.patternToRegex)("(?:".concat(typesRegex, ")(?:").concat(pattern, ")"));
};
exports.parameter = parameter;
var buildQStringPatterns = function buildQStringPatterns() {
var specialDelimiterMap = {
'<': '>',
'[': ']',
'(': ')',
'{': '}'
}; // base pattern for special delimiters, left must correspond with right
var singlePattern = "{left}(?:(?!{right}').)*?{right}"; // replace {left} and {right} with delimiters, collect as array
var patternList = Object.entries(specialDelimiterMap).map(function (_ref2) {
var _ref3 = _slicedToArray(_ref2, 2),
left = _ref3[0],
right = _ref3[1];
return singlePattern.replace(/{left}/g, (0, _regexUtil.escapeRegExp)(left)).replace(/{right}/g, (0, _regexUtil.escapeRegExp)(right));
});
var specialDelimiters = (0, _regexUtil.escapeRegExp)(Object.keys(specialDelimiterMap).join('')); // standard pattern for common delimiters, ignores special delimiters
var standardDelimiterPattern = String.raw(_templateObject || (_templateObject = _taggedTemplateLiteral(["(?<tag>[^s", "])(?:(?!k<tag>').)*?k<tag>"], ["(?<tag>[^\\s", "])(?:(?!\\k<tag>').)*?\\k<tag>"])), specialDelimiters); // constructs final pattern by joining all cases
var qStringPattern = "[Qq]'(?:".concat(standardDelimiterPattern, "|").concat(patternList.join('|'), ")'");
return qStringPattern;
}; // This enables the following quote styles:

@@ -101,3 +144,2 @@ // 1. backtick quoted using `` to escape

exports.parameter = parameter;
var quotePatterns = {

@@ -111,3 +153,4 @@ '``': '(?:`[^`]*(?:$|`))+',

'""".."""': '"""[^\\\\]*?(?:\\\\.[^\\\\]*?)*?(?:"""|$)',
'{}': '(?:\\{[^\\}]*(?:$|\\}))'
'{}': '(?:\\{[^\\}]*(?:$|\\}))',
"q''": buildQStringPatterns()
};

@@ -166,6 +209,6 @@ exports.quotePatterns = quotePatterns;

var identifierPattern = function identifierPattern() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
first = _ref2.first,
rest = _ref2.rest,
dashes = _ref2.dashes;
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
first = _ref4.first,
rest = _ref4.rest,
dashes = _ref4.dashes;

@@ -172,0 +215,0 @@ // Unicode letters, diacritical marks and underscore

@@ -6,3 +6,3 @@ "use strict";

});
exports.withDashes = exports.toCaseInsensitivePattern = exports.prefixesPattern = exports.patternToRegex = exports.escapeRegExp = exports.escapeParen = exports.WHITESPACE_REGEX = exports.NULL_REGEX = void 0;
exports.withDashes = exports.toCaseInsensitivePattern = exports.prefixesPattern = exports.patternToRegex = exports.escapeRegExp = exports.escapeParen = exports.WHITESPACE_REGEX = void 0;

@@ -15,6 +15,3 @@ // Escapes regex special chars

exports.escapeRegExp = escapeRegExp;
var NULL_REGEX = /^(?!)/; // zero-width negative lookahead, matches nothing
exports.NULL_REGEX = NULL_REGEX;
var WHITESPACE_REGEX = new RegExp("([\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]+)", "y");
var WHITESPACE_REGEX = new RegExp("[\\t-\\r \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000\\uFEFF]+", "y");
exports.WHITESPACE_REGEX = WHITESPACE_REGEX;

@@ -45,3 +42,3 @@

// longer word
return '\\b' + paren + '\\b';
return '\\b' + escapeRegExp(paren) + '\\b';
}

@@ -48,0 +45,0 @@ };

@@ -6,3 +6,3 @@ "use strict";

});
exports.testToken = exports.isToken = exports.isReserved = exports.isCommand = exports.TokenType = exports.EOF_TOKEN = void 0;
exports.testToken = exports.isToken = exports.isReserved = exports.isParameter = exports.TokenType = exports.EOF_TOKEN = void 0;

@@ -21,8 +21,8 @@ /** Token type enum for all possible Token categories */

TokenType["RESERVED_KEYWORD"] = "RESERVED_KEYWORD";
TokenType["RESERVED_FUNCTION_NAME"] = "RESERVED_FUNCTION_NAME";
TokenType["RESERVED_LOGICAL_OPERATOR"] = "RESERVED_LOGICAL_OPERATOR";
TokenType["RESERVED_DEPENDENT_CLAUSE"] = "RESERVED_DEPENDENT_CLAUSE";
TokenType["RESERVED_BINARY_COMMAND"] = "RESERVED_BINARY_COMMAND";
TokenType["RESERVED_SET_OPERATION"] = "RESERVED_SET_OPERATION";
TokenType["RESERVED_COMMAND"] = "RESERVED_COMMAND";
TokenType["RESERVED_JOIN"] = "RESERVED_JOIN";
TokenType["RESERVED_JOIN_CONDITION"] = "RESERVED_JOIN_CONDITION";
TokenType["RESERVED_CASE_START"] = "RESERVED_CASE_START";

@@ -90,3 +90,3 @@ TokenType["RESERVED_CASE_END"] = "RESERVED_CASE_END";

value: 'CAST',
type: TokenType.RESERVED_KEYWORD
type: TokenType.RESERVED_FUNCTION_NAME
}),

@@ -134,19 +134,19 @@ BY: testToken({

};
/** Checks if token is a Reserved Command or Reserved Binary Command */
/** Checks if token is any Reserved Keyword or Command */
exports.isToken = isToken;
var isCommand = function isCommand(token) {
return token.type === TokenType.RESERVED_COMMAND || token.type === TokenType.RESERVED_BINARY_COMMAND;
var isReserved = function isReserved(token) {
return token.type === TokenType.RESERVED_KEYWORD || token.type === TokenType.RESERVED_FUNCTION_NAME || token.type === TokenType.RESERVED_LOGICAL_OPERATOR || token.type === TokenType.RESERVED_DEPENDENT_CLAUSE || token.type === TokenType.RESERVED_COMMAND || token.type === TokenType.RESERVED_SET_OPERATION || token.type === TokenType.RESERVED_JOIN || token.type === TokenType.RESERVED_CASE_START || token.type === TokenType.RESERVED_CASE_END;
};
/** Checks if token is any Reserved Keyword or Command */
/** checks if token is one of the parameter tokens */
exports.isCommand = isCommand;
exports.isReserved = isReserved;
var isReserved = function isReserved(token) {
return token.type === TokenType.RESERVED_KEYWORD || token.type === TokenType.RESERVED_LOGICAL_OPERATOR || token.type === TokenType.RESERVED_DEPENDENT_CLAUSE || token.type === TokenType.RESERVED_JOIN_CONDITION || token.type === TokenType.RESERVED_COMMAND || token.type === TokenType.RESERVED_BINARY_COMMAND || token.type === TokenType.RESERVED_JOIN || token.type === TokenType.RESERVED_CASE_START || token.type === TokenType.RESERVED_CASE_END;
var isParameter = function isParameter(token) {
return token.type === TokenType.INDEXED_PARAMETER || token.type === TokenType.NAMED_PARAMETER || token.type === TokenType.POSITIONAL_PARAMETER || token.type === TokenType.QUOTED_PARAMETER;
};
exports.isReserved = isReserved;
exports.isParameter = isParameter;
//# sourceMappingURL=token.js.map

@@ -14,2 +14,4 @@ "use strict";

var _utils = require("../utils");
var _regexUtil = require("./regexUtil");

@@ -55,3 +57,3 @@

function Tokenizer(cfg) {
var _cfg$lineCommentTypes, _cfg$openParens, _cfg$closeParens, _cfg$reservedLogicalO, _cfg$reservedJoinCond, _cfg$namedParamTypes, _cfg$quotedParamTypes, _cfg$numberedParamTyp, _cfg$operators, _this$validRules;
var _cfg$lineCommentTypes, _cfg$openParens, _cfg$closeParens, _cfg$reservedLogicalO, _cfg$namedParamTypes, _cfg$quotedParamTypes, _cfg$numberedParamTyp, _cfg$operators, _this$validRules;

@@ -81,3 +83,3 @@ _classCallCheck(this, Tokenizer);

value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}

@@ -87,3 +89,3 @@ }), _defineProperty(_this$validRules, _token.TokenType.RESERVED_CASE_END, {

value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}

@@ -93,8 +95,8 @@ }), _defineProperty(_this$validRules, _token.TokenType.RESERVED_COMMAND, {

value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}
}), _defineProperty(_this$validRules, _token.TokenType.RESERVED_BINARY_COMMAND, {
regex: regex.reservedWord(cfg.reservedBinaryCommands, cfg.identChars),
}), _defineProperty(_this$validRules, _token.TokenType.RESERVED_SET_OPERATION, {
regex: regex.reservedWord(cfg.reservedSetOperations, cfg.identChars),
value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}

@@ -104,3 +106,3 @@ }), _defineProperty(_this$validRules, _token.TokenType.RESERVED_DEPENDENT_CLAUSE, {

value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}

@@ -110,3 +112,3 @@ }), _defineProperty(_this$validRules, _token.TokenType.RESERVED_JOIN, {

value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}

@@ -116,14 +118,14 @@ }), _defineProperty(_this$validRules, _token.TokenType.RESERVED_KEYWORD, {

value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}
}), _defineProperty(_this$validRules, _token.TokenType.RESERVED_FUNCTION_NAME, {
regex: regex.reservedWord(cfg.reservedFunctionNames, cfg.identChars),
value: function value(v) {
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}
}), _defineProperty(_this$validRules, _token.TokenType.RESERVED_LOGICAL_OPERATOR, {
regex: regex.reservedWord((_cfg$reservedLogicalO = cfg.reservedLogicalOperators) !== null && _cfg$reservedLogicalO !== void 0 ? _cfg$reservedLogicalO : ['AND', 'OR'], cfg.identChars),
value: function value(v) {
return v.toUpperCase();
return (0, _utils.equalizeWhitespace)(v.toUpperCase());
}
}), _defineProperty(_this$validRules, _token.TokenType.RESERVED_JOIN_CONDITION, {
regex: regex.reservedWord((_cfg$reservedJoinCond = cfg.reservedJoinConditions) !== null && _cfg$reservedJoinCond !== void 0 ? _cfg$reservedJoinCond : ['ON', 'USING'], cfg.identChars),
value: function value(v) {
return v.toUpperCase();
}
}), _defineProperty(_this$validRules, _token.TokenType.NAMED_PARAMETER, {

@@ -154,3 +156,3 @@ regex: regex.parameter((_cfg$namedParamTypes = cfg.namedParamTypes) !== null && _cfg$namedParamTypes !== void 0 ? _cfg$namedParamTypes : [], regex.identifierPattern(cfg.paramChars || cfg.identChars)),

}), _defineProperty(_this$validRules, _token.TokenType.VARIABLE, {
regex: cfg.variableTypes ? regex.variable(cfg.variableTypes) : _regexUtil.NULL_REGEX
regex: cfg.variableTypes ? regex.variable(cfg.variableTypes) : undefined
}), _defineProperty(_this$validRules, _token.TokenType.STRING, {

@@ -157,0 +159,0 @@ regex: regex.string(cfg.stringTypes)

@@ -56,4 +56,4 @@ "use strict";

while (this.index < this.input.length) {
// grab any preceding whitespace
var whitespaceBefore = this.getWhitespace();
// skip any preceding whitespace
this.skipWhitespace();

@@ -68,5 +68,3 @@ if (this.index < this.input.length) {

tokens.push(_objectSpread(_objectSpread({}, token), {}, {
whitespaceBefore: whitespaceBefore
}));
tokens.push(token);
}

@@ -78,4 +76,4 @@ }

}, {
key: "getWhitespace",
value: function getWhitespace() {
key: "skipWhitespace",
value: function skipWhitespace() {
_regexUtil.WHITESPACE_REGEX.lastIndex = this.index;

@@ -88,5 +86,2 @@

this.index += matches[0].length;
return matches[0];
} else {
return '';
}

@@ -130,3 +125,3 @@ }

return this.matchToken(_token2.TokenType.RESERVED_CASE_START) || this.matchToken(_token2.TokenType.RESERVED_CASE_END) || this.matchToken(_token2.TokenType.RESERVED_COMMAND) || this.matchToken(_token2.TokenType.RESERVED_BINARY_COMMAND) || this.matchToken(_token2.TokenType.RESERVED_DEPENDENT_CLAUSE) || this.matchToken(_token2.TokenType.RESERVED_JOIN) || this.matchToken(_token2.TokenType.RESERVED_KEYWORD) || this.matchToken(_token2.TokenType.RESERVED_LOGICAL_OPERATOR) || this.matchToken(_token2.TokenType.RESERVED_JOIN_CONDITION);
return this.matchToken(_token2.TokenType.RESERVED_CASE_START) || this.matchToken(_token2.TokenType.RESERVED_CASE_END) || this.matchToken(_token2.TokenType.RESERVED_COMMAND) || this.matchToken(_token2.TokenType.RESERVED_SET_OPERATION) || this.matchToken(_token2.TokenType.RESERVED_DEPENDENT_CLAUSE) || this.matchToken(_token2.TokenType.RESERVED_JOIN) || this.matchToken(_token2.TokenType.RESERVED_LOGICAL_OPERATOR) || this.matchToken(_token2.TokenType.RESERVED_FUNCTION_NAME) || this.matchToken(_token2.TokenType.RESERVED_KEYWORD);
} // Shorthand for `match` that looks up regex from rules

@@ -140,3 +135,3 @@

if (!rule) {
throw Error("Unknown token type found: ".concat(tokenType));
return undefined;
}

@@ -143,0 +138,0 @@

@@ -13,3 +13,3 @@ "use strict";

NodeType["clause"] = "clause";
NodeType["binary_clause"] = "binary_clause";
NodeType["set_operation"] = "set_operation";
NodeType["function_call"] = "function_call";

@@ -16,0 +16,0 @@ NodeType["array_subscript"] = "array_subscript";

@@ -75,3 +75,3 @@ "use strict";

value: function expression() {
return this.limitClause() || this.clause() || this.binaryClause() || this.functionCall() || this.arraySubscript() || this.parenthesis() || this.betweenPredicate() || this.allColumnsAsterisk() || this.nextTokenNode();
return this.limitClause() || this.clause() || this.setOperation() || this.functionCall() || this.arraySubscript() || this.parenthesis() || this.betweenPredicate() || this.allColumnsAsterisk() || this.nextTokenNode();
}

@@ -94,9 +94,9 @@ }, {

}, {
key: "binaryClause",
value: function binaryClause() {
if (this.look().type === _token2.TokenType.RESERVED_BINARY_COMMAND) {
key: "setOperation",
value: function setOperation() {
if (this.look().type === _token2.TokenType.RESERVED_SET_OPERATION) {
var name = this.next();
var children = this.expressionsUntilClauseEnd();
return {
type: _ast.NodeType.binary_clause,
type: _ast.NodeType.set_operation,
nameToken: name,

@@ -112,3 +112,3 @@ children: children

value: function functionCall() {
if ((this.look().type === _token2.TokenType.RESERVED_KEYWORD || this.look().type === _token2.TokenType.IDENTIFIER) && this.look(1).value === '(' && !this.look(1).whitespaceBefore) {
if (this.look().type === _token2.TokenType.RESERVED_FUNCTION_NAME && this.look(1).value === '(') {
return {

@@ -230,3 +230,3 @@ type: _ast.NodeType.function_call,

while (this.look().type !== _token2.TokenType.RESERVED_COMMAND && this.look().type !== _token2.TokenType.RESERVED_BINARY_COMMAND && this.look().type !== _token2.TokenType.EOF && this.look().type !== _token2.TokenType.CLOSE_PAREN && this.look().type !== _token2.TokenType.DELIMITER && !extraPredicate(this.look())) {
while (this.look().type !== _token2.TokenType.RESERVED_COMMAND && this.look().type !== _token2.TokenType.RESERVED_SET_OPERATION && this.look().type !== _token2.TokenType.EOF && this.look().type !== _token2.TokenType.CLOSE_PAREN && this.look().type !== _token2.TokenType.DELIMITER && !extraPredicate(this.look())) {
children.push(this.expression());

@@ -233,0 +233,0 @@ }

@@ -8,28 +8,30 @@ "use strict";

var _bigquery = _interopRequireDefault(require("./languages/bigquery.formatter"));
var _bigquery = _interopRequireDefault(require("./languages/bigquery/bigquery.formatter"));
var _db = _interopRequireDefault(require("./languages/db2.formatter"));
var _db = _interopRequireDefault(require("./languages/db2/db2.formatter"));
var _hive = _interopRequireDefault(require("./languages/hive.formatter"));
var _hive = _interopRequireDefault(require("./languages/hive/hive.formatter"));
var _mariadb = _interopRequireDefault(require("./languages/mariadb.formatter"));
var _mariadb = _interopRequireDefault(require("./languages/mariadb/mariadb.formatter"));
var _mysql = _interopRequireDefault(require("./languages/mysql.formatter"));
var _mysql = _interopRequireDefault(require("./languages/mysql/mysql.formatter"));
var _n1ql = _interopRequireDefault(require("./languages/n1ql.formatter"));
var _n1ql = _interopRequireDefault(require("./languages/n1ql/n1ql.formatter"));
var _plsql = _interopRequireDefault(require("./languages/plsql.formatter"));
var _plsql = _interopRequireDefault(require("./languages/plsql/plsql.formatter"));
var _postgresql = _interopRequireDefault(require("./languages/postgresql.formatter"));
var _postgresql = _interopRequireDefault(require("./languages/postgresql/postgresql.formatter"));
var _redshift = _interopRequireDefault(require("./languages/redshift.formatter"));
var _redshift = _interopRequireDefault(require("./languages/redshift/redshift.formatter"));
var _spark = _interopRequireDefault(require("./languages/spark.formatter"));
var _spark = _interopRequireDefault(require("./languages/spark/spark.formatter"));
var _sqlite = _interopRequireDefault(require("./languages/sqlite.formatter"));
var _sqlite = _interopRequireDefault(require("./languages/sqlite/sqlite.formatter"));
var _sql = _interopRequireDefault(require("./languages/sql.formatter"));
var _sql = _interopRequireDefault(require("./languages/sql/sql.formatter"));
var _tsql = _interopRequireDefault(require("./languages/tsql.formatter"));
var _trino = _interopRequireDefault(require("./languages/trino/trino.formatter"));
var _tsql = _interopRequireDefault(require("./languages/tsql/tsql.formatter"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

@@ -84,2 +86,3 @@

sqlite: _sqlite["default"],
trino: _trino["default"],
tsql: _tsql["default"]

@@ -86,0 +89,0 @@ };

@@ -27,3 +27,3 @@ import type { FormatOptions } from "../types";

private formatClause;
private formatBinaryClause;
private formatSetOperation;
private formatLimitClause;

@@ -33,6 +33,4 @@ private formatAllColumnsAsterisk;

private formatToken;
/**
* Formats ident/string/number/variable tokens
*/
private formatWord;
/** Default formatting for most token types */
private formatLiteral;
/** Formats a line comment onto query */

@@ -52,3 +50,2 @@ private formatLineComment;

private formatDependentClause;
private formatJoinCondition;
/**

@@ -66,6 +63,2 @@ * Formats an Operator onto query, following rules for specific characters

/**
* Formats a parameter placeholder item onto query, to be replaced with the value of the placeholder
*/
private formatParameter;
/**
* Formats a comma Operator onto query, ending line unless in an Inline Block

@@ -75,4 +68,5 @@ */

private show;
private showNonTabular;
private showToken;
}
export {};
export * from './sqlFormatter';
export * from './types';
export type { IndentStyle, KeywordCase, AliasMode, CommaPosition, LogicalOperatorNewline, FormatOptions, } from './types';

@@ -37,2 +37,3 @@ import type { IdentChars, QuoteType, VariableType } from './regexTypes';

'{}': string;
"q''": string;
};

@@ -39,0 +40,0 @@ /** Builds a RegExp for matching variables */

import type { PrefixedQuoteType } from './regexTypes';
export declare const escapeRegExp: (string: string) => string;
export declare const NULL_REGEX: RegExp;
export declare const WHITESPACE_REGEX: RegExp;

@@ -5,0 +4,0 @@ export declare const patternToRegex: (pattern: string) => RegExp;

@@ -8,8 +8,8 @@ /** Token type enum for all possible Token categories */

RESERVED_KEYWORD = "RESERVED_KEYWORD",
RESERVED_FUNCTION_NAME = "RESERVED_FUNCTION_NAME",
RESERVED_LOGICAL_OPERATOR = "RESERVED_LOGICAL_OPERATOR",
RESERVED_DEPENDENT_CLAUSE = "RESERVED_DEPENDENT_CLAUSE",
RESERVED_BINARY_COMMAND = "RESERVED_BINARY_COMMAND",
RESERVED_SET_OPERATION = "RESERVED_SET_OPERATION",
RESERVED_COMMAND = "RESERVED_COMMAND",
RESERVED_JOIN = "RESERVED_JOIN",
RESERVED_JOIN_CONDITION = "RESERVED_JOIN_CONDITION",
RESERVED_CASE_START = "RESERVED_CASE_START",

@@ -37,3 +37,2 @@ RESERVED_CASE_END = "RESERVED_CASE_END",

key?: string;
whitespaceBefore?: string;
}

@@ -73,5 +72,5 @@ /**

};
/** Checks if token is a Reserved Command or Reserved Binary Command */
export declare const isCommand: (token: Token) => boolean;
/** Checks if token is any Reserved Keyword or Command */
export declare const isReserved: (token: Token) => boolean;
/** checks if token is one of the parameter tokens */
export declare const isParameter: (token: Token) => boolean;

@@ -7,5 +7,5 @@ import { Token } from "./token";

reservedDependentClauses: string[];
reservedBinaryCommands: string[];
reservedSetOperations: string[];
reservedJoins: string[];
reservedJoinConditions?: string[];
reservedFunctionNames: string[];
reservedKeywords: string[];

@@ -15,4 +15,4 @@ stringTypes: regexTypes.QuoteType[];

variableTypes?: regexTypes.VariableType[];
openParens?: ('(' | '[' | '{')[];
closeParens?: (')' | ']' | '}')[];
openParens?: ('(' | '[' | '{' | '{-')[];
closeParens?: (')' | ']' | '}' | '-}')[];
positionalParams?: boolean;

@@ -19,0 +19,0 @@ numberedParamTypes?: ('?' | ':' | '$')[];

@@ -20,3 +20,3 @@ import { Token, TokenType } from "./token";

tokenize(input: string): Token[];
private getWhitespace;
private skipWhitespace;
private getNextToken;

@@ -23,0 +23,0 @@ private matchPlaceholderToken;

@@ -5,3 +5,3 @@ import { Token } from "../lexer/token";

clause = "clause",
binary_clause = "binary_clause",
set_operation = "set_operation",
function_call = "function_call",

@@ -25,4 +25,4 @@ array_subscript = "array_subscript",

};
export declare type BinaryClause = {
type: NodeType.binary_clause;
export declare type SetOperation = {
type: NodeType.set_operation;
nameToken: Token;

@@ -67,3 +67,3 @@ children: AstNode[];

};
export declare type AstNode = Clause | BinaryClause | FunctionCall | ArraySubscript | Parenthesis | BetweenPredicate | LimitClause | AllColumnsAsterisk | TokenNode;
export declare type AstNode = Clause | SetOperation | FunctionCall | ArraySubscript | Parenthesis | BetweenPredicate | LimitClause | AllColumnsAsterisk | TokenNode;
export declare const isTokenNode: (node: AstNode) => node is TokenNode;

@@ -14,3 +14,3 @@ import { type Token } from "../lexer/token";

private clause;
private binaryClause;
private setOperation;
private functionCall;

@@ -17,0 +17,0 @@ private arraySubscript;

@@ -1,14 +0,15 @@

import BigQueryFormatter from "./languages/bigquery.formatter";
import Db2Formatter from "./languages/db2.formatter";
import HiveFormatter from "./languages/hive.formatter";
import MariaDbFormatter from "./languages/mariadb.formatter";
import MySqlFormatter from "./languages/mysql.formatter";
import N1qlFormatter from "./languages/n1ql.formatter";
import PlSqlFormatter from "./languages/plsql.formatter";
import PostgreSqlFormatter from "./languages/postgresql.formatter";
import RedshiftFormatter from "./languages/redshift.formatter";
import SparkFormatter from "./languages/spark.formatter";
import SqliteFormatter from "./languages/sqlite.formatter";
import SqlFormatter from "./languages/sql.formatter";
import TSqlFormatter from "./languages/tsql.formatter";
import BigQueryFormatter from "./languages/bigquery/bigquery.formatter";
import Db2Formatter from "./languages/db2/db2.formatter";
import HiveFormatter from "./languages/hive/hive.formatter";
import MariaDbFormatter from "./languages/mariadb/mariadb.formatter";
import MySqlFormatter from "./languages/mysql/mysql.formatter";
import N1qlFormatter from "./languages/n1ql/n1ql.formatter";
import PlSqlFormatter from "./languages/plsql/plsql.formatter";
import PostgreSqlFormatter from "./languages/postgresql/postgresql.formatter";
import RedshiftFormatter from "./languages/redshift/redshift.formatter";
import SparkFormatter from "./languages/spark/spark.formatter";
import SqliteFormatter from "./languages/sqlite/sqlite.formatter";
import SqlFormatter from "./languages/sql/sql.formatter";
import TrinoFormatter from "./languages/trino/trino.formatter";
import TSqlFormatter from "./languages/tsql/tsql.formatter";
import type { FormatOptions } from './types';

@@ -28,2 +29,3 @@ export declare const formatters: {

sqlite: typeof SqliteFormatter;
trino: typeof TrinoFormatter;
tsql: typeof TSqlFormatter;

@@ -33,5 +35,2 @@ };

export declare const supportedDialects: string[];
export declare type FormatFnOptions = FormatOptions & {
language: SqlLanguage;
};
/**

@@ -44,5 +43,5 @@ * Format whitespace in a query to make it easier to read.

*/
export declare const format: (query: string, cfg?: Partial<FormatFnOptions>) => string;
export declare const format: (query: string, cfg?: Partial<FormatOptions>) => string;
export declare class ConfigError extends Error {
}
export declare type FormatFn = typeof format;

@@ -8,1 +8,2 @@ export declare const dedupe: (arr: string[]) => string[];

export declare const sum: (arr: number[]) => number;
export declare const flatKeywordList: (obj: Record<string, string[]>) => string[];
import { FormatFn } from "../../src/sqlFormatter";
declare type Options = {
interface Options {
without?: string[];
additionally?: string[];
};
export default function supportsJoin(format: FormatFn, { without, additionally }?: Options): void;
supportsUsing?: boolean;
supportsApply?: boolean;
}
export default function supportsJoin(format: FormatFn, { without, additionally, supportsUsing, supportsApply }?: Options): void;
export {};

@@ -6,3 +6,3 @@ "use strict";

});
exports.sum = exports.sortByLengthDesc = exports.maxLength = exports.last = exports.equalizeWhitespace = exports.dedupe = void 0;
exports.sum = exports.sortByLengthDesc = exports.maxLength = exports.last = exports.flatKeywordList = exports.equalizeWhitespace = exports.dedupe = void 0;

@@ -82,5 +82,12 @@ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }

return total;
}; // Used for flattening keyword lists
exports.sum = sum;
var flatKeywordList = function flatKeywordList(obj) {
return dedupe(Object.values(obj).flat());
};
exports.sum = sum;
exports.flatKeywordList = flatKeywordList;
//# sourceMappingURL=utils.js.map
{
"name": "sql-formatter",
"version": "8.2.0",
"version": "9.0.0-beta.5",
"description": "Format whitespace in a SQL query to make it more readable",

@@ -25,3 +25,6 @@ "license": "MIT",

"db2",
"sqlite"
"sqlite",
"trino",
"presto",
"prestosql"
],

@@ -35,2 +38,3 @@ "contributors": [

"bingou",
"Boris Verkhovskiy <boris.verk@gmail.com>",
"Damon Davison <ddavison@avalere.com>",

@@ -37,0 +41,0 @@ "Davut Can Abacigil <can@teamsql.io>",

@@ -10,3 +10,3 @@ <a href='https://github.com/sql-formatter-org/sql-formatter'><img src="static/prettier-sql-clean.svg" width="128"/></a>

It supports various SQL dialects:
GCP BigQuery, IBM DB2, Apache Hive, MariaDB, MySQL, Couchbase N1QL, Oracle PL/SQL, PostgreSQL, Amazon Redshift, Spark, SQL Server Transact-SQL.
GCP BigQuery, IBM DB2, Apache Hive, MariaDB, MySQL, Couchbase N1QL, Oracle PL/SQL, PostgreSQL, Amazon Redshift, Spark, SQL Server Transact-SQL, Trino/Presto.
See [language option docs](docs/language.md) for more details.

@@ -99,3 +99,3 @@

usage: sql-formatter [-h] [-o OUTPUT] \
[-l {bigquery,db2,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,sqlite,tsql}] [-c CONFIG] [--version] [FILE]
[-l {bigquery,db2,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,sqlite,trino,tsql}] [-c CONFIG] [--version] [FILE]

@@ -111,3 +111,3 @@ SQL Formatter

File to write SQL output (defaults to stdout)
-l, --language {bigquery,db2,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,sqlite,tsql}
-l, --language {bigquery,db2,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,sqlite,trino,tsql}
SQL dialect (defaults to standard sql)

@@ -137,3 +137,3 @@ -c, --config CONFIG

```ts
```json
{

@@ -143,3 +143,3 @@ "language": "spark",

"keywordCase": "upper",
"linesBetweenQueries": 2,
"linesBetweenQueries": 2
}

@@ -146,0 +146,0 @@ ```

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc