mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-05-05 22:07:10 -04:00
22 lines
208 KiB
JavaScript
22 lines
208 KiB
JavaScript
![]() |
import{_ as gE}from"./chunk-6deddc2e.js";import{_ as vE}from"./chunk-606d31d4.js";import{T as wE}from"./chunk-f1ca2155.js";import{d as QE,r as j,u as ZE,e as qE,c as kE,j as jE,D as zE,E as z,N as ET,q as p,m as V,l as EE,S as TT,F as RT,_ as AT}from"./chunk-449c23a2.js";import{e as ST,g as IT}from"./chunk-a740628f.js";import{_ as NT}from"./chunk-4515d3e7.js";import"./chunk-9a43cce8.js";import"./chunk-340feaf0.js";import"./chunk-a3974c29.js";import"./chunk-27eb844d.js";import"./chunk-767079b6.js";import"./chunk-55ba3dae.js";import"../entries/src_pages_Home.page.16dc467b.js";import"./chunk-cf010ec4.js";import"./chunk-ee54c1e8.js";import"./chunk-baa77311.js";import"./chunk-78769b89.js";import"./chunk-2749dac9.js";import"./chunk-6d336811.js";let N;(function(T){T.QUOTED_IDENTIFIER="QUOTED_IDENTIFIER",T.IDENTIFIER="IDENTIFIER",T.STRING="STRING",T.VARIABLE="VARIABLE",T.RESERVED_KEYWORD="RESERVED_KEYWORD",T.RESERVED_FUNCTION_NAME="RESERVED_FUNCTION_NAME",T.RESERVED_PHRASE="RESERVED_PHRASE",T.RESERVED_SET_OPERATION="RESERVED_SET_OPERATION",T.RESERVED_CLAUSE="RESERVED_CLAUSE",T.RESERVED_SELECT="RESERVED_SELECT",T.RESERVED_JOIN="RESERVED_JOIN",T.ARRAY_IDENTIFIER="ARRAY_IDENTIFIER",T.ARRAY_KEYWORD="ARRAY_KEYWORD",T.CASE="CASE",T.END="END",T.WHEN="WHEN",T.ELSE="ELSE",T.THEN="THEN",T.LIMIT="LIMIT",T.BETWEEN="BETWEEN",T.AND="AND",T.OR="OR",T.XOR="XOR",T.OPERATOR="OPERATOR",T.COMMA="COMMA",T.ASTERISK="ASTERISK",T.DOT="DOT",T.OPEN_PAREN="OPEN_PAREN",T.CLOSE_PAREN="CLOSE_PAREN",T.LINE_COMMENT="LINE_COMMENT",T.BLOCK_COMMENT="BLOCK_COMMENT",T.NUMBER="NUMBER",T.NAMED_PARAMETER="NAMED_PARAMETER",T.QUOTED_PARAMETER="QUOTED_PARAMETER",T.NUMBERED_PARAMETER="NUMBERED_PARAMETER",T.POSITIONAL_PARAMETER="POSITIONAL_PARAMETER",T.CUSTOM_PARAMETER="CUSTOM_PARAMETER",T.DELIMITER="DELIMITER",T.EOF="EOF"})(N||(N={}));const FE=T=>({type:N.EOF,raw:"«EOF»",text:"«EOF»",start:T}),f=FE(1/0),h=T=>E=>E.type===T.type&&E.text===T.text,m={ARRAY:h({text:"ARRAY",type:N.RESERVED_KEYWORD}),BY:h({text:"BY",type:N.RESERVED_KEYWORD}),SET:h({text:"SET",type:N.RESERVED_CLAUSE}),STRUCT:h({text:"STRUCT",type:N.RESERVED_KEYWORD}),WINDOW:h({text:"WINDOW",type:N.RESERVED_CLAUSE}),VALUES:h({text:"VALUES",type:N.RESERVED_CLAUSE})},cE=T=>T===N.RESERVED_KEYWORD||T===N.RESERVED_FUNCTION_NAME||T===N.RESERVED_PHRASE||T===N.RESERVED_CLAUSE||T===N.RESERVED_SELECT||T===N.RESERVED_SET_OPERATION||T===N.RESERVED_JOIN||T===N.ARRAY_KEYWORD||T===N.CASE||T===N.END||T===N.WHEN||T===N.ELSE||T===N.THEN||T===N.LIMIT||T===N.BETWEEN||T===N.AND||T===N.OR||T===N.XOR,OT=T=>T===N.AND||T===N.OR||T===N.XOR,O=T=>T.flatMap(eT),eT=T=>pE(CT(T)).map(E=>E.trim()),TE=/[^[\]{}]+/y,RE=/\{.*?\}/y,AE=/\[.*?\]/y,CT=T=>{let E=0;const R=[];for(;E<T.length;){TE.lastIndex=E;const A=TE.exec(T);A&&(R.push([A[0].trim()]),E+=A[0].length),AE.lastIndex=E;const C=AE.exec(T);if(C){const P=C[0].slice(1,-1).split("|").map(M=>M.trim());R.push(["",...P]),E+=C[0].length}RE.lastIndex=E;const D=RE.exec(T);if(D){const P=D[0].slice(1,-1).split("|").map(M=>M.trim());R.push(P),E+=D[0].length}if(!A&&!C&&!D)throw new Error(`Unbalanced parenthesis in: ${T}`)}return R},pE=([T,...E])=>T===void 0?[""]:pE(E).flatMap(R=>T.map(A=>A.trim()+" "+R.trim())),LT=T=>[...new Set(T)],$=T=>T[T.length-1],VE=T=>T.sort((E,R)=>R.length-E.length||E.localeCompare(R)),uE=T=>T.reduce((E,R)=>Math.max(E,R.length),0),WE=T=>T.replace(/\s+/gu," "),U=T=>LT(Object.values(T).flat()),g=T=>/\n/.test(T),_T=U({keywords:["ALL","AND","ANY","ARRAY","AS","ASC","ASSERT_ROWS_MODIFIED","AT","BETWEEN","BY","CASE","CAST","COLLATE","CONTAINS","CREATE","CROSS","CUBE","CURRENT","DEFAULT","DEFINE","DESC","DISTINCT","ELSE","END","ENUM","ESCAPE","EXCEPT","EXCLUDE","EXISTS","EXTRACT","FALSE","FETCH","FOLLOWING","FOR","FROM","FULL","GROUP","GROUPING","GROUPS","HASH","HAVING","IF","IGNORE","IN","INNER","INTERSECT","INTERVAL","INTO","IS","JOIN","LATERAL","LEFT","LIKE","LIMIT","LOOKUP","MERGE","NATURAL","NEW","NO","NOT","NULL","NULLS","OF","ON","OR","ORDER","OUTER","OVER","PARTITION","PRECEDING","PROTO","RANGE","RECURSIVE","RESPECT","RIGHT","ROLLUP","ROWS","SELECT","SET","SOME","STRUCT","TABLE
|
||
|
|\r|
|
||
|
|$)`,"uy"),oE=(T,E=[])=>{const R=T==="open"?0:1,A=["()",...E].map(C=>C[R]);return X(A.map(F).join("|"))},xA=T=>X(`${VE(T).map(F).join("|")}`),JA=({rest:T,dashes:E})=>T||E?`(?![${T||""}${E?"-":""}])`:"",u=(T,E={})=>{if(T.length===0)return/^\b$/u;const R=JA(E),A=VE(T).map(F).join("|").replace(/ /gu,"\\s+");return new RegExp(`(?:${A})${R}\\b`,"iuy")},v=(T,E)=>{if(!T.length)return;const R=T.map(F).join("|");return X(`(?:${R})(?:${E})`)},gA=()=>{const T={"<":">","[":"]","(":")","{":"}"},E="{left}(?:(?!{right}').)*?{right}",R=Object.entries(T).map(([P,M])=>E.replace(/{left}/g,F(P)).replace(/{right}/g,F(M))),A=F(Object.keys(T).join(""));return`[Qq]'(?:${String.raw`(?<tag>[^\s${A}])(?:(?!\k<tag>').)*?\k<tag>`}|${R.join("|")})'`},GE={"``":"(?:`[^`]*`)+","[]":String.raw`(?:\[[^\]]*\])(?:\][^\]]*\])*`,'""-qq':String.raw`(?:"[^"]*")+`,'""-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")`,'""-qq-bs':String.raw`(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,'""-raw':String.raw`(?:"[^"]*")`,"''-qq":String.raw`(?:'[^']*')+`,"''-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')`,"''-qq-bs":String.raw`(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,"''-raw":String.raw`(?:'[^']*')`,$$:String.raw`(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,"'''..'''":String.raw`'''[^\\]*?(?:\\.[^\\]*?)*?'''`,'""".."""':String.raw`"""[^\\]*?(?:\\.[^\\]*?)*?"""`,"{}":String.raw`(?:\{[^\}]*\})`,"q''":gA()},mE=T=>typeof T=="string"?GE[T]:"regex"in T?T.regex:bA(T)+GE[T.quote],vA=T=>X(T.map(E=>"regex"in E?E.regex:mE(E)).join("|")),XE=T=>T.map(mE).join("|"),HE=T=>X(XE(T)),wA=(T={})=>X(hE(T)),hE=({first:T,rest:E,dashes:R,allowFirstCharNumber:A}={})=>{const C="\\p{Alphabetic}\\p{Mark}_",D="\\p{Decimal_Number}",P=F(T??""),M=F(E??""),a=A?`[${C}${D}${P}][${C}${D}${M}]*`:`[${C}${P}][${C}${D}${M}]*`;return R?yA(a):a};function dE(T,E){const R=T.slice(0,E).split(/\n/);return{line:R.length,col:R[R.length-1].length+1}}class QA{input="";index=0;constructor(E){this.rules=E}tokenize(E){this.input=E,this.index=0;const R=[];let A;for(;this.index<this.input.length;){const C=this.getWhitespace();if(this.index<this.input.length){if(A=this.getNextToken(),!A)throw this.createParseError();R.push({...A,precedingWhitespace:C})}}return R}createParseError(){const E=this.input.slice(this.index,this.index+10),{line:R,col:A}=dE(this.input,this.index);return new Error(`Parse error: Unexpected "${E}" at line ${R} column ${A}`)}getWhitespace(){iE.lastIndex=this.index;const E=iE.exec(this.input);if(E)return this.index+=E[0].length,E[0]}getNextToken(){for(const E of this.rules){const R=this.match(E);if(R)return R}}match(E){E.regex.lastIndex=this.index;const R=E.regex.exec(this.input);if(R){const A=R[0],C={type:E.type,raw:A,text:E.text?E.text(A):A,start:this.index};return E.key&&(C.key=E.key(A)),this.index+=A.length,C}}}const lE=/\/\*/uy,ZA=/([^/*]|\*[^/]|\/[^*])+/uy,qA=/\*\//uy;class kA{lastIndex=0;exec(E){let R="",A,C=0;if(A=this.matchSection(lE,E))R+=A,C++;else return null;for(;C>0;)if(A=this.matchSection(lE,E))R+=A,C++;else if(A=this.matchSection(qA,E))R+=A,C--;else if(A=this.matchSection(ZA,E))R+=A;else return null;return[R]}matchSection(E,R){E.lastIndex=this.lastIndex;const A=E.exec(R);return A&&(this.lastIndex+=A[0].length),A?A[0]:null}}class jA{constructor(E){this.cfg=E,this.rulesBeforeParams=this.buildRulesBeforeParams(E),this.rulesAfterParams=this.buildRulesAfterParams(E)}tokenize(E,R){const A=[...this.rulesBeforeParams,...this.buildParamRules(this.cfg,R),...this.rulesAfterParams],C=new QA(A).tokenize(E);return this.cfg.postProcess?this.cfg.postProcess(C):C}buildRulesBeforeParams(E){return this.validRules([{type:N.BLOCK_COMMENT,regex:E.nestedBlockComments?new kA:/(\/\*[^]*?\*\/)/uy},{type:N.LINE_COMMENT,regex:$A(E.lineCommentTypes??["--"])},{type:N.QUOTED_IDENTIFIER,regex:HE(E.identTypes)},{type:N.NUMBER,regex:/(?:0x[0-9a-fA-F]+|0b[01]+|(?:-\s*)?[0-9]+(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+(?:\.[0-9]+)?)?)(?!\w)/uy},{type:N.RESERVED_PHRASE,regex:u(E.reservedPhrases??[],E.identChars),text:l},{type:N.CASE,regex:/CASE\b/iuy,text:l},{type:N.END,regex:/END\b/iuy,text:l},{type:N.BETWEEN,regex:/BETWEEN\b/iuy,text:l},{type:N.LIMIT,regex:E.reservedClauses.inc
|
||
|
`&&(this.line+=1,this.lastLineBreak=this.index),{value:I}}},D.prototype.save=function(){return{line:this.line,col:this.index-this.lastLineBreak}},D.prototype.formatError=function(I,e){var L=this.buffer;if(typeof L=="string"){var _=L.split(`
|
||
|
`).slice(Math.max(0,this.line-5),this.line),n=L.indexOf(`
|
||
|
`,this.index);n===-1&&(n=L.length);var r=this.index-this.lastLineBreak,G=String(this.line).length;return e+=" at line "+this.line+" col "+r+`:
|
||
|
|
||
|
`,e+=_.map(function(Y,o){return i(this.line-_.length+o+1,G)+" "+Y},this).join(`
|
||
|
`),e+=`
|
||
|
`+i("",G+r)+`^
|
||
|
`,e}else return e+" at index "+(this.index-1);function i(Y,o){var c=String(Y);return Array(o-c.length+1).join(" ")+c}};function P(I,e,L){if(I instanceof C)var _=I,L=e;else var _=C.fromCompiled(I,e);this.grammar=_,this.options={keepHistory:!1,lexer:_.lexer||new D};for(var n in L||{})this.options[n]=L[n];this.lexer=this.options.lexer,this.lexerState=void 0;var r=new A(_,0);this.table=[r],r.wants[_.start]=[],r.predict(_.start),r.process(),this.current=0}P.fail={},P.prototype.feed=function(I){var e=this.lexer;e.reset(I,this.lexerState);for(var L;;){try{if(L=e.next(),!L)break}catch(k){var G=new A(this.grammar,this.current+1);this.table.push(G);var _=new Error(this.reportLexerError(k));throw _.offset=this.current,_.token=k.token,_}var n=this.table[this.current];this.options.keepHistory||delete this.table[this.current-1];var r=this.current+1,G=new A(this.grammar,r);this.table.push(G);for(var i=L.text!==void 0?L.text:L.value,Y=e.constructor===D?L.value:L,o=n.scannable,c=o.length;c--;){var K=o[c],y=K.rule.symbols[K.dot];if(y.test?y.test(Y):y.type?y.type===L.type:y.literal===i){var JE=K.nextState({data:Y,token:L,isToken:!0,reference:r-1});G.states.push(JE)}}if(G.process(),G.states.length===0){var _=new Error(this.reportError(L));throw _.offset=this.current,_.token=L,_}this.options.keepHistory&&(n.lexerState=e.save()),this.current++}return n&&(this.lexerState=e.save()),this.results=this.finish(),this},P.prototype.reportLexerError=function(I){var e,L,_=I.token;return _?(e="input "+JSON.stringify(_.text[0])+" (lexer error)",L=this.lexer.formatError(_,"Syntax error")):(e="input (lexer error)",L=I.message),this.reportErrorCommon(L,e)},P.prototype.reportError=function(I){var e=(I.type?I.type+" token: ":"")+JSON.stringify(I.value!==void 0?I.value:I),L=this.lexer.formatError(I,"Syntax error");return this.reportErrorCommon(L,e)},P.prototype.reportErrorCommon=function(I,e){var L=[];L.push(I);var _=this.table.length-2,n=this.table[_],r=n.states.filter(function(i){var Y=i.rule.symbols[i.dot];return Y&&typeof Y!="string"});if(r.length===0)L.push("Unexpected "+e+`. I did not expect any more input. Here is the state of my parse table:
|
||
|
`),this.displayStateStack(n.states,L);else{L.push("Unexpected "+e+`. Instead, I was expecting to see one of the following:
|
||
|
`);var G=r.map(function(i){return this.buildFirstStateStack(i,[])||[i]},this);G.forEach(function(i){var Y=i[0],o=Y.rule.symbols[Y.dot],c=this.getSymbolDisplay(o);L.push("A "+c+" based on:"),this.displayStateStack(i,L)},this)}return L.push(""),L.join(`
|
||
|
`)},P.prototype.displayStateStack=function(I,e){for(var L,_=0,n=0;n<I.length;n++){var r=I[n],G=r.rule.toString(r.dot);G===L?_++:(_>0&&e.push(" ^ "+_+" more lines identical to this"),_=0,e.push(" "+G)),L=G}},P.prototype.getSymbolDisplay=function(I){return M(I)},P.prototype.buildFirstStateStack=function(I,e){if(e.indexOf(I)!==-1)return null;if(I.wantedBy.length===0)return[I];var L=I.wantedBy[0],_=[I].concat(e),n=this.buildFirstStateStack(L,_);return n===null?null:[I].concat(n)},P.prototype.save=function(){var I=this.table[this.current];return I.lexerState=this.lexerState,I},P.prototype.restore=function(I){var e=I.index;this.current=e,this.table[e]=I,this.table.splice(e+1),this.lexerState=I.lexerState,this.results=this.finish()},P.prototype.rewind=function(I){if(!this.options.keepHistory)throw new Error("set option `keepHistory` to enable rewinding");this.restore(this.table[I])},P.prototype.finish=function(){var I=[],e=this.grammar.start,L=this.table[this.table.length-1];return L.states.forEach(function(_){_.rule.name===e&&_.dot===_.rule.symbols.length&&_.reference===0&&_.data!==P.fail&&I.push(_)}),I.map(function(_){return _.data})};function M(I){var e=typeof I;if(e==="string")return I;if(e==="object"){if(I.literal)return JSON.stringify(I.literal);if(I instanceof RegExp)return"character matching "+I;if(I.type)return I.type+" token";if(I.test)return"token matching "+String(I.test);throw new Error("Unknown symbol type: "+I)}}function a(I){var e=typeof I;if(e==="string")return I;if(e==="object"){if(I.literal)return JSON.stringify(I.literal);if(I instanceof RegExp)return I.toString();if(I.type)return"%"+I.type;if(I.test)return"<"+String(I.test)+">";throw new Error("Unknown symbol type: "+I)}}return{Parser:P,Grammar:C,Rule:E}})})(fE);var AS=fE.exports;const SS=IT(AS);function IS(T){return T.map(NS).map(OS).map(eS).map(CS)}const NS=(T,E,R)=>{if(cE(T.type)){const A=LS(R,E);if(A&&A.text===".")return{...T,type:N.IDENTIFIER,text:T.raw}}return T},OS=(T,E,R)=>{if(T.type===N.RESERVED_FUNCTION_NAME){const A=J(R,E);if(!A||!_S(A))return{...T,type:N.RESERVED_KEYWORD}}return T},eS=(T,E,R)=>{if(T.type===N.IDENTIFIER){const A=J(R,E);if(A&&KE(A))return{...T,type:N.ARRAY_IDENTIFIER}}return T},CS=(T,E,R)=>{if(T.type===N.RESERVED_KEYWORD){const A=J(R,E);if(A&&KE(A))return{...T,type:N.ARRAY_KEYWORD}}return T},LS=(T,E)=>J(T,E,-1),J=(T,E,R=1)=>{let A=1;for(;T[E+A*R]&&sS(T[E+A*R]);)A++;return T[E+A*R]},_S=T=>T.type===N.OPEN_PAREN&&T.text==="(",KE=T=>T.type===N.OPEN_PAREN&&T.text==="[",sS=T=>T.type===N.BLOCK_COMMENT||T.type===N.LINE_COMMENT;class yE{index=0;tokens=[];input="";constructor(E){this.tokenize=E}reset(E,R){this.input=E,this.index=0,this.tokens=this.tokenize(E)}next(){return this.tokens[this.index++]}save(){}formatError(E){const{line:R,col:A}=dE(this.input,E.start);return`Parse error at token: ${E.text} at line ${R} column ${A}`}has(E){return E in N}}let s;(function(T){T.statement="statement",T.clause="clause",T.set_operation="set_operation",T.function_call="function_call",T.array_subscript="array_subscript",T.property_access="property_access",T.parenthesis="parenthesis",T.between_predicate="between_predicate",T.case_expression="case_expression",T.case_when="case_when",T.case_else="case_else",T.limit_clause="limit_clause",T.all_columns_asterisk="all_columns_asterisk",T.literal="literal",T.identifier="identifier",T.keyword="keyword",T.parameter="parameter",T.operator="operator",T.comma="comma",T.line_comment="line_comment",T.block_comment="block_comment"})(s||(s={}));function w(T){return T[0]}const t=new yE(T=>[]),d=([[T]])=>T,H=T=>({type:s.keyword,tokenType:T.type,text:T.text,raw:T.raw}),B=(T,{leading:E,trailing:R})=>(E!=null&&E.length&&(T={...T,leadingComments:E}),R!=null&&R.length&&(T={...T,trailingComments:R}),T),tS=(T,{leading:E,trailing:R})=>{if(E!=null&&E.length){const[A,...C]=T;T=[B(A,{leading:E}),...C]}if(R!=null&&R.length){const A=T.slice(0,-1),C=T[T.length-1];T=[...A,B(C,{trailing:R})]}return T},PS={Lexer:t,ParserRules:[{name:"main$ebnf$1",symbols:[]},{name:"main$ebnf$1",symbols:["main$ebnf$1","statement"],postprocess:T=>T[0]
|
||
|
${JSON.stringify(P,void 0,2)}`)}}}const nS=/^\s+/u;function aS(T,E,R){return iS(T.split(`
|
||
|
`)).flatMap(A=>{if(A.length===1)return A;if(E==="tabular")return oS(A);if(E==="before")return HS(A,R);throw new Error(`Unexpected commaPosition: ${E}`)}).join(`
|
||
|
`)}function iS(T){const E=[];for(let R=0;R<T.length;R++){const A=[T[R]];for(;T[R].match(/.*,(\s*(--.*)?$)/);)R++,A.push(T[R]);E.push(A)}return E}function oS(T){const E=uE(YS(T))-1;return T.map((R,A)=>A===T.length-1?R:GS(R,E))}function GS(T,E){const[,R,A]=T.match(/^(.*?),(\s*--.*)?$/)||[],C=" ".repeat(E-R.length);return`${R}${C},${A??""}`}function HS(T,E){return BS(T).map((R,A)=>{if(A===0)return R;const[C]=R.match(nS)||[""];return lS(C,E)+E.replace(/ {2}$/,", ")+R.trimStart()})}function lS(T,E){return T.replace(new RegExp(E+"$"),"")}function BS(T){return T.map(E=>E.replace(/,(\s*(--.*)?$)/,"$1"))}function YS(T){return T.map(E=>E.replace(/\s*--.*/,""))}function FS(T){const E=T.split(`
|
||
|
`);let R=[];for(let A=0;A<E.length;A++){if(E[A].match(/^\s*SELECT/i)){let C=[];if(E[A].match(/.*,$/))C=[E[A]];else{if(R.push(E[A]),E[A].match(/^\s*SELECT\s+.+(?!,$)/i))continue;C.push(E[++A])}for(;E[A++].match(/.*,$/);)C.push(E[A]);const D=C.map(M=>({line:M,matches:M.match(/(^.*?\S) (AS )?(\S+,?$)/i)})).map(({line:M,matches:a})=>a?{precedingText:a[1],as:a[2],alias:a[3]}:{precedingText:M}),P=uE(D.map(({precedingText:M})=>M.replace(/\s*,\s*$/,"")));C=D.map(({precedingText:M,as:a,alias:I})=>M+(I?" ".repeat(P-M.length+1)+(a??"")+I:"")),R=[...R,...C]}R.push(E[A])}return R.join(`
|
||
|
`)}let S;(function(T){T[T.SPACE=0]="SPACE",T[T.NO_SPACE=1]="NO_SPACE",T[T.NO_NEWLINE=2]="NO_NEWLINE",T[T.NEWLINE=3]="NEWLINE",T[T.MANDATORY_NEWLINE=4]="MANDATORY_NEWLINE",T[T.INDENT=5]="INDENT",T[T.SINGLE_INDENT=6]="SINGLE_INDENT"})(S||(S={}));class bE{items=[];constructor(E){this.indentation=E}add(...E){for(const R of E)switch(R){case S.SPACE:this.items.push(S.SPACE);break;case S.NO_SPACE:this.trimHorizontalWhitespace();break;case S.NO_NEWLINE:this.trimWhitespace();break;case S.NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(S.NEWLINE);break;case S.MANDATORY_NEWLINE:this.trimHorizontalWhitespace(),this.addNewline(S.MANDATORY_NEWLINE);break;case S.INDENT:this.addIndentation();break;case S.SINGLE_INDENT:this.items.push(S.SINGLE_INDENT);break;default:this.items.push(R)}}trimHorizontalWhitespace(){for(;cS($(this.items));)this.items.pop()}trimWhitespace(){for(;pS($(this.items));)this.items.pop()}addNewline(E){if(this.items.length>0)switch($(this.items)){case S.NEWLINE:this.items.pop(),this.items.push(E);break;case S.MANDATORY_NEWLINE:break;default:this.items.push(E);break}}addIndentation(){for(let E=0;E<this.indentation.getLevel();E++)this.items.push(S.SINGLE_INDENT)}toString(){return this.items.map(E=>this.itemToString(E)).join("")}getLayoutItems(){return this.items}itemToString(E){switch(E){case S.SPACE:return" ";case S.NEWLINE:case S.MANDATORY_NEWLINE:return`
|
||
|
`;case S.SINGLE_INDENT:return this.indentation.getSingleIndent();default:return E}}}const cS=T=>T===S.SPACE||T===S.SINGLE_INDENT,pS=T=>T===S.SPACE||T===S.SINGLE_INDENT||T===S.NEWLINE;function VS(T,E){if(E==="standard")return T;let R=[];return T.length>=10&&T.includes(" ")&&([T,...R]=T.split(" ")),E==="tabularLeft"?T=T.padEnd(9," "):T=T.padStart(9," "),T+["",...R].join(" ")}function uS(T){return OT(T)||T===N.RESERVED_CLAUSE||T===N.RESERVED_SELECT||T===N.RESERVED_SET_OPERATION||T===N.RESERVED_JOIN||T===N.LIMIT}const Q="top-level",WS="block-level";class $E{indentTypes=[];constructor(E){this.indent=E}getSingleIndent(){return this.indent}getLevel(){return this.indentTypes.length}increaseTopLevel(){this.indentTypes.push(Q)}increaseBlockLevel(){this.indentTypes.push(WS)}decreaseTopLevel(){this.indentTypes.length>0&&$(this.indentTypes)===Q&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes.length>0&&this.indentTypes.pop()===Q;);}}class mS extends bE{length=0;trailingSpace=!1;constructor(E){super(new $E("")),this.expressionWidth=E}add(...E){if(E.forEach(R=>this.addToLength(R)),this.length>this.expressionWidth)throw new Z;super.add(...E)}addToLength(E){if(typeof E=="string")this.length+=E.length,this.trailingSpace=!1;else{if(E===S.MANDATORY_NEWLINE||E===S.NEWLINE)throw new Z;E===S.INDENT||E===S.SINGLE_INDENT||E===S.SPACE?this.trailingSpace||(this.length++,this.trailingSpace=!0):(E===S.NO_NEWLINE||E===S.NO_SPACE)&&this.trailingSpace&&(this.trailingSpace=!1,this.length--)}}}class Z extends Error{}class x{inline=!1;nodes=[];index=-1;constructor({cfg:E,dialectCfg:R,params:A,layout:C,inline:D=!1}){this.cfg=E,this.dialectCfg=R,this.inline=D,this.params=A,this.layout=C}format(E){for(this.nodes=E,this.index=0;this.index<this.nodes.length;this.index++)this.formatNode(this.nodes[this.index]);return this.layout}formatNode(E){this.formatComments(E.leadingComments),this.formatNodeWithoutComments(E),this.formatComments(E.trailingComments)}formatNodeWithoutComments(E){switch(E.type){case s.function_call:return this.formatFunctionCall(E);case s.array_subscript:return this.formatArraySubscript(E);case s.property_access:return this.formatPropertyAccess(E);case s.parenthesis:return this.formatParenthesis(E);case s.between_predicate:return this.formatBetweenPredicate(E);case s.case_expression:return this.formatCaseExpression(E);case s.case_when:return this.formatCaseWhen(E);case s.case_else:return this.formatCaseElse(E);case s.clause:return this.formatClause(E);case s.set_operation:return this.formatSetOperation(E);case s.limit_clause:return this.formatLimitClause(E);case s.all_columns_asterisk:return this.formatAllColumnsAsterisk(E);case s.literal:return this.formatLiteral(E);case s.identifier:return this.formatIdentifier(E);case s.parameter:return this.formatParameter(E);case s.operator:return this.formatOperator(E);case s.comma:return this.formatComma(E);case s.line_comment:return this.formatLineComment(E);case s.block_comment:return this.formatBlockComment(E);case s.keyword:return this.formatKeywordNode(E)}}formatFunctionCall(E){this.withComments(E.nameKw,()=>{this.layout.add(this.showKw(E.nameKw))}),this.formatNode(E.parenthesis)}formatArraySubscript(E){this.withComments(E.array,()=>{this.layout.add(E.array.type===s.keyword?this.showKw(E.array):E.array.text)}),this.formatNode(E.parenthesis)}formatPropertyAccess(E){this.formatNode(E.object),this.layout.add(S.NO_SPACE,"."),this.formatNode(E.property)}formatParenthesis(E){const R=this.formatInlineExpression(E.children);R?(this.layout.add(E.openParen),this.layout.add(...R.getLayoutItems()),this.layout.add(S.NO_SPACE,E.closeParen,S.SPACE)):(this.layout.add(E.openParen,S.NEWLINE),b(this.cfg)?(this.layout.add(S.INDENT),this.layout=this.formatSubExpression(E.children)):(this.layout.indentation.increaseBlockLevel(),this.layout.add(S.INDENT),this.layout=this.formatSubExpression(E.children),this.layout.indentation.decreaseBlockLevel()),this.layout.add(S.NEWLINE,S.INDENT,E.closeParen,S.SPACE))}formatBetweenPredicate(E){this.layout.add(this.showKw(E.betweenKw),S.SPACE),this.layout=this.forma
|
||
|
`.repeat(this.cfg.linesBetweenQueries+1))}formatStatement(E){const R=new x({cfg:this.cfg,dialectCfg:this.dialect.formatOptions,params:this.params,layout:new bE(new $E(YE(this.cfg)))}).format(E.children);return E.hasSemicolon&&(this.cfg.newlineBeforeSemicolon?R.add(S.NEWLINE,";"):R.add(S.NO_NEWLINE,";")),R.toString()}postFormat(E){return this.cfg.tabulateAlias&&(E=FS(E)),(this.cfg.commaPosition==="before"||this.cfg.commaPosition==="tabular")&&(E=aS(E,this.cfg.commaPosition,YE(this.cfg))),E}}class W extends Error{}function hS(T){if("multilineLists"in T)throw new W("multilineLists config is no more supported.");if("newlineBeforeOpenParen"in T)throw new W("newlineBeforeOpenParen config is no more supported.");if("newlineBeforeCloseParen"in T)throw new W("newlineBeforeCloseParen config is no more supported.");if("aliasAs"in T)throw new W("aliasAs config is no more supported.");if(T.expressionWidth<=0)throw new W(`expressionWidth config must be positive number. Received ${T.expressionWidth} instead.`);if(T.commaPosition==="before"&&T.useTabs)throw new W("commaPosition: before does not work when tabs are used for indentation.");return T.params&&!dS(T.params)&&console.warn('WARNING: All "params" option values should be strings.'),T}function dS(T){return(T instanceof Array?T:Object.values(T)).every(R=>typeof R=="string")}const xE={bigquery:"bigquery",db2:"db2",hive:"hive",mariadb:"mariadb",mysql:"mysql",n1ql:"n1ql",plsql:"plsql",postgresql:"postgresql",redshift:"redshift",spark:"spark",sqlite:"sqlite",sql:"sql",trino:"trino",transactsql:"transactsql",tsql:"transactsql",singlestoredb:"singlestoredb",snowflake:"snowflake"},fS=Object.keys(xE),KS={tabWidth:2,useTabs:!1,keywordCase:"preserve",indentStyle:"standard",logicalOperatorNewline:"before",tabulateAlias:!1,commaPosition:"after",expressionWidth:50,linesBetweenQueries:1,denseOperators:!1,newlineBeforeSemicolon:!1},yS=(T,E={})=>{if(typeof E.language=="string"&&!fS.includes(E.language))throw new W(`Unsupported SQL dialect: ${E.language}`);const R=xE[E.language||"sql"];return bS(T,{...E,dialect:fA[R]})},bS=(T,{dialect:E,...R})=>{if(typeof T!="string")throw new Error("Invalid query argument. Expected string, instead got "+typeof T);const A=hS({...KS,...R});return new XS(zA(E),A).format(T)},$S={style:{flex:"0 0 100%"}},xS=QE({__name:"sql-prettify",setup(T){const E=j(),R=ZE(),A=qE({keywordCase:"upper",useTabs:!1,language:"sql",indentStyle:"standard",tabulateAlias:!0}),C=j("select field1,field2,field3 from my_table where my_condition;"),D=kE(()=>yS(C.value,A));return(P,M)=>{const a=vE,I=gE,e=NT;return jE(),zE(RT,null,[z("div",$S,[z("div",{style:{"max-width":"600px"},class:ET({"flex-col":p(R).isSmallScreen}),"mx-auto":"","mb-5":"",flex:"","gap-2":""},[V(a,{value:p(A).language,"onUpdate:value":M[0]||(M[0]=L=>p(A).language=L),"flex-1":"",label:"Dialect",options:[{label:"GCP BigQuery",value:"bigquery"},{label:"IBM DB2",value:"db2"},{label:"Apache Hive",value:"hive"},{label:"MariaDB",value:"mariadb"},{label:"MySQL",value:"mysql"},{label:"Couchbase N1QL",value:"n1ql"},{label:"Oracle PL/SQL",value:"plsql"},{label:"PostgreSQL",value:"postgresql"},{label:"Amazon Redshift",value:"redshift"},{label:"Spark",value:"spark"},{label:"Standard SQL",value:"sql"},{label:"sqlite",value:"sqlite"},{label:"SQL Server Transact-SQL",value:"tsql"}]},null,8,["value"]),V(a,{value:p(A).keywordCase,"onUpdate:value":M[1]||(M[1]=L=>p(A).keywordCase=L),label:"Keyword case","flex-1":"",options:[{label:"UPPERCASE",value:"upper"},{label:"lowercase",value:"lower"},{label:"Preserve",value:"preserve"}]},null,8,["value"]),V(a,{value:p(A).indentStyle,"onUpdate:value":M[2]||(M[2]=L=>p(A).indentStyle=L),label:"Indent style","flex-1":"",options:[{label:"Standard",value:"standard"},{label:"Tabular left",value:"tabularLeft"},{label:"Tabular right",value:"tabularRight"}]},null,8,["value"])],2)]),V(e,{label:"Your SQL query"},{default:EE(()=>[V(I,{ref_key:"inputElement",ref:E,value:p(C),"onUpdate:value":M[3]||(M[3]=L=>TT(C)?C.value=L:null),placeholder:"Put your SQL query here...",rows:"20",multiline:"",autocomplete:"off",autocorrect:
|