UNPKG

prettier-sql

Version:

Format whitespace in a SQL query to make it more readable

127 lines (112 loc) 3.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isReserved = exports.isCommand = exports.isToken = exports.testToken = exports.ZWS = exports.TokenType = void 0; /** Token type enum for all possible Token categories */ var TokenType; /** Struct to store the most basic cohesive unit of language grammar */ exports.TokenType = TokenType; (function (TokenType) { TokenType["WORD"] = "WORD"; TokenType["STRING"] = "STRING"; TokenType["RESERVED_KEYWORD"] = "RESERVED_KEYWORD"; TokenType["RESERVED_LOGICAL_OPERATOR"] = "RESERVED_LOGICAL_OPERATOR"; TokenType["RESERVED_DEPENDENT_CLAUSE"] = "RESERVED_DEPENDENT_CLAUSE"; TokenType["RESERVED_BINARY_COMMAND"] = "RESERVED_BINARY_COMMAND"; TokenType["RESERVED_COMMAND"] = "RESERVED_COMMAND"; TokenType["OPERATOR"] = "OPERATOR"; TokenType["BLOCK_START"] = "BLOCK_START"; TokenType["BLOCK_END"] = "BLOCK_END"; TokenType["LINE_COMMENT"] = "LINE_COMMENT"; TokenType["BLOCK_COMMENT"] = "BLOCK_COMMENT"; TokenType["NUMBER"] = "NUMBER"; TokenType["PLACEHOLDER"] = "PLACEHOLDER"; })(TokenType || (exports.TokenType = TokenType = {})); /** Special Unicode character to serve as a placeholder for TenSpace formats as \w whitespace is unavailable */ var ZWS = '​'; // uses zero-width space (​ / U+200B) exports.ZWS = ZWS; var ZWS_REGEX = "\u200B"; var spaces = "[".concat(ZWS_REGEX, "\\s]"); /** Checks if two tokens are equivalent */ var testToken = function testToken(compareToken) { return function (token) { return (token === null || token === void 0 ? void 0 : token.type) === compareToken.type && new RegExp("^".concat(spaces, "*").concat(compareToken.value).concat(spaces, "*$"), 'iu').test(token === null || token === void 0 ? void 0 : token.value); }; }; /** Util object that allows for easy checking of Reserved Keywords */ exports.testToken = testToken; var isToken = { AS: testToken({ value: 'AS', type: TokenType.RESERVED_KEYWORD }), AND: testToken({ value: 'AND', type: TokenType.RESERVED_LOGICAL_OPERATOR }), BETWEEN: testToken({ value: 'BETWEEN', type: TokenType.RESERVED_KEYWORD }), CASE: testToken({ value: 'CASE', type: TokenType.BLOCK_START }), CAST: testToken({ value: 'CAST', type: TokenType.RESERVED_KEYWORD }), BY: testToken({ value: 'BY', type: TokenType.RESERVED_KEYWORD }), END: testToken({ value: 'END', type: TokenType.BLOCK_END }), FROM: testToken({ value: 'FROM', type: TokenType.RESERVED_COMMAND }), LATERAL: testToken({ value: 'LATERAL', type: TokenType.RESERVED_DEPENDENT_CLAUSE }), LIMIT: testToken({ value: 'LIMIT', type: TokenType.RESERVED_COMMAND }), SELECT: testToken({ value: 'SELECT', type: TokenType.RESERVED_COMMAND }), SET: testToken({ value: 'SET', type: TokenType.RESERVED_COMMAND }), TABLE: testToken({ value: 'TABLE', type: TokenType.RESERVED_KEYWORD }), WINDOW: testToken({ value: 'WINDOW', type: TokenType.RESERVED_COMMAND }), WITH: testToken({ value: 'WITH', type: TokenType.RESERVED_COMMAND }) }; /** Checks if token is a Reserved Command or Reserved Binary Command */ exports.isToken = isToken; var isCommand = function isCommand(token) { return token && (token.type === TokenType.RESERVED_COMMAND || token.type === TokenType.RESERVED_BINARY_COMMAND); }; /** Checks if token is any Reserved Keyword or Command */ exports.isCommand = isCommand; var isReserved = function isReserved(token) { return token && (token.type === TokenType.RESERVED_KEYWORD || token.type === TokenType.RESERVED_LOGICAL_OPERATOR || token.type === TokenType.RESERVED_DEPENDENT_CLAUSE || token.type === TokenType.RESERVED_COMMAND || token.type === TokenType.RESERVED_BINARY_COMMAND); }; exports.isReserved = isReserved; //# sourceMappingURL=token.js.map