@guojc1/sql-formatter-compact 1.0.0

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.
Files changed (549) hide show
  1. package/AUTHORS +75 -0
  2. package/LICENSE +23 -0
  3. package/README.md +318 -0
  4. package/bin/sql-formatter-cli.cjs +182 -0
  5. package/dist/cjs/FormatOptions.d.ts +27 -0
  6. package/dist/cjs/FormatOptions.js +3 -0
  7. package/dist/cjs/FormatOptions.js.map +1 -0
  8. package/dist/cjs/allDialects.d.ts +20 -0
  9. package/dist/cjs/allDialects.js +44 -0
  10. package/dist/cjs/allDialects.js.map +1 -0
  11. package/dist/cjs/dialect.d.ts +18 -0
  12. package/dist/cjs/dialect.js +35 -0
  13. package/dist/cjs/dialect.js.map +1 -0
  14. package/dist/cjs/expandPhrases.d.ts +29 -0
  15. package/dist/cjs/expandPhrases.js +132 -0
  16. package/dist/cjs/expandPhrases.js.map +1 -0
  17. package/dist/cjs/formatter/ExpressionFormatter.d.ts +78 -0
  18. package/dist/cjs/formatter/ExpressionFormatter.js +546 -0
  19. package/dist/cjs/formatter/ExpressionFormatter.js.map +1 -0
  20. package/dist/cjs/formatter/Formatter.d.ts +18 -0
  21. package/dist/cjs/formatter/Formatter.js +80 -0
  22. package/dist/cjs/formatter/Formatter.js.map +1 -0
  23. package/dist/cjs/formatter/Indentation.d.ts +43 -0
  24. package/dist/cjs/formatter/Indentation.js +70 -0
  25. package/dist/cjs/formatter/Indentation.js.map +1 -0
  26. package/dist/cjs/formatter/InlineLayout.d.ts +21 -0
  27. package/dist/cjs/formatter/InlineLayout.js +88 -0
  28. package/dist/cjs/formatter/InlineLayout.js.map +1 -0
  29. package/dist/cjs/formatter/Layout.d.ts +41 -0
  30. package/dist/cjs/formatter/Layout.js +122 -0
  31. package/dist/cjs/formatter/Layout.js.map +1 -0
  32. package/dist/cjs/formatter/Params.d.ts +26 -0
  33. package/dist/cjs/formatter/Params.js +37 -0
  34. package/dist/cjs/formatter/Params.js.map +1 -0
  35. package/dist/cjs/formatter/config.d.ts +9 -0
  36. package/dist/cjs/formatter/config.js +25 -0
  37. package/dist/cjs/formatter/config.js.map +1 -0
  38. package/dist/cjs/formatter/tabularStyle.d.ts +11 -0
  39. package/dist/cjs/formatter/tabularStyle.js +39 -0
  40. package/dist/cjs/formatter/tabularStyle.js.map +1 -0
  41. package/dist/cjs/index.d.ts +28 -0
  42. package/dist/cjs/index.js +53 -0
  43. package/dist/cjs/index.js.map +1 -0
  44. package/dist/cjs/languages/bigquery/bigquery.formatter.d.ts +2 -0
  45. package/dist/cjs/languages/bigquery/bigquery.formatter.js +259 -0
  46. package/dist/cjs/languages/bigquery/bigquery.formatter.js.map +1 -0
  47. package/dist/cjs/languages/bigquery/bigquery.functions.d.ts +1 -0
  48. package/dist/cjs/languages/bigquery/bigquery.functions.js +549 -0
  49. package/dist/cjs/languages/bigquery/bigquery.functions.js.map +1 -0
  50. package/dist/cjs/languages/bigquery/bigquery.keywords.d.ts +2 -0
  51. package/dist/cjs/languages/bigquery/bigquery.keywords.js +139 -0
  52. package/dist/cjs/languages/bigquery/bigquery.keywords.js.map +1 -0
  53. package/dist/cjs/languages/clickhouse/clickhouse.formatter.d.ts +2 -0
  54. package/dist/cjs/languages/clickhouse/clickhouse.formatter.js +323 -0
  55. package/dist/cjs/languages/clickhouse/clickhouse.formatter.js.map +1 -0
  56. package/dist/cjs/languages/clickhouse/clickhouse.functions.d.ts +1 -0
  57. package/dist/cjs/languages/clickhouse/clickhouse.functions.js +1756 -0
  58. package/dist/cjs/languages/clickhouse/clickhouse.functions.js.map +1 -0
  59. package/dist/cjs/languages/clickhouse/clickhouse.keywords.d.ts +2 -0
  60. package/dist/cjs/languages/clickhouse/clickhouse.keywords.js +550 -0
  61. package/dist/cjs/languages/clickhouse/clickhouse.keywords.js.map +1 -0
  62. package/dist/cjs/languages/db2/db2.formatter.d.ts +2 -0
  63. package/dist/cjs/languages/db2/db2.formatter.js +304 -0
  64. package/dist/cjs/languages/db2/db2.formatter.js.map +1 -0
  65. package/dist/cjs/languages/db2/db2.functions.d.ts +1 -0
  66. package/dist/cjs/languages/db2/db2.functions.js +325 -0
  67. package/dist/cjs/languages/db2/db2.functions.js.map +1 -0
  68. package/dist/cjs/languages/db2/db2.keywords.d.ts +2 -0
  69. package/dist/cjs/languages/db2/db2.keywords.js +449 -0
  70. package/dist/cjs/languages/db2/db2.keywords.js.map +1 -0
  71. package/dist/cjs/languages/db2i/db2i.formatter.d.ts +2 -0
  72. package/dist/cjs/languages/db2i/db2i.formatter.js +181 -0
  73. package/dist/cjs/languages/db2i/db2i.formatter.js.map +1 -0
  74. package/dist/cjs/languages/db2i/db2i.functions.d.ts +1 -0
  75. package/dist/cjs/languages/db2i/db2i.functions.js +339 -0
  76. package/dist/cjs/languages/db2i/db2i.functions.js.map +1 -0
  77. package/dist/cjs/languages/db2i/db2i.keywords.d.ts +2 -0
  78. package/dist/cjs/languages/db2i/db2i.keywords.js +538 -0
  79. package/dist/cjs/languages/db2i/db2i.keywords.js.map +1 -0
  80. package/dist/cjs/languages/duckdb/duckdb.formatter.d.ts +2 -0
  81. package/dist/cjs/languages/duckdb/duckdb.formatter.js +213 -0
  82. package/dist/cjs/languages/duckdb/duckdb.formatter.js.map +1 -0
  83. package/dist/cjs/languages/duckdb/duckdb.functions.d.ts +1 -0
  84. package/dist/cjs/languages/duckdb/duckdb.functions.js +668 -0
  85. package/dist/cjs/languages/duckdb/duckdb.functions.js.map +1 -0
  86. package/dist/cjs/languages/duckdb/duckdb.keywords.d.ts +2 -0
  87. package/dist/cjs/languages/duckdb/duckdb.keywords.js +168 -0
  88. package/dist/cjs/languages/duckdb/duckdb.keywords.js.map +1 -0
  89. package/dist/cjs/languages/hive/hive.formatter.d.ts +2 -0
  90. package/dist/cjs/languages/hive/hive.formatter.js +106 -0
  91. package/dist/cjs/languages/hive/hive.formatter.js.map +1 -0
  92. package/dist/cjs/languages/hive/hive.functions.d.ts +1 -0
  93. package/dist/cjs/languages/hive/hive.functions.js +213 -0
  94. package/dist/cjs/languages/hive/hive.functions.js.map +1 -0
  95. package/dist/cjs/languages/hive/hive.keywords.d.ts +2 -0
  96. package/dist/cjs/languages/hive/hive.keywords.js +342 -0
  97. package/dist/cjs/languages/hive/hive.keywords.js.map +1 -0
  98. package/dist/cjs/languages/mariadb/likeMariaDb.d.ts +2 -0
  99. package/dist/cjs/languages/mariadb/likeMariaDb.js +22 -0
  100. package/dist/cjs/languages/mariadb/likeMariaDb.js.map +1 -0
  101. package/dist/cjs/languages/mariadb/mariadb.formatter.d.ts +2 -0
  102. package/dist/cjs/languages/mariadb/mariadb.formatter.js +317 -0
  103. package/dist/cjs/languages/mariadb/mariadb.formatter.js.map +1 -0
  104. package/dist/cjs/languages/mariadb/mariadb.functions.d.ts +1 -0
  105. package/dist/cjs/languages/mariadb/mariadb.functions.js +243 -0
  106. package/dist/cjs/languages/mariadb/mariadb.functions.js.map +1 -0
  107. package/dist/cjs/languages/mariadb/mariadb.keywords.d.ts +2 -0
  108. package/dist/cjs/languages/mariadb/mariadb.keywords.js +274 -0
  109. package/dist/cjs/languages/mariadb/mariadb.keywords.js.map +1 -0
  110. package/dist/cjs/languages/mysql/mysql.formatter.d.ts +2 -0
  111. package/dist/cjs/languages/mysql/mysql.formatter.js +284 -0
  112. package/dist/cjs/languages/mysql/mysql.formatter.js.map +1 -0
  113. package/dist/cjs/languages/mysql/mysql.functions.d.ts +1 -0
  114. package/dist/cjs/languages/mysql/mysql.functions.js +428 -0
  115. package/dist/cjs/languages/mysql/mysql.functions.js.map +1 -0
  116. package/dist/cjs/languages/mysql/mysql.keywords.d.ts +2 -0
  117. package/dist/cjs/languages/mysql/mysql.keywords.js +288 -0
  118. package/dist/cjs/languages/mysql/mysql.keywords.js.map +1 -0
  119. package/dist/cjs/languages/n1ql/n1ql.formatter.d.ts +2 -0
  120. package/dist/cjs/languages/n1ql/n1ql.formatter.js +109 -0
  121. package/dist/cjs/languages/n1ql/n1ql.formatter.js.map +1 -0
  122. package/dist/cjs/languages/n1ql/n1ql.functions.d.ts +1 -0
  123. package/dist/cjs/languages/n1ql/n1ql.functions.js +235 -0
  124. package/dist/cjs/languages/n1ql/n1ql.functions.js.map +1 -0
  125. package/dist/cjs/languages/n1ql/n1ql.keywords.d.ts +2 -0
  126. package/dist/cjs/languages/n1ql/n1ql.keywords.js +221 -0
  127. package/dist/cjs/languages/n1ql/n1ql.keywords.js.map +1 -0
  128. package/dist/cjs/languages/plsql/plsql.formatter.d.ts +2 -0
  129. package/dist/cjs/languages/plsql/plsql.formatter.js +140 -0
  130. package/dist/cjs/languages/plsql/plsql.formatter.js.map +1 -0
  131. package/dist/cjs/languages/plsql/plsql.functions.d.ts +1 -0
  132. package/dist/cjs/languages/plsql/plsql.functions.js +270 -0
  133. package/dist/cjs/languages/plsql/plsql.functions.js.map +1 -0
  134. package/dist/cjs/languages/plsql/plsql.keywords.d.ts +2 -0
  135. package/dist/cjs/languages/plsql/plsql.keywords.js +349 -0
  136. package/dist/cjs/languages/plsql/plsql.keywords.js.map +1 -0
  137. package/dist/cjs/languages/postgresql/postgresql.formatter.d.ts +2 -0
  138. package/dist/cjs/languages/postgresql/postgresql.formatter.js +391 -0
  139. package/dist/cjs/languages/postgresql/postgresql.formatter.js.map +1 -0
  140. package/dist/cjs/languages/postgresql/postgresql.functions.d.ts +1 -0
  141. package/dist/cjs/languages/postgresql/postgresql.functions.js +693 -0
  142. package/dist/cjs/languages/postgresql/postgresql.functions.js.map +1 -0
  143. package/dist/cjs/languages/postgresql/postgresql.keywords.d.ts +2 -0
  144. package/dist/cjs/languages/postgresql/postgresql.keywords.js +158 -0
  145. package/dist/cjs/languages/postgresql/postgresql.keywords.js.map +1 -0
  146. package/dist/cjs/languages/redshift/redshift.formatter.d.ts +2 -0
  147. package/dist/cjs/languages/redshift/redshift.formatter.js +180 -0
  148. package/dist/cjs/languages/redshift/redshift.formatter.js.map +1 -0
  149. package/dist/cjs/languages/redshift/redshift.functions.d.ts +1 -0
  150. package/dist/cjs/languages/redshift/redshift.functions.js +351 -0
  151. package/dist/cjs/languages/redshift/redshift.functions.js.map +1 -0
  152. package/dist/cjs/languages/redshift/redshift.keywords.d.ts +2 -0
  153. package/dist/cjs/languages/redshift/redshift.keywords.js +216 -0
  154. package/dist/cjs/languages/redshift/redshift.keywords.js.map +1 -0
  155. package/dist/cjs/languages/singlestoredb/singlestoredb.formatter.d.ts +2 -0
  156. package/dist/cjs/languages/singlestoredb/singlestoredb.formatter.js +286 -0
  157. package/dist/cjs/languages/singlestoredb/singlestoredb.formatter.js.map +1 -0
  158. package/dist/cjs/languages/singlestoredb/singlestoredb.functions.d.ts +1 -0
  159. package/dist/cjs/languages/singlestoredb/singlestoredb.functions.js +285 -0
  160. package/dist/cjs/languages/singlestoredb/singlestoredb.functions.js.map +1 -0
  161. package/dist/cjs/languages/singlestoredb/singlestoredb.keywords.d.ts +2 -0
  162. package/dist/cjs/languages/singlestoredb/singlestoredb.keywords.js +268 -0
  163. package/dist/cjs/languages/singlestoredb/singlestoredb.keywords.js.map +1 -0
  164. package/dist/cjs/languages/snowflake/snowflake.formatter.d.ts +2 -0
  165. package/dist/cjs/languages/snowflake/snowflake.formatter.js +339 -0
  166. package/dist/cjs/languages/snowflake/snowflake.formatter.js.map +1 -0
  167. package/dist/cjs/languages/snowflake/snowflake.functions.d.ts +1 -0
  168. package/dist/cjs/languages/snowflake/snowflake.functions.js +613 -0
  169. package/dist/cjs/languages/snowflake/snowflake.functions.js.map +1 -0
  170. package/dist/cjs/languages/snowflake/snowflake.keywords.d.ts +2 -0
  171. package/dist/cjs/languages/snowflake/snowflake.keywords.js +140 -0
  172. package/dist/cjs/languages/snowflake/snowflake.keywords.js.map +1 -0
  173. package/dist/cjs/languages/spark/spark.formatter.d.ts +2 -0
  174. package/dist/cjs/languages/spark/spark.formatter.js +167 -0
  175. package/dist/cjs/languages/spark/spark.formatter.js.map +1 -0
  176. package/dist/cjs/languages/spark/spark.functions.d.ts +1 -0
  177. package/dist/cjs/languages/spark/spark.functions.js +326 -0
  178. package/dist/cjs/languages/spark/spark.functions.js.map +1 -0
  179. package/dist/cjs/languages/spark/spark.keywords.d.ts +2 -0
  180. package/dist/cjs/languages/spark/spark.keywords.js +302 -0
  181. package/dist/cjs/languages/spark/spark.keywords.js.map +1 -0
  182. package/dist/cjs/languages/sql/sql.formatter.d.ts +2 -0
  183. package/dist/cjs/languages/sql/sql.formatter.js +97 -0
  184. package/dist/cjs/languages/sql/sql.formatter.js.map +1 -0
  185. package/dist/cjs/languages/sql/sql.functions.d.ts +1 -0
  186. package/dist/cjs/languages/sql/sql.functions.js +102 -0
  187. package/dist/cjs/languages/sql/sql.functions.js.map +1 -0
  188. package/dist/cjs/languages/sql/sql.keywords.d.ts +2 -0
  189. package/dist/cjs/languages/sql/sql.keywords.js +244 -0
  190. package/dist/cjs/languages/sql/sql.keywords.js.map +1 -0
  191. package/dist/cjs/languages/sqlite/sqlite.formatter.d.ts +2 -0
  192. package/dist/cjs/languages/sqlite/sqlite.formatter.js +94 -0
  193. package/dist/cjs/languages/sqlite/sqlite.formatter.js.map +1 -0
  194. package/dist/cjs/languages/sqlite/sqlite.functions.d.ts +1 -0
  195. package/dist/cjs/languages/sqlite/sqlite.functions.js +129 -0
  196. package/dist/cjs/languages/sqlite/sqlite.functions.js.map +1 -0
  197. package/dist/cjs/languages/sqlite/sqlite.keywords.d.ts +2 -0
  198. package/dist/cjs/languages/sqlite/sqlite.keywords.js +180 -0
  199. package/dist/cjs/languages/sqlite/sqlite.keywords.js.map +1 -0
  200. package/dist/cjs/languages/tidb/tidb.formatter.d.ts +2 -0
  201. package/dist/cjs/languages/tidb/tidb.formatter.js +218 -0
  202. package/dist/cjs/languages/tidb/tidb.formatter.js.map +1 -0
  203. package/dist/cjs/languages/tidb/tidb.functions.d.ts +1 -0
  204. package/dist/cjs/languages/tidb/tidb.functions.js +331 -0
  205. package/dist/cjs/languages/tidb/tidb.functions.js.map +1 -0
  206. package/dist/cjs/languages/tidb/tidb.keywords.d.ts +2 -0
  207. package/dist/cjs/languages/tidb/tidb.keywords.js +244 -0
  208. package/dist/cjs/languages/tidb/tidb.keywords.js.map +1 -0
  209. package/dist/cjs/languages/transactsql/transactsql.formatter.d.ts +2 -0
  210. package/dist/cjs/languages/transactsql/transactsql.formatter.js +275 -0
  211. package/dist/cjs/languages/transactsql/transactsql.formatter.js.map +1 -0
  212. package/dist/cjs/languages/transactsql/transactsql.functions.d.ts +1 -0
  213. package/dist/cjs/languages/transactsql/transactsql.functions.js +310 -0
  214. package/dist/cjs/languages/transactsql/transactsql.functions.js.map +1 -0
  215. package/dist/cjs/languages/transactsql/transactsql.keywords.d.ts +2 -0
  216. package/dist/cjs/languages/transactsql/transactsql.keywords.js +214 -0
  217. package/dist/cjs/languages/transactsql/transactsql.keywords.js.map +1 -0
  218. package/dist/cjs/languages/trino/trino.formatter.d.ts +2 -0
  219. package/dist/cjs/languages/trino/trino.formatter.js +163 -0
  220. package/dist/cjs/languages/trino/trino.formatter.js.map +1 -0
  221. package/dist/cjs/languages/trino/trino.functions.d.ts +1 -0
  222. package/dist/cjs/languages/trino/trino.functions.js +439 -0
  223. package/dist/cjs/languages/trino/trino.functions.js.map +1 -0
  224. package/dist/cjs/languages/trino/trino.keywords.d.ts +2 -0
  225. package/dist/cjs/languages/trino/trino.keywords.js +282 -0
  226. package/dist/cjs/languages/trino/trino.keywords.js.map +1 -0
  227. package/dist/cjs/lexer/NestedComment.d.ts +10 -0
  228. package/dist/cjs/lexer/NestedComment.js +54 -0
  229. package/dist/cjs/lexer/NestedComment.js.map +1 -0
  230. package/dist/cjs/lexer/Tokenizer.d.ts +14 -0
  231. package/dist/cjs/lexer/Tokenizer.js +293 -0
  232. package/dist/cjs/lexer/Tokenizer.js.map +1 -0
  233. package/dist/cjs/lexer/TokenizerEngine.d.ts +31 -0
  234. package/dist/cjs/lexer/TokenizerEngine.js +95 -0
  235. package/dist/cjs/lexer/TokenizerEngine.js.map +1 -0
  236. package/dist/cjs/lexer/TokenizerOptions.d.ts +56 -0
  237. package/dist/cjs/lexer/TokenizerOptions.js +3 -0
  238. package/dist/cjs/lexer/TokenizerOptions.js.map +1 -0
  239. package/dist/cjs/lexer/disambiguateTokens.d.ts +18 -0
  240. package/dist/cjs/lexer/disambiguateTokens.js +90 -0
  241. package/dist/cjs/lexer/disambiguateTokens.js.map +1 -0
  242. package/dist/cjs/lexer/lineColFromIndex.d.ts +8 -0
  243. package/dist/cjs/lexer/lineColFromIndex.js +12 -0
  244. package/dist/cjs/lexer/lineColFromIndex.js.map +1 -0
  245. package/dist/cjs/lexer/regexFactory.d.ts +55 -0
  246. package/dist/cjs/lexer/regexFactory.js +153 -0
  247. package/dist/cjs/lexer/regexFactory.js.map +1 -0
  248. package/dist/cjs/lexer/regexUtil.d.ts +7 -0
  249. package/dist/cjs/lexer/regexUtil.js +21 -0
  250. package/dist/cjs/lexer/regexUtil.js.map +1 -0
  251. package/dist/cjs/lexer/token.d.ts +89 -0
  252. package/dist/cjs/lexer/token.js +101 -0
  253. package/dist/cjs/lexer/token.js.map +1 -0
  254. package/dist/cjs/package.json +1 -0
  255. package/dist/cjs/parser/LexerAdapter.d.ts +17 -0
  256. package/dist/cjs/parser/LexerAdapter.js +30 -0
  257. package/dist/cjs/parser/LexerAdapter.js.map +1 -0
  258. package/dist/cjs/parser/ast.d.ts +158 -0
  259. package/dist/cjs/parser/ast.js +31 -0
  260. package/dist/cjs/parser/ast.js.map +1 -0
  261. package/dist/cjs/parser/createParser.d.ts +10 -0
  262. package/dist/cjs/parser/createParser.js +43 -0
  263. package/dist/cjs/parser/createParser.js.map +1 -0
  264. package/dist/cjs/parser/grammar.d.ts +28 -0
  265. package/dist/cjs/parser/grammar.js +371 -0
  266. package/dist/cjs/parser/grammar.js.map +1 -0
  267. package/dist/cjs/sqlFormatter.d.ts +31 -0
  268. package/dist/cjs/sqlFormatter.js +117 -0
  269. package/dist/cjs/sqlFormatter.js.map +1 -0
  270. package/dist/cjs/utils.d.ts +8 -0
  271. package/dist/cjs/utils.js +22 -0
  272. package/dist/cjs/utils.js.map +1 -0
  273. package/dist/cjs/validateConfig.d.ts +4 -0
  274. package/dist/cjs/validateConfig.js +43 -0
  275. package/dist/cjs/validateConfig.js.map +1 -0
  276. package/dist/esm/FormatOptions.d.ts +27 -0
  277. package/dist/esm/FormatOptions.js +2 -0
  278. package/dist/esm/FormatOptions.js.map +1 -0
  279. package/dist/esm/allDialects.d.ts +20 -0
  280. package/dist/esm/allDialects.js +21 -0
  281. package/dist/esm/allDialects.js.map +1 -0
  282. package/dist/esm/dialect.d.ts +18 -0
  283. package/dist/esm/dialect.js +28 -0
  284. package/dist/esm/dialect.js.map +1 -0
  285. package/dist/esm/expandPhrases.d.ts +29 -0
  286. package/dist/esm/expandPhrases.js +127 -0
  287. package/dist/esm/expandPhrases.js.map +1 -0
  288. package/dist/esm/formatter/ExpressionFormatter.d.ts +78 -0
  289. package/dist/esm/formatter/ExpressionFormatter.js +520 -0
  290. package/dist/esm/formatter/ExpressionFormatter.js.map +1 -0
  291. package/dist/esm/formatter/Formatter.d.ts +18 -0
  292. package/dist/esm/formatter/Formatter.js +51 -0
  293. package/dist/esm/formatter/Formatter.js.map +1 -0
  294. package/dist/esm/formatter/Indentation.d.ts +43 -0
  295. package/dist/esm/formatter/Indentation.js +67 -0
  296. package/dist/esm/formatter/Indentation.js.map +1 -0
  297. package/dist/esm/formatter/InlineLayout.d.ts +21 -0
  298. package/dist/esm/formatter/InlineLayout.js +57 -0
  299. package/dist/esm/formatter/InlineLayout.js.map +1 -0
  300. package/dist/esm/formatter/Layout.d.ts +41 -0
  301. package/dist/esm/formatter/Layout.js +118 -0
  302. package/dist/esm/formatter/Layout.js.map +1 -0
  303. package/dist/esm/formatter/Params.d.ts +26 -0
  304. package/dist/esm/formatter/Params.js +34 -0
  305. package/dist/esm/formatter/Params.js.map +1 -0
  306. package/dist/esm/formatter/config.d.ts +9 -0
  307. package/dist/esm/formatter/config.js +20 -0
  308. package/dist/esm/formatter/config.js.map +1 -0
  309. package/dist/esm/formatter/tabularStyle.d.ts +11 -0
  310. package/dist/esm/formatter/tabularStyle.js +34 -0
  311. package/dist/esm/formatter/tabularStyle.js.map +1 -0
  312. package/dist/esm/index.d.ts +28 -0
  313. package/dist/esm/index.js +25 -0
  314. package/dist/esm/index.js.map +1 -0
  315. package/dist/esm/languages/bigquery/bigquery.formatter.d.ts +2 -0
  316. package/dist/esm/languages/bigquery/bigquery.formatter.js +256 -0
  317. package/dist/esm/languages/bigquery/bigquery.formatter.js.map +1 -0
  318. package/dist/esm/languages/bigquery/bigquery.functions.d.ts +1 -0
  319. package/dist/esm/languages/bigquery/bigquery.functions.js +546 -0
  320. package/dist/esm/languages/bigquery/bigquery.functions.js.map +1 -0
  321. package/dist/esm/languages/bigquery/bigquery.keywords.d.ts +2 -0
  322. package/dist/esm/languages/bigquery/bigquery.keywords.js +136 -0
  323. package/dist/esm/languages/bigquery/bigquery.keywords.js.map +1 -0
  324. package/dist/esm/languages/clickhouse/clickhouse.formatter.d.ts +2 -0
  325. package/dist/esm/languages/clickhouse/clickhouse.formatter.js +320 -0
  326. package/dist/esm/languages/clickhouse/clickhouse.formatter.js.map +1 -0
  327. package/dist/esm/languages/clickhouse/clickhouse.functions.d.ts +1 -0
  328. package/dist/esm/languages/clickhouse/clickhouse.functions.js +1753 -0
  329. package/dist/esm/languages/clickhouse/clickhouse.functions.js.map +1 -0
  330. package/dist/esm/languages/clickhouse/clickhouse.keywords.d.ts +2 -0
  331. package/dist/esm/languages/clickhouse/clickhouse.keywords.js +547 -0
  332. package/dist/esm/languages/clickhouse/clickhouse.keywords.js.map +1 -0
  333. package/dist/esm/languages/db2/db2.formatter.d.ts +2 -0
  334. package/dist/esm/languages/db2/db2.formatter.js +301 -0
  335. package/dist/esm/languages/db2/db2.formatter.js.map +1 -0
  336. package/dist/esm/languages/db2/db2.functions.d.ts +1 -0
  337. package/dist/esm/languages/db2/db2.functions.js +322 -0
  338. package/dist/esm/languages/db2/db2.functions.js.map +1 -0
  339. package/dist/esm/languages/db2/db2.keywords.d.ts +2 -0
  340. package/dist/esm/languages/db2/db2.keywords.js +446 -0
  341. package/dist/esm/languages/db2/db2.keywords.js.map +1 -0
  342. package/dist/esm/languages/db2i/db2i.formatter.d.ts +2 -0
  343. package/dist/esm/languages/db2i/db2i.formatter.js +178 -0
  344. package/dist/esm/languages/db2i/db2i.formatter.js.map +1 -0
  345. package/dist/esm/languages/db2i/db2i.functions.d.ts +1 -0
  346. package/dist/esm/languages/db2i/db2i.functions.js +336 -0
  347. package/dist/esm/languages/db2i/db2i.functions.js.map +1 -0
  348. package/dist/esm/languages/db2i/db2i.keywords.d.ts +2 -0
  349. package/dist/esm/languages/db2i/db2i.keywords.js +535 -0
  350. package/dist/esm/languages/db2i/db2i.keywords.js.map +1 -0
  351. package/dist/esm/languages/duckdb/duckdb.formatter.d.ts +2 -0
  352. package/dist/esm/languages/duckdb/duckdb.formatter.js +210 -0
  353. package/dist/esm/languages/duckdb/duckdb.formatter.js.map +1 -0
  354. package/dist/esm/languages/duckdb/duckdb.functions.d.ts +1 -0
  355. package/dist/esm/languages/duckdb/duckdb.functions.js +665 -0
  356. package/dist/esm/languages/duckdb/duckdb.functions.js.map +1 -0
  357. package/dist/esm/languages/duckdb/duckdb.keywords.d.ts +2 -0
  358. package/dist/esm/languages/duckdb/duckdb.keywords.js +165 -0
  359. package/dist/esm/languages/duckdb/duckdb.keywords.js.map +1 -0
  360. package/dist/esm/languages/hive/hive.formatter.d.ts +2 -0
  361. package/dist/esm/languages/hive/hive.formatter.js +103 -0
  362. package/dist/esm/languages/hive/hive.formatter.js.map +1 -0
  363. package/dist/esm/languages/hive/hive.functions.d.ts +1 -0
  364. package/dist/esm/languages/hive/hive.functions.js +210 -0
  365. package/dist/esm/languages/hive/hive.functions.js.map +1 -0
  366. package/dist/esm/languages/hive/hive.keywords.d.ts +2 -0
  367. package/dist/esm/languages/hive/hive.keywords.js +339 -0
  368. package/dist/esm/languages/hive/hive.keywords.js.map +1 -0
  369. package/dist/esm/languages/mariadb/likeMariaDb.d.ts +2 -0
  370. package/dist/esm/languages/mariadb/likeMariaDb.js +18 -0
  371. package/dist/esm/languages/mariadb/likeMariaDb.js.map +1 -0
  372. package/dist/esm/languages/mariadb/mariadb.formatter.d.ts +2 -0
  373. package/dist/esm/languages/mariadb/mariadb.formatter.js +314 -0
  374. package/dist/esm/languages/mariadb/mariadb.formatter.js.map +1 -0
  375. package/dist/esm/languages/mariadb/mariadb.functions.d.ts +1 -0
  376. package/dist/esm/languages/mariadb/mariadb.functions.js +240 -0
  377. package/dist/esm/languages/mariadb/mariadb.functions.js.map +1 -0
  378. package/dist/esm/languages/mariadb/mariadb.keywords.d.ts +2 -0
  379. package/dist/esm/languages/mariadb/mariadb.keywords.js +271 -0
  380. package/dist/esm/languages/mariadb/mariadb.keywords.js.map +1 -0
  381. package/dist/esm/languages/mysql/mysql.formatter.d.ts +2 -0
  382. package/dist/esm/languages/mysql/mysql.formatter.js +281 -0
  383. package/dist/esm/languages/mysql/mysql.formatter.js.map +1 -0
  384. package/dist/esm/languages/mysql/mysql.functions.d.ts +1 -0
  385. package/dist/esm/languages/mysql/mysql.functions.js +425 -0
  386. package/dist/esm/languages/mysql/mysql.functions.js.map +1 -0
  387. package/dist/esm/languages/mysql/mysql.keywords.d.ts +2 -0
  388. package/dist/esm/languages/mysql/mysql.keywords.js +285 -0
  389. package/dist/esm/languages/mysql/mysql.keywords.js.map +1 -0
  390. package/dist/esm/languages/n1ql/n1ql.formatter.d.ts +2 -0
  391. package/dist/esm/languages/n1ql/n1ql.formatter.js +106 -0
  392. package/dist/esm/languages/n1ql/n1ql.formatter.js.map +1 -0
  393. package/dist/esm/languages/n1ql/n1ql.functions.d.ts +1 -0
  394. package/dist/esm/languages/n1ql/n1ql.functions.js +232 -0
  395. package/dist/esm/languages/n1ql/n1ql.functions.js.map +1 -0
  396. package/dist/esm/languages/n1ql/n1ql.keywords.d.ts +2 -0
  397. package/dist/esm/languages/n1ql/n1ql.keywords.js +218 -0
  398. package/dist/esm/languages/n1ql/n1ql.keywords.js.map +1 -0
  399. package/dist/esm/languages/plsql/plsql.formatter.d.ts +2 -0
  400. package/dist/esm/languages/plsql/plsql.formatter.js +137 -0
  401. package/dist/esm/languages/plsql/plsql.formatter.js.map +1 -0
  402. package/dist/esm/languages/plsql/plsql.functions.d.ts +1 -0
  403. package/dist/esm/languages/plsql/plsql.functions.js +267 -0
  404. package/dist/esm/languages/plsql/plsql.functions.js.map +1 -0
  405. package/dist/esm/languages/plsql/plsql.keywords.d.ts +2 -0
  406. package/dist/esm/languages/plsql/plsql.keywords.js +346 -0
  407. package/dist/esm/languages/plsql/plsql.keywords.js.map +1 -0
  408. package/dist/esm/languages/postgresql/postgresql.formatter.d.ts +2 -0
  409. package/dist/esm/languages/postgresql/postgresql.formatter.js +388 -0
  410. package/dist/esm/languages/postgresql/postgresql.formatter.js.map +1 -0
  411. package/dist/esm/languages/postgresql/postgresql.functions.d.ts +1 -0
  412. package/dist/esm/languages/postgresql/postgresql.functions.js +690 -0
  413. package/dist/esm/languages/postgresql/postgresql.functions.js.map +1 -0
  414. package/dist/esm/languages/postgresql/postgresql.keywords.d.ts +2 -0
  415. package/dist/esm/languages/postgresql/postgresql.keywords.js +155 -0
  416. package/dist/esm/languages/postgresql/postgresql.keywords.js.map +1 -0
  417. package/dist/esm/languages/redshift/redshift.formatter.d.ts +2 -0
  418. package/dist/esm/languages/redshift/redshift.formatter.js +177 -0
  419. package/dist/esm/languages/redshift/redshift.formatter.js.map +1 -0
  420. package/dist/esm/languages/redshift/redshift.functions.d.ts +1 -0
  421. package/dist/esm/languages/redshift/redshift.functions.js +348 -0
  422. package/dist/esm/languages/redshift/redshift.functions.js.map +1 -0
  423. package/dist/esm/languages/redshift/redshift.keywords.d.ts +2 -0
  424. package/dist/esm/languages/redshift/redshift.keywords.js +213 -0
  425. package/dist/esm/languages/redshift/redshift.keywords.js.map +1 -0
  426. package/dist/esm/languages/singlestoredb/singlestoredb.formatter.d.ts +2 -0
  427. package/dist/esm/languages/singlestoredb/singlestoredb.formatter.js +283 -0
  428. package/dist/esm/languages/singlestoredb/singlestoredb.formatter.js.map +1 -0
  429. package/dist/esm/languages/singlestoredb/singlestoredb.functions.d.ts +1 -0
  430. package/dist/esm/languages/singlestoredb/singlestoredb.functions.js +282 -0
  431. package/dist/esm/languages/singlestoredb/singlestoredb.functions.js.map +1 -0
  432. package/dist/esm/languages/singlestoredb/singlestoredb.keywords.d.ts +2 -0
  433. package/dist/esm/languages/singlestoredb/singlestoredb.keywords.js +265 -0
  434. package/dist/esm/languages/singlestoredb/singlestoredb.keywords.js.map +1 -0
  435. package/dist/esm/languages/snowflake/snowflake.formatter.d.ts +2 -0
  436. package/dist/esm/languages/snowflake/snowflake.formatter.js +336 -0
  437. package/dist/esm/languages/snowflake/snowflake.formatter.js.map +1 -0
  438. package/dist/esm/languages/snowflake/snowflake.functions.d.ts +1 -0
  439. package/dist/esm/languages/snowflake/snowflake.functions.js +610 -0
  440. package/dist/esm/languages/snowflake/snowflake.functions.js.map +1 -0
  441. package/dist/esm/languages/snowflake/snowflake.keywords.d.ts +2 -0
  442. package/dist/esm/languages/snowflake/snowflake.keywords.js +137 -0
  443. package/dist/esm/languages/snowflake/snowflake.keywords.js.map +1 -0
  444. package/dist/esm/languages/spark/spark.formatter.d.ts +2 -0
  445. package/dist/esm/languages/spark/spark.formatter.js +164 -0
  446. package/dist/esm/languages/spark/spark.formatter.js.map +1 -0
  447. package/dist/esm/languages/spark/spark.functions.d.ts +1 -0
  448. package/dist/esm/languages/spark/spark.functions.js +323 -0
  449. package/dist/esm/languages/spark/spark.functions.js.map +1 -0
  450. package/dist/esm/languages/spark/spark.keywords.d.ts +2 -0
  451. package/dist/esm/languages/spark/spark.keywords.js +299 -0
  452. package/dist/esm/languages/spark/spark.keywords.js.map +1 -0
  453. package/dist/esm/languages/sql/sql.formatter.d.ts +2 -0
  454. package/dist/esm/languages/sql/sql.formatter.js +94 -0
  455. package/dist/esm/languages/sql/sql.formatter.js.map +1 -0
  456. package/dist/esm/languages/sql/sql.functions.d.ts +1 -0
  457. package/dist/esm/languages/sql/sql.functions.js +99 -0
  458. package/dist/esm/languages/sql/sql.functions.js.map +1 -0
  459. package/dist/esm/languages/sql/sql.keywords.d.ts +2 -0
  460. package/dist/esm/languages/sql/sql.keywords.js +241 -0
  461. package/dist/esm/languages/sql/sql.keywords.js.map +1 -0
  462. package/dist/esm/languages/sqlite/sqlite.formatter.d.ts +2 -0
  463. package/dist/esm/languages/sqlite/sqlite.formatter.js +91 -0
  464. package/dist/esm/languages/sqlite/sqlite.formatter.js.map +1 -0
  465. package/dist/esm/languages/sqlite/sqlite.functions.d.ts +1 -0
  466. package/dist/esm/languages/sqlite/sqlite.functions.js +126 -0
  467. package/dist/esm/languages/sqlite/sqlite.functions.js.map +1 -0
  468. package/dist/esm/languages/sqlite/sqlite.keywords.d.ts +2 -0
  469. package/dist/esm/languages/sqlite/sqlite.keywords.js +177 -0
  470. package/dist/esm/languages/sqlite/sqlite.keywords.js.map +1 -0
  471. package/dist/esm/languages/tidb/tidb.formatter.d.ts +2 -0
  472. package/dist/esm/languages/tidb/tidb.formatter.js +215 -0
  473. package/dist/esm/languages/tidb/tidb.formatter.js.map +1 -0
  474. package/dist/esm/languages/tidb/tidb.functions.d.ts +1 -0
  475. package/dist/esm/languages/tidb/tidb.functions.js +328 -0
  476. package/dist/esm/languages/tidb/tidb.functions.js.map +1 -0
  477. package/dist/esm/languages/tidb/tidb.keywords.d.ts +2 -0
  478. package/dist/esm/languages/tidb/tidb.keywords.js +241 -0
  479. package/dist/esm/languages/tidb/tidb.keywords.js.map +1 -0
  480. package/dist/esm/languages/transactsql/transactsql.formatter.d.ts +2 -0
  481. package/dist/esm/languages/transactsql/transactsql.formatter.js +272 -0
  482. package/dist/esm/languages/transactsql/transactsql.formatter.js.map +1 -0
  483. package/dist/esm/languages/transactsql/transactsql.functions.d.ts +1 -0
  484. package/dist/esm/languages/transactsql/transactsql.functions.js +307 -0
  485. package/dist/esm/languages/transactsql/transactsql.functions.js.map +1 -0
  486. package/dist/esm/languages/transactsql/transactsql.keywords.d.ts +2 -0
  487. package/dist/esm/languages/transactsql/transactsql.keywords.js +211 -0
  488. package/dist/esm/languages/transactsql/transactsql.keywords.js.map +1 -0
  489. package/dist/esm/languages/trino/trino.formatter.d.ts +2 -0
  490. package/dist/esm/languages/trino/trino.formatter.js +160 -0
  491. package/dist/esm/languages/trino/trino.formatter.js.map +1 -0
  492. package/dist/esm/languages/trino/trino.functions.d.ts +1 -0
  493. package/dist/esm/languages/trino/trino.functions.js +436 -0
  494. package/dist/esm/languages/trino/trino.functions.js.map +1 -0
  495. package/dist/esm/languages/trino/trino.keywords.d.ts +2 -0
  496. package/dist/esm/languages/trino/trino.keywords.js +279 -0
  497. package/dist/esm/languages/trino/trino.keywords.js.map +1 -0
  498. package/dist/esm/lexer/NestedComment.d.ts +10 -0
  499. package/dist/esm/lexer/NestedComment.js +50 -0
  500. package/dist/esm/lexer/NestedComment.js.map +1 -0
  501. package/dist/esm/lexer/Tokenizer.d.ts +14 -0
  502. package/dist/esm/lexer/Tokenizer.js +264 -0
  503. package/dist/esm/lexer/Tokenizer.js.map +1 -0
  504. package/dist/esm/lexer/TokenizerEngine.d.ts +31 -0
  505. package/dist/esm/lexer/TokenizerEngine.js +92 -0
  506. package/dist/esm/lexer/TokenizerEngine.js.map +1 -0
  507. package/dist/esm/lexer/TokenizerOptions.d.ts +56 -0
  508. package/dist/esm/lexer/TokenizerOptions.js +2 -0
  509. package/dist/esm/lexer/TokenizerOptions.js.map +1 -0
  510. package/dist/esm/lexer/disambiguateTokens.d.ts +18 -0
  511. package/dist/esm/lexer/disambiguateTokens.js +86 -0
  512. package/dist/esm/lexer/disambiguateTokens.js.map +1 -0
  513. package/dist/esm/lexer/lineColFromIndex.d.ts +8 -0
  514. package/dist/esm/lexer/lineColFromIndex.js +8 -0
  515. package/dist/esm/lexer/lineColFromIndex.js.map +1 -0
  516. package/dist/esm/lexer/regexFactory.d.ts +55 -0
  517. package/dist/esm/lexer/regexFactory.js +140 -0
  518. package/dist/esm/lexer/regexFactory.js.map +1 -0
  519. package/dist/esm/lexer/regexUtil.d.ts +7 -0
  520. package/dist/esm/lexer/regexUtil.js +13 -0
  521. package/dist/esm/lexer/regexUtil.js.map +1 -0
  522. package/dist/esm/lexer/token.d.ts +89 -0
  523. package/dist/esm/lexer/token.js +94 -0
  524. package/dist/esm/lexer/token.js.map +1 -0
  525. package/dist/esm/parser/LexerAdapter.d.ts +17 -0
  526. package/dist/esm/parser/LexerAdapter.js +27 -0
  527. package/dist/esm/parser/LexerAdapter.js.map +1 -0
  528. package/dist/esm/parser/ast.d.ts +158 -0
  529. package/dist/esm/parser/ast.js +28 -0
  530. package/dist/esm/parser/ast.js.map +1 -0
  531. package/dist/esm/parser/createParser.d.ts +10 -0
  532. package/dist/esm/parser/createParser.js +36 -0
  533. package/dist/esm/parser/createParser.js.map +1 -0
  534. package/dist/esm/parser/grammar.d.ts +28 -0
  535. package/dist/esm/parser/grammar.js +366 -0
  536. package/dist/esm/parser/grammar.js.map +1 -0
  537. package/dist/esm/sqlFormatter.d.ts +31 -0
  538. package/dist/esm/sqlFormatter.js +86 -0
  539. package/dist/esm/sqlFormatter.js.map +1 -0
  540. package/dist/esm/utils.d.ts +8 -0
  541. package/dist/esm/utils.js +13 -0
  542. package/dist/esm/utils.js.map +1 -0
  543. package/dist/esm/validateConfig.d.ts +4 -0
  544. package/dist/esm/validateConfig.js +38 -0
  545. package/dist/esm/validateConfig.js.map +1 -0
  546. package/dist/sql-formatter.min.cjs +2 -0
  547. package/dist/sql-formatter.min.cjs.map +1 -0
  548. package/dist/sql-formatter.min.js +2 -0
  549. package/package.json +135 -0
@@ -0,0 +1,31 @@
1
+ import { Token, TokenType } from './token.js';
2
+ export interface RegExpLike {
3
+ lastIndex: number;
4
+ exec(input: string): string[] | null;
5
+ }
6
+ export interface TokenRule {
7
+ type: TokenType;
8
+ regex: RegExpLike;
9
+ text?: (rawText: string) => string;
10
+ key?: (rawText: string) => string;
11
+ }
12
+ export default class TokenizerEngine {
13
+ private rules;
14
+ private dialectName;
15
+ private input;
16
+ private index;
17
+ constructor(rules: TokenRule[], dialectName: string);
18
+ /**
19
+ * Takes a SQL string and breaks it into tokens.
20
+ * Each token is an object with type and value.
21
+ *
22
+ * @param {string} input - The SQL string
23
+ * @returns {Token[]} output token stream
24
+ */
25
+ tokenize(input: string): Token[];
26
+ private createParseError;
27
+ private dialectInfo;
28
+ private getWhitespace;
29
+ private getNextToken;
30
+ private match;
31
+ }
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lineColFromIndex_js_1 = require("./lineColFromIndex.js");
4
+ const regexUtil_js_1 = require("./regexUtil.js");
5
+ class TokenizerEngine {
6
+ constructor(rules, dialectName) {
7
+ this.rules = rules;
8
+ this.dialectName = dialectName;
9
+ this.input = ''; // The input SQL string to process
10
+ this.index = 0; // Current position in string
11
+ }
12
+ /**
13
+ * Takes a SQL string and breaks it into tokens.
14
+ * Each token is an object with type and value.
15
+ *
16
+ * @param {string} input - The SQL string
17
+ * @returns {Token[]} output token stream
18
+ */
19
+ tokenize(input) {
20
+ this.input = input;
21
+ this.index = 0;
22
+ const tokens = [];
23
+ let token;
24
+ // Keep processing the string until end is reached
25
+ while (this.index < this.input.length) {
26
+ // skip any preceding whitespace
27
+ const precedingWhitespace = this.getWhitespace();
28
+ if (this.index < this.input.length) {
29
+ // Get the next token and the token type
30
+ token = this.getNextToken();
31
+ if (!token) {
32
+ throw this.createParseError();
33
+ }
34
+ tokens.push(Object.assign(Object.assign({}, token), { precedingWhitespace }));
35
+ }
36
+ }
37
+ return tokens;
38
+ }
39
+ createParseError() {
40
+ const text = this.input.slice(this.index, this.index + 10);
41
+ const { line, col } = (0, lineColFromIndex_js_1.lineColFromIndex)(this.input, this.index);
42
+ return new Error(`Parse error: Unexpected "${text}" at line ${line} column ${col}.\n${this.dialectInfo()}`);
43
+ }
44
+ dialectInfo() {
45
+ if (this.dialectName === 'sql') {
46
+ return (`This likely happens because you're using the default "sql" dialect.\n` +
47
+ `If possible, please select a more specific dialect (like sqlite, postgresql, etc).`);
48
+ }
49
+ else {
50
+ return `SQL dialect used: "${this.dialectName}".`;
51
+ }
52
+ }
53
+ getWhitespace() {
54
+ regexUtil_js_1.WHITESPACE_REGEX.lastIndex = this.index;
55
+ const matches = regexUtil_js_1.WHITESPACE_REGEX.exec(this.input);
56
+ if (matches) {
57
+ // Advance current position by matched whitespace length
58
+ this.index += matches[0].length;
59
+ return matches[0];
60
+ }
61
+ return undefined;
62
+ }
63
+ getNextToken() {
64
+ for (const rule of this.rules) {
65
+ const token = this.match(rule);
66
+ if (token) {
67
+ return token;
68
+ }
69
+ }
70
+ return undefined;
71
+ }
72
+ // Attempts to match token rule regex at current position in input
73
+ match(rule) {
74
+ rule.regex.lastIndex = this.index;
75
+ const matches = rule.regex.exec(this.input);
76
+ if (matches) {
77
+ const matchedText = matches[0];
78
+ const token = {
79
+ type: rule.type,
80
+ raw: matchedText,
81
+ text: rule.text ? rule.text(matchedText) : matchedText,
82
+ start: this.index,
83
+ };
84
+ if (rule.key) {
85
+ token.key = rule.key(matchedText);
86
+ }
87
+ // Advance current position by matched token length
88
+ this.index += matchedText.length;
89
+ return token;
90
+ }
91
+ return undefined;
92
+ }
93
+ }
94
+ exports.default = TokenizerEngine;
95
+ //# sourceMappingURL=TokenizerEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenizerEngine.js","sourceRoot":"","sources":["../../../src/lexer/TokenizerEngine.ts"],"names":[],"mappings":";;AACA,+DAAyD;AACzD,iDAAkD;AAkBlD,MAAqB,eAAe;IAIlC,YAAoB,KAAkB,EAAU,WAAmB;QAA/C,UAAK,GAAL,KAAK,CAAa;QAAU,gBAAW,GAAX,WAAW,CAAQ;QAH3D,UAAK,GAAG,EAAE,CAAC,CAAC,kCAAkC;QAC9C,UAAK,GAAG,CAAC,CAAC,CAAC,6BAA6B;IAEsB,CAAC;IAEvE;;;;;;OAMG;IACI,QAAQ,CAAC,KAAa;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACf,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,IAAI,KAAwB,CAAC;QAE7B,kDAAkD;QAClD,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACrC,gCAAgC;YAChC,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAEjD,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;gBAClC,wCAAwC;gBACxC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC5B,IAAI,CAAC,KAAK,EAAE;oBACV,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;iBAC/B;gBAED,MAAM,CAAC,IAAI,iCAAM,KAAK,KAAE,mBAAmB,IAAG,CAAC;aAChD;SACF;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAA,sCAAgB,EAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI,KAAK,CACd,4BAA4B,IAAI,aAAa,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,CAC1F,CAAC;IACJ,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YAC9B,OAAO,CACL,uEAAuE;gBACvE,oFAAoF,CACrF,CAAC;SACH;aAAM;YACL,OAAO,sBAAsB,IAAI,CAAC,WAAW,IAAI,CAAC;SACnD;IACH,CAAC;IAEO,aAAa;QACnB,+BAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAExC,MAAM,OAAO,GAAG,+BAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,OAAO,EAAE;YACX,wDAAwD;YACxD,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAChC,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;SACnB;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,YAAY;QAClB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,KAAK,EAAE;gBACT,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,kEAAkE;IAC1D,KAAK,CAAC,IAAe;QAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,OAAO,EAAE;YACX,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAE/B,MAAM,KAAK,GAAU;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW;gBACtD,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;YAEF,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;aACnC;YAED,mDAAmD;YACnD,IAAI,CAAC,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC;YACjC,OAAO,KAAK,CAAC;SACd;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF;AAtGD,kCAsGC"}
@@ -0,0 +1,56 @@
1
+ import { quotePatterns } from './regexFactory.js';
2
+ import { Token } from './token.js';
3
+ export interface IdentChars {
4
+ first?: string;
5
+ rest?: string;
6
+ dashes?: boolean;
7
+ allowFirstCharNumber?: boolean;
8
+ }
9
+ export type PlainQuoteType = keyof typeof quotePatterns;
10
+ export interface PrefixedQuoteType {
11
+ quote: PlainQuoteType;
12
+ prefixes: string[];
13
+ requirePrefix?: boolean;
14
+ }
15
+ export interface RegexPattern {
16
+ regex: string;
17
+ }
18
+ export type QuoteType = PlainQuoteType | PrefixedQuoteType | RegexPattern;
19
+ export type VariableType = RegexPattern | PrefixedQuoteType;
20
+ export interface ParamTypes {
21
+ positional?: boolean;
22
+ numbered?: ('?' | ':' | '$')[];
23
+ named?: (':' | '@' | '$')[];
24
+ quoted?: (':' | '@' | '$')[];
25
+ custom?: CustomParameter[];
26
+ }
27
+ export interface CustomParameter {
28
+ regex: string;
29
+ key?: (text: string) => string;
30
+ }
31
+ export interface TokenizerOptions {
32
+ reservedSelect: string[];
33
+ reservedClauses: string[];
34
+ supportsXor?: boolean;
35
+ reservedSetOperations: string[];
36
+ reservedJoins: string[];
37
+ reservedKeywordPhrases?: string[];
38
+ reservedDataTypePhrases?: string[];
39
+ reservedFunctionNames: string[];
40
+ reservedDataTypes: string[];
41
+ reservedKeywords: string[];
42
+ stringTypes: QuoteType[];
43
+ identTypes: QuoteType[];
44
+ variableTypes?: VariableType[];
45
+ extraParens?: ('[]' | '{}')[];
46
+ paramTypes?: ParamTypes;
47
+ lineCommentTypes?: string[];
48
+ nestedBlockComments?: boolean;
49
+ identChars?: IdentChars;
50
+ paramChars?: IdentChars;
51
+ operators?: string[];
52
+ propertyAccessOperators?: string[];
53
+ operatorKeyword?: boolean;
54
+ underscoresInNumbers?: boolean;
55
+ postProcess?: (tokens: Token[]) => Token[];
56
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=TokenizerOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenizerOptions.js","sourceRoot":"","sources":["../../../src/lexer/TokenizerOptions.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ import { Token } from './token.js';
2
+ /**
3
+ * Ensures that no keyword token (RESERVED_*) is preceded or followed by a dot (.)
4
+ * or any other property-access operator.
5
+ *
6
+ * Ensures that all RESERVED_FUNCTION_NAME tokens are followed by "(".
7
+ * If they're not, converts the token to IDENTIFIER.
8
+ *
9
+ * Converts RESERVED_DATA_TYPE tokens followed by "(" to RESERVED_PARAMETERIZED_DATA_TYPE.
10
+ *
11
+ * When IDENTIFIER or RESERVED_DATA_TYPE token is followed by "["
12
+ * converts it to ARRAY_IDENTIFIER or ARRAY_KEYWORD accordingly.
13
+ *
14
+ * This is needed to avoid ambiguity in parser which expects function names
15
+ * to always be followed by open-paren, and to distinguish between
16
+ * array accessor `foo[1]` and array literal `[1, 2, 3]`.
17
+ */
18
+ export declare function disambiguateTokens(tokens: Token[]): Token[];
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.disambiguateTokens = void 0;
4
+ const token_js_1 = require("./token.js");
5
+ /**
6
+ * Ensures that no keyword token (RESERVED_*) is preceded or followed by a dot (.)
7
+ * or any other property-access operator.
8
+ *
9
+ * Ensures that all RESERVED_FUNCTION_NAME tokens are followed by "(".
10
+ * If they're not, converts the token to IDENTIFIER.
11
+ *
12
+ * Converts RESERVED_DATA_TYPE tokens followed by "(" to RESERVED_PARAMETERIZED_DATA_TYPE.
13
+ *
14
+ * When IDENTIFIER or RESERVED_DATA_TYPE token is followed by "["
15
+ * converts it to ARRAY_IDENTIFIER or ARRAY_KEYWORD accordingly.
16
+ *
17
+ * This is needed to avoid ambiguity in parser which expects function names
18
+ * to always be followed by open-paren, and to distinguish between
19
+ * array accessor `foo[1]` and array literal `[1, 2, 3]`.
20
+ */
21
+ function disambiguateTokens(tokens) {
22
+ return tokens
23
+ .map(propertyNameKeywordToIdent)
24
+ .map(funcNameToIdent)
25
+ .map(dataTypeToParameterizedDataType)
26
+ .map(identToArrayIdent)
27
+ .map(dataTypeToArrayKeyword);
28
+ }
29
+ exports.disambiguateTokens = disambiguateTokens;
30
+ const propertyNameKeywordToIdent = (token, i, tokens) => {
31
+ if ((0, token_js_1.isReserved)(token.type)) {
32
+ const prevToken = prevNonCommentToken(tokens, i);
33
+ if (prevToken && prevToken.type === token_js_1.TokenType.PROPERTY_ACCESS_OPERATOR) {
34
+ return Object.assign(Object.assign({}, token), { type: token_js_1.TokenType.IDENTIFIER, text: token.raw });
35
+ }
36
+ const nextToken = nextNonCommentToken(tokens, i);
37
+ if (nextToken && nextToken.type === token_js_1.TokenType.PROPERTY_ACCESS_OPERATOR) {
38
+ return Object.assign(Object.assign({}, token), { type: token_js_1.TokenType.IDENTIFIER, text: token.raw });
39
+ }
40
+ }
41
+ return token;
42
+ };
43
+ const funcNameToIdent = (token, i, tokens) => {
44
+ if (token.type === token_js_1.TokenType.RESERVED_FUNCTION_NAME) {
45
+ const nextToken = nextNonCommentToken(tokens, i);
46
+ if (!nextToken || !isOpenParen(nextToken)) {
47
+ return Object.assign(Object.assign({}, token), { type: token_js_1.TokenType.IDENTIFIER, text: token.raw });
48
+ }
49
+ }
50
+ return token;
51
+ };
52
+ const dataTypeToParameterizedDataType = (token, i, tokens) => {
53
+ if (token.type === token_js_1.TokenType.RESERVED_DATA_TYPE) {
54
+ const nextToken = nextNonCommentToken(tokens, i);
55
+ if (nextToken && isOpenParen(nextToken)) {
56
+ return Object.assign(Object.assign({}, token), { type: token_js_1.TokenType.RESERVED_PARAMETERIZED_DATA_TYPE });
57
+ }
58
+ }
59
+ return token;
60
+ };
61
+ const identToArrayIdent = (token, i, tokens) => {
62
+ if (token.type === token_js_1.TokenType.IDENTIFIER) {
63
+ const nextToken = nextNonCommentToken(tokens, i);
64
+ if (nextToken && isOpenBracket(nextToken)) {
65
+ return Object.assign(Object.assign({}, token), { type: token_js_1.TokenType.ARRAY_IDENTIFIER });
66
+ }
67
+ }
68
+ return token;
69
+ };
70
+ const dataTypeToArrayKeyword = (token, i, tokens) => {
71
+ if (token.type === token_js_1.TokenType.RESERVED_DATA_TYPE) {
72
+ const nextToken = nextNonCommentToken(tokens, i);
73
+ if (nextToken && isOpenBracket(nextToken)) {
74
+ return Object.assign(Object.assign({}, token), { type: token_js_1.TokenType.ARRAY_KEYWORD });
75
+ }
76
+ }
77
+ return token;
78
+ };
79
+ const prevNonCommentToken = (tokens, index) => nextNonCommentToken(tokens, index, -1);
80
+ const nextNonCommentToken = (tokens, index, dir = 1) => {
81
+ let i = 1;
82
+ while (tokens[index + i * dir] && isComment(tokens[index + i * dir])) {
83
+ i++;
84
+ }
85
+ return tokens[index + i * dir];
86
+ };
87
+ const isOpenParen = (t) => t.type === token_js_1.TokenType.OPEN_PAREN && t.text === '(';
88
+ const isOpenBracket = (t) => t.type === token_js_1.TokenType.OPEN_PAREN && t.text === '[';
89
+ const isComment = (t) => t.type === token_js_1.TokenType.BLOCK_COMMENT || t.type === token_js_1.TokenType.LINE_COMMENT;
90
+ //# sourceMappingURL=disambiguateTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disambiguateTokens.js","sourceRoot":"","sources":["../../../src/lexer/disambiguateTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Determines line and column number of character index in source code.
3
+ */
4
+ export declare function lineColFromIndex(source: string, index: number): LineCol;
5
+ export interface LineCol {
6
+ line: number;
7
+ col: number;
8
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lineColFromIndex = void 0;
4
+ /**
5
+ * Determines line and column number of character index in source code.
6
+ */
7
+ function lineColFromIndex(source, index) {
8
+ const lines = source.slice(0, index).split(/\n/);
9
+ return { line: lines.length, col: lines[lines.length - 1].length + 1 };
10
+ }
11
+ exports.lineColFromIndex = lineColFromIndex;
12
+ //# sourceMappingURL=lineColFromIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineColFromIndex.js","sourceRoot":"","sources":["../../../src/lexer/lineColFromIndex.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,SAAgB,gBAAgB,CAAC,MAAc,EAAE,KAAa;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;AACzE,CAAC;AAHD,4CAGC"}
@@ -0,0 +1,55 @@
1
+ import { IdentChars, QuoteType, VariableType } from './TokenizerOptions.js';
2
+ /**
3
+ * Builds a RegExp for valid line comments in a SQL dialect
4
+ * @param {string[]} lineCommentTypes - list of character strings that denote line comments
5
+ */
6
+ export declare const lineComment: (lineCommentTypes: string[]) => RegExp;
7
+ /**
8
+ * Builds a RegExp for matching either open- or close-parenthesis patterns
9
+ */
10
+ export declare const parenthesis: (kind: 'open' | 'close', extraParens?: ('[]' | '{}')[]) => RegExp;
11
+ /**
12
+ * Builds a RegExp containing all operators for a SQL dialect
13
+ */
14
+ export declare const operator: (operators: string[]) => RegExp;
15
+ /**
16
+ * Builds a RegExp for all Reserved Keywords in a SQL dialect
17
+ */
18
+ export declare const reservedWord: (reservedKeywords: string[], identChars?: IdentChars) => RegExp;
19
+ /**
20
+ * Builds a RegExp for parameter placeholder patterns
21
+ * @param {string[]} paramTypes - list of strings that denote placeholder types
22
+ * @param {string} pattern - string that denotes placeholder pattern
23
+ */
24
+ export declare const parameter: (paramTypes: string[], pattern: string) => RegExp | undefined;
25
+ export declare const quotePatterns: {
26
+ '``': string;
27
+ '[]': string;
28
+ '""-qq': string;
29
+ '""-bs': string;
30
+ '""-qq-bs': string;
31
+ '""-raw': string;
32
+ "''-qq": string;
33
+ "''-bs": string;
34
+ "''-qq-bs": string;
35
+ "''-raw": string;
36
+ $$: string;
37
+ "'''..'''": string;
38
+ '""".."""': string;
39
+ '{}': string;
40
+ "q''": string;
41
+ };
42
+ /** Builds a RegExp for matching variables */
43
+ export declare const variable: (varTypes: VariableType[]) => RegExp;
44
+ /** Builds a quote-delimited pattern for matching all given quote types */
45
+ export declare const stringPattern: (quoteTypes: QuoteType[]) => string;
46
+ /** Builds a RegExp for matching quote-delimited patterns */
47
+ export declare const string: (quoteTypes: QuoteType[]) => RegExp;
48
+ /**
49
+ * Builds a RegExp for valid identifiers in a SQL dialect
50
+ */
51
+ export declare const identifier: (specialChars?: IdentChars) => RegExp;
52
+ /**
53
+ * Builds a RegExp string for valid identifiers in a SQL dialect
54
+ */
55
+ export declare const identifierPattern: ({ first, rest, dashes, allowFirstCharNumber, }?: IdentChars) => string;
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identifierPattern = exports.identifier = exports.string = exports.stringPattern = exports.variable = exports.quotePatterns = exports.parameter = exports.reservedWord = exports.operator = exports.parenthesis = exports.lineComment = void 0;
4
+ const utils_js_1 = require("../utils.js");
5
+ const regexUtil_js_1 = require("./regexUtil.js");
6
+ /**
7
+ * Builds a RegExp for valid line comments in a SQL dialect
8
+ * @param {string[]} lineCommentTypes - list of character strings that denote line comments
9
+ */
10
+ const lineComment = (lineCommentTypes) => new RegExp(`(?:${lineCommentTypes.map(regexUtil_js_1.escapeRegExp).join('|')}).*?(?=\r\n|\r|\n|$)`, 'uy');
11
+ exports.lineComment = lineComment;
12
+ /**
13
+ * Builds a RegExp for matching either open- or close-parenthesis patterns
14
+ */
15
+ const parenthesis = (kind, extraParens = []) => {
16
+ const index = kind === 'open' ? 0 : 1;
17
+ const parens = ['()', ...extraParens].map(pair => pair[index]);
18
+ return (0, regexUtil_js_1.patternToRegex)(parens.map(regexUtil_js_1.escapeRegExp).join('|'));
19
+ };
20
+ exports.parenthesis = parenthesis;
21
+ /**
22
+ * Builds a RegExp containing all operators for a SQL dialect
23
+ */
24
+ const operator = (operators) => (0, regexUtil_js_1.patternToRegex)(`${(0, utils_js_1.sortByLengthDesc)(operators).map(regexUtil_js_1.escapeRegExp).join('|')}`);
25
+ exports.operator = operator;
26
+ // Negative lookahead to avoid matching a keyword that's actually part of identifier,
27
+ // which can happen when identifier allows word-boundary characters inside it.
28
+ //
29
+ // For example "SELECT$ME" should be tokenized as:
30
+ // - ["SELECT$ME"] when $ is allowed inside identifiers
31
+ // - ["SELECT", "$", "ME"] when $ can't be part of identifiers.
32
+ const rejectIdentCharsPattern = ({ rest, dashes }) => rest || dashes ? `(?![${rest || ''}${dashes ? '-' : ''}])` : '';
33
+ /**
34
+ * Builds a RegExp for all Reserved Keywords in a SQL dialect
35
+ */
36
+ const reservedWord = (reservedKeywords, identChars = {}) => {
37
+ if (reservedKeywords.length === 0) {
38
+ return /^\b$/u;
39
+ }
40
+ const avoidIdentChars = rejectIdentCharsPattern(identChars);
41
+ const reservedKeywordsPattern = (0, utils_js_1.sortByLengthDesc)(reservedKeywords)
42
+ .map(regexUtil_js_1.escapeRegExp)
43
+ .join('|')
44
+ .replace(/ /gu, '\\s+');
45
+ return new RegExp(`(?:${reservedKeywordsPattern})${avoidIdentChars}\\b`, 'iuy');
46
+ };
47
+ exports.reservedWord = reservedWord;
48
+ /**
49
+ * Builds a RegExp for parameter placeholder patterns
50
+ * @param {string[]} paramTypes - list of strings that denote placeholder types
51
+ * @param {string} pattern - string that denotes placeholder pattern
52
+ */
53
+ const parameter = (paramTypes, pattern) => {
54
+ if (!paramTypes.length) {
55
+ return undefined;
56
+ }
57
+ const typesRegex = paramTypes.map(regexUtil_js_1.escapeRegExp).join('|');
58
+ return (0, regexUtil_js_1.patternToRegex)(`(?:${typesRegex})(?:${pattern})`);
59
+ };
60
+ exports.parameter = parameter;
61
+ const buildQStringPatterns = () => {
62
+ const specialDelimiterMap = {
63
+ '<': '>',
64
+ '[': ']',
65
+ '(': ')',
66
+ '{': '}',
67
+ };
68
+ // base pattern for special delimiters, left must correspond with right
69
+ const singlePattern = "{left}(?:(?!{right}').)*?{right}";
70
+ // replace {left} and {right} with delimiters, collect as array
71
+ const patternList = Object.entries(specialDelimiterMap).map(([left, right]) => singlePattern.replace(/{left}/g, (0, regexUtil_js_1.escapeRegExp)(left)).replace(/{right}/g, (0, regexUtil_js_1.escapeRegExp)(right)));
72
+ const specialDelimiters = (0, regexUtil_js_1.escapeRegExp)(Object.keys(specialDelimiterMap).join(''));
73
+ // standard pattern for common delimiters, ignores special delimiters
74
+ const standardDelimiterPattern = String.raw `(?<tag>[^\s${specialDelimiters}])(?:(?!\k<tag>').)*?\k<tag>`;
75
+ // constructs final pattern by joining all cases
76
+ const qStringPattern = `[Qq]'(?:${standardDelimiterPattern}|${patternList.join('|')})'`;
77
+ return qStringPattern;
78
+ };
79
+ // Regex patterns for all supported quote styles.
80
+ //
81
+ // Most of them have a single escaping-style built in,
82
+ // but "" and '' support multiple versions of escapes,
83
+ // which must be selected with suffixes: -qq, -bs, -qq-bs, -raw
84
+ exports.quotePatterns = {
85
+ // - backtick quoted (using `` to escape)
86
+ '``': '(?:`[^`]*`)+',
87
+ // - Transact-SQL square bracket quoted (using ]] to escape)
88
+ '[]': String.raw `(?:\[[^\]]*\])(?:\][^\]]*\])*`,
89
+ // double-quoted
90
+ '""-qq': String.raw `(?:"[^"]*")+`,
91
+ '""-bs': String.raw `(?:"[^"\\]*(?:\\.[^"\\]*)*")`,
92
+ '""-qq-bs': String.raw `(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,
93
+ '""-raw': String.raw `(?:"[^"]*")`,
94
+ // single-quoted
95
+ "''-qq": String.raw `(?:'[^']*')+`,
96
+ "''-bs": String.raw `(?:'[^'\\]*(?:\\.[^'\\]*)*')`,
97
+ "''-qq-bs": String.raw `(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,
98
+ "''-raw": String.raw `(?:'[^']*')`,
99
+ // PostgreSQL dollar-quoted
100
+ '$$': String.raw `(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,
101
+ // BigQuery '''triple-quoted''' (using \' to escape)
102
+ "'''..'''": String.raw `'''[^\\]*?(?:\\.[^\\]*?)*?'''`,
103
+ // BigQuery """triple-quoted""" (using \" to escape)
104
+ '""".."""': String.raw `"""[^\\]*?(?:\\.[^\\]*?)*?"""`,
105
+ // Hive and Spark variables: ${name}
106
+ '{}': String.raw `(?:\{[^\}]*\})`,
107
+ // Oracle q'' strings: q'<text>' q'|text|' ...
108
+ "q''": buildQStringPatterns(),
109
+ };
110
+ const singleQuotePattern = (quoteTypes) => {
111
+ if (typeof quoteTypes === 'string') {
112
+ return exports.quotePatterns[quoteTypes];
113
+ }
114
+ else if ('regex' in quoteTypes) {
115
+ return quoteTypes.regex;
116
+ }
117
+ else {
118
+ return (0, regexUtil_js_1.prefixesPattern)(quoteTypes) + exports.quotePatterns[quoteTypes.quote];
119
+ }
120
+ };
121
+ /** Builds a RegExp for matching variables */
122
+ const variable = (varTypes) => (0, regexUtil_js_1.patternToRegex)(varTypes
123
+ .map(varType => ('regex' in varType ? varType.regex : singleQuotePattern(varType)))
124
+ .join('|'));
125
+ exports.variable = variable;
126
+ /** Builds a quote-delimited pattern for matching all given quote types */
127
+ const stringPattern = (quoteTypes) => quoteTypes.map(singleQuotePattern).join('|');
128
+ exports.stringPattern = stringPattern;
129
+ /** Builds a RegExp for matching quote-delimited patterns */
130
+ const string = (quoteTypes) => (0, regexUtil_js_1.patternToRegex)((0, exports.stringPattern)(quoteTypes));
131
+ exports.string = string;
132
+ /**
133
+ * Builds a RegExp for valid identifiers in a SQL dialect
134
+ */
135
+ const identifier = (specialChars = {}) => (0, regexUtil_js_1.patternToRegex)((0, exports.identifierPattern)(specialChars));
136
+ exports.identifier = identifier;
137
+ /**
138
+ * Builds a RegExp string for valid identifiers in a SQL dialect
139
+ */
140
+ const identifierPattern = ({ first, rest, dashes, allowFirstCharNumber, } = {}) => {
141
+ // Unicode letters, diacritical marks and underscore
142
+ const letter = '\\p{Alphabetic}\\p{Mark}_';
143
+ // Numbers 0..9, plus various unicode numbers
144
+ const number = '\\p{Decimal_Number}';
145
+ const firstChars = (0, regexUtil_js_1.escapeRegExp)(first !== null && first !== void 0 ? first : '');
146
+ const restChars = (0, regexUtil_js_1.escapeRegExp)(rest !== null && rest !== void 0 ? rest : '');
147
+ const pattern = allowFirstCharNumber
148
+ ? `[${letter}${number}${firstChars}][${letter}${number}${restChars}]*`
149
+ : `[${letter}${firstChars}][${letter}${number}${restChars}]*`;
150
+ return dashes ? (0, regexUtil_js_1.withDashes)(pattern) : pattern;
151
+ };
152
+ exports.identifierPattern = identifierPattern;
153
+ //# sourceMappingURL=regexFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regexFactory.js","sourceRoot":"","sources":["../../../src/lexer/regexFactory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { PrefixedQuoteType } from './TokenizerOptions.js';
2
+ export declare const escapeRegExp: (string: string) => string;
3
+ export declare const WHITESPACE_REGEX: RegExp;
4
+ export declare const patternToRegex: (pattern: string) => RegExp;
5
+ export declare const toCaseInsensitivePattern: (prefix: string) => string;
6
+ export declare const withDashes: (pattern: string) => string;
7
+ export declare const prefixesPattern: ({ prefixes, requirePrefix }: PrefixedQuoteType) => string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.prefixesPattern = exports.withDashes = exports.toCaseInsensitivePattern = exports.patternToRegex = exports.WHITESPACE_REGEX = exports.escapeRegExp = void 0;
4
+ // Escapes regex special chars
5
+ const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
6
+ exports.escapeRegExp = escapeRegExp;
7
+ exports.WHITESPACE_REGEX = /\s+/uy;
8
+ const patternToRegex = (pattern) => new RegExp(`(?:${pattern})`, 'uy');
9
+ exports.patternToRegex = patternToRegex;
10
+ // Converts "ab" to "[Aa][Bb]"
11
+ const toCaseInsensitivePattern = (prefix) => prefix
12
+ .split('')
13
+ .map(char => (/ /gu.test(char) ? '\\s+' : `[${char.toUpperCase()}${char.toLowerCase()}]`))
14
+ .join('');
15
+ exports.toCaseInsensitivePattern = toCaseInsensitivePattern;
16
+ const withDashes = (pattern) => pattern + '(?:-' + pattern + ')*';
17
+ exports.withDashes = withDashes;
18
+ // Converts ["a", "b"] to "(?:[Aa]|[Bb]|)" or "(?:[Aa]|[Bb])" when required = true
19
+ const prefixesPattern = ({ prefixes, requirePrefix }) => `(?:${prefixes.map(exports.toCaseInsensitivePattern).join('|')}${requirePrefix ? '' : '|'})`;
20
+ exports.prefixesPattern = prefixesPattern;
21
+ //# sourceMappingURL=regexUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regexUtil.js","sourceRoot":"","sources":["../../../src/lexer/regexUtil.ts"],"names":[],"mappings":";;;AAEA,8BAA8B;AACvB,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAAlF,QAAA,YAAY,gBAAsE;AAElF,QAAA,gBAAgB,GAAG,OAAO,CAAC;AAEjC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;AAAjF,QAAA,cAAc,kBAAmE;AAE9F,8BAA8B;AACvB,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAU,EAAE,CACjE,MAAM;KACH,KAAK,CAAC,EAAE,CAAC;KACT,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;KACzF,IAAI,CAAC,EAAE,CAAC,CAAC;AAJD,QAAA,wBAAwB,4BAIvB;AAEP,MAAM,UAAU,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAA5E,QAAA,UAAU,cAAkE;AAEzF,kFAAkF;AAC3E,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAqB,EAAU,EAAE,CACxF,MAAM,QAAQ,CAAC,GAAG,CAAC,gCAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAD1E,QAAA,eAAe,mBAC2D"}