sql-format-plus 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +134 -0
- package/README.zh-CN.md +134 -0
- package/dist/sql-format-plus.es.js +2429 -0
- package/dist/sql-format-plus.umd.js +2440 -0
- package/dist/sql-format-plus.umd.min.js +1 -0
- package/package.json +90 -0
- package/types/sql-format-plus.d.ts +51 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(E,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((E="undefined"!=typeof globalThis?globalThis:E||self).SqlFormatPlus={})}(this,function(E){"use strict";const e="top-level",T="block-level",R="keyword-block";class t{constructor(E){this.indentTypes=[],this.indent=E||" "}getIndent(){return this.indent.repeat(this.indentTypes.length)}increaseToplevel(){this.indentTypes.push(e)}increaseBlockLevel(){this.indentTypes.push(T)}increaseKeywordBlock(){this.indentTypes.push(R)}decreaseTopLevel(){this.indentTypes[this.indentTypes.length-1]===e&&this.indentTypes.pop()}decreaseBlockLevel(){for(;this.indentTypes[this.indentTypes.length-1]===e;)this.indentTypes.pop();this.indentTypes[this.indentTypes.length-1]===T&&this.indentTypes.pop()}decreaseKeywordBlock(){for(;this.indentTypes[this.indentTypes.length-1]===e;)this.indentTypes.pop();this.indentTypes[this.indentTypes.length-1]===R&&this.indentTypes.pop()}isBlockLevel(){return this.indentTypes[this.indentTypes.length-1]===T}}const N="whitespace",A="word",I="string",O="reserved",S="reserved-toplevel",n="reserved-newline",L="reserved-keyword-block-start",s="reserved-keyword-block-end",i="operator",r="open-paren",C="close-paren",o="line-comment",a="block-comment",D="number",U="placeholder";class h{constructor(){this.level=0}beginIfPossible(E,e){0===this.level&&this.isInlineBlock(E,e)?this.level=1:this.level>0?this.level++:this.level=0}end(){this.level--}isActive(){return this.level>0}isInlineBlock(E,e){let T=0,R=0;const t=E[e];for(let N=e;N<E.length;N++){const e=E[N];if(T+=e.value.length,T>50)return!1;if(e.type===r)R++;else if(this.isClosingToken(e,t)&&(R--,0===R))return!0;if(this.isForbiddenToken(e))return!1}return!1}isForbiddenToken({type:E,value:e}){return E===S||E===n||E===L||E===o||E===a||";"===e}isClosingToken(E,e){return E.type===C||/^CASE$/i.test(e.value)&&E.type===s}}class d{constructor(E){this.index=0,this.params=E}get({key:E,value:e}){if(!this.params)return e;let T;return T=Array.isArray(this.params)?E?this.params[Number(E)]:this.params[this.index++]:E?this.params[E]:this.params[this.index++],void 0===T?e:String(T)}}class P{constructor(){this.chunks=[]}append(E){E&&this.chunks.push(E)}trimEnd(){for(;this.chunks.length>0;){const E=this.chunks.length-1,e=this.chunks[E],T=e.replace(/\s+$/,"");if(T.length===e.length)return;if(T.length>0)return void(this.chunks[E]=T);this.chunks.pop()}}addNewline(E){this.trimEnd(),this.append(`\n${E}`)}toString(){return this.chunks.join("")}}class l{constructor(E,e){this.previousReservedWord={},this.keywordBlockEndPending=!1,this.cfg=E||{},this.indentation=new t(this.cfg.indent),this.inlineBlock=new h,this.params=new d(this.cfg.params),this.tokenizer=e}format(E){const e=this.tokenizer.tokenize(E);return this.getFormattedQueryFromTokens(e).trim()}getFormattedQueryFromTokens(E){const e=new P;return E.forEach((T,R)=>{T.type!==N&&(T.type===o?this.formatLineComment(T,e):T.type===a?this.formatBlockComment(T,e):T.type===L?(this.formatKeywordBlockStart(T,e),this.previousReservedWord=T):T.type===s?(this.formatKeywordBlockEnd(T,e),this.previousReservedWord=T):T.type===S?(this.formatToplevelReservedWord(T,e),this.previousReservedWord=T):T.type===n?(this.formatNewlineReservedWord(T,e),this.previousReservedWord=T):T.type===O?(this.formatWithSpaces(T,e),this.previousReservedWord=T):T.type===r?this.formatOpeningParentheses(E,R,e):T.type===C?this.formatClosingParentheses(T,e):T.type===U?this.formatPlaceholder(T,e):","===T.value?this.formatComma(T,e):":"===T.value?this.formatWithSpaceAfter(T,e):";"===T.value?this.formatSemicolon(T,e):"."===T.value?this.formatWithoutSpaces(T,e):this.formatWithSpaces(T,e))}),e.toString()}formatLineComment(E,e){e.append(E.value),this.addNewline(e)}formatBlockComment(E,e){this.addNewline(e),e.append(this.indentComment(E.value)),this.addNewline(e)}indentComment(E){return E.replace(/\n/g,`\n${this.indentation.getIndent()}`)}formatKeywordBlockStart(E,e){if(/^LOOP$/i.test(E.value)&&/^END$/i.test(this.previousReservedWord.value||""))return this.formatWithSpaces(E,e),void(this.keywordBlockEndPending=!0);this.indentation.decreaseTopLevel(),this.addNewline(e),this.indentation.increaseKeywordBlock(),e.append(this.equalizeWhitespace(E.value)),this.addNewline(e)}formatKeywordBlockEnd(E,e){this.inlineBlock.isActive()||this.indentation.isBlockLevel()?this.formatClosingParentheses(E,e):(this.indentation.decreaseKeywordBlock(),this.addNewline(e),e.append(`${this.equalizeWhitespace(E.value)} `),this.keywordBlockEndPending=!0)}formatToplevelReservedWord(E,e){this.indentation.decreaseTopLevel(),this.addNewline(e),this.indentation.increaseToplevel(),e.append(this.equalizeWhitespace(E.value)),this.addNewline(e)}formatNewlineReservedWord(E,e){this.addNewline(e),e.append(`${this.equalizeWhitespace(E.value)} `)}equalizeWhitespace(E){return E.replace(/\s+/g," ")}formatOpeningParentheses(E,e,T){const R=E[e-1];R&&R.type!==N&&R.type!==r&&T.trimEnd(),T.append(E[e].value),this.inlineBlock.beginIfPossible(E,e),this.inlineBlock.isActive()||(this.indentation.increaseBlockLevel(),this.addNewline(T))}formatClosingParentheses(E,e){if(this.inlineBlock.isActive())return this.inlineBlock.end(),void this.formatWithSpaceAfter(E,e);this.indentation.decreaseBlockLevel(),this.addNewline(e),this.formatWithSpaces(E,e)}formatPlaceholder(E,e){e.append(`${this.params.get(E)} `)}formatComma(E,e){e.trimEnd(),e.append(`${E.value} `),this.inlineBlock.isActive()||/^LIMIT$/i.test(this.previousReservedWord.value||"")||this.addNewline(e)}formatWithSpaceAfter(E,e){e.trimEnd(),e.append(`${E.value} `)}formatWithoutSpaces(E,e){e.trimEnd(),e.append(E.value)}formatSemicolon(E,e){this.formatWithoutSpaces(E,e),this.keywordBlockEndPending&&(this.addNewline(e),this.keywordBlockEndPending=!1)}formatWithSpaces(E,e){e.append(`${E.value} `)}addNewline(E){E.addNewline(this.indentation.getIndent())}}const M=E=>E.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&");class c{constructor(E){this.WHITESPACE_REGEX=/(\s+)/y,this.NUMBER_REGEX=/([0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+)\b/y,this.SIGNED_NUMBER_REGEX=/(-\s*(?:[0-9]+(\.[0-9]+)?|0x[0-9a-fA-F]+|0b[01]+)\b)/y,this.ASSIGNMENT_REGEX=/(:=)/y,this.OPERATOR_REGEX=/(!=|<>|==|<=|>=|!<|!>|\|\||::|->>|->|~~\*|~~|!~~\*|!~~|~\*|!~\*|!~|.)/y,this.BLOCK_COMMENT_REGEX=/(\/\*[^]*?(?:\*\/|$))/y,this.LINE_COMMENT_REGEX=this.createLineCommentRegex(E.lineCommentTypes),this.RESERVED_TOPLEVEL_REGEX=this.createReservedWordRegex(E.reservedToplevelWords),this.RESERVED_NEWLINE_REGEX=this.createReservedWordRegex(E.reservedNewlineWords),this.RESERVED_PLAIN_REGEX=this.createReservedWordRegex(E.reservedWords),this.KEYWORD_BLOCK_START_REGEX=this.createOptionalReservedWordRegex(E.keywordBlockStarts),this.KEYWORD_BLOCK_END_REGEX=this.createOptionalReservedWordRegex(E.keywordBlockEnds),this.WORD_REGEX=this.createWordRegex(E.specialWordChars),this.STRING_REGEX=this.createStringRegex(E.stringTypes),this.OPEN_PAREN_REGEX=this.createParenRegex(E.openParens),this.CLOSE_PAREN_REGEX=this.createParenRegex(E.closeParens),this.INDEXED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(E.indexedPlaceholderTypes,"[0-9]*"),this.IDENT_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(E.namedPlaceholderTypes,"[a-zA-Z0-9._$]+"),this.STRING_NAMED_PLACEHOLDER_REGEX=this.createPlaceholderRegex(E.namedPlaceholderTypes,this.createStringPattern(E.stringTypes))}tokenize(E){const e=[];let T,R=0;for(;R<E.length;){const t=this.getNextToken(E,R,T);R+=t.value.length,e.push(t),t.type!==N&&(T=t)}return e}createLineCommentRegex(E){return new RegExp(`((?:${E.map(E=>M(E)).join("|")}).*?(?:\n|$))`,"y")}createReservedWordRegex(E){const e=E.join("|").replace(/ /g,"\\s+");return new RegExp(`(${e})\\b`,"iy")}createOptionalReservedWordRegex(E){return!(!E||0===E.length)&&this.createReservedWordRegex(E)}createWordRegex(E=[]){return new RegExp(`([\\w${E.map(E=>M(E)).join("")}]+)`,"y")}createStringRegex(E){return new RegExp(`(${this.createStringPattern(E)})`,"y")}createStringPattern(E){const e={"``":"((`[^`]*($|`))+)","[]":"((\\[[^\\]]*($|\\]))(\\][^\\]]*($|\\]))*)",'""':'((\\"[^\\"\\\\]*(?:\\\\.[^\\"\\\\]*)*(\\"|$))+)',"''":"(('[^'\\\\]*(?:\\\\.[^'\\\\]*)*('|$))+)","N''":"((N'[^N'\\\\]*(?:\\\\.[^N'\\\\]*)*('|$))+)"};return E.map(E=>e[E]).join("|")}createParenRegex(E){return new RegExp(`(${E.map(E=>this.escapeParen(E)).join("|")})`,"iy")}escapeParen(E){return 1===E.length?M(E):`\\b${E}\\b`}createPlaceholderRegex(E,e){if(!E||0===E.length)return!1;const T=E.map(E=>M(E)).join("|");return new RegExp(`((?:${T})(?:${e}))`,"y")}getNextToken(E,e,T){return this.getWhitespaceToken(E,e)||this.getCommentToken(E,e)||this.getStringToken(E,e)||this.getOpenParenToken(E,e)||this.getCloseParenToken(E,e)||this.getAssignmentToken(E,e)||this.getPlaceholderToken(E,e)||this.getNumberToken(E,e,T)||this.getKeywordBlockToken(E,e)||this.getReservedWordToken(E,e,T)||this.getWordToken(E,e)||this.getOperatorToken(E,e)}getWhitespaceToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:N,regex:this.WHITESPACE_REGEX})}getCommentToken(E,e){return this.getLineCommentToken(E,e)||this.getBlockCommentToken(E,e)}getLineCommentToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:o,regex:this.LINE_COMMENT_REGEX})}getBlockCommentToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:a,regex:this.BLOCK_COMMENT_REGEX})}getStringToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:I,regex:this.STRING_REGEX})}getOpenParenToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:r,regex:this.OPEN_PAREN_REGEX})}getCloseParenToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:C,regex:this.CLOSE_PAREN_REGEX})}getAssignmentToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:i,regex:this.ASSIGNMENT_REGEX})}getPlaceholderToken(E,e){return this.getIdentNamedPlaceholderToken(E,e)||this.getStringNamedPlaceholderToken(E,e)||this.getIndexedPlaceholderToken(E,e)}getIdentNamedPlaceholderToken(E,e){return this.getPlaceholderTokenWithKey({input:E,index:e,regex:this.IDENT_NAMED_PLACEHOLDER_REGEX,parseKey:E=>E.slice(1)})}getStringNamedPlaceholderToken(E,e){return this.getPlaceholderTokenWithKey({input:E,index:e,regex:this.STRING_NAMED_PLACEHOLDER_REGEX,parseKey:E=>this.getEscapedPlaceholderKey({key:E.slice(2,-1),quoteChar:E.slice(-1)})})}getIndexedPlaceholderToken(E,e){return this.getPlaceholderTokenWithKey({input:E,index:e,regex:this.INDEXED_PLACEHOLDER_REGEX,parseKey:E=>E.slice(1)})}getPlaceholderTokenWithKey({input:E,index:e,regex:T,parseKey:R}){const t=this.getTokenOnFirstMatch({input:E,index:e,regex:T,type:U});return t&&(t.key=R(t.value)),t}getEscapedPlaceholderKey({key:E,quoteChar:e}){return E.replace(new RegExp(`${M("\\")}${e}`,"g"),e)}getNumberToken(E,e,T){const R=this.canReadSignedNumber(T)?this.getTokenOnFirstMatch({input:E,index:e,type:D,regex:this.SIGNED_NUMBER_REGEX}):void 0;return R||this.getTokenOnFirstMatch({input:E,index:e,type:D,regex:this.NUMBER_REGEX})}canReadSignedNumber(E){return!E||E.type===i||E.type===r||","===E.value}getOperatorToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:i,regex:this.OPERATOR_REGEX})}getKeywordBlockToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:s,regex:this.KEYWORD_BLOCK_END_REGEX})||this.getTokenOnFirstMatch({input:E,index:e,type:L,regex:this.KEYWORD_BLOCK_START_REGEX})}getReservedWordToken(E,e,T){if("."!==(null==T?void 0:T.value))return this.getToplevelReservedToken(E,e)||this.getNewlineReservedToken(E,e)||this.getPlainReservedToken(E,e)}getToplevelReservedToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:S,regex:this.RESERVED_TOPLEVEL_REGEX})}getNewlineReservedToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:n,regex:this.RESERVED_NEWLINE_REGEX})}getPlainReservedToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:O,regex:this.RESERVED_PLAIN_REGEX})}getWordToken(E,e){return this.getTokenOnFirstMatch({input:E,index:e,type:A,regex:this.WORD_REGEX})}getTokenOnFirstMatch({input:E,index:e,type:T,regex:R}){if(!R)return;R.lastIndex=e;const t=R.exec(E);return t&&t.index===e?{type:T,value:t[1]}:void 0}}const p=["ABS","ACTIVATE","ALIAS","ALL","ALLOCATE","ALLOW","ALTER","ANY","ARE","ARRAY","AS","ASC","ASENSITIVE","ASSOCIATE","ASUTIME","ASYMMETRIC","AT","ATOMIC","ATTRIBUTES","AUDIT","AUTHORIZATION","AUX","AUXILIARY","AVG","BEFORE","BEGIN","BETWEEN","BIGINT","BINARY","BLOB","BOOLEAN","BOTH","BUFFERPOOL","BY","CACHE","CALL","CALLED","CAPTURE","CARDINALITY","CASCADED","CASE","CAST","CCSID","CEIL","CEILING","CHAR","CHARACTER","CHARACTER_LENGTH","CHAR_LENGTH","CHECK","CLOB","CLONE","CLOSE","CLUSTER","COALESCE","COLLATE","COLLECT","COLLECTION","COLLID","COLUMN","COMMENT","COMMIT","CONCAT","CONDITION","CONNECT","CONNECTION","CONSTRAINT","CONTAINS","CONTINUE","CONVERT","CORR","CORRESPONDING","COUNT","COUNT_BIG","COVAR_POP","COVAR_SAMP","CREATE","CROSS","CUBE","CUME_DIST","CURRENT","CURRENT_DATE","CURRENT_DEFAULT_TRANSFORM_GROUP","CURRENT_LC_CTYPE","CURRENT_PATH","CURRENT_ROLE","CURRENT_SCHEMA","CURRENT_SERVER","CURRENT_TIME","CURRENT_TIMESTAMP","CURRENT_TIMEZONE","CURRENT_TRANSFORM_GROUP_FOR_TYPE","CURRENT_USER","CURSOR","CYCLE","DATA","DATABASE","DATAPARTITIONNAME","DATAPARTITIONNUM","DATE","DAY","DAYS","DB2GENERAL","DB2GENRL","DB2SQL","DBINFO","DBPARTITIONNAME","DBPARTITIONNUM","DEALLOCATE","DEC","DECIMAL","DECLARE","DEFAULT","DEFAULTS","DEFINITION","DELETE","DENSERANK","DENSE_RANK","DEREF","DESCRIBE","DESCRIPTOR","DETERMINISTIC","DIAGNOSTICS","DISABLE","DISALLOW","DISCONNECT","DISTINCT","DO","DOCUMENT","DOUBLE","DROP","DSSIZE","DYNAMIC","EACH","EDITPROC","ELEMENT","ELSE","ELSEIF","ENABLE","ENCODING","ENCRYPTION","END","END-EXEC","ENDING","ERASE","ESCAPE","EVERY","EXCEPTION","EXCLUDING","EXCLUSIVE","EXEC","EXECUTE","EXISTS","EXIT","EXP","EXPLAIN","EXTENDED","EXTERNAL","EXTRACT","FALSE","FENCED","FETCH","FIELDPROC","FILE","FILTER","FINAL","FIRST","FLOAT","FLOOR","FOR","FOREIGN","FREE","FULL","FUNCTION","FUSION","GENERAL","GENERATED","GET","GLOBAL","GOTO","GRANT","GRAPHIC","GROUP","GROUPING","HANDLER","HASH","HASHED_VALUE","HINT","HOLD","HOUR","HOURS","IDENTITY","IF","IMMEDIATE","IN","INCLUDING","INCLUSIVE","INCREMENT","INDEX","INDICATOR","INDICATORS","INF","INFINITY","INHERIT","INNER","INOUT","INSENSITIVE","INSERT","INT","INTEGER","INTEGRITY","INTERSECTION","INTERVAL","INTO","IS","ISOBID","ISOLATION","ITERATE","JAR","JAVA","KEEP","KEY","LABEL","LANGUAGE","LARGE","LATERAL","LC_CTYPE","LEADING","LEAVE","LEFT","LIKE","LINKTYPE","LN","LOCAL","LOCALDATE","LOCALE","LOCALTIME","LOCALTIMESTAMP","LOCATOR","LOCATORS","LOCK","LOCKMAX","LOCKSIZE","LONG","LOOP","LOWER","MAINTAINED","MATCH","MATERIALIZED","MAX","MAXVALUE","MEMBER","MERGE","METHOD","MICROSECOND","MICROSECONDS","MIN","MINUTE","MINUTES","MINVALUE","MOD","MODE","MODIFIES","MODULE","MONTH","MONTHS","MULTISET","NAN","NATIONAL","NATURAL","NCHAR","NCLOB","NEW","NEW_TABLE","NEXTVAL","NO","NOCACHE","NOCYCLE","NODENAME","NODENUMBER","NOMAXVALUE","NOMINVALUE","NONE","NOORDER","NORMALIZE","NORMALIZED","NOT","NULL","NULLIF","NULLS","NUMERIC","NUMPARTS","OBID","OCTET_LENGTH","OF","OFFSET","OLD","OLD_TABLE","ON","ONLY","OPEN","OPTIMIZATION","OPTIMIZE","OPTION","ORDER","OUT","OUTER","OVER","OVERLAPS","OVERLAY","OVERRIDING","PACKAGE","PADDED","PAGESIZE","PARAMETER","PART","PARTITION","PARTITIONED","PARTITIONING","PARTITIONS","PASSWORD","PATH","PERCENTILE_CONT","PERCENTILE_DISC","PERCENT_RANK","PIECESIZE","PLAN","POSITION","POWER","PRECISION","PREPARE","PREVVAL","PRIMARY","PRIQTY","PRIVILEGES","PROCEDURE","PROGRAM","PSID","PUBLIC","QUERY","QUERYNO","RANGE","RANK","READ","READS","REAL","RECOVERY","RECURSIVE","REF","REFERENCES","REFERENCING","REFRESH","REGR_AVGX","REGR_AVGY","REGR_COUNT","REGR_INTERCEPT","REGR_R2","REGR_SLOPE","REGR_SXX","REGR_SXY","REGR_SYY","RELEASE","RENAME","REPEAT","RESET","RESIGNAL","RESTART","RESTRICT","RESULT","RESULT_SET_LOCATOR","RETURN","RETURNS","REVOKE","RIGHT","ROLE","ROLLBACK","ROLLUP","ROUND_CEILING","ROUND_DOWN","ROUND_FLOOR","ROUND_HALF_DOWN","ROUND_HALF_EVEN","ROUND_HALF_UP","ROUND_UP","ROUTINE","ROW","ROWNUMBER","ROWS","ROWSET","ROW_NUMBER","RRN","RUN","SAVEPOINT","SCHEMA","SCOPE","SCRATCHPAD","SCROLL","SEARCH","SECOND","SECONDS","SECQTY","SECURITY","SENSITIVE","SEQUENCE","SESSION","SESSION_USER","SIGNAL","SIMILAR","SIMPLE","SMALLINT","SNAN","SOME","SOURCE","SPECIFIC","SPECIFICTYPE","SQL","SQLEXCEPTION","SQLID","SQLSTATE","SQLWARNING","SQRT","STACKED","STANDARD","START","STARTING","STATEMENT","STATIC","STATMENT","STAY","STDDEV_POP","STDDEV_SAMP","STOGROUP","STORES","STYLE","SUBMULTISET","SUBSTRING","SUM","SUMMARY","SYMMETRIC","SYNONYM","SYSFUN","SYSIBM","SYSPROC","SYSTEM","SYSTEM_USER","TABLE","TABLESAMPLE","TABLESPACE","THEN","TIME","TIMESTAMP","TIMEZONE_HOUR","TIMEZONE_MINUTE","TO","TRAILING","TRANSACTION","TRANSLATE","TRANSLATION","TREAT","TRIGGER","TRIM","TRUE","TRUNCATE","TYPE","UESCAPE","UNDO","UNIQUE","UNKNOWN","UNNEST","UNTIL","UPPER","USAGE","USER","USING","VALIDPROC","VALUE","VARCHAR","VARIABLE","VARIANT","VARYING","VAR_POP","VAR_SAMP","VCAT","VERSION","VIEW","VOLATILE","VOLUMES","WHEN","WHENEVER","WHILE","WIDTH_BUCKET","WINDOW","WITH","WITHIN","WITHOUT","WLM","WRITE","XMLELEMENT","XMLEXISTS","XMLNAMESPACES","YEAR","YEARS"],_=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INTERSECT","LIMIT","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UPDATE","VALUES","WHERE"],G=["AND","CROSS JOIN","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN"];let g;class B{constructor(E){this.cfg=E}format(E){return g||(g=new c({reservedWords:p,reservedToplevelWords:_,reservedNewlineWords:G,stringTypes:['""',"''","``","[]"],openParens:["("],closeParens:[")"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["#","@"]})),new l(this.cfg,g).format(E)}}const F=["ALL","ALTER","ANALYZE","AND","ANY","ARRAY","AS","ASC","BEGIN","BETWEEN","BINARY","BOOLEAN","BREAK","BUCKET","BUILD","BY","CALL","CASE","CAST","CLUSTER","COLLATE","COLLECTION","COMMIT","CONNECT","CONTINUE","CORRELATE","COVER","CREATE","DATABASE","DATASET","DATASTORE","DECLARE","DECREMENT","DELETE","DERIVED","DESC","DESCRIBE","DISTINCT","DO","DROP","EACH","ELEMENT","ELSE","END","EVERY","EXCEPT","EXCLUDE","EXECUTE","EXISTS","EXPLAIN","FALSE","FETCH","FIRST","FLATTEN","FOR","FORCE","FROM","FUNCTION","GRANT","GROUP","GSI","HAVING","IF","IGNORE","ILIKE","IN","INCLUDE","INCREMENT","INDEX","INFER","INLINE","INNER","INSERT","INTERSECT","INTO","IS","JOIN","KEY","KEYS","KEYSPACE","KNOWN","LAST","LEFT","LET","LETTING","LIKE","LIMIT","LSM","MAP","MAPPING","MATCHED","MATERIALIZED","MERGE","MINUS","MISSING","NAMESPACE","NEST","NOT","NULL","NUMBER","OBJECT","OFFSET","ON","OPTION","OR","ORDER","OUTER","OVER","PARSE","PARTITION","PASSWORD","PATH","POOL","PREPARE","PRIMARY","PRIVATE","PRIVILEGE","PROCEDURE","PUBLIC","RAW","REALM","REDUCE","RENAME","RETURN","RETURNING","REVOKE","RIGHT","ROLE","ROLLBACK","SATISFIES","SCHEMA","SELECT","SELF","SEMI","SET","SHOW","SOME","START","STATISTICS","STRING","SYSTEM","THEN","TO","TRANSACTION","TRIGGER","TRUE","TRUNCATE","UNDER","UNION","UNIQUE","UNKNOWN","UNNEST","UNSET","UPDATE","UPSERT","USE","USER","USING","VALIDATE","VALUE","VALUED","VALUES","VIA","VIEW","WHEN","WHERE","WHILE","WITH","WITHIN","WORK","XOR"],u=["DELETE FROM","EXCEPT ALL","EXCEPT","EXPLAIN DELETE FROM","EXPLAIN UPDATE","EXPLAIN UPSERT","FROM","GROUP BY","HAVING","INFER","INSERT INTO","INTERSECT ALL","INTERSECT","LET","LIMIT","MERGE","NEST","ORDER BY","PREPARE","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UNNEST","UPDATE","UPSERT","USE KEYS","VALUES","WHERE"],H=["AND","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","XOR"];let W;class m{constructor(E){this.cfg=E}format(E){return W||(W=new c({reservedWords:F,reservedToplevelWords:u,reservedNewlineWords:H,stringTypes:['""',"''","``"],openParens:["(","[","{"],closeParens:[")","]","}"],namedPlaceholderTypes:["$"],lineCommentTypes:["#","--"]})),new l(this.cfg,W).format(E)}}const k=["A","ACCESSIBLE","AGENT","AGGREGATE","ALL","ALTER","ANY","ARRAY","AS","ASC","AT","ATTRIBUTE","AUTHID","AVG","BETWEEN","BFILE_BASE","BINARY_INTEGER","BINARY","BLOB_BASE","BLOCK","BODY","BOOLEAN","BOTH","BOUND","BULK","BY","BYTE","C","CALL","CALLING","CASCADE","CASE","CHAR_BASE","CHAR","CHARACTER","CHARSET","CHARSETFORM","CHARSETID","CHECK","CLOB_BASE","CLONE","CLOSE","CLUSTER","CLUSTERS","COALESCE","COLAUTH","COLLECT","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPILED","COMPRESS","CONNECT","CONSTANT","CONSTRUCTOR","CONTEXT","CONTINUE","CONVERT","COUNT","CRASH","CREATE","CREDENTIAL","CURRENT","CURRVAL","CURSOR","CUSTOMDATUM","DANGLING","DATA","DATE_BASE","DATE","DAY","DECIMAL","DEFAULT","DEFINE","DELETE","DESC","DETERMINISTIC","DIRECTORY","DISTINCT","DO","DOUBLE","DROP","DURATION","ELEMENT","ELSIF","EMPTY","ESCAPE","EXCEPTIONS","EXCLUSIVE","EXECUTE","EXISTS","EXIT","EXTENDS","EXTERNAL","EXTRACT","FALSE","FETCH","FINAL","FIRST","FIXED","FLOAT","FOR","FORALL","FORCE","FROM","FUNCTION","GENERAL","GOTO","GRANT","GROUP","HASH","HEAP","HIDDEN","HOUR","IDENTIFIED","IF","IMMEDIATE","IN","INCLUDING","INDEX","INDEXES","INDICATOR","INDICES","INFINITE","INSTANTIABLE","INT","INTEGER","INTERFACE","INTERVAL","INTO","INVALIDATE","IS","ISOLATION","JAVA","LANGUAGE","LARGE","LEADING","LENGTH","LEVEL","LIBRARY","LIKE","LIKE2","LIKE4","LIKEC","LIMITED","LOCAL","LOCK","LONG","MAP","MAX","MAXLEN","MEMBER","MERGE","MIN","MINUS","MINUTE","MLSLABEL","MOD","MODE","MONTH","MULTISET","NAME","NAN","NATIONAL","NATIVE","NATURAL","NATURALN","NCHAR","NEW","NEXTVAL","NOCOMPRESS","NOCOPY","NOT","NOWAIT","NULL","NULLIF","NUMBER_BASE","NUMBER","OBJECT","OCICOLL","OCIDATE","OCIDATETIME","OCIDURATION","OCIINTERVAL","OCILOBLOCATOR","OCINUMBER","OCIRAW","OCIREF","OCIREFCURSOR","OCIROWID","OCISTRING","OCITYPE","OF","OLD","ON","ONLY","OPAQUE","OPEN","OPERATOR","OPTION","ORACLE","ORADATA","ORDER","ORGANIZATION","ORLANY","ORLVARY","OTHERS","OUT","OVERLAPS","OVERRIDING","PACKAGE","PARALLEL_ENABLE","PARAMETER","PARAMETERS","PARENT","PARTITION","PASCAL","PCTFREE","PIPE","PIPELINED","PLS_INTEGER","PLUGGABLE","POSITIVE","POSITIVEN","PRAGMA","PRECISION","PRIOR","PRIVATE","PROCEDURE","PUBLIC","RAISE","RANGE","RAW","READ","REAL","RECORD","REF","REFERENCE","RELEASE","RELIES_ON","REM","REMAINDER","RENAME","RESOURCE","RESULT_CACHE","RESULT","RETURN","RETURNING","REVERSE","REVOKE","ROLLBACK","ROW","ROWID","ROWNUM","ROWTYPE","SAMPLE","SAVE","SAVEPOINT","SB1","SB2","SB4","SECOND","SEGMENT","SELF","SEPARATE","SEQUENCE","SERIALIZABLE","SHARE","SHORT","SIZE_T","SIZE","SMALLINT","SOME","SPACE","SPARSE","SQL","SQLCODE","SQLDATA","SQLERRM","SQLNAME","SQLSTATE","STANDARD","START","STATIC","STDDEV","STORED","STRING","STRUCT","STYLE","SUBMULTISET","SUBPARTITION","SUBSTITUTABLE","SUBTYPE","SUCCESSFUL","SUM","SYNONYM","SYSDATE","TABAUTH","TABLE","TDO","THE","THEN","TIME","TIMESTAMP","TIMEZONE_ABBR","TIMEZONE_HOUR","TIMEZONE_MINUTE","TIMEZONE_REGION","TO","TRAILING","TRANSACTION","TRANSACTIONAL","TRIGGER","TRUE","TRUSTED","TYPE","UB1","UB2","UB4","UID","UNDER","UNIQUE","UNPLUG","UNSIGNED","UNTRUSTED","USE","USER","USING","VALIDATE","VALIST","VALUE","VARCHAR","VARCHAR2","VARIABLE","VARIANCE","VARRAY","VARYING","VIEW","VIEWS","VOID","WHENEVER","WHILE","WITH","WORK","WRAPPED","WRITE","YEAR","ZONE"],y=["ADD","ALTER COLUMN","ALTER TABLE","BEGIN","CONNECT BY","DECLARE","DELETE FROM","DELETE","EXCEPT","EXCEPTION","FETCH FIRST","FROM","GROUP BY","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","LOOP","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","START WITH","UNION ALL","UNION","UPDATE","VALUES","WHERE"],Y=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"];let v;class V{constructor(E){this.cfg=E}format(E){return v||(v=new c({reservedWords:k,reservedToplevelWords:y,reservedNewlineWords:Y,stringTypes:['""',"N''","''","``"],openParens:["(","CASE"],closeParens:[")"],keywordBlockStarts:["BEGIN","LOOP"],keywordBlockEnds:["END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:[":"],lineCommentTypes:["--"],specialWordChars:["_","$","#",".","@"]})),new l(this.cfg,v).format(E)}}const X=["ACCESSIBLE","ACTION","AGAINST","AGGREGATE","ALGORITHM","ALL","ALTER","ANALYSE","ANALYZE","AS","ASC","AUTOCOMMIT","AUTO_INCREMENT","BACKUP","BEGIN","BETWEEN","BINLOG","BOTH","CASCADE","CASE","CHANGE","CHANGED","CHARACTER SET","CHARSET","CHECK","CHECKSUM","COLLATE","COLLATION","COLUMN","COLUMNS","COMMENT","COMMIT","COMMITTED","COMPRESSED","CONCURRENT","CONSTRAINT","CONTAINS","CONVERT","CREATE","CROSS","CURRENT_TIMESTAMP","DATABASE","DATABASES","DAY","DAY_HOUR","DAY_MINUTE","DAY_SECOND","DEFAULT","DEFINER","DELAYED","DELETE","DESC","DESCRIBE","DETERMINISTIC","DISTINCT","DISTINCTROW","DIV","DO","DROP","DUMPFILE","DUPLICATE","DYNAMIC","ELSE","ENCLOSED","END","ENGINE","ENGINES","ENGINE_TYPE","ESCAPE","ESCAPED","EVENTS","EXEC","EXECUTE","EXISTS","EXPLAIN","EXTENDED","FAST","FETCH","FIELDS","FILE","FIRST","FIXED","FLUSH","FOR","FORCE","FOREIGN","FULL","FULLTEXT","FUNCTION","GLOBAL","GRANT","GRANTS","GROUP_CONCAT","HEAP","HIGH_PRIORITY","HOSTS","HOUR","HOUR_MINUTE","HOUR_SECOND","IDENTIFIED","IF","IFNULL","IGNORE","IN","INDEX","INDEXES","INFILE","INSERT","INSERT_ID","INSERT_METHOD","INTERVAL","INTO","INVOKER","IS","ISOLATION","KEY","KEYS","KILL","LAST_INSERT_ID","LEADING","LEVEL","LIKE","LINEAR","LINES","LOAD","LOCAL","LOCK","LOCKS","LOGS","LOW_PRIORITY","MARIA","MASTER","MASTER_CONNECT_RETRY","MASTER_HOST","MASTER_LOG_FILE","MATCH","MAX_CONNECTIONS_PER_HOUR","MAX_QUERIES_PER_HOUR","MAX_ROWS","MAX_UPDATES_PER_HOUR","MAX_USER_CONNECTIONS","MEDIUM","MERGE","MINUTE","MINUTE_SECOND","MIN_ROWS","MODE","MODIFY","MONTH","MRG_MYISAM","MYISAM","NAMES","NATURAL","NOT","NOW()","NULL","OFFSET","ON DELETE","ON UPDATE","ON","ONLY","OPEN","OPTIMIZE","OPTION","OPTIONALLY","OUTFILE","PACK_KEYS","PAGE","PARTIAL","PARTITION","PARTITIONS","PASSWORD","PRIMARY","PRIVILEGES","PROCEDURE","PROCESS","PROCESSLIST","PURGE","QUICK","RAID0","RAID_CHUNKS","RAID_CHUNKSIZE","RAID_TYPE","RANGE","READ","READ_ONLY","READ_WRITE","REFERENCES","REGEXP","RELOAD","RENAME","REPAIR","REPEATABLE","REPLACE","REPLICATION","RESET","RESTORE","RESTRICT","RETURN","RETURNS","REVOKE","RLIKE","ROLLBACK","ROW","ROWS","ROW_FORMAT","SECOND","SECURITY","SEPARATOR","SERIALIZABLE","SESSION","SHARE","SHOW","SHUTDOWN","SLAVE","SONAME","SOUNDS","SQL","SQL_AUTO_IS_NULL","SQL_BIG_RESULT","SQL_BIG_SELECTS","SQL_BIG_TABLES","SQL_BUFFER_RESULT","SQL_CACHE","SQL_CALC_FOUND_ROWS","SQL_LOG_BIN","SQL_LOG_OFF","SQL_LOG_UPDATE","SQL_LOW_PRIORITY_UPDATES","SQL_MAX_JOIN_SIZE","SQL_NO_CACHE","SQL_QUOTE_SHOW_CREATE","SQL_SAFE_UPDATES","SQL_SELECT_LIMIT","SQL_SLAVE_SKIP_COUNTER","SQL_SMALL_RESULT","SQL_WARNINGS","START","STARTING","STATUS","STOP","STORAGE","STRAIGHT_JOIN","STRING","STRIPED","SUPER","TABLE","TABLES","TEMPORARY","TERMINATED","THEN","TO","TRAILING","TRANSACTIONAL","TRUE","TRUNCATE","TYPE","TYPES","UNCOMMITTED","UNIQUE","UNLOCK","UNSIGNED","USAGE","USE","USING","VARIABLES","VIEW","WHEN","WITH","WORK","WRITE","YEAR_MONTH"],f=["ADD","AFTER","ALTER COLUMN","ALTER TABLE","DELETE FROM","EXCEPT","FETCH FIRST","FROM","GROUP BY","GO","HAVING","INSERT INTO","INSERT","INTERSECT","LIMIT","MODIFY","ORDER BY","SELECT","SET CURRENT SCHEMA","SET SCHEMA","SET","UNION ALL","UNION","UPDATE","VALUES","WHERE"],K=["AND","CROSS APPLY","CROSS JOIN","ELSE","INNER JOIN","JOIN","LEFT JOIN","LEFT OUTER JOIN","OR","OUTER APPLY","OUTER JOIN","RIGHT JOIN","RIGHT OUTER JOIN","WHEN","XOR"];let x;class w{constructor(E){this.cfg=E}format(E){return x||(x=new c({reservedWords:X,reservedToplevelWords:f,reservedNewlineWords:K,stringTypes:['""',"N''","''","``","[]"],openParens:["(","CASE"],closeParens:[")","END"],indexedPlaceholderTypes:["?"],namedPlaceholderTypes:["@",":"],lineCommentTypes:["#","--"]})),new l(this.cfg,x).format(E)}}function Q(E,e={}){switch(e.language){case"db2":return new B(e).format(E);case"n1ql":return new m(e).format(E);case"pl/sql":return new V(e).format(E);case"sql":case void 0:return new w(e).format(E);default:throw Error(`Unsupported SQL dialect: ${String(e.language)}`)}}const J={format:Q};E.default=J,E.format=Q,Object.defineProperty(E,"__esModule",{value:!0})});
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "sql-format-plus",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Formats whitespaces in a SQL query to make it more readable.",
|
|
5
|
+
"main": "dist/sql-format-plus.umd.js",
|
|
6
|
+
"module": "dist/sql-format-plus.es.js",
|
|
7
|
+
"typings": "./types/sql-format-plus.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"types",
|
|
11
|
+
"README.md",
|
|
12
|
+
"README.zh-CN.md",
|
|
13
|
+
"LICENSE"
|
|
14
|
+
],
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./types/sql-format-plus.d.ts",
|
|
18
|
+
"import": "./dist/sql-format-plus.es.js",
|
|
19
|
+
"default": "./dist/sql-format-plus.umd.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"dev": "vite",
|
|
24
|
+
"build": "rollup -c",
|
|
25
|
+
"check": "tsc --noEmit && tsc -p tsconfig.test.json",
|
|
26
|
+
"test": "vitest run",
|
|
27
|
+
"docs:dev": "vitepress dev docs",
|
|
28
|
+
"docs:build": "vitepress build docs",
|
|
29
|
+
"docs:preview": "vitepress preview docs",
|
|
30
|
+
"lint": "eslint .",
|
|
31
|
+
"lint:fix": "eslint . --fix",
|
|
32
|
+
"format": "prettier --write .",
|
|
33
|
+
"format:check": "prettier --check .",
|
|
34
|
+
"link": "npm link && npm link sql-format-plus",
|
|
35
|
+
"prepare": "husky",
|
|
36
|
+
"preview": "vite preview",
|
|
37
|
+
"serve": "vite"
|
|
38
|
+
},
|
|
39
|
+
"lint-staged": {
|
|
40
|
+
"*.{js,mjs,cjs,ts}": [
|
|
41
|
+
"eslint --fix",
|
|
42
|
+
"prettier --write"
|
|
43
|
+
],
|
|
44
|
+
"*.{json,md,css,html,yml,yaml}": [
|
|
45
|
+
"prettier --write"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"keywords": [
|
|
49
|
+
"sql",
|
|
50
|
+
"formatter",
|
|
51
|
+
"format",
|
|
52
|
+
"n1ql",
|
|
53
|
+
"db2",
|
|
54
|
+
"plsql"
|
|
55
|
+
],
|
|
56
|
+
"repository": {
|
|
57
|
+
"type": "git",
|
|
58
|
+
"url": "git+https://github.com/xcy960815/sql-format-plus.git"
|
|
59
|
+
},
|
|
60
|
+
"author": {
|
|
61
|
+
"name": "xcy960815",
|
|
62
|
+
"email": "18763006837@163.com"
|
|
63
|
+
},
|
|
64
|
+
"license": "MIT",
|
|
65
|
+
"bugs": {
|
|
66
|
+
"url": "https://github.com/xcy960815/sql-format-plus/issues"
|
|
67
|
+
},
|
|
68
|
+
"homepage": "https://github.com/xcy960815/sql-format-plus#readme",
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@eslint/js": "^9.30.1",
|
|
71
|
+
"@rollup/plugin-commonjs": "^28.0.6",
|
|
72
|
+
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
73
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
74
|
+
"@rollup/plugin-typescript": "^12.1.4",
|
|
75
|
+
"eslint": "^9.30.1",
|
|
76
|
+
"eslint-config-prettier": "^9.1.0",
|
|
77
|
+
"globals": "^15.8.0",
|
|
78
|
+
"husky": "^9.1.4",
|
|
79
|
+
"lint-staged": "^15.2.7",
|
|
80
|
+
"prettier": "^3.3.3",
|
|
81
|
+
"rollup": "^4.44.1",
|
|
82
|
+
"rollup-plugin-dts": "^6.2.1",
|
|
83
|
+
"tslib": "^2.0.3",
|
|
84
|
+
"typescript": "^5.6.3",
|
|
85
|
+
"typescript-eslint": "^8.35.1",
|
|
86
|
+
"vite": "^5.4.10",
|
|
87
|
+
"vitepress": "^1.3.4",
|
|
88
|
+
"vitest": "^2.1.9"
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 支持格式化的 SQL 方言选项。
|
|
3
|
+
*/
|
|
4
|
+
type SqlDialect = 'sql' | 'n1ql' | 'db2' | 'pl/sql';
|
|
5
|
+
/**
|
|
6
|
+
* 占位符替换值的有效类型。
|
|
7
|
+
*/
|
|
8
|
+
type ParamValue = string | number | boolean | null;
|
|
9
|
+
/**
|
|
10
|
+
* 格式化参数的表示形式。对于索引占位符,可以是一个数组;
|
|
11
|
+
* 对于命名占位符,可以是一个将键名映射到值的对象。
|
|
12
|
+
*/
|
|
13
|
+
type ParamsMap = Record<string, ParamValue> | ParamValue[];
|
|
14
|
+
/**
|
|
15
|
+
* SQL 格式化器的配置选项。
|
|
16
|
+
*/
|
|
17
|
+
interface FormatOptions {
|
|
18
|
+
/**
|
|
19
|
+
* 要格式化的 SQL 方言。默认为 'sql' (标准 SQL)。
|
|
20
|
+
*/
|
|
21
|
+
language?: SqlDialect;
|
|
22
|
+
/**
|
|
23
|
+
* 用于缩进的字符串,例如 ' ' 或 '\t'。默认为 ' '。
|
|
24
|
+
*/
|
|
25
|
+
indent?: string;
|
|
26
|
+
/**
|
|
27
|
+
* 用于替换查询中占位符参数的值。
|
|
28
|
+
*/
|
|
29
|
+
params?: ParamsMap;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 格式化 SQL 查询字符串以提高其可读性。
|
|
34
|
+
*
|
|
35
|
+
* 根据提供的配置选项,分发给标准 SQL 或特定方言的格式化器(db2、n1ql、pl/sql)。
|
|
36
|
+
*
|
|
37
|
+
* @param {string} query 要格式化的 SQL 查询字符串。
|
|
38
|
+
* @param {FormatOptions} [cfg={}] 格式化配置选项。
|
|
39
|
+
* @returns {string} 格式化后的 SQL 查询。
|
|
40
|
+
* @throws {Error} 如果配置中指定了不支持的 SQL 方言,则抛出错误。
|
|
41
|
+
*/
|
|
42
|
+
declare function format(query: string, cfg?: FormatOptions): string;
|
|
43
|
+
/**
|
|
44
|
+
* 默认导出,提供 SQL 格式化函数。
|
|
45
|
+
*/
|
|
46
|
+
declare const sqlFormatter: {
|
|
47
|
+
format: typeof format;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export { sqlFormatter as default, format };
|
|
51
|
+
export type { FormatOptions, ParamValue, ParamsMap, SqlDialect };
|