@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.
- package/AUTHORS +75 -0
- package/LICENSE +23 -0
- package/README.md +318 -0
- package/bin/sql-formatter-cli.cjs +182 -0
- package/dist/cjs/FormatOptions.d.ts +27 -0
- package/dist/cjs/FormatOptions.js +3 -0
- package/dist/cjs/FormatOptions.js.map +1 -0
- package/dist/cjs/allDialects.d.ts +20 -0
- package/dist/cjs/allDialects.js +44 -0
- package/dist/cjs/allDialects.js.map +1 -0
- package/dist/cjs/dialect.d.ts +18 -0
- package/dist/cjs/dialect.js +35 -0
- package/dist/cjs/dialect.js.map +1 -0
- package/dist/cjs/expandPhrases.d.ts +29 -0
- package/dist/cjs/expandPhrases.js +132 -0
- package/dist/cjs/expandPhrases.js.map +1 -0
- package/dist/cjs/formatter/ExpressionFormatter.d.ts +78 -0
- package/dist/cjs/formatter/ExpressionFormatter.js +546 -0
- package/dist/cjs/formatter/ExpressionFormatter.js.map +1 -0
- package/dist/cjs/formatter/Formatter.d.ts +18 -0
- package/dist/cjs/formatter/Formatter.js +80 -0
- package/dist/cjs/formatter/Formatter.js.map +1 -0
- package/dist/cjs/formatter/Indentation.d.ts +43 -0
- package/dist/cjs/formatter/Indentation.js +70 -0
- package/dist/cjs/formatter/Indentation.js.map +1 -0
- package/dist/cjs/formatter/InlineLayout.d.ts +21 -0
- package/dist/cjs/formatter/InlineLayout.js +88 -0
- package/dist/cjs/formatter/InlineLayout.js.map +1 -0
- package/dist/cjs/formatter/Layout.d.ts +41 -0
- package/dist/cjs/formatter/Layout.js +122 -0
- package/dist/cjs/formatter/Layout.js.map +1 -0
- package/dist/cjs/formatter/Params.d.ts +26 -0
- package/dist/cjs/formatter/Params.js +37 -0
- package/dist/cjs/formatter/Params.js.map +1 -0
- package/dist/cjs/formatter/config.d.ts +9 -0
- package/dist/cjs/formatter/config.js +25 -0
- package/dist/cjs/formatter/config.js.map +1 -0
- package/dist/cjs/formatter/tabularStyle.d.ts +11 -0
- package/dist/cjs/formatter/tabularStyle.js +39 -0
- package/dist/cjs/formatter/tabularStyle.js.map +1 -0
- package/dist/cjs/index.d.ts +28 -0
- package/dist/cjs/index.js +53 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/languages/bigquery/bigquery.formatter.d.ts +2 -0
- package/dist/cjs/languages/bigquery/bigquery.formatter.js +259 -0
- package/dist/cjs/languages/bigquery/bigquery.formatter.js.map +1 -0
- package/dist/cjs/languages/bigquery/bigquery.functions.d.ts +1 -0
- package/dist/cjs/languages/bigquery/bigquery.functions.js +549 -0
- package/dist/cjs/languages/bigquery/bigquery.functions.js.map +1 -0
- package/dist/cjs/languages/bigquery/bigquery.keywords.d.ts +2 -0
- package/dist/cjs/languages/bigquery/bigquery.keywords.js +139 -0
- package/dist/cjs/languages/bigquery/bigquery.keywords.js.map +1 -0
- package/dist/cjs/languages/clickhouse/clickhouse.formatter.d.ts +2 -0
- package/dist/cjs/languages/clickhouse/clickhouse.formatter.js +323 -0
- package/dist/cjs/languages/clickhouse/clickhouse.formatter.js.map +1 -0
- package/dist/cjs/languages/clickhouse/clickhouse.functions.d.ts +1 -0
- package/dist/cjs/languages/clickhouse/clickhouse.functions.js +1756 -0
- package/dist/cjs/languages/clickhouse/clickhouse.functions.js.map +1 -0
- package/dist/cjs/languages/clickhouse/clickhouse.keywords.d.ts +2 -0
- package/dist/cjs/languages/clickhouse/clickhouse.keywords.js +550 -0
- package/dist/cjs/languages/clickhouse/clickhouse.keywords.js.map +1 -0
- package/dist/cjs/languages/db2/db2.formatter.d.ts +2 -0
- package/dist/cjs/languages/db2/db2.formatter.js +304 -0
- package/dist/cjs/languages/db2/db2.formatter.js.map +1 -0
- package/dist/cjs/languages/db2/db2.functions.d.ts +1 -0
- package/dist/cjs/languages/db2/db2.functions.js +325 -0
- package/dist/cjs/languages/db2/db2.functions.js.map +1 -0
- package/dist/cjs/languages/db2/db2.keywords.d.ts +2 -0
- package/dist/cjs/languages/db2/db2.keywords.js +449 -0
- package/dist/cjs/languages/db2/db2.keywords.js.map +1 -0
- package/dist/cjs/languages/db2i/db2i.formatter.d.ts +2 -0
- package/dist/cjs/languages/db2i/db2i.formatter.js +181 -0
- package/dist/cjs/languages/db2i/db2i.formatter.js.map +1 -0
- package/dist/cjs/languages/db2i/db2i.functions.d.ts +1 -0
- package/dist/cjs/languages/db2i/db2i.functions.js +339 -0
- package/dist/cjs/languages/db2i/db2i.functions.js.map +1 -0
- package/dist/cjs/languages/db2i/db2i.keywords.d.ts +2 -0
- package/dist/cjs/languages/db2i/db2i.keywords.js +538 -0
- package/dist/cjs/languages/db2i/db2i.keywords.js.map +1 -0
- package/dist/cjs/languages/duckdb/duckdb.formatter.d.ts +2 -0
- package/dist/cjs/languages/duckdb/duckdb.formatter.js +213 -0
- package/dist/cjs/languages/duckdb/duckdb.formatter.js.map +1 -0
- package/dist/cjs/languages/duckdb/duckdb.functions.d.ts +1 -0
- package/dist/cjs/languages/duckdb/duckdb.functions.js +668 -0
- package/dist/cjs/languages/duckdb/duckdb.functions.js.map +1 -0
- package/dist/cjs/languages/duckdb/duckdb.keywords.d.ts +2 -0
- package/dist/cjs/languages/duckdb/duckdb.keywords.js +168 -0
- package/dist/cjs/languages/duckdb/duckdb.keywords.js.map +1 -0
- package/dist/cjs/languages/hive/hive.formatter.d.ts +2 -0
- package/dist/cjs/languages/hive/hive.formatter.js +106 -0
- package/dist/cjs/languages/hive/hive.formatter.js.map +1 -0
- package/dist/cjs/languages/hive/hive.functions.d.ts +1 -0
- package/dist/cjs/languages/hive/hive.functions.js +213 -0
- package/dist/cjs/languages/hive/hive.functions.js.map +1 -0
- package/dist/cjs/languages/hive/hive.keywords.d.ts +2 -0
- package/dist/cjs/languages/hive/hive.keywords.js +342 -0
- package/dist/cjs/languages/hive/hive.keywords.js.map +1 -0
- package/dist/cjs/languages/mariadb/likeMariaDb.d.ts +2 -0
- package/dist/cjs/languages/mariadb/likeMariaDb.js +22 -0
- package/dist/cjs/languages/mariadb/likeMariaDb.js.map +1 -0
- package/dist/cjs/languages/mariadb/mariadb.formatter.d.ts +2 -0
- package/dist/cjs/languages/mariadb/mariadb.formatter.js +317 -0
- package/dist/cjs/languages/mariadb/mariadb.formatter.js.map +1 -0
- package/dist/cjs/languages/mariadb/mariadb.functions.d.ts +1 -0
- package/dist/cjs/languages/mariadb/mariadb.functions.js +243 -0
- package/dist/cjs/languages/mariadb/mariadb.functions.js.map +1 -0
- package/dist/cjs/languages/mariadb/mariadb.keywords.d.ts +2 -0
- package/dist/cjs/languages/mariadb/mariadb.keywords.js +274 -0
- package/dist/cjs/languages/mariadb/mariadb.keywords.js.map +1 -0
- package/dist/cjs/languages/mysql/mysql.formatter.d.ts +2 -0
- package/dist/cjs/languages/mysql/mysql.formatter.js +284 -0
- package/dist/cjs/languages/mysql/mysql.formatter.js.map +1 -0
- package/dist/cjs/languages/mysql/mysql.functions.d.ts +1 -0
- package/dist/cjs/languages/mysql/mysql.functions.js +428 -0
- package/dist/cjs/languages/mysql/mysql.functions.js.map +1 -0
- package/dist/cjs/languages/mysql/mysql.keywords.d.ts +2 -0
- package/dist/cjs/languages/mysql/mysql.keywords.js +288 -0
- package/dist/cjs/languages/mysql/mysql.keywords.js.map +1 -0
- package/dist/cjs/languages/n1ql/n1ql.formatter.d.ts +2 -0
- package/dist/cjs/languages/n1ql/n1ql.formatter.js +109 -0
- package/dist/cjs/languages/n1ql/n1ql.formatter.js.map +1 -0
- package/dist/cjs/languages/n1ql/n1ql.functions.d.ts +1 -0
- package/dist/cjs/languages/n1ql/n1ql.functions.js +235 -0
- package/dist/cjs/languages/n1ql/n1ql.functions.js.map +1 -0
- package/dist/cjs/languages/n1ql/n1ql.keywords.d.ts +2 -0
- package/dist/cjs/languages/n1ql/n1ql.keywords.js +221 -0
- package/dist/cjs/languages/n1ql/n1ql.keywords.js.map +1 -0
- package/dist/cjs/languages/plsql/plsql.formatter.d.ts +2 -0
- package/dist/cjs/languages/plsql/plsql.formatter.js +140 -0
- package/dist/cjs/languages/plsql/plsql.formatter.js.map +1 -0
- package/dist/cjs/languages/plsql/plsql.functions.d.ts +1 -0
- package/dist/cjs/languages/plsql/plsql.functions.js +270 -0
- package/dist/cjs/languages/plsql/plsql.functions.js.map +1 -0
- package/dist/cjs/languages/plsql/plsql.keywords.d.ts +2 -0
- package/dist/cjs/languages/plsql/plsql.keywords.js +349 -0
- package/dist/cjs/languages/plsql/plsql.keywords.js.map +1 -0
- package/dist/cjs/languages/postgresql/postgresql.formatter.d.ts +2 -0
- package/dist/cjs/languages/postgresql/postgresql.formatter.js +391 -0
- package/dist/cjs/languages/postgresql/postgresql.formatter.js.map +1 -0
- package/dist/cjs/languages/postgresql/postgresql.functions.d.ts +1 -0
- package/dist/cjs/languages/postgresql/postgresql.functions.js +693 -0
- package/dist/cjs/languages/postgresql/postgresql.functions.js.map +1 -0
- package/dist/cjs/languages/postgresql/postgresql.keywords.d.ts +2 -0
- package/dist/cjs/languages/postgresql/postgresql.keywords.js +158 -0
- package/dist/cjs/languages/postgresql/postgresql.keywords.js.map +1 -0
- package/dist/cjs/languages/redshift/redshift.formatter.d.ts +2 -0
- package/dist/cjs/languages/redshift/redshift.formatter.js +180 -0
- package/dist/cjs/languages/redshift/redshift.formatter.js.map +1 -0
- package/dist/cjs/languages/redshift/redshift.functions.d.ts +1 -0
- package/dist/cjs/languages/redshift/redshift.functions.js +351 -0
- package/dist/cjs/languages/redshift/redshift.functions.js.map +1 -0
- package/dist/cjs/languages/redshift/redshift.keywords.d.ts +2 -0
- package/dist/cjs/languages/redshift/redshift.keywords.js +216 -0
- package/dist/cjs/languages/redshift/redshift.keywords.js.map +1 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.formatter.d.ts +2 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.formatter.js +286 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.formatter.js.map +1 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.functions.d.ts +1 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.functions.js +285 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.functions.js.map +1 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.keywords.d.ts +2 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.keywords.js +268 -0
- package/dist/cjs/languages/singlestoredb/singlestoredb.keywords.js.map +1 -0
- package/dist/cjs/languages/snowflake/snowflake.formatter.d.ts +2 -0
- package/dist/cjs/languages/snowflake/snowflake.formatter.js +339 -0
- package/dist/cjs/languages/snowflake/snowflake.formatter.js.map +1 -0
- package/dist/cjs/languages/snowflake/snowflake.functions.d.ts +1 -0
- package/dist/cjs/languages/snowflake/snowflake.functions.js +613 -0
- package/dist/cjs/languages/snowflake/snowflake.functions.js.map +1 -0
- package/dist/cjs/languages/snowflake/snowflake.keywords.d.ts +2 -0
- package/dist/cjs/languages/snowflake/snowflake.keywords.js +140 -0
- package/dist/cjs/languages/snowflake/snowflake.keywords.js.map +1 -0
- package/dist/cjs/languages/spark/spark.formatter.d.ts +2 -0
- package/dist/cjs/languages/spark/spark.formatter.js +167 -0
- package/dist/cjs/languages/spark/spark.formatter.js.map +1 -0
- package/dist/cjs/languages/spark/spark.functions.d.ts +1 -0
- package/dist/cjs/languages/spark/spark.functions.js +326 -0
- package/dist/cjs/languages/spark/spark.functions.js.map +1 -0
- package/dist/cjs/languages/spark/spark.keywords.d.ts +2 -0
- package/dist/cjs/languages/spark/spark.keywords.js +302 -0
- package/dist/cjs/languages/spark/spark.keywords.js.map +1 -0
- package/dist/cjs/languages/sql/sql.formatter.d.ts +2 -0
- package/dist/cjs/languages/sql/sql.formatter.js +97 -0
- package/dist/cjs/languages/sql/sql.formatter.js.map +1 -0
- package/dist/cjs/languages/sql/sql.functions.d.ts +1 -0
- package/dist/cjs/languages/sql/sql.functions.js +102 -0
- package/dist/cjs/languages/sql/sql.functions.js.map +1 -0
- package/dist/cjs/languages/sql/sql.keywords.d.ts +2 -0
- package/dist/cjs/languages/sql/sql.keywords.js +244 -0
- package/dist/cjs/languages/sql/sql.keywords.js.map +1 -0
- package/dist/cjs/languages/sqlite/sqlite.formatter.d.ts +2 -0
- package/dist/cjs/languages/sqlite/sqlite.formatter.js +94 -0
- package/dist/cjs/languages/sqlite/sqlite.formatter.js.map +1 -0
- package/dist/cjs/languages/sqlite/sqlite.functions.d.ts +1 -0
- package/dist/cjs/languages/sqlite/sqlite.functions.js +129 -0
- package/dist/cjs/languages/sqlite/sqlite.functions.js.map +1 -0
- package/dist/cjs/languages/sqlite/sqlite.keywords.d.ts +2 -0
- package/dist/cjs/languages/sqlite/sqlite.keywords.js +180 -0
- package/dist/cjs/languages/sqlite/sqlite.keywords.js.map +1 -0
- package/dist/cjs/languages/tidb/tidb.formatter.d.ts +2 -0
- package/dist/cjs/languages/tidb/tidb.formatter.js +218 -0
- package/dist/cjs/languages/tidb/tidb.formatter.js.map +1 -0
- package/dist/cjs/languages/tidb/tidb.functions.d.ts +1 -0
- package/dist/cjs/languages/tidb/tidb.functions.js +331 -0
- package/dist/cjs/languages/tidb/tidb.functions.js.map +1 -0
- package/dist/cjs/languages/tidb/tidb.keywords.d.ts +2 -0
- package/dist/cjs/languages/tidb/tidb.keywords.js +244 -0
- package/dist/cjs/languages/tidb/tidb.keywords.js.map +1 -0
- package/dist/cjs/languages/transactsql/transactsql.formatter.d.ts +2 -0
- package/dist/cjs/languages/transactsql/transactsql.formatter.js +275 -0
- package/dist/cjs/languages/transactsql/transactsql.formatter.js.map +1 -0
- package/dist/cjs/languages/transactsql/transactsql.functions.d.ts +1 -0
- package/dist/cjs/languages/transactsql/transactsql.functions.js +310 -0
- package/dist/cjs/languages/transactsql/transactsql.functions.js.map +1 -0
- package/dist/cjs/languages/transactsql/transactsql.keywords.d.ts +2 -0
- package/dist/cjs/languages/transactsql/transactsql.keywords.js +214 -0
- package/dist/cjs/languages/transactsql/transactsql.keywords.js.map +1 -0
- package/dist/cjs/languages/trino/trino.formatter.d.ts +2 -0
- package/dist/cjs/languages/trino/trino.formatter.js +163 -0
- package/dist/cjs/languages/trino/trino.formatter.js.map +1 -0
- package/dist/cjs/languages/trino/trino.functions.d.ts +1 -0
- package/dist/cjs/languages/trino/trino.functions.js +439 -0
- package/dist/cjs/languages/trino/trino.functions.js.map +1 -0
- package/dist/cjs/languages/trino/trino.keywords.d.ts +2 -0
- package/dist/cjs/languages/trino/trino.keywords.js +282 -0
- package/dist/cjs/languages/trino/trino.keywords.js.map +1 -0
- package/dist/cjs/lexer/NestedComment.d.ts +10 -0
- package/dist/cjs/lexer/NestedComment.js +54 -0
- package/dist/cjs/lexer/NestedComment.js.map +1 -0
- package/dist/cjs/lexer/Tokenizer.d.ts +14 -0
- package/dist/cjs/lexer/Tokenizer.js +293 -0
- package/dist/cjs/lexer/Tokenizer.js.map +1 -0
- package/dist/cjs/lexer/TokenizerEngine.d.ts +31 -0
- package/dist/cjs/lexer/TokenizerEngine.js +95 -0
- package/dist/cjs/lexer/TokenizerEngine.js.map +1 -0
- package/dist/cjs/lexer/TokenizerOptions.d.ts +56 -0
- package/dist/cjs/lexer/TokenizerOptions.js +3 -0
- package/dist/cjs/lexer/TokenizerOptions.js.map +1 -0
- package/dist/cjs/lexer/disambiguateTokens.d.ts +18 -0
- package/dist/cjs/lexer/disambiguateTokens.js +90 -0
- package/dist/cjs/lexer/disambiguateTokens.js.map +1 -0
- package/dist/cjs/lexer/lineColFromIndex.d.ts +8 -0
- package/dist/cjs/lexer/lineColFromIndex.js +12 -0
- package/dist/cjs/lexer/lineColFromIndex.js.map +1 -0
- package/dist/cjs/lexer/regexFactory.d.ts +55 -0
- package/dist/cjs/lexer/regexFactory.js +153 -0
- package/dist/cjs/lexer/regexFactory.js.map +1 -0
- package/dist/cjs/lexer/regexUtil.d.ts +7 -0
- package/dist/cjs/lexer/regexUtil.js +21 -0
- package/dist/cjs/lexer/regexUtil.js.map +1 -0
- package/dist/cjs/lexer/token.d.ts +89 -0
- package/dist/cjs/lexer/token.js +101 -0
- package/dist/cjs/lexer/token.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/parser/LexerAdapter.d.ts +17 -0
- package/dist/cjs/parser/LexerAdapter.js +30 -0
- package/dist/cjs/parser/LexerAdapter.js.map +1 -0
- package/dist/cjs/parser/ast.d.ts +158 -0
- package/dist/cjs/parser/ast.js +31 -0
- package/dist/cjs/parser/ast.js.map +1 -0
- package/dist/cjs/parser/createParser.d.ts +10 -0
- package/dist/cjs/parser/createParser.js +43 -0
- package/dist/cjs/parser/createParser.js.map +1 -0
- package/dist/cjs/parser/grammar.d.ts +28 -0
- package/dist/cjs/parser/grammar.js +371 -0
- package/dist/cjs/parser/grammar.js.map +1 -0
- package/dist/cjs/sqlFormatter.d.ts +31 -0
- package/dist/cjs/sqlFormatter.js +117 -0
- package/dist/cjs/sqlFormatter.js.map +1 -0
- package/dist/cjs/utils.d.ts +8 -0
- package/dist/cjs/utils.js +22 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/validateConfig.d.ts +4 -0
- package/dist/cjs/validateConfig.js +43 -0
- package/dist/cjs/validateConfig.js.map +1 -0
- package/dist/esm/FormatOptions.d.ts +27 -0
- package/dist/esm/FormatOptions.js +2 -0
- package/dist/esm/FormatOptions.js.map +1 -0
- package/dist/esm/allDialects.d.ts +20 -0
- package/dist/esm/allDialects.js +21 -0
- package/dist/esm/allDialects.js.map +1 -0
- package/dist/esm/dialect.d.ts +18 -0
- package/dist/esm/dialect.js +28 -0
- package/dist/esm/dialect.js.map +1 -0
- package/dist/esm/expandPhrases.d.ts +29 -0
- package/dist/esm/expandPhrases.js +127 -0
- package/dist/esm/expandPhrases.js.map +1 -0
- package/dist/esm/formatter/ExpressionFormatter.d.ts +78 -0
- package/dist/esm/formatter/ExpressionFormatter.js +520 -0
- package/dist/esm/formatter/ExpressionFormatter.js.map +1 -0
- package/dist/esm/formatter/Formatter.d.ts +18 -0
- package/dist/esm/formatter/Formatter.js +51 -0
- package/dist/esm/formatter/Formatter.js.map +1 -0
- package/dist/esm/formatter/Indentation.d.ts +43 -0
- package/dist/esm/formatter/Indentation.js +67 -0
- package/dist/esm/formatter/Indentation.js.map +1 -0
- package/dist/esm/formatter/InlineLayout.d.ts +21 -0
- package/dist/esm/formatter/InlineLayout.js +57 -0
- package/dist/esm/formatter/InlineLayout.js.map +1 -0
- package/dist/esm/formatter/Layout.d.ts +41 -0
- package/dist/esm/formatter/Layout.js +118 -0
- package/dist/esm/formatter/Layout.js.map +1 -0
- package/dist/esm/formatter/Params.d.ts +26 -0
- package/dist/esm/formatter/Params.js +34 -0
- package/dist/esm/formatter/Params.js.map +1 -0
- package/dist/esm/formatter/config.d.ts +9 -0
- package/dist/esm/formatter/config.js +20 -0
- package/dist/esm/formatter/config.js.map +1 -0
- package/dist/esm/formatter/tabularStyle.d.ts +11 -0
- package/dist/esm/formatter/tabularStyle.js +34 -0
- package/dist/esm/formatter/tabularStyle.js.map +1 -0
- package/dist/esm/index.d.ts +28 -0
- package/dist/esm/index.js +25 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/languages/bigquery/bigquery.formatter.d.ts +2 -0
- package/dist/esm/languages/bigquery/bigquery.formatter.js +256 -0
- package/dist/esm/languages/bigquery/bigquery.formatter.js.map +1 -0
- package/dist/esm/languages/bigquery/bigquery.functions.d.ts +1 -0
- package/dist/esm/languages/bigquery/bigquery.functions.js +546 -0
- package/dist/esm/languages/bigquery/bigquery.functions.js.map +1 -0
- package/dist/esm/languages/bigquery/bigquery.keywords.d.ts +2 -0
- package/dist/esm/languages/bigquery/bigquery.keywords.js +136 -0
- package/dist/esm/languages/bigquery/bigquery.keywords.js.map +1 -0
- package/dist/esm/languages/clickhouse/clickhouse.formatter.d.ts +2 -0
- package/dist/esm/languages/clickhouse/clickhouse.formatter.js +320 -0
- package/dist/esm/languages/clickhouse/clickhouse.formatter.js.map +1 -0
- package/dist/esm/languages/clickhouse/clickhouse.functions.d.ts +1 -0
- package/dist/esm/languages/clickhouse/clickhouse.functions.js +1753 -0
- package/dist/esm/languages/clickhouse/clickhouse.functions.js.map +1 -0
- package/dist/esm/languages/clickhouse/clickhouse.keywords.d.ts +2 -0
- package/dist/esm/languages/clickhouse/clickhouse.keywords.js +547 -0
- package/dist/esm/languages/clickhouse/clickhouse.keywords.js.map +1 -0
- package/dist/esm/languages/db2/db2.formatter.d.ts +2 -0
- package/dist/esm/languages/db2/db2.formatter.js +301 -0
- package/dist/esm/languages/db2/db2.formatter.js.map +1 -0
- package/dist/esm/languages/db2/db2.functions.d.ts +1 -0
- package/dist/esm/languages/db2/db2.functions.js +322 -0
- package/dist/esm/languages/db2/db2.functions.js.map +1 -0
- package/dist/esm/languages/db2/db2.keywords.d.ts +2 -0
- package/dist/esm/languages/db2/db2.keywords.js +446 -0
- package/dist/esm/languages/db2/db2.keywords.js.map +1 -0
- package/dist/esm/languages/db2i/db2i.formatter.d.ts +2 -0
- package/dist/esm/languages/db2i/db2i.formatter.js +178 -0
- package/dist/esm/languages/db2i/db2i.formatter.js.map +1 -0
- package/dist/esm/languages/db2i/db2i.functions.d.ts +1 -0
- package/dist/esm/languages/db2i/db2i.functions.js +336 -0
- package/dist/esm/languages/db2i/db2i.functions.js.map +1 -0
- package/dist/esm/languages/db2i/db2i.keywords.d.ts +2 -0
- package/dist/esm/languages/db2i/db2i.keywords.js +535 -0
- package/dist/esm/languages/db2i/db2i.keywords.js.map +1 -0
- package/dist/esm/languages/duckdb/duckdb.formatter.d.ts +2 -0
- package/dist/esm/languages/duckdb/duckdb.formatter.js +210 -0
- package/dist/esm/languages/duckdb/duckdb.formatter.js.map +1 -0
- package/dist/esm/languages/duckdb/duckdb.functions.d.ts +1 -0
- package/dist/esm/languages/duckdb/duckdb.functions.js +665 -0
- package/dist/esm/languages/duckdb/duckdb.functions.js.map +1 -0
- package/dist/esm/languages/duckdb/duckdb.keywords.d.ts +2 -0
- package/dist/esm/languages/duckdb/duckdb.keywords.js +165 -0
- package/dist/esm/languages/duckdb/duckdb.keywords.js.map +1 -0
- package/dist/esm/languages/hive/hive.formatter.d.ts +2 -0
- package/dist/esm/languages/hive/hive.formatter.js +103 -0
- package/dist/esm/languages/hive/hive.formatter.js.map +1 -0
- package/dist/esm/languages/hive/hive.functions.d.ts +1 -0
- package/dist/esm/languages/hive/hive.functions.js +210 -0
- package/dist/esm/languages/hive/hive.functions.js.map +1 -0
- package/dist/esm/languages/hive/hive.keywords.d.ts +2 -0
- package/dist/esm/languages/hive/hive.keywords.js +339 -0
- package/dist/esm/languages/hive/hive.keywords.js.map +1 -0
- package/dist/esm/languages/mariadb/likeMariaDb.d.ts +2 -0
- package/dist/esm/languages/mariadb/likeMariaDb.js +18 -0
- package/dist/esm/languages/mariadb/likeMariaDb.js.map +1 -0
- package/dist/esm/languages/mariadb/mariadb.formatter.d.ts +2 -0
- package/dist/esm/languages/mariadb/mariadb.formatter.js +314 -0
- package/dist/esm/languages/mariadb/mariadb.formatter.js.map +1 -0
- package/dist/esm/languages/mariadb/mariadb.functions.d.ts +1 -0
- package/dist/esm/languages/mariadb/mariadb.functions.js +240 -0
- package/dist/esm/languages/mariadb/mariadb.functions.js.map +1 -0
- package/dist/esm/languages/mariadb/mariadb.keywords.d.ts +2 -0
- package/dist/esm/languages/mariadb/mariadb.keywords.js +271 -0
- package/dist/esm/languages/mariadb/mariadb.keywords.js.map +1 -0
- package/dist/esm/languages/mysql/mysql.formatter.d.ts +2 -0
- package/dist/esm/languages/mysql/mysql.formatter.js +281 -0
- package/dist/esm/languages/mysql/mysql.formatter.js.map +1 -0
- package/dist/esm/languages/mysql/mysql.functions.d.ts +1 -0
- package/dist/esm/languages/mysql/mysql.functions.js +425 -0
- package/dist/esm/languages/mysql/mysql.functions.js.map +1 -0
- package/dist/esm/languages/mysql/mysql.keywords.d.ts +2 -0
- package/dist/esm/languages/mysql/mysql.keywords.js +285 -0
- package/dist/esm/languages/mysql/mysql.keywords.js.map +1 -0
- package/dist/esm/languages/n1ql/n1ql.formatter.d.ts +2 -0
- package/dist/esm/languages/n1ql/n1ql.formatter.js +106 -0
- package/dist/esm/languages/n1ql/n1ql.formatter.js.map +1 -0
- package/dist/esm/languages/n1ql/n1ql.functions.d.ts +1 -0
- package/dist/esm/languages/n1ql/n1ql.functions.js +232 -0
- package/dist/esm/languages/n1ql/n1ql.functions.js.map +1 -0
- package/dist/esm/languages/n1ql/n1ql.keywords.d.ts +2 -0
- package/dist/esm/languages/n1ql/n1ql.keywords.js +218 -0
- package/dist/esm/languages/n1ql/n1ql.keywords.js.map +1 -0
- package/dist/esm/languages/plsql/plsql.formatter.d.ts +2 -0
- package/dist/esm/languages/plsql/plsql.formatter.js +137 -0
- package/dist/esm/languages/plsql/plsql.formatter.js.map +1 -0
- package/dist/esm/languages/plsql/plsql.functions.d.ts +1 -0
- package/dist/esm/languages/plsql/plsql.functions.js +267 -0
- package/dist/esm/languages/plsql/plsql.functions.js.map +1 -0
- package/dist/esm/languages/plsql/plsql.keywords.d.ts +2 -0
- package/dist/esm/languages/plsql/plsql.keywords.js +346 -0
- package/dist/esm/languages/plsql/plsql.keywords.js.map +1 -0
- package/dist/esm/languages/postgresql/postgresql.formatter.d.ts +2 -0
- package/dist/esm/languages/postgresql/postgresql.formatter.js +388 -0
- package/dist/esm/languages/postgresql/postgresql.formatter.js.map +1 -0
- package/dist/esm/languages/postgresql/postgresql.functions.d.ts +1 -0
- package/dist/esm/languages/postgresql/postgresql.functions.js +690 -0
- package/dist/esm/languages/postgresql/postgresql.functions.js.map +1 -0
- package/dist/esm/languages/postgresql/postgresql.keywords.d.ts +2 -0
- package/dist/esm/languages/postgresql/postgresql.keywords.js +155 -0
- package/dist/esm/languages/postgresql/postgresql.keywords.js.map +1 -0
- package/dist/esm/languages/redshift/redshift.formatter.d.ts +2 -0
- package/dist/esm/languages/redshift/redshift.formatter.js +177 -0
- package/dist/esm/languages/redshift/redshift.formatter.js.map +1 -0
- package/dist/esm/languages/redshift/redshift.functions.d.ts +1 -0
- package/dist/esm/languages/redshift/redshift.functions.js +348 -0
- package/dist/esm/languages/redshift/redshift.functions.js.map +1 -0
- package/dist/esm/languages/redshift/redshift.keywords.d.ts +2 -0
- package/dist/esm/languages/redshift/redshift.keywords.js +213 -0
- package/dist/esm/languages/redshift/redshift.keywords.js.map +1 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.formatter.d.ts +2 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.formatter.js +283 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.formatter.js.map +1 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.functions.d.ts +1 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.functions.js +282 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.functions.js.map +1 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.keywords.d.ts +2 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.keywords.js +265 -0
- package/dist/esm/languages/singlestoredb/singlestoredb.keywords.js.map +1 -0
- package/dist/esm/languages/snowflake/snowflake.formatter.d.ts +2 -0
- package/dist/esm/languages/snowflake/snowflake.formatter.js +336 -0
- package/dist/esm/languages/snowflake/snowflake.formatter.js.map +1 -0
- package/dist/esm/languages/snowflake/snowflake.functions.d.ts +1 -0
- package/dist/esm/languages/snowflake/snowflake.functions.js +610 -0
- package/dist/esm/languages/snowflake/snowflake.functions.js.map +1 -0
- package/dist/esm/languages/snowflake/snowflake.keywords.d.ts +2 -0
- package/dist/esm/languages/snowflake/snowflake.keywords.js +137 -0
- package/dist/esm/languages/snowflake/snowflake.keywords.js.map +1 -0
- package/dist/esm/languages/spark/spark.formatter.d.ts +2 -0
- package/dist/esm/languages/spark/spark.formatter.js +164 -0
- package/dist/esm/languages/spark/spark.formatter.js.map +1 -0
- package/dist/esm/languages/spark/spark.functions.d.ts +1 -0
- package/dist/esm/languages/spark/spark.functions.js +323 -0
- package/dist/esm/languages/spark/spark.functions.js.map +1 -0
- package/dist/esm/languages/spark/spark.keywords.d.ts +2 -0
- package/dist/esm/languages/spark/spark.keywords.js +299 -0
- package/dist/esm/languages/spark/spark.keywords.js.map +1 -0
- package/dist/esm/languages/sql/sql.formatter.d.ts +2 -0
- package/dist/esm/languages/sql/sql.formatter.js +94 -0
- package/dist/esm/languages/sql/sql.formatter.js.map +1 -0
- package/dist/esm/languages/sql/sql.functions.d.ts +1 -0
- package/dist/esm/languages/sql/sql.functions.js +99 -0
- package/dist/esm/languages/sql/sql.functions.js.map +1 -0
- package/dist/esm/languages/sql/sql.keywords.d.ts +2 -0
- package/dist/esm/languages/sql/sql.keywords.js +241 -0
- package/dist/esm/languages/sql/sql.keywords.js.map +1 -0
- package/dist/esm/languages/sqlite/sqlite.formatter.d.ts +2 -0
- package/dist/esm/languages/sqlite/sqlite.formatter.js +91 -0
- package/dist/esm/languages/sqlite/sqlite.formatter.js.map +1 -0
- package/dist/esm/languages/sqlite/sqlite.functions.d.ts +1 -0
- package/dist/esm/languages/sqlite/sqlite.functions.js +126 -0
- package/dist/esm/languages/sqlite/sqlite.functions.js.map +1 -0
- package/dist/esm/languages/sqlite/sqlite.keywords.d.ts +2 -0
- package/dist/esm/languages/sqlite/sqlite.keywords.js +177 -0
- package/dist/esm/languages/sqlite/sqlite.keywords.js.map +1 -0
- package/dist/esm/languages/tidb/tidb.formatter.d.ts +2 -0
- package/dist/esm/languages/tidb/tidb.formatter.js +215 -0
- package/dist/esm/languages/tidb/tidb.formatter.js.map +1 -0
- package/dist/esm/languages/tidb/tidb.functions.d.ts +1 -0
- package/dist/esm/languages/tidb/tidb.functions.js +328 -0
- package/dist/esm/languages/tidb/tidb.functions.js.map +1 -0
- package/dist/esm/languages/tidb/tidb.keywords.d.ts +2 -0
- package/dist/esm/languages/tidb/tidb.keywords.js +241 -0
- package/dist/esm/languages/tidb/tidb.keywords.js.map +1 -0
- package/dist/esm/languages/transactsql/transactsql.formatter.d.ts +2 -0
- package/dist/esm/languages/transactsql/transactsql.formatter.js +272 -0
- package/dist/esm/languages/transactsql/transactsql.formatter.js.map +1 -0
- package/dist/esm/languages/transactsql/transactsql.functions.d.ts +1 -0
- package/dist/esm/languages/transactsql/transactsql.functions.js +307 -0
- package/dist/esm/languages/transactsql/transactsql.functions.js.map +1 -0
- package/dist/esm/languages/transactsql/transactsql.keywords.d.ts +2 -0
- package/dist/esm/languages/transactsql/transactsql.keywords.js +211 -0
- package/dist/esm/languages/transactsql/transactsql.keywords.js.map +1 -0
- package/dist/esm/languages/trino/trino.formatter.d.ts +2 -0
- package/dist/esm/languages/trino/trino.formatter.js +160 -0
- package/dist/esm/languages/trino/trino.formatter.js.map +1 -0
- package/dist/esm/languages/trino/trino.functions.d.ts +1 -0
- package/dist/esm/languages/trino/trino.functions.js +436 -0
- package/dist/esm/languages/trino/trino.functions.js.map +1 -0
- package/dist/esm/languages/trino/trino.keywords.d.ts +2 -0
- package/dist/esm/languages/trino/trino.keywords.js +279 -0
- package/dist/esm/languages/trino/trino.keywords.js.map +1 -0
- package/dist/esm/lexer/NestedComment.d.ts +10 -0
- package/dist/esm/lexer/NestedComment.js +50 -0
- package/dist/esm/lexer/NestedComment.js.map +1 -0
- package/dist/esm/lexer/Tokenizer.d.ts +14 -0
- package/dist/esm/lexer/Tokenizer.js +264 -0
- package/dist/esm/lexer/Tokenizer.js.map +1 -0
- package/dist/esm/lexer/TokenizerEngine.d.ts +31 -0
- package/dist/esm/lexer/TokenizerEngine.js +92 -0
- package/dist/esm/lexer/TokenizerEngine.js.map +1 -0
- package/dist/esm/lexer/TokenizerOptions.d.ts +56 -0
- package/dist/esm/lexer/TokenizerOptions.js +2 -0
- package/dist/esm/lexer/TokenizerOptions.js.map +1 -0
- package/dist/esm/lexer/disambiguateTokens.d.ts +18 -0
- package/dist/esm/lexer/disambiguateTokens.js +86 -0
- package/dist/esm/lexer/disambiguateTokens.js.map +1 -0
- package/dist/esm/lexer/lineColFromIndex.d.ts +8 -0
- package/dist/esm/lexer/lineColFromIndex.js +8 -0
- package/dist/esm/lexer/lineColFromIndex.js.map +1 -0
- package/dist/esm/lexer/regexFactory.d.ts +55 -0
- package/dist/esm/lexer/regexFactory.js +140 -0
- package/dist/esm/lexer/regexFactory.js.map +1 -0
- package/dist/esm/lexer/regexUtil.d.ts +7 -0
- package/dist/esm/lexer/regexUtil.js +13 -0
- package/dist/esm/lexer/regexUtil.js.map +1 -0
- package/dist/esm/lexer/token.d.ts +89 -0
- package/dist/esm/lexer/token.js +94 -0
- package/dist/esm/lexer/token.js.map +1 -0
- package/dist/esm/parser/LexerAdapter.d.ts +17 -0
- package/dist/esm/parser/LexerAdapter.js +27 -0
- package/dist/esm/parser/LexerAdapter.js.map +1 -0
- package/dist/esm/parser/ast.d.ts +158 -0
- package/dist/esm/parser/ast.js +28 -0
- package/dist/esm/parser/ast.js.map +1 -0
- package/dist/esm/parser/createParser.d.ts +10 -0
- package/dist/esm/parser/createParser.js +36 -0
- package/dist/esm/parser/createParser.js.map +1 -0
- package/dist/esm/parser/grammar.d.ts +28 -0
- package/dist/esm/parser/grammar.js +366 -0
- package/dist/esm/parser/grammar.js.map +1 -0
- package/dist/esm/sqlFormatter.d.ts +31 -0
- package/dist/esm/sqlFormatter.js +86 -0
- package/dist/esm/sqlFormatter.js.map +1 -0
- package/dist/esm/utils.d.ts +8 -0
- package/dist/esm/utils.js +13 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/validateConfig.d.ts +4 -0
- package/dist/esm/validateConfig.js +38 -0
- package/dist/esm/validateConfig.js.map +1 -0
- package/dist/sql-formatter.min.cjs +2 -0
- package/dist/sql-formatter.min.cjs.map +1 -0
- package/dist/sql-formatter.min.js +2 -0
- 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":"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"}
|
|
@@ -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 @@
|
|
|
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,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"}
|