@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,92 @@
1
+ import { lineColFromIndex } from './lineColFromIndex.js';
2
+ import { WHITESPACE_REGEX } from './regexUtil.js';
3
+ export default class TokenizerEngine {
4
+ constructor(rules, dialectName) {
5
+ this.rules = rules;
6
+ this.dialectName = dialectName;
7
+ this.input = ''; // The input SQL string to process
8
+ this.index = 0; // Current position in string
9
+ }
10
+ /**
11
+ * Takes a SQL string and breaks it into tokens.
12
+ * Each token is an object with type and value.
13
+ *
14
+ * @param {string} input - The SQL string
15
+ * @returns {Token[]} output token stream
16
+ */
17
+ tokenize(input) {
18
+ this.input = input;
19
+ this.index = 0;
20
+ const tokens = [];
21
+ let token;
22
+ // Keep processing the string until end is reached
23
+ while (this.index < this.input.length) {
24
+ // skip any preceding whitespace
25
+ const precedingWhitespace = this.getWhitespace();
26
+ if (this.index < this.input.length) {
27
+ // Get the next token and the token type
28
+ token = this.getNextToken();
29
+ if (!token) {
30
+ throw this.createParseError();
31
+ }
32
+ tokens.push(Object.assign(Object.assign({}, token), { precedingWhitespace }));
33
+ }
34
+ }
35
+ return tokens;
36
+ }
37
+ createParseError() {
38
+ const text = this.input.slice(this.index, this.index + 10);
39
+ const { line, col } = lineColFromIndex(this.input, this.index);
40
+ return new Error(`Parse error: Unexpected "${text}" at line ${line} column ${col}.\n${this.dialectInfo()}`);
41
+ }
42
+ dialectInfo() {
43
+ if (this.dialectName === 'sql') {
44
+ return (`This likely happens because you're using the default "sql" dialect.\n` +
45
+ `If possible, please select a more specific dialect (like sqlite, postgresql, etc).`);
46
+ }
47
+ else {
48
+ return `SQL dialect used: "${this.dialectName}".`;
49
+ }
50
+ }
51
+ getWhitespace() {
52
+ WHITESPACE_REGEX.lastIndex = this.index;
53
+ const matches = WHITESPACE_REGEX.exec(this.input);
54
+ if (matches) {
55
+ // Advance current position by matched whitespace length
56
+ this.index += matches[0].length;
57
+ return matches[0];
58
+ }
59
+ return undefined;
60
+ }
61
+ getNextToken() {
62
+ for (const rule of this.rules) {
63
+ const token = this.match(rule);
64
+ if (token) {
65
+ return token;
66
+ }
67
+ }
68
+ return undefined;
69
+ }
70
+ // Attempts to match token rule regex at current position in input
71
+ match(rule) {
72
+ rule.regex.lastIndex = this.index;
73
+ const matches = rule.regex.exec(this.input);
74
+ if (matches) {
75
+ const matchedText = matches[0];
76
+ const token = {
77
+ type: rule.type,
78
+ raw: matchedText,
79
+ text: rule.text ? rule.text(matchedText) : matchedText,
80
+ start: this.index,
81
+ };
82
+ if (rule.key) {
83
+ token.key = rule.key(matchedText);
84
+ }
85
+ // Advance current position by matched token length
86
+ this.index += matchedText.length;
87
+ return token;
88
+ }
89
+ return undefined;
90
+ }
91
+ }
92
+ //# sourceMappingURL=TokenizerEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenizerEngine.js","sourceRoot":"","sources":["../../../src/lexer/TokenizerEngine.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAkBlD,MAAM,CAAC,OAAO,OAAO,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,gBAAgB,CAAC,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,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAExC,MAAM,OAAO,GAAG,gBAAgB,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"}
@@ -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,2 @@
1
+ export {};
2
+ //# 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,86 @@
1
+ import { isReserved, TokenType } 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 function disambiguateTokens(tokens) {
19
+ return tokens
20
+ .map(propertyNameKeywordToIdent)
21
+ .map(funcNameToIdent)
22
+ .map(dataTypeToParameterizedDataType)
23
+ .map(identToArrayIdent)
24
+ .map(dataTypeToArrayKeyword);
25
+ }
26
+ const propertyNameKeywordToIdent = (token, i, tokens) => {
27
+ if (isReserved(token.type)) {
28
+ const prevToken = prevNonCommentToken(tokens, i);
29
+ if (prevToken && prevToken.type === TokenType.PROPERTY_ACCESS_OPERATOR) {
30
+ return Object.assign(Object.assign({}, token), { type: TokenType.IDENTIFIER, text: token.raw });
31
+ }
32
+ const nextToken = nextNonCommentToken(tokens, i);
33
+ if (nextToken && nextToken.type === TokenType.PROPERTY_ACCESS_OPERATOR) {
34
+ return Object.assign(Object.assign({}, token), { type: TokenType.IDENTIFIER, text: token.raw });
35
+ }
36
+ }
37
+ return token;
38
+ };
39
+ const funcNameToIdent = (token, i, tokens) => {
40
+ if (token.type === TokenType.RESERVED_FUNCTION_NAME) {
41
+ const nextToken = nextNonCommentToken(tokens, i);
42
+ if (!nextToken || !isOpenParen(nextToken)) {
43
+ return Object.assign(Object.assign({}, token), { type: TokenType.IDENTIFIER, text: token.raw });
44
+ }
45
+ }
46
+ return token;
47
+ };
48
+ const dataTypeToParameterizedDataType = (token, i, tokens) => {
49
+ if (token.type === TokenType.RESERVED_DATA_TYPE) {
50
+ const nextToken = nextNonCommentToken(tokens, i);
51
+ if (nextToken && isOpenParen(nextToken)) {
52
+ return Object.assign(Object.assign({}, token), { type: TokenType.RESERVED_PARAMETERIZED_DATA_TYPE });
53
+ }
54
+ }
55
+ return token;
56
+ };
57
+ const identToArrayIdent = (token, i, tokens) => {
58
+ if (token.type === TokenType.IDENTIFIER) {
59
+ const nextToken = nextNonCommentToken(tokens, i);
60
+ if (nextToken && isOpenBracket(nextToken)) {
61
+ return Object.assign(Object.assign({}, token), { type: TokenType.ARRAY_IDENTIFIER });
62
+ }
63
+ }
64
+ return token;
65
+ };
66
+ const dataTypeToArrayKeyword = (token, i, tokens) => {
67
+ if (token.type === TokenType.RESERVED_DATA_TYPE) {
68
+ const nextToken = nextNonCommentToken(tokens, i);
69
+ if (nextToken && isOpenBracket(nextToken)) {
70
+ return Object.assign(Object.assign({}, token), { type: TokenType.ARRAY_KEYWORD });
71
+ }
72
+ }
73
+ return token;
74
+ };
75
+ const prevNonCommentToken = (tokens, index) => nextNonCommentToken(tokens, index, -1);
76
+ const nextNonCommentToken = (tokens, index, dir = 1) => {
77
+ let i = 1;
78
+ while (tokens[index + i * dir] && isComment(tokens[index + i * dir])) {
79
+ i++;
80
+ }
81
+ return tokens[index + i * dir];
82
+ };
83
+ const isOpenParen = (t) => t.type === TokenType.OPEN_PAREN && t.text === '(';
84
+ const isOpenBracket = (t) => t.type === TokenType.OPEN_PAREN && t.text === '[';
85
+ const isComment = (t) => t.type === TokenType.BLOCK_COMMENT || t.type === TokenType.LINE_COMMENT;
86
+ //# 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,8 @@
1
+ /**
2
+ * Determines line and column number of character index in source code.
3
+ */
4
+ export function lineColFromIndex(source, index) {
5
+ const lines = source.slice(0, index).split(/\n/);
6
+ return { line: lines.length, col: lines[lines.length - 1].length + 1 };
7
+ }
8
+ //# sourceMappingURL=lineColFromIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lineColFromIndex.js","sourceRoot":"","sources":["../../../src/lexer/lineColFromIndex.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,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"}
@@ -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,140 @@
1
+ import { sortByLengthDesc } from '../utils.js';
2
+ import { escapeRegExp, patternToRegex, prefixesPattern, withDashes } from './regexUtil.js';
3
+ /**
4
+ * Builds a RegExp for valid line comments in a SQL dialect
5
+ * @param {string[]} lineCommentTypes - list of character strings that denote line comments
6
+ */
7
+ export const lineComment = (lineCommentTypes) => new RegExp(`(?:${lineCommentTypes.map(escapeRegExp).join('|')}).*?(?=\r\n|\r|\n|$)`, 'uy');
8
+ /**
9
+ * Builds a RegExp for matching either open- or close-parenthesis patterns
10
+ */
11
+ export const parenthesis = (kind, extraParens = []) => {
12
+ const index = kind === 'open' ? 0 : 1;
13
+ const parens = ['()', ...extraParens].map(pair => pair[index]);
14
+ return patternToRegex(parens.map(escapeRegExp).join('|'));
15
+ };
16
+ /**
17
+ * Builds a RegExp containing all operators for a SQL dialect
18
+ */
19
+ export const operator = (operators) => patternToRegex(`${sortByLengthDesc(operators).map(escapeRegExp).join('|')}`);
20
+ // Negative lookahead to avoid matching a keyword that's actually part of identifier,
21
+ // which can happen when identifier allows word-boundary characters inside it.
22
+ //
23
+ // For example "SELECT$ME" should be tokenized as:
24
+ // - ["SELECT$ME"] when $ is allowed inside identifiers
25
+ // - ["SELECT", "$", "ME"] when $ can't be part of identifiers.
26
+ const rejectIdentCharsPattern = ({ rest, dashes }) => rest || dashes ? `(?![${rest || ''}${dashes ? '-' : ''}])` : '';
27
+ /**
28
+ * Builds a RegExp for all Reserved Keywords in a SQL dialect
29
+ */
30
+ export const reservedWord = (reservedKeywords, identChars = {}) => {
31
+ if (reservedKeywords.length === 0) {
32
+ return /^\b$/u;
33
+ }
34
+ const avoidIdentChars = rejectIdentCharsPattern(identChars);
35
+ const reservedKeywordsPattern = sortByLengthDesc(reservedKeywords)
36
+ .map(escapeRegExp)
37
+ .join('|')
38
+ .replace(/ /gu, '\\s+');
39
+ return new RegExp(`(?:${reservedKeywordsPattern})${avoidIdentChars}\\b`, 'iuy');
40
+ };
41
+ /**
42
+ * Builds a RegExp for parameter placeholder patterns
43
+ * @param {string[]} paramTypes - list of strings that denote placeholder types
44
+ * @param {string} pattern - string that denotes placeholder pattern
45
+ */
46
+ export const parameter = (paramTypes, pattern) => {
47
+ if (!paramTypes.length) {
48
+ return undefined;
49
+ }
50
+ const typesRegex = paramTypes.map(escapeRegExp).join('|');
51
+ return patternToRegex(`(?:${typesRegex})(?:${pattern})`);
52
+ };
53
+ const buildQStringPatterns = () => {
54
+ const specialDelimiterMap = {
55
+ '<': '>',
56
+ '[': ']',
57
+ '(': ')',
58
+ '{': '}',
59
+ };
60
+ // base pattern for special delimiters, left must correspond with right
61
+ const singlePattern = "{left}(?:(?!{right}').)*?{right}";
62
+ // replace {left} and {right} with delimiters, collect as array
63
+ const patternList = Object.entries(specialDelimiterMap).map(([left, right]) => singlePattern.replace(/{left}/g, escapeRegExp(left)).replace(/{right}/g, escapeRegExp(right)));
64
+ const specialDelimiters = escapeRegExp(Object.keys(specialDelimiterMap).join(''));
65
+ // standard pattern for common delimiters, ignores special delimiters
66
+ const standardDelimiterPattern = String.raw `(?<tag>[^\s${specialDelimiters}])(?:(?!\k<tag>').)*?\k<tag>`;
67
+ // constructs final pattern by joining all cases
68
+ const qStringPattern = `[Qq]'(?:${standardDelimiterPattern}|${patternList.join('|')})'`;
69
+ return qStringPattern;
70
+ };
71
+ // Regex patterns for all supported quote styles.
72
+ //
73
+ // Most of them have a single escaping-style built in,
74
+ // but "" and '' support multiple versions of escapes,
75
+ // which must be selected with suffixes: -qq, -bs, -qq-bs, -raw
76
+ export const quotePatterns = {
77
+ // - backtick quoted (using `` to escape)
78
+ '``': '(?:`[^`]*`)+',
79
+ // - Transact-SQL square bracket quoted (using ]] to escape)
80
+ '[]': String.raw `(?:\[[^\]]*\])(?:\][^\]]*\])*`,
81
+ // double-quoted
82
+ '""-qq': String.raw `(?:"[^"]*")+`,
83
+ '""-bs': String.raw `(?:"[^"\\]*(?:\\.[^"\\]*)*")`,
84
+ '""-qq-bs': String.raw `(?:"[^"\\]*(?:\\.[^"\\]*)*")+`,
85
+ '""-raw': String.raw `(?:"[^"]*")`,
86
+ // single-quoted
87
+ "''-qq": String.raw `(?:'[^']*')+`,
88
+ "''-bs": String.raw `(?:'[^'\\]*(?:\\.[^'\\]*)*')`,
89
+ "''-qq-bs": String.raw `(?:'[^'\\]*(?:\\.[^'\\]*)*')+`,
90
+ "''-raw": String.raw `(?:'[^']*')`,
91
+ // PostgreSQL dollar-quoted
92
+ '$$': String.raw `(?<tag>\$\w*\$)[\s\S]*?\k<tag>`,
93
+ // BigQuery '''triple-quoted''' (using \' to escape)
94
+ "'''..'''": String.raw `'''[^\\]*?(?:\\.[^\\]*?)*?'''`,
95
+ // BigQuery """triple-quoted""" (using \" to escape)
96
+ '""".."""': String.raw `"""[^\\]*?(?:\\.[^\\]*?)*?"""`,
97
+ // Hive and Spark variables: ${name}
98
+ '{}': String.raw `(?:\{[^\}]*\})`,
99
+ // Oracle q'' strings: q'<text>' q'|text|' ...
100
+ "q''": buildQStringPatterns(),
101
+ };
102
+ const singleQuotePattern = (quoteTypes) => {
103
+ if (typeof quoteTypes === 'string') {
104
+ return quotePatterns[quoteTypes];
105
+ }
106
+ else if ('regex' in quoteTypes) {
107
+ return quoteTypes.regex;
108
+ }
109
+ else {
110
+ return prefixesPattern(quoteTypes) + quotePatterns[quoteTypes.quote];
111
+ }
112
+ };
113
+ /** Builds a RegExp for matching variables */
114
+ export const variable = (varTypes) => patternToRegex(varTypes
115
+ .map(varType => ('regex' in varType ? varType.regex : singleQuotePattern(varType)))
116
+ .join('|'));
117
+ /** Builds a quote-delimited pattern for matching all given quote types */
118
+ export const stringPattern = (quoteTypes) => quoteTypes.map(singleQuotePattern).join('|');
119
+ /** Builds a RegExp for matching quote-delimited patterns */
120
+ export const string = (quoteTypes) => patternToRegex(stringPattern(quoteTypes));
121
+ /**
122
+ * Builds a RegExp for valid identifiers in a SQL dialect
123
+ */
124
+ export const identifier = (specialChars = {}) => patternToRegex(identifierPattern(specialChars));
125
+ /**
126
+ * Builds a RegExp string for valid identifiers in a SQL dialect
127
+ */
128
+ export const identifierPattern = ({ first, rest, dashes, allowFirstCharNumber, } = {}) => {
129
+ // Unicode letters, diacritical marks and underscore
130
+ const letter = '\\p{Alphabetic}\\p{Mark}_';
131
+ // Numbers 0..9, plus various unicode numbers
132
+ const number = '\\p{Decimal_Number}';
133
+ const firstChars = escapeRegExp(first !== null && first !== void 0 ? first : '');
134
+ const restChars = escapeRegExp(rest !== null && rest !== void 0 ? rest : '');
135
+ const pattern = allowFirstCharNumber
136
+ ? `[${letter}${number}${firstChars}][${letter}${number}${restChars}]*`
137
+ : `[${letter}${firstChars}][${letter}${number}${restChars}]*`;
138
+ return dashes ? withDashes(pattern) : pattern;
139
+ };
140
+ //# 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,13 @@
1
+ // Escapes regex special chars
2
+ export const escapeRegExp = (string) => string.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
3
+ export const WHITESPACE_REGEX = /\s+/uy;
4
+ export const patternToRegex = (pattern) => new RegExp(`(?:${pattern})`, 'uy');
5
+ // Converts "ab" to "[Aa][Bb]"
6
+ export const toCaseInsensitivePattern = (prefix) => prefix
7
+ .split('')
8
+ .map(char => (/ /gu.test(char) ? '\\s+' : `[${char.toUpperCase()}${char.toLowerCase()}]`))
9
+ .join('');
10
+ export const withDashes = (pattern) => pattern + '(?:-' + pattern + ')*';
11
+ // Converts ["a", "b"] to "(?:[Aa]|[Bb]|)" or "(?:[Aa]|[Bb])" when required = true
12
+ export const prefixesPattern = ({ prefixes, requirePrefix }) => `(?:${prefixes.map(toCaseInsensitivePattern).join('|')}${requirePrefix ? '' : '|'})`;
13
+ //# sourceMappingURL=regexUtil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regexUtil.js","sourceRoot":"","sources":["../../../src/lexer/regexUtil.ts"],"names":[],"mappings":"AAEA,8BAA8B;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAE/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,IAAI,CAAC,CAAC;AAE9F,8BAA8B;AAC9B,MAAM,CAAC,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;AAEd,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEzF,kFAAkF;AAClF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAqB,EAAU,EAAE,CACxF,MAAM,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC"}
@@ -0,0 +1,89 @@
1
+ /** Token type enum for all possible Token categories */
2
+ export declare enum TokenType {
3
+ QUOTED_IDENTIFIER = "QUOTED_IDENTIFIER",
4
+ IDENTIFIER = "IDENTIFIER",
5
+ STRING = "STRING",
6
+ VARIABLE = "VARIABLE",
7
+ RESERVED_DATA_TYPE = "RESERVED_DATA_TYPE",
8
+ RESERVED_PARAMETERIZED_DATA_TYPE = "RESERVED_PARAMETERIZED_DATA_TYPE",
9
+ RESERVED_KEYWORD = "RESERVED_KEYWORD",
10
+ RESERVED_FUNCTION_NAME = "RESERVED_FUNCTION_NAME",
11
+ RESERVED_KEYWORD_PHRASE = "RESERVED_KEYWORD_PHRASE",
12
+ RESERVED_DATA_TYPE_PHRASE = "RESERVED_DATA_TYPE_PHRASE",
13
+ RESERVED_SET_OPERATION = "RESERVED_SET_OPERATION",
14
+ RESERVED_CLAUSE = "RESERVED_CLAUSE",
15
+ RESERVED_SELECT = "RESERVED_SELECT",
16
+ RESERVED_JOIN = "RESERVED_JOIN",
17
+ ARRAY_IDENTIFIER = "ARRAY_IDENTIFIER",
18
+ ARRAY_KEYWORD = "ARRAY_KEYWORD",
19
+ CASE = "CASE",
20
+ END = "END",
21
+ WHEN = "WHEN",
22
+ ELSE = "ELSE",
23
+ THEN = "THEN",
24
+ LIMIT = "LIMIT",
25
+ BETWEEN = "BETWEEN",
26
+ AND = "AND",
27
+ OR = "OR",
28
+ XOR = "XOR",
29
+ OPERATOR = "OPERATOR",
30
+ COMMA = "COMMA",
31
+ ASTERISK = "ASTERISK",
32
+ PROPERTY_ACCESS_OPERATOR = "PROPERTY_ACCESS_OPERATOR",
33
+ OPEN_PAREN = "OPEN_PAREN",
34
+ CLOSE_PAREN = "CLOSE_PAREN",
35
+ LINE_COMMENT = "LINE_COMMENT",
36
+ BLOCK_COMMENT = "BLOCK_COMMENT",
37
+ DISABLE_COMMENT = "DISABLE_COMMENT",
38
+ NUMBER = "NUMBER",
39
+ NAMED_PARAMETER = "NAMED_PARAMETER",
40
+ QUOTED_PARAMETER = "QUOTED_PARAMETER",
41
+ NUMBERED_PARAMETER = "NUMBERED_PARAMETER",
42
+ POSITIONAL_PARAMETER = "POSITIONAL_PARAMETER",
43
+ CUSTOM_PARAMETER = "CUSTOM_PARAMETER",
44
+ DELIMITER = "DELIMITER",
45
+ EOF = "EOF"
46
+ }
47
+ /** Struct to store the most basic cohesive unit of language grammar */
48
+ export interface Token {
49
+ type: TokenType;
50
+ raw: string;
51
+ text: string;
52
+ key?: string;
53
+ start: number;
54
+ precedingWhitespace?: string;
55
+ }
56
+ /** Creates EOF token positioned at given location */
57
+ export declare const createEofToken: (index: number) => {
58
+ type: TokenType;
59
+ raw: string;
60
+ text: string;
61
+ start: number;
62
+ };
63
+ /**
64
+ * For use as a "missing token"
65
+ * e.g. in lookAhead and lookBehind to avoid dealing with null values
66
+ */
67
+ export declare const EOF_TOKEN: {
68
+ type: TokenType;
69
+ raw: string;
70
+ text: string;
71
+ start: number;
72
+ };
73
+ /** Checks if two tokens are equivalent */
74
+ export declare const testToken: (compareToken: {
75
+ type: TokenType;
76
+ text: string;
77
+ }) => (token: Token) => boolean;
78
+ /** Util object that allows for easy checking of Reserved Keywords */
79
+ export declare const isToken: {
80
+ ARRAY: (token: Token) => boolean;
81
+ BY: (token: Token) => boolean;
82
+ SET: (token: Token) => boolean;
83
+ STRUCT: (token: Token) => boolean;
84
+ WINDOW: (token: Token) => boolean;
85
+ VALUES: (token: Token) => boolean;
86
+ };
87
+ /** Checks if token is any Reserved Keyword or Clause */
88
+ export declare const isReserved: (type: TokenType) => boolean;
89
+ export declare const isLogicalOperator: (type: TokenType) => boolean;