UNPKG

prettier-sql

Version:

Format whitespace in a SQL query to make it more readable

1 lines 186 kB
!function(E,T){"object"==typeof exports&&"object"==typeof module?module.exports=T():"function"==typeof define&&define.amd?define([],T):"object"==typeof exports?exports.prettierSql=T():E.prettierSql=T()}(self,(function(){return(()=>{"use strict";var E={d:(T,R)=>{for(var A in R)E.o(R,A)&&!E.o(T,A)&&Object.defineProperty(T,A,{enumerable:!0,get:R[A]})},o:(E,T)=>Object.prototype.hasOwnProperty.call(E,T),r:E=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(E,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(E,"__esModule",{value:!0})}},T={};function R(E,T){(null==T||T>E.length)&&(T=E.length);for(var R=0,A=new Array(T);R<T;R++)A[R]=E[R];return A}E.r(T),E.d(T,{AliasMode:()=>s,CommaPosition:()=>G,KeywordMode:()=>i,NewlineMode:()=>a,format:()=>VT,formatters:()=>dT,supportedDialects:()=>yT});var A=function(E){return function(E){return function(E){if(Array.isArray(E))return R(E)}(E)||function(E){if("undefined"!=typeof Symbol&&null!=E[Symbol.iterator]||null!=E["@@iterator"])return Array.from(E)}(E)||function(E,T){if(E){if("string"==typeof E)return R(E,T);var A=Object.prototype.toString.call(E).slice(8,-1);return"Object"===A&&E.constructor&&(A=E.constructor.name),"Map"===A||"Set"===A?Array.from(E):"Arguments"===A||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(A)?R(E,T):void 0}}(E)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(new Set(E))},S=function(E){return E.replace(/[\t ]+$/,"")},O=function(E){return E.replace(/[\$\(-\+\.\?\[-\^\{-\}]/g,"\\$&")},I=function(E){return E.sort((function(E,T){return T.length-E.length||E.localeCompare(T)}))},N=function(E){return E.reduce((function(E,T){return Math.max(E,T.length)}),0)};function e(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}function C(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}var L,t="top-level",_=function(){function E(){var T=arguments.length>0&&void 0!==arguments[0]?arguments[0]:" ";e(this,E),this.indent=T,this.indentTypes=[]}var T,R;return T=E,(R=[{key:"getIndent",value:function(){return this.indent.repeat(this.indentTypes.length)}},{key:"increaseTopLevel",value:function(){this.indentTypes.push(t)}},{key:"increaseBlockLevel",value:function(){this.indentTypes.push("block-level")}},{key:"decreaseTopLevel",value:function(){var E;this.indentTypes.length>0&&(E=this.indentTypes)[E.length-1]===t&&this.indentTypes.pop()}},{key:"decreaseBlockLevel",value:function(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===t;);}},{key:"resetIndentation",value:function(){this.indentTypes=[]}}])&&C(T.prototype,R),E}();!function(E){E.WORD="WORD",E.STRING="STRING",E.RESERVED_KEYWORD="RESERVED_KEYWORD",E.RESERVED_LOGICAL_OPERATOR="RESERVED_LOGICAL_OPERATOR",E.RESERVED_DEPENDENT_CLAUSE="RESERVED_DEPENDENT_CLAUSE",E.RESERVED_BINARY_COMMAND="RESERVED_BINARY_COMMAND",E.RESERVED_COMMAND="RESERVED_COMMAND",E.OPERATOR="OPERATOR",E.BLOCK_START="BLOCK_START",E.BLOCK_END="BLOCK_END",E.LINE_COMMENT="LINE_COMMENT",E.BLOCK_COMMENT="BLOCK_COMMENT",E.NUMBER="NUMBER",E.PLACEHOLDER="PLACEHOLDER"}(L||(L={}));var r="[".concat("​","\\s]"),n=function(E){return function(T){return(null==T?void 0:T.type)===E.type&&new RegExp("^".concat(r,"*").concat(E.value).concat(r,"*$"),"iu").test(null==T?void 0:T.value)}},o={AS:n({value:"AS",type:L.RESERVED_KEYWORD}),AND:n({value:"AND",type:L.RESERVED_LOGICAL_OPERATOR}),BETWEEN:n({value:"BETWEEN",type:L.RESERVED_KEYWORD}),CASE:n({value:"CASE",type:L.BLOCK_START}),CAST:n({value:"CAST",type:L.RESERVED_KEYWORD}),BY:n({value:"BY",type:L.RESERVED_KEYWORD}),END:n({value:"END",type:L.BLOCK_END}),FROM:n({value:"FROM",type:L.RESERVED_COMMAND}),LATERAL:n({value:"LATERAL",type:L.RESERVED_DEPENDENT_CLAUSE}),LIMIT:n({value:"LIMIT",type:L.RESERVED_COMMAND}),SELECT:n({value:"SELECT",type:L.RESERVED_COMMAND}),SET:n({value:"SET",type:L.RESERVED_COMMAND}),TABLE:n({value:"TABLE",type:L.RESERVED_KEYWORD}),WINDOW:n({value:"WINDOW",type:L.RESERVED_COMMAND}),WITH:n({value:"WITH",type:L.RESERVED_COMMAND})},D=function(E){return E&&(E.type===L.RESERVED_KEYWORD||E.type===L.RESERVED_LOGICAL_OPERATOR||E.type===L.RESERVED_DEPENDENT_CLAUSE||E.type===L.RESERVED_COMMAND||E.type===L.RESERVED_BINARY_COMMAND)};function P(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}var U=function(){function E(T){!function(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}(this,E),this.level=0,this.lineWidth=T}var T,R;return T=E,(R=[{key:"beginIfPossible",value:function(E,T){0===this.level&&this.isInlineBlock(E,T)?this.level=1:this.level>0?this.level++:this.level=0}},{key:"end",value:function(){this.level--}},{key:"isActive",value:function(){return this.level>0}},{key:"isInlineBlock",value:function(E,T){for(var R=0,A=0,S=T;S<E.length;S++){var O=E[S];if(R+=O.value.length,this.isForbiddenToken(O))return!1;if(R>this.lineWidth)return!1;if(O.type!==L.BLOCK_START||o.CASE(O)){if(O.type===L.BLOCK_END&&0==--A)return!0}else A++}return!1}},{key:"isForbiddenToken",value:function(E){var T=E.type,R=E.value;return T===L.RESERVED_COMMAND||T===L.RESERVED_LOGICAL_OPERATOR||T===L.BLOCK_COMMENT||";"===R||o.CASE({type:T,value:R})}}])&&P(T.prototype,R),E}();function M(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}var i,a,s,G,c=function(){function E(T){!function(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}(this,E),this.params=T,this.index=0}var T,R;return T=E,(R=[{key:"get",value:function(E){var T=E.key,R=E.value;return this.params?T?this.params[T]:this.params[this.index++]:R}}])&&M(T.prototype,R),E}();function l(E){return function(E){if(Array.isArray(E))return H(E)}(E)||B(E)||u(E)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(E,T){if(E){if("string"==typeof E)return H(E,T);var R=Object.prototype.toString.call(E).slice(8,-1);return"Object"===R&&E.constructor&&(R=E.constructor.name),"Map"===R||"Set"===R?Array.from(E):"Arguments"===R||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R)?H(E,T):void 0}}function B(E){if("undefined"!=typeof Symbol&&null!=E[Symbol.iterator]||null!=E["@@iterator"])return Array.from(E)}function H(E,T){(null==T||T>E.length)&&(T=E.length);for(var R=0,A=new Array(T);R<T;R++)A[R]=E[R];return A}function f(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}!function(E){E.standard="standard",E.tenSpaceLeft="tenSpaceLeft",E.tenSpaceRight="tenSpaceRight"}(i||(i={})),function(E){E.always="always",E.never="never",E.lineWidth="lineWidth"}(a||(a={})),function(E){E.always="always",E.never="never",E.select="select"}(s||(s={})),function(E){E.before="before",E.after="after",E.tabular="tabular"}(G||(G={}));var F=function(){function E(T){!function(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}(this,E),this.cfg=T,this.cfg.tenSpace=this.cfg.keywordPosition===i.tenSpaceLeft||this.cfg.keywordPosition===i.tenSpaceRight,this.newline=T.newline,this.currentNewline=!0,this.lineWidth=T.lineWidth,this.indentation=new _(this.cfg.indent),this.inlineBlock=new U(this.lineWidth),this.params=new c(this.cfg.params),this.previousReservedToken={},this.withinSelect=!1,this.tokens=[],this.index=-1}var T,R;return T=E,R=[{key:"tokenizer",value:function(){throw new Error("tokenizer() not implemented by subclass")}},{key:"tokenOverride",value:function(E){return E}},{key:"format",value:function(E){this.tokens=this.tokenizer().tokenize(E);var T=this.getFormattedQueryFromTokens();return this.postFormat(T).replace(/^\n*/,"").trimEnd()}},{key:"postFormat",value:function(E){return this.cfg.tabulateAlias&&(E=this.formatAliasPositions(E)),this.cfg.commaPosition!==G.after&&(E=this.formatCommaPositions(E)),E}},{key:"formatCommaPositions",value:function(E){for(var T=this,R=E.split("\n"),A=[],S=0;S<R.length;S++)R[S].match(/.*,$/)&&function(){for(var E=[R[S]];R[S++].match(/.*,$/);)E.push(R[S]);if(T.cfg.commaPosition===G.tabular){E=E.map((function(E){return E.replace(/,$/,"")}));var O=N(E);E=E.map((function(T,R){return R<E.length-1?T+" ".repeat(O-T.length)+",":T}))}else if(T.cfg.commaPosition===G.before){var I=T.cfg.indent.includes("\t");E=E.map((function(E){return E.replace(/,$/,"")}));var e=T.tokenizer().WHITESPACE_REGEX;E=E.map((function(E,R){if(!R)return E;var A=E.match(new RegExp("^"+e));return(A?A[1].replace(new RegExp((I?"\t":T.cfg.indent)+"$"),""):"")+(I?" ":T.cfg.indent).replace(/ {2}$/,", ")+E.trimStart()}))}A=[].concat(l(A),l(E))}(),A.push(R[S]);return A.join("\n")}},{key:"formatAliasPositions",value:function(E){for(var T=E.split("\n"),R=[],A=0;A<T.length;A++)T[A].match(/^\s*SELECT/i)&&"continue"===function(){var E=[];if(T[A].match(/.*,$/))E=[T[A]];else{if(R.push(T[A]),T[A].match(/^\s*SELECT\s+.+(?!,$)/i))return"continue";E.push(T[++A])}for(;T[A++].match(/.*,$/);)E.push(T[A]);var S=E.map((function(E){return E.split(/(?<=[^\s]+) (AS )?(?=[^\s]+,?$)/i)})).map((function(E){return{precedingText:E[0],alias:E.length>1?E[E.length-1]:void 0,as:3===E.length?E[1]:void 0}})),O=N(S.map((function(E){return E.precedingText.replace(/\s*,\s*$/,"")})));E=S.map((function(E){var T=E.precedingText,R=E.as,A=E.alias;return T+(A?" ".repeat(O-T.length+1)+(null!=R?R:"")+A:"")})),R=[].concat(l(R),l(E))}()||R.push(T[A]);return R.join("\n")}},{key:"getFormattedQueryFromTokens",value:function(){var E="";for(this.index=0;this.index<this.tokens.length;this.index++){var T=this.tokenOverride(this.tokens[this.index]);D(T)&&(this.previousReservedToken=T,T.type!==L.RESERVED_KEYWORD&&(T=this.tenSpacedToken(T)),T.type===L.RESERVED_COMMAND&&(this.withinSelect=o.SELECT(T))),T.type===L.LINE_COMMENT?E=this.formatLineComment(T,E):T.type===L.BLOCK_COMMENT?E=this.formatBlockComment(T,E):T.type===L.RESERVED_COMMAND?(this.currentNewline=this.checkNewline(this.index),E=this.formatCommand(T,E)):T.type===L.RESERVED_BINARY_COMMAND?E=this.formatBinaryCommand(T,E):T.type===L.RESERVED_DEPENDENT_CLAUSE?E=this.formatDependentClause(T,E):T.type===L.RESERVED_LOGICAL_OPERATOR?E=this.formatLogicalOperator(T,E):T.type===L.RESERVED_KEYWORD?(E=this.formatKeyword(T,E),this.previousReservedToken=T):E=T.type===L.BLOCK_START?this.formatBlockStart(T,E):T.type===L.BLOCK_END?this.formatBlockEnd(T,E):T.type===L.PLACEHOLDER?this.formatPlaceholder(T,E):T.type===L.OPERATOR?this.formatOperator(T,E):this.formatWord(T,E)}return E.replace(new RegExp("​","ugim")," ")}},{key:"formatWord",value:function(E,T){var R,A,S,O,I=this.tokenLookBehind(),N=this.tokenLookAhead(),e={type:L.RESERVED_KEYWORD,value:this.cfg.uppercase?"AS":"as"},C=this.cfg.aliasAs===s.always&&E.type===L.WORD&&")"===(null==I?void 0:I.value),t=this.cfg.aliasAs!==s.never&&this.withinSelect&&E.type===L.WORD&&(o.END(I)||((null==I?void 0:I.type)===L.WORD||(null==I?void 0:I.type)===L.NUMBER)&&(","===(null==N?void 0:N.value)||function(E){return E&&(E.type===L.RESERVED_COMMAND||E.type===L.RESERVED_BINARY_COMMAND)}(N))),_=this.cfg.aliasAs===s.never&&this.withinSelect&&o.CAST(this.previousReservedToken)&&o.AS(N)&&((null===(R=this.tokenLookAhead(2))||void 0===R?void 0:R.type)===L.WORD||(null===(A=this.tokenLookAhead(2))||void 0===A?void 0:A.type)===L.RESERVED_KEYWORD)&&")"===(null===(S=this.tokenLookAhead(3))||void 0===S?void 0:S.value),r=this.cfg.aliasAs===s.never&&o.WITH(I)&&("("===(null==N?void 0:N.value)||o.AS(N)&&"("===(null===(O=this.tokenLookAhead(2))||void 0===O?void 0:O.value)),n=this.cfg.aliasAs===s.never&&(o.TABLE(I)||(null==I?void 0:I.value.endsWith("TABLE")))&&(o.WITH(N)||o.AS(N)&&o.WITH(this.tokenLookAhead(2))),D=T;return(C||t)&&(D=this.formatWithSpaces(e,D)),D=this.formatWithSpaces(E,D),(r||n||_)&&(D=this.formatWithSpaces(e,D)),D}},{key:"checkNewline",value:function(E){var T=this.tokens.slice(E+1),R=T.slice(0,T.length?T.findIndex((function(E){var T=E.type,R=E.value;return T===L.RESERVED_COMMAND||T===L.RESERVED_BINARY_COMMAND||";"===R})):void 0);if(this.newline===a.always||this.withinSelect&&R.some((function(E){var T=E.type,R=E.value;return T===L.BLOCK_START&&R.length>1})))return!0;if(this.newline===a.never)return!1;var A=R.reduce((function(E,T){var R=T.type;return","!==T.value||E.inParen?R===L.BLOCK_START?Object.assign(Object.assign({},E),{inParen:!0}):R===L.BLOCK_END?Object.assign(Object.assign({},E),{inParen:!1}):E:Object.assign(Object.assign({},E),{count:E.count+1})}),{count:1,inParen:!1}).count,S="".concat(this.tokens[E].whitespaceBefore).concat(this.tokens[E].value," ").concat(R.map((function(E){var T=E.value;return","===T?T+" ":T})).join("")).length;return this.newline===a.lineWidth?S>this.lineWidth:!!Number.isNaN(this.newline)||A>this.newline||S>this.lineWidth}},{key:"formatLineComment",value:function(E,T){return this.addNewline(T+this.show(E))}},{key:"formatBlockComment",value:function(E,T){return this.addNewline(this.addNewline(T)+this.indentComment(E.value))}},{key:"indentComment",value:function(E){return E.replace(/\n[\t ]*/g,"\n"+this.indentation.getIndent()+" ")}},{key:"formatCommand",value:function(E,T){var R,A;return this.indentation.decreaseTopLevel(),T=this.addNewline(T),this.cfg.tenSpace?"("!==(null===(R=this.tokenLookAhead())||void 0===R?void 0:R.value)&&this.indentation.increaseTopLevel():"("===(null===(A=this.tokenLookAhead())||void 0===A?void 0:A.value)&&o.FROM(E)||this.indentation.increaseTopLevel(),T+=this.equalizeWhitespace(this.show(E)),this.currentNewline&&!this.cfg.tenSpace?T=this.addNewline(T):T+=" ",T}},{key:"formatBinaryCommand",value:function(E,T){var R=/JOIN/i.test(E.value);return R&&!this.cfg.tenSpace||this.indentation.decreaseTopLevel(),T=this.addNewline(T)+this.equalizeWhitespace(this.show(E)),R?T+" ":this.addNewline(T)}},{key:"formatKeyword",value:function(E,T){var R,A;return o.AS(E)&&(this.cfg.aliasAs===s.never||this.cfg.aliasAs===s.select&&")"===(null===(R=this.tokenLookBehind())||void 0===R?void 0:R.value)&&!this.withinSelect&&"("!==(null===(A=this.tokenLookAhead())||void 0===A?void 0:A.value))?T:this.formatWithSpaces(E,T)}},{key:"formatDependentClause",value:function(E,T){return this.addNewline(T)+this.equalizeWhitespace(this.show(E))+" "}},{key:"formatOperator",value:function(E,T){var R;return","===E.value?this.formatComma(E,T):";"===E.value?this.formatQuerySeparator(E,T):["$","["].includes(E.value)?this.formatWithSpaces(E,T,"before"):[":","]"].includes(E.value)?this.formatWithSpaces(E,T,"after"):[".","{","}","`"].includes(E.value)||this.cfg.denseOperators&&(null===(R=this.tokenLookBehind())||void 0===R?void 0:R.type)!==L.RESERVED_COMMAND?this.formatWithoutSpaces(E,T):this.formatWithSpaces(E,T)}},{key:"formatLogicalOperator",value:function(E,T){return o.AND(E)&&o.BETWEEN(this.tokenLookBehind(2))?this.formatWithSpaces(E,T):(this.cfg.tenSpace&&this.indentation.decreaseTopLevel(),this.cfg.breakBeforeBooleanOperator?(this.currentNewline?this.addNewline(T):T)+this.equalizeWhitespace(this.show(E))+" ":(T+=this.show(E),this.currentNewline?this.addNewline(T):T))}},{key:"equalizeWhitespace",value:function(E){return E.replace(/[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]+/g," ")}},{key:"formatBlockStart",value:function(E,T){var R,A;if(o.CASE(E))T=this.formatWithSpaces(E,T);else{var O=[L.BLOCK_START,L.LINE_COMMENT,L.OPERATOR];0!==(null===(R=E.whitespaceBefore)||void 0===R?void 0:R.length)||O.includes(null===(A=this.tokenLookBehind())||void 0===A?void 0:A.type)?this.cfg.parenOptions.openParenNewline||(T=T.trimEnd()+" "):T=S(T),T+=this.show(E),this.inlineBlock.beginIfPossible(this.tokens,this.index)}return this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),o.CASE(E)&&this.newline!==a.always||(T=this.addNewline(T))),T}},{key:"formatBlockEnd",value:function(E,T){return this.inlineBlock.isActive()?(this.inlineBlock.end(),o.END(E)?this.formatWithSpaces(E,T):this.formatWithSpaces(E,T,"after")):(this.indentation.decreaseBlockLevel(),T=this.cfg.tenSpace?this.addNewline(T)+this.cfg.indent:this.cfg.parenOptions.closeParenNewline?this.addNewline(T):T.trimEnd()+" ",this.formatWithSpaces(E,T))}},{key:"formatPlaceholder",value:function(E,T){return T+this.params.get(E)+" "}},{key:"formatComma",value:function(E,T){return T=S(T)+this.show(E)+" ",this.inlineBlock.isActive()||o.LIMIT(this.previousReservedToken)?T:this.currentNewline?this.addNewline(T):T}},{key:"formatWithoutSpaces",value:function(E,T){return S(T)+this.show(E)}},{key:"formatWithSpaces",value:function(E,T){var R=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"both",A="after"===R?S(T):T,O="before"===R?"":" ";return A+this.show(E)+O}},{key:"formatQuerySeparator",value:function(E,T){return this.indentation.resetIndentation(),T=S(T),this.cfg.semicolonNewline&&(T+="\n",this.cfg.tenSpace&&(T+=this.cfg.indent)),T+this.show(E)+"\n".repeat(this.cfg.linesBetweenQueries+1)}},{key:"show",value:function(E){return D(E)||E.type===L.BLOCK_START||E.type===L.BLOCK_END?this.cfg.uppercase?E.value.toUpperCase():E.value.toLowerCase():E.value}},{key:"addNewline",value:function(E){return(E=S(E)).endsWith("\n")||(E+="\n"),E+this.indentation.getIndent()}},{key:"tenSpacedToken",value:function(E){var T,R=function(E){var T=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9;return"​".repeat(Math.max(T-E.length,0))};if(this.cfg.tenSpace){var A=E.value,S=[];if(A.length>=10&&A.includes(" ")){var O=function(E){if(Array.isArray(E))return E}(T=A.split(" "))||B(T)||u(T)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}();A=O[0],S=O.slice(1)}this.cfg.keywordPosition===i.tenSpaceLeft?A+=R(A):A=R(A)+A,E.value=A+[""].concat(l(S)).join(" ")}return E}},{key:"tokenLookBehind",value:function(){var E=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.tokens[this.index-E]}},{key:"tokenLookAhead",value:function(){var E=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;return this.tokens[this.index+E]}}],R&&f(T.prototype,R),E}(),Y=function(E){var T=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(0===E.length)return new RegExp("^\b$","u");var R=I(E).join("|").replace(/ /g,"\\s+");return new RegExp("^(".concat(R,")(?![").concat(O(T),"]+)\\b"),"iu")},p={"``":"((`[^`]*($|`))+)","{}":"((\\{[^\\}]*($|\\}))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'(("[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","x''":"((x'[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","U&''":"((U&'[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)",'U&""':'((U&"[^"\\\\]*(?:\\\\.[^"\\\\]*)*("|$))+)',$$:"((?<tag>\\$\\w*\\$)[\\s\\S]*?(?:\\k<tag>|$))"},d=function(E){return E.map((function(E){return p[E]})).join("|")},y=function(E){return 1===E.length?O(E):"\\b"+E+"\\b"},V=function(E){return new RegExp("^("+E.map(y).join("|")+")","iu")},h=function(E,T){if(R=E,Array.isArray(R)&&0!==R.length){var R,A=E.map(O).join("|");return new RegExp("^((?:".concat(A,")(?:").concat(T,"))"),"u")}};function W(E,T,R){return T in E?Object.defineProperty(E,T,{value:R,enumerable:!0,configurable:!0,writable:!0}):E[T]=R,E}function m(E,T){(null==T||T>E.length)&&(T=E.length);for(var R=0,A=new Array(T);R<T;R++)A[R]=E[R];return A}function X(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}var v=/(?!)/,K=function(){function E(T){var R,A,S,N,e,C=this;!function(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}(this,E),this.matchToken=function(E){return function(T){return C.getTokenOnFirstMatch({input:T,type:E,regex:C.REGEX_MAP[E]})}},this.WHITESPACE_REGEX=/^([\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]+)/;var t,_,r,n,o=Object.values(null!==(A=T.specialWordChars)&&void 0!==A?A:{}).join("");this.REGEX_MAP=(W(R={},L.WORD,function(){var E,T,R,A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},S="[".concat(O(null!==(E=A.prefix)&&void 0!==E?E:""),"]*"),I="[".concat(O(null!==(T=A.suffix)&&void 0!==T?T:""),"]*"),N="\\p{Alphabetic}\\p{Mark}\\p{Decimal_Number}\\p{Connector_Punctuation}\\p{Join_Control}",e="".concat(O(null!==(R=A.any)&&void 0!==R?R:"")),C="\\[\\d\\]",L="\\[['\"][".concat(N,"]+['\"]\\]");return new RegExp("^((".concat(S,"([").concat(N).concat(e,"]+)").concat(I,")(").concat(C,"|").concat(L,")?)"),"u")}(T.specialWordChars)),W(R,L.STRING,(r=T.stringTypes,new RegExp("^("+d(r)+")","u"))),W(R,L.RESERVED_KEYWORD,Y(T.reservedKeywords,o)),W(R,L.RESERVED_DEPENDENT_CLAUSE,Y(null!==(S=T.reservedDependentClauses)&&void 0!==S?S:[],o)),W(R,L.RESERVED_LOGICAL_OPERATOR,Y(T.reservedLogicalOperators,o)),W(R,L.RESERVED_COMMAND,Y(T.reservedCommands,o)),W(R,L.RESERVED_BINARY_COMMAND,Y(T.reservedBinaryCommands,o)),W(R,L.OPERATOR,("+-/*%&|^><=.,;[]{}`:$",_=["<>","<=",">=","!="].concat(function(E){if(Array.isArray(E))return m(E)}(n=null!==(N=T.operators)&&void 0!==N?N:[])||function(E){if("undefined"!=typeof Symbol&&null!=E[Symbol.iterator]||null!=E["@@iterator"])return Array.from(E)}(n)||function(E,T){if(E){if("string"==typeof E)return m(E,T);var R=Object.prototype.toString.call(E).slice(8,-1);return"Object"===R&&E.constructor&&(R=E.constructor.name),"Map"===R||"Set"===R?Array.from(E):"Arguments"===R||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R)?m(E,T):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),new RegExp("^(".concat(I(_).map(O).join("|"),"|")+"[".concat("+-/*%&|^><=.,;[]{}`:$".split("").map(O).join(""),"])"),"u"))),W(R,L.BLOCK_START,V(T.blockStart)),W(R,L.BLOCK_END,V(T.blockEnd)),W(R,L.LINE_COMMENT,(t=T.lineCommentTypes,new RegExp("^((?:".concat(t.map((function(E){return O(E)})).join("|"),").*?)(?:\r\n|\r|\n|$)"),"u"))),W(R,L.BLOCK_COMMENT,/^(\/\*(?:(?![])[\s\S])*?(?:\*\/|$))/),W(R,L.NUMBER,/^((\x2D[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)?[0-9]+(\.[0-9]*)?([Ee][\+\x2D]?[0-9]+(\.[0-9]+)?)?|0x[0-9A-Fa-f]+|0b[01]+)/),W(R,L.PLACEHOLDER,v),R),this.INDEXED_PLACEHOLDER_REGEX=h(null!==(e=T.indexedPlaceholderTypes)&&void 0!==e?e:[],"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=h(T.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=h(T.namedPlaceholderTypes,d(T.stringTypes))}var T,R;return T=E,(R=[{key:"tokenize",value:function(E){for(var T,R=[];E.length;){var A=this.getWhitespace(E);(E=E.substring(A.length)).length&&(T=this.getNextToken(E,T),E=E.substring(T.value.length),R.push(Object.assign(Object.assign({},T),{whitespaceBefore:A})))}return R}},{key:"getWhitespace",value:function(E){var T=E.match(this.WHITESPACE_REGEX);return T?T[1]:""}},{key:"getNextToken",value:function(E,T){return this.matchToken(L.LINE_COMMENT)(E)||this.matchToken(L.BLOCK_COMMENT)(E)||this.matchToken(L.STRING)(E)||this.matchToken(L.BLOCK_START)(E)||this.matchToken(L.BLOCK_END)(E)||this.getPlaceholderToken(E)||this.matchToken(L.NUMBER)(E)||this.getReservedWordToken(E,T)||this.matchToken(L.WORD)(E)||this.matchToken(L.OPERATOR)(E)}},{key:"getPlaceholderToken",value:function(E){var T,R,A,S=this;return[{regex:null!==(T=this.IDENT_NAMED_PLACEHOLDER_REGEX)&&void 0!==T?T:v,parseKey:function(E){return E.slice(1)}},{regex:null!==(R=this.STRING_NAMED_PLACEHOLDER_REGEX)&&void 0!==R?R:v,parseKey:function(E){return S.getEscapedPlaceholderKey({key:E.slice(2,-1),quoteChar:E.slice(-1)})}},{regex:null!==(A=this.INDEXED_PLACEHOLDER_REGEX)&&void 0!==A?A:v,parseKey:function(E){return E.slice(1)}}].reduce((function(T,R){var A=R.regex,O=R.parseKey,I=S.getTokenOnFirstMatch({input:E,regex:A,type:L.PLACEHOLDER});return I?Object.assign(Object.assign({},I),{key:O(I.value)}):T}),void 0)}},{key:"getEscapedPlaceholderKey",value:function(E){var T=E.key,R=E.quoteChar;return T.replace(new RegExp(O("\\"+R),"gu"),R)}},{key:"getReservedWordToken",value:function(E,T){var R=this;if(!T||![".","[","`",'"'].includes(T.value))return[L.RESERVED_COMMAND,L.RESERVED_BINARY_COMMAND,L.RESERVED_DEPENDENT_CLAUSE,L.RESERVED_LOGICAL_OPERATOR,L.RESERVED_KEYWORD].reduce((function(T,A){return T||R.matchToken(A)(E)}),void 0)}},{key:"getTokenOnFirstMatch",value:function(E){var T=E.input,R=E.type,A=E.regex,S=T.match(A);return S?{type:R,value:S[1]}:void 0}}])&&X(T.prototype,R),E}();function b(E){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(E){return typeof E}:function(E){return E&&"function"==typeof Symbol&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},b(E)}function g(E){return function(E){if(Array.isArray(E))return J(E)}(E)||function(E){if("undefined"!=typeof Symbol&&null!=E[Symbol.iterator]||null!=E["@@iterator"])return Array.from(E)}(E)||function(E,T){if(E){if("string"==typeof E)return J(E,T);var R=Object.prototype.toString.call(E).slice(8,-1);return"Object"===R&&E.constructor&&(R=E.constructor.name),"Map"===R||"Set"===R?Array.from(E):"Arguments"===R||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R)?J(E,T):void 0}}(E)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function J(E,T){(null==T||T>E.length)&&(T=E.length);for(var R=0,A=new Array(T);R<T;R++)A[R]=E[R];return A}function w(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}function k(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}function Q(E,T){return Q=Object.setPrototypeOf||function(E,T){return E.__proto__=T,E},Q(E,T)}function j(E,T){if(T&&("object"===b(T)||"function"==typeof T))return T;if(void 0!==T)throw new TypeError("Derived constructors may only return object or undefined");return function(E){if(void 0===E)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return E}(E)}function Z(E){return Z=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},Z(E)}var x=function(E){!function(E,T){if("function"!=typeof T&&null!==T)throw new TypeError("Super expression must either be null or a function");E.prototype=Object.create(T&&T.prototype,{constructor:{value:E,writable:!0,configurable:!0}}),T&&Q(E,T)}(I,E);var T,R,A,S,O=(A=I,S=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(E){return!1}}(),function(){var E,T=Z(A);if(S){var R=Z(this).constructor;E=Reflect.construct(T,arguments,R)}else E=T.apply(this,arguments);return j(this,E)});function I(){return w(this,I),O.apply(this,arguments)}return T=I,(R=[{key:"tokenizer",value:function(){return new K({reservedCommands:I.reservedCommands,reservedBinaryCommands:I.reservedBinaryCommands,reservedDependentClauses:I.reservedDependentClauses,reservedLogicalOperators:I.reservedLogicalOperators,reservedKeywords:I.fullReservedWords,stringTypes:I.stringTypes,blockStart:I.blockStart,blockEnd:I.blockEnd,indexedPlaceholderTypes:I.indexedPlaceholderTypes,namedPlaceholderTypes:I.namedPlaceholderTypes,lineCommentTypes:I.lineCommentTypes,specialWordChars:I.specialWordChars,operators:I.operators})}},{key:"tokenOverride",value:function(E){if((/ARRAY/i.test(E.value)||/STRUCT/i.test(E.value))&&"<"===this.tokenLookAhead().value){var T=0,R=E.value;do{var A=this.tokenLookAhead();">"===A.value||">>"===A.value?T-=A.value.length:"<"===A.value&&T++,R+=this.tokens.splice(this.index+1,1)[0].value}while(T>0);return Object.assign(Object.assign({},E),{value:R})}return E}}])&&k(T.prototype,R),I}(F);function $(E){return $="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(E){return typeof E}:function(E){return E&&"function"==typeof Symbol&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$(E)}function z(E){return function(E){if(Array.isArray(E))return q(E)}(E)||function(E){if("undefined"!=typeof Symbol&&null!=E[Symbol.iterator]||null!=E["@@iterator"])return Array.from(E)}(E)||function(E,T){if(E){if("string"==typeof E)return q(E,T);var R=Object.prototype.toString.call(E).slice(8,-1);return"Object"===R&&E.constructor&&(R=E.constructor.name),"Map"===R||"Set"===R?Array.from(E):"Arguments"===R||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R)?q(E,T):void 0}}(E)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(E,T){(null==T||T>E.length)&&(T=E.length);for(var R=0,A=new Array(T);R<T;R++)A[R]=E[R];return A}function EE(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}function TE(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}function RE(E,T){return RE=Object.setPrototypeOf||function(E,T){return E.__proto__=T,E},RE(E,T)}function AE(E,T){if(T&&("object"===$(T)||"function"==typeof T))return T;if(void 0!==T)throw new TypeError("Derived constructors may only return object or undefined");return function(E){if(void 0===E)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return E}(E)}function SE(E){return SE=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},SE(E)}x.reservedCommands=["SELECT","FROM","UNNEST","PIVOT","UNPIVOT","TABLESAMPLE SYSTEM","WHERE","GROUP BY","HAVING","ORDER BY","QUALIFY","WINDOW","LIMIT","OFFSET","WITH","OMIT RECORD IF","INSERT","INSERT INTO","VALUES","DELETE","TRUNCATE TABLE","UPDATE","MERGE","MERGE INTO","SET SCHEMA","CREATE SCHEMA","CREATE TABLE","CREATE TABLE LIKE","CREATE TABLE COPY","CREATE SNAPSHOT TABLE","CREATE TABLE CLONE","CREATE VIEW","CREATE MATERIALIZED VIEW","CREATE EXTERNAL TABLE","CREATE FUNCTION","CREATE TABLE FUNCTION","CREATE PROCEDURE","CREATE ROW ACCESS POLICY","ALTER SCHEMA SET OPTIONS","ALTER TABLE SET OPTIONS","ALTER TABLE ADD COLUMN","ALTER TABLE RENAME TO","ALTER TABLE DROP COLUMN","ALTER COLUMN SET OPTIONS","ALTER COLUMN DROP NOT NULL","ALTER COLUMN SET DATA TYPE","ALTER VIEW SET OPTIONS","ALTER MATERIALIZED VIEW SET OPTIONS","DROP SCHEMA","DROP TABLE","DROP SNAPSHOT TABLE","DROP EXTERNAL TABLE","DROP VIEW","DROP MATERIALIZED VIEW","DROP FUNCTION","DROP TABLE FUNCTION","DROP PROCEDURE","DROP ROW ACCESS POLICY","GRANT","REVOKE","CREATE CAPACITY","CREATE RESERVATION","CREATE ASSIGNMENT","DROP CAPACITY","DROP RESERVATION","DROP ASSIGNMENT","DECLARE","SET","EXECUTE IMMEDIATE","LOOP","END LOOP","REPEAT","END REPEAT","WHILE","END WHILE","BREAK","LEAVE","CONTINUE","ITERATE","FOR","END FOR","BEGIN","BEGIN TRANSACTION","COMMIT TRANSACTION","ROLLBACK TRANSACTION","RAISE","RETURN","CALL","ASSERT","EXPORT DATA"],x.reservedBinaryCommands=["INTERSECT","INTERSECT ALL","INTERSECT DISTINCT","UNION","UNION ALL","UNION DISTINCT","EXCEPT","EXCEPT ALL","EXCEPT DISTINCT","JOIN","INNER JOIN","LEFT JOIN","LEFT OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","FULL JOIN","FULL OUTER JOIN","CROSS JOIN"],x.reservedDependentClauses=["ON","WHEN","THEN","ELSE","USING"],x.reservedLogicalOperators=["AND","OR"],x.fullReservedWords=A([].concat(g(Object.values({aead:["KEYS.NEW_KEYSET","KEYS.ADD_KEY_FROM_RAW_BYTES","AEAD.DECRYPT_BYTES","AEAD.DECRYPT_STRING","AEAD.ENCRYPT","KEYS.KEYSET_CHAIN","KEYS.KEYSET_FROM_JSON","KEYS.KEYSET_TO_JSON","KEYS.ROTATE_KEYSET","KEYS.KEYSET_LENGTH"],aggregateAnalytic:["ANY_VALUE","ARRAY_AGG","AVG","CORR","COUNT","COUNTIF","COVAR_POP","COVAR_SAMP","MAX","MIN","ST_CLUSTERDBSCAN","STDDEV_POP","STDDEV_SAMP","STRING_AGG","SUM","VAR_POP","VAR_SAMP"],aggregate:["ANY_VALUE","ARRAY_AGG","ARRAY_CONCAT_AGG","AVG","BIT_AND","BIT_OR","BIT_XOR","COUNT","COUNTIF","LOGICAL_AND","LOGICAL_OR","MAX","MIN","STRING_AGG","SUM"],approximateAggregate:["APPROX_COUNT_DISTINCT","APPROX_QUANTILES","APPROX_TOP_COUNT","APPROX_TOP_SUM"],array:["ARRAY","ARRAY_CONCAT","ARRAY_LENGTH","ARRAY_TO_STRING","GENERATE_ARRAY","GENERATE_DATE_ARRAY","GENERATE_TIMESTAMP_ARRAY","ARRAY_REVERSE","OFFSET","SAFE_OFFSET","ORDINAL","SAFE_ORDINAL"],bitwise:["BIT_COUNT"],conversion:["CASE","PARSE_BIGNUMERIC","PARSE_NUMERIC","SAFE_CAST"],date:["CURRENT_DATE","EXTRACT","DATE","DATE_ADD","DATE_SUB","DATE_DIFF","DATE_TRUNC","DATE_FROM_UNIX_DATE","FORMAT_DATE","LAST_DAY","PARSE_DATE","UNIX_DATE"],datetime:["CURRENT_DATETIME","DATETIME","EXTRACT","DATETIME_ADD","DATETIME_SUB","DATETIME_DIFF","DATETIME_TRUNC","FORMAT_DATETIME","LAST_DAY","PARSE_DATETIME"],debugging:["ERROR"],federatedQuery:["EXTERNAL_QUERY"],geography:["S2_CELLIDFROMPOINT","S2_COVERINGCELLIDS","ST_ANGLE","ST_AREA","ST_ASBINARY","ST_ASGEOJSON","ST_ASTEXT","ST_AZIMUTH","ST_BOUNDARY","ST_BOUNDINGBOX","ST_BUFFER","ST_BUFFERWITHTOLERANCE","ST_CENTROID","ST_CENTROID_AGG","ST_CLOSESTPOINT","ST_CLUSTERDBSCAN","ST_CONTAINS","ST_CONVEXHULL","ST_COVEREDBY","ST_COVERS","ST_DIFFERENCE","ST_DIMENSION","ST_DISJOINT","ST_DISTANCE","ST_DUMP","ST_DWITHIN","ST_ENDPOINT","ST_EQUALS","ST_EXTENT","ST_EXTERIORRING","ST_GEOGFROM","ST_GEOGFROMGEOJSON","ST_GEOGFROMTEXT","ST_GEOGFROMWKB","ST_GEOGPOINT","ST_GEOGPOINTFROMGEOHASH","ST_GEOHASH","ST_GEOMETRYTYPE","ST_INTERIORRINGS","ST_INTERSECTION","ST_INTERSECTS","ST_INTERSECTSBOX","ST_ISCOLLECTION","ST_ISEMPTY","ST_LENGTH","ST_MAKELINE","ST_MAKEPOLYGON","ST_MAKEPOLYGONORIENTED","ST_MAXDISTANCE","ST_NPOINTS","ST_NUMGEOMETRIES","ST_NUMPOINTS","ST_PERIMETER","ST_POINTN","ST_SIMPLIFY","ST_SNAPTOGRID","ST_STARTPOINT","ST_TOUCHES","ST_UNION","ST_UNION_AGG","ST_WITHIN","ST_X","ST_Y"],hash:["FARM_FINGERPRINT","MD5","SHA1","SHA256","SHA512"],hll:["HLL_COUNT.INIT","HLL_COUNT.MERGE","HLL_COUNT.MERGE_PARTIAL","HLL_COUNT.EXTRACT"],interval:["MAKE_INTERVAL","EXTRACT","JUSTIFY_DAYS","JUSTIFY_HOURS","JUSTIFY_INTERVAL"],json:["JSON_EXTRACT","JSON_QUERY","JSON_EXTRACT_SCALAR","JSON_VALUE","JSON_EXTRACT_ARRAY","JSON_QUERY_ARRAY","JSON_EXTRACT_STRING_ARRAY","JSON_VALUE_ARRAY","TO_JSON_STRING"],math:["ABS","SIGN","IS_INF","IS_NAN","IEEE_DIVIDE","RAND","SQRT","POW","POWER","EXP","LN","LOG","LOG10","GREATEST","LEAST","DIV","SAFE_DIVIDE","SAFE_MULTIPLY","SAFE_NEGATE","SAFE_ADD","SAFE_SUBTRACT","MOD","ROUND","TRUNC","CEIL","CEILING","FLOOR","COS","COSH","ACOS","ACOSH","SIN","SINH","ASIN","ASINH","TAN","TANH","ATAN","ATANH","ATAN2","RANGE_BUCKET"],navigation:["FIRST_VALUE","LAST_VALUE","NTH_VALUE","LEAD","LAG","PERCENTILE_CONT","PERCENTILE_DISC"],net:["NET.IP_FROM_STRING","NET.SAFE_IP_FROM_STRING","NET.IP_TO_STRING","NET.IP_NET_MASK","NET.IP_TRUNC","NET.IPV4_FROM_INT64","NET.IPV4_TO_INT64","NET.HOST","NET.PUBLIC_SUFFIX","NET.REG_DOMAIN"],numbering:["RANK","DENSE_RANK","PERCENT_RANK","CUME_DIST","NTILE","ROW_NUMBER"],security:["SESSION_USER"],statisticalAggregate:["CORR","COVAR_POP","COVAR_SAMP","STDDEV_POP","STDDEV_SAMP","STDDEV","VAR_POP","VAR_SAMP","VARIANCE"],string:["ASCII","BYTE_LENGTH","CHAR_LENGTH","CHARACTER_LENGTH","CHR","CODE_POINTS_TO_BYTES","CODE_POINTS_TO_STRING","CONCAT","CONTAINS_SUBSTR","ENDS_WITH","FORMAT","FROM_BASE32","FROM_BASE64","FROM_HEX","INITCAP","INSTR","LEFT","LENGTH","LPAD","LOWER","LTRIM","NORMALIZE","NORMALIZE_AND_CASEFOLD","OCTET_LENGTH","REGEXP_CONTAINS","REGEXP_EXTRACT","REGEXP_EXTRACT_ALL","REGEXP_INSTR","REGEXP_REPLACE","REGEXP_SUBSTR","REPLACE","REPEAT","REVERSE","RIGHT","RPAD","RTRIM","SAFE_CONVERT_BYTES_TO_STRING","SOUNDEX","SPLIT","STARTS_WITH","STRPOS","SUBSTR","SUBSTRING","TO_BASE32","TO_BASE64","TO_CODE_POINTS","TO_HEX","TRANSLATE","TRIM","UNICODE","UPPER"],time:["CURRENT_TIME","TIME","EXTRACT","TIME_ADD","TIME_SUB","TIME_DIFF","TIME_TRUNC","FORMAT_TIME","PARSE_TIME"],timestamp:["CURRENT_TIMESTAMP","EXTRACT","STRING","TIMESTAMP","TIMESTAMP_ADD","TIMESTAMP_SUB","TIMESTAMP_DIFF","TIMESTAMP_TRUNC","FORMAT_TIMESTAMP","PARSE_TIMESTAMP","TIMESTAMP_SECONDS","TIMESTAMP_MILLIS","TIMESTAMP_MICROS","UNIX_SECONDS","UNIX_MILLIS","UNIX_MICROS"],uuid:["GENERATE_UUID"],conditional:["COALESCE","IF","IFNULL","NULLIF"],legacyAggregate:["AVG","BIT_AND","BIT_OR","BIT_XOR","CORR","COUNT","COVAR_POP","COVAR_SAMP","EXACT_COUNT_DISTINCT","FIRST","GROUP_CONCAT","GROUP_CONCAT_UNQUOTED","LAST","MAX","MIN","NEST","NTH","QUANTILES","STDDEV","STDDEV_POP","STDDEV_SAMP","SUM","TOP","UNIQUE","VARIANCE","VAR_POP","VAR_SAMP"],legacyBitwise:["BIT_COUNT"],legacyCasting:["BOOLEAN","BYTES","CAST","FLOAT","HEX_STRING","INTEGER","STRING"],legacyComparison:["COALESCE","GREATEST","IFNULL","IS_INF","IS_NAN","IS_EXPLICITLY_DEFINED","LEAST","NVL"],legacyDatetime:["CURRENT_DATE","CURRENT_TIME","CURRENT_TIMESTAMP","DATE","DATE_ADD","DATEDIFF","DAY","DAYOFWEEK","DAYOFYEAR","FORMAT_UTC_USEC","HOUR","MINUTE","MONTH","MSEC_TO_TIMESTAMP","NOW","PARSE_UTC_USEC","QUARTER","SEC_TO_TIMESTAMP","SECOND","STRFTIME_UTC_USEC","TIME","TIMESTAMP","TIMESTAMP_TO_MSEC","TIMESTAMP_TO_SEC","TIMESTAMP_TO_USEC","USEC_TO_TIMESTAMP","UTC_USEC_TO_DAY","UTC_USEC_TO_HOUR","UTC_USEC_TO_MONTH","UTC_USEC_TO_WEEK","UTC_USEC_TO_YEAR","WEEK","YEAR"],legacyIp:["FORMAT_IP","PARSE_IP","FORMAT_PACKED_IP","PARSE_PACKED_IP"],legacyJson:["JSON_EXTRACT","JSON_EXTRACT_SCALAR"],legacyMath:["ABS","ACOS","ACOSH","ASIN","ASINH","ATAN","ATANH","ATAN2","CEIL","COS","COSH","DEGREES","EXP","FLOOR","LN","LOG","LOG2","LOG10","PI","POW","RADIANS","RAND","ROUND","SIN","SINH","SQRT","TAN","TANH"],legacyRegex:["REGEXP_MATCH","REGEXP_EXTRACT","REGEXP_REPLACE"],legacyString:["CONCAT","INSTR","LEFT","LENGTH","LOWER","LPAD","LTRIM","REPLACE","RIGHT","RPAD","RTRIM","SPLIT","SUBSTR","UPPER"],legacyTableWildcard:["TABLE_DATE_RANGE","TABLE_DATE_RANGE_STRICT","TABLE_QUERY"],legacyUrl:["HOST","DOMAIN","TLD"],legacyWindow:["AVG","COUNT","MAX","MIN","STDDEV","SUM","CUME_DIST","DENSE_RANK","FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","PERCENT_RANK","PERCENTILE_CONT","PERCENTILE_DISC","RANK","RATIO_TO_REPORT","ROW_NUMBER"],legacyMisc:["CURRENT_USER","EVERY","FROM_BASE64","HASH","FARM_FINGERPRINT","IF","POSITION","SHA1","SOME","TO_BASE64"],other:["BQ.JOBS.CANCEL","BQ.REFRESH_MATERIALIZED_VIEW"]}).reduce((function(E,T){return[].concat(g(E),g(T))}),[])),g(Object.values({keywords:["ALL","ANY","AS","ASC","ASSERT_ROWS_MODIFIED","AT","BETWEEN","BY","CAST","COLLATE","CONTAINS","CUBE","CURRENT","DEFAULT","DEFINE","DESC","DISTINCT","ENUM","ESCAPE","EXISTS","EXTRACT","FALSE","FOLLOWING","FOR","FULL","GROUPING","GROUPS","HASH","IF","IGNORE","IN","INTO","IS","LIKE","LOOKUP","NEW","NO","NOT","NULL","NULLS","OF","OVER","PARTITION","PRECEDING","PROTO","RANGE","RECURSIVE","RESPECT","ROLLUP","ROWS","SOME","TABLE","TO","TREAT","TRUE","UNBOUNDED","WITHIN"],datatypes:["ARRAY","BOOL","BYTES","DATE","DATETIME","GEOGRAPHY","INTERVAL","INT64","INT","SMALLINT","INTEGER","BIGINT","TINYINT","BYTEINT","NUMERIC","DECIMAL","BIGNUMERIC","BIGDECIMAL","FLOAT64","STRING","STRUCT","TIME","TIMEZONE"],stringFormat:["HEX","BASEX","BASE64M","ASCII","UTF-8","UTF8"],misc:["SAFE"]}).reduce((function(E,T){return[].concat(g(E),g(T))}),[])))),x.stringTypes=['""',"''","``"],x.blockStart=["(","CASE"],x.blockEnd=[")","END"],x.indexedPlaceholderTypes=["?"],x.namedPlaceholderTypes=[],x.lineCommentTypes=["--","#"],x.specialWordChars={any:"_@$-"},x.operators=[">>","<<","||"];var OE=function(E){!function(E,T){if("function"!=typeof T&&null!==T)throw new TypeError("Super expression must either be null or a function");E.prototype=Object.create(T&&T.prototype,{constructor:{value:E,writable:!0,configurable:!0}}),T&&RE(E,T)}(I,E);var T,R,A,S,O=(A=I,S=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(E){return!1}}(),function(){var E,T=SE(A);if(S){var R=SE(this).constructor;E=Reflect.construct(T,arguments,R)}else E=T.apply(this,arguments);return AE(this,E)});function I(){return EE(this,I),O.apply(this,arguments)}return T=I,(R=[{key:"tokenizer",value:function(){return new K({reservedCommands:I.reservedCommands,reservedBinaryCommands:I.reservedBinaryCommands,reservedDependentClauses:I.reservedDependentClauses,reservedLogicalOperators:I.reservedLogicalOperators,reservedKeywords:I.fullReservedWords,stringTypes:I.stringTypes,blockStart:I.blockStart,blockEnd:I.blockEnd,indexedPlaceholderTypes:I.indexedPlaceholderTypes,namedPlaceholderTypes:I.namedPlaceholderTypes,lineCommentTypes:I.lineCommentTypes,specialWordChars:I.specialWordChars,operators:I.operators})}}])&&TE(T.prototype,R),I}(F);function IE(E){return IE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(E){return typeof E}:function(E){return E&&"function"==typeof Symbol&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},IE(E)}function NE(E){return function(E){if(Array.isArray(E))return eE(E)}(E)||function(E){if("undefined"!=typeof Symbol&&null!=E[Symbol.iterator]||null!=E["@@iterator"])return Array.from(E)}(E)||function(E,T){if(E){if("string"==typeof E)return eE(E,T);var R=Object.prototype.toString.call(E).slice(8,-1);return"Object"===R&&E.constructor&&(R=E.constructor.name),"Map"===R||"Set"===R?Array.from(E):"Arguments"===R||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R)?eE(E,T):void 0}}(E)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function eE(E,T){(null==T||T>E.length)&&(T=E.length);for(var R=0,A=new Array(T);R<T;R++)A[R]=E[R];return A}function CE(E,T){if(!(E instanceof T))throw new TypeError("Cannot call a class as a function")}function LE(E,T){for(var R=0;R<T.length;R++){var A=T[R];A.enumerable=A.enumerable||!1,A.configurable=!0,"value"in A&&(A.writable=!0),Object.defineProperty(E,A.key,A)}}function tE(E,T){return tE=Object.setPrototypeOf||function(E,T){return E.__proto__=T,E},tE(E,T)}function _E(E,T){if(T&&("object"===IE(T)||"function"==typeof T))return T;if(void 0!==T)throw new TypeError("Derived constructors may only return object or undefined");return function(E){if(void 0===E)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return E}(E)}function rE(E){return rE=Object.setPrototypeOf?Object.getPrototypeOf:function(E){return E.__proto__||Object.getPrototypeOf(E)},rE(E)}OE.reservedCommands=["ALLOCATE CURSOR","ALTER DATABASE","ALTER FUNCTION","ALTER INDEX","ALTER MASK","ALTER PERMISSION","ALTER PROCEDURE","ALTER SEQUENCE","ALTER STOGROUP","ALTER TABLE","ALTER TABLESPACE","ALTER TRIGGER","ALTER TRUSTED CONTEXT","ALTER VIEW","ASSOCIATE LOCATORS","BEGIN DECLARE SECTION","CALL","CLOSE","COMMENT","COMMIT","CONNECT","CREATE ALIAS","CREATE AUXILIARY TABLE","CREATE DATABASE","CREATE FUNCTION","CREATE GLOBAL TEMPORARY TABLE","CREATE INDEX","CREATE LOB TABLESPACE","CREATE MASK","CREATE PERMISSION","CREATE PROCEDURE","CREATE ROLE","CREATE SEQUENCE","CREATE STOGROUP","CREATE SYNONYM","CREATE TABLE","CREATE TABLESPACE","CREATE TRIGGER","CREATE TRUSTED CONTEXT","CREATE TYPE","CREATE VARIABLE","CREATE VIEW","DECLARE CURSOR","DECLARE GLOBAL TEMPORARY TABLE","DECLARE STATEMENT","DECLARE TABLE","DECLARE VARIABLE","DELETE","DESCRIBE CURSOR","DESCRIBE INPUT","DESCRIBE OUTPUT","DESCRIBE PROCEDURE","DESCRIBE TABLE","DROP","END DECLARE SECTION","EXCHANGE","EXECUTE","EXECUTE IMMEDIATE","EXPLAIN","FETCH","FREE LOCATOR","GET DIAGNOSTICS","GRANT","HOLD LOCATOR","INCLUDE","INSERT","LABEL","LOCK TABLE","MERGE","OPEN","PREPARE","REFRESH","RELEASE","RELEASE SAVEPOINT","RENAME","REVOKE","ROLLBACK","SAVEPOINT","SELECT","SELECT INTO","SET CONNECTION","SET","SET CURRENT ACCELERATOR","SET CURRENT APPLICATION COMPATIBILITY","SET CURRENT APPLICATION ENCODING SCHEME","SET CURRENT DEBUG MODE","SET CURRENT DECFLOAT ROUNDING MODE","SET CURRENT DEGREE","SET CURRENT EXPLAIN MODE","SET CURRENT GET_ACCEL_ARCHIVE","SET CURRENT LOCALE LC_CTYPE","SET CURRENT MAINTAINED TABLE TYPES FOR OPTIMIZATION","SET CURRENT OPTIMIZATION HINT","SET CURRENT PACKAGE PATH","SET CURRENT PACKAGESET","SET CURRENT PRECISION","SET CURRENT QUERY ACCELERATION","SET CURRENT QUERY ACCELERATION WAITFORDATA","SET CURRENT REFRESH AGE","SET CURRENT ROUTINE VERSION","SET CURRENT RULES","SET CURRENT SQLID","SET CURRENT TEMPORAL BUSINESS_TIME","SET CURRENT TEMPORAL SYSTEM_TIME","SET ENCRYPTION PASSWORD","SET PATH","SET SCHEMA","SET SESSION TIME ZONE","SIGNAL","TRUNCATE","UPDATE","VALUES","VALUES INTO","WHENEVER","ADD","ALTER COLUMN","AFTER","DROP TABLE","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","LIMIT","OFFSET","ORDER BY","SELECT","SET CURRENT SCHEMA","WHERE","WITH"],OE.reservedBinaryCommands=["INTERSECT","INTERSECT ALL","INTERSECT DISTINCT","UNION","UNION ALL","UNION DISTINCT","EXCEPT","EXCEPT ALL","EXCEPT DISTINCT","JOIN","INNER JOIN","LEFT JOIN","LEFT OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","FULL JOIN","FULL OUTER JOIN","CROSS JOIN","NATURAL JOIN"],OE.reservedDependentClauses=["ON","WHEN","THEN","ELSE","ELSEIF"],OE.reservedLogicalOperators=["AND","OR"],OE.fullReservedWords=A([].concat(z(Object.values({aggregate:["ARRAY_AGG","AVG","CORR","CORRELATION","COUNT","COUNT_BIG","COVAR_POP","COVARIANCE","COVAR","COVAR_SAMP","COVARIANCE_SAMP","CUME_DIST","GROUPING","LISTAGG","MAX","MEDIAN","MIN","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_ICPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","STDDEV_POP","STDDEV","STDDEV_SAMP","SUM","VAR_POP","VARIANCE","VAR","VAR_SAMP","VARIANCE_SAMP","XMLAGG"],scalar:["ABS","ABSVAL","ACOS","ADD_DAYS","ADD_MONTHS","ARRAY_DELETE","ARRAY_FIRST","ARRAY_LAST","ARRAY_NEXT","ARRAY_PRIOR","ARRAY_TRIM","ASCII","ASCII_CHR","ASCII_STR","ASCIISTR","ASIN","ATAN","ATANH","ATAN2","BIGINT","BINARY","BITAND","BITANDNOT","BITOR","BITXOR","BITNOT","BLOB","BTRIM","CARDINALITY","CCSID_ENCODING","CEILING","CEIL","CHAR","CHAR9","CHARACTER_LENGTH","CHAR_LENGTH","CHR","CLOB","COALESCE","COLLATION_KEY","COMPARE_DECFLOAT","CONCAT","CONTAINS","COS","COSH","DATE","DAY","DAYOFMONTH","DAYOFWEEK","DAYOFWEEK_ISO","DAYOFYEAR","DAYS","DAYS_BETWEEN","DBCLOB","DECFLOAT","DECFLOAT_FORMAT","DECFLOAT_SORTKEY","DECIMAL","DEC","DECODE","DECRYPT_BINARY","DECRYPT_BIT","DECRYPT_CHAR","DECRYPT_DB","DECRYPT_DATAKEY_BIGINT","DECRYPT_DATAKEY_BIT","DECRYPT_DATAKEY_CLOB","DECRYPT_DATAKEY_DBCLOB","DECRYPT_DATAKEY_DECIMAL","DECRYPT_DATAKEY_INTEGER","DECRYPT_DATAKEY_VARCHAR","DECRYPT_DATAKEY_VARGRAPHIC","DEGREES","DIFFERENCE","DIGITS","DOUBLE_PRECISION","DOUBLE","DSN_XMLVALIDATE","EBCDIC_CHR","EBCDIC_STR","ENCRYPT_DATAKEY","ENCRYPT_TDES","EXP","EXTRACT","FLOAT","FLOOR","GENERATE_UNIQUE","GENERATE_UNIQUE_BINARY","GETHINT","GETVARIABLE","GRAPHIC","GREATEST","HASH","HASH_CRC32","HASH_MD5","HASH_SHA1","HASH_SHA256","HEX","HOUR","IDENTITY_VAL_LOCAL","IFNULL","INSERT","INSTR","INTEGER","INT","JULIAN_DAY","LAST_DAY","LCASE","LEAST","LEFT","LENGTH","LN","LOCATE","LOCATE_IN_STRING","LOG10","LOWER","LPAD","LTRIM","MAX","MAX_CARDINALITY","MICROSECOND","MIDNIGHT_SECONDS","MIN","MINUTE","MOD","MONTH","MONTHS_BETWEEN","MQREAD","MQREADCLOB","MQRECEIVE","MQRECEIVECLOB","MQSEND","MULTIPLY_ALT","NEXT_DAY","NEXT_MONTH","NORMALIZE_DECFLOAT","NORMALIZE_STRING","NULLIF","NVL","OVERLAY","PACK","POSITION","POSSTR","POWER","POW","QUANTIZE","QUARTER","RADIANS","RAISE_ERROR","RANDOM","RAND","REAL","REGEXP_COUNT","REGEXP_INSTR","REGEXP_LIKE","REGEXP_REPLACE","REGEXP_SUBSTR","REPEAT","REPLACE","RID","RIGHT","ROUND","ROUND_TIMESTAMP","ROWID","RPAD","RTRIM","SCORE","SECOND","SIGN","SIN","SINH","SMALLINT","SOUNDEX","SOAPHTTPC","SOAPHTTPV","SOAPHTTPNC","SOAPHTTPNV","SPACE","SQRT","STRIP","STRLEFT","STRPOS","STRRIGHT","SUBSTR","SUBSTRING","TAN","TANH","TIME","TIMESTAMP","TIMESTAMPADD","TIMESTAMPDIFF","TIMESTAMP_FORMAT","TIMESTAMP_ISO","TIMESTAMP_TZ","TO_CHAR","TO_CLOB","TO_DATE","TO_NUMBER","TOTALORDER","TO_TIMESTAMP","TRANSLATE","TRIM","TRIM_ARRAY","TRUNCATE","TRUNC","TRUNC_TIMESTAMP","UCASE","UNICODE","UNICODE_STR","UNISTR","UPPER","VALUE","VARBINARY","VARCHAR","VARCHAR9","VARCHAR_BIT_FORMAT","VARCHAR_FORMAT","VARGRAPHIC","VERIFY_GROUP_FOR_USER","VERIFY_ROLE_FOR_USER","VERIFY_TRUSTED_CONTEXT_ROLE_FOR_USER","WEEK","WEEK_ISO","WRAP","XMLATTRIBUTES","XMLCOMMENT","XMLCONCAT","XMLDOCUMENT","XMLELEMENT","XMLFOREST","XMLMODIFY","XMLNAMESPACES","XMLPARSE","XMLPI","XMLQUERY","XMLSERIALIZE","XMLTEXT","XMLXSROBJECTID","XSLTRANSFORM","YEAR"],table:["ADMIN_TASK_LIST","ADMIN_TASK_OUTPUT","ADMIN_TASK_STATUS","BLOCKING_THREADS","MQREADALL","MQREADALLCLOB","MQRECEIVEALL","MQRECEIVEALLCLOB","XMLTABLE"],row:["UNPACK"],olap:["FIRST_VALUE","LAG","LAST_VALUE","LEAD","NTH_VALUE","NTILE","RATIO_TO_REPORT"]}).reduce((function(E,T){return[].concat(z(E),z(T))}),[])),z(Object.values({standard:["ALL","ALLOCATE","ALLOW","ALTERAND","ANY","AS","ARRAY","ARRAY_EXISTS","ASENSITIVE","ASSOCIATE","ASUTIME","AT","AUDIT","AUX","AUXILIARY","BEFORE","BEGIN","BETWEEN","BUFFERPOOL","BY","CAPTURE","CASCADED","CASE","CAST","CCSID","CHARACTER","CHECK","CLONE","CLUSTER","COLLECTION","COLLID","COLUMN","CONDITION","CONNECTION","CONSTRAINT","CONTENT","CONTINUE","CREATE","CUBE","CURRENT","CURRENT_DATE","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_SCHEMA","CURRENT_TIME","CURRENT_TIMESTAMP","CURRVAL","CURSOR","DATA","DATABASE","DBINFO","DECLARE","DEFAULT","DESCRIPTOR","DETERMINISTIC","DISABLE","DISALLOW","DISTINCT","DO","DOCUMENT","DSSIZE","DYNAMIC","EDITPROC","ENCODING","ENCRYPTION","ENDING","END-EXEC","ERASE","ESCAPE","EXCEPTION","EXISTS","EXIT","EXTERNAL","FENCED","FIELDPROC","FINAL","FIRST","FOR","FREE","FULL","FUNCTION","GENERATED","GET","GLOBAL","GOTO