prettier-plugin-sql-cst 0.11.8 → 0.12.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/README.md CHANGED
@@ -119,11 +119,12 @@ The plugin provides the following parsers:
119
119
  The standard Prettier options [printWidth][], [tabWidth][], [useTabs][] apply.
120
120
  There are also some SQL-specific options:
121
121
 
122
- | API Option | Default | Description |
123
- | -------------------- | :-----: | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
124
- | `sqlKeywordCase` | `upper` | Converts SQL keywords to `upper` or `lower` case, or `preserve` existing. Note that for now `preserve` is somewhat incompatible with `sqlCanonicalSyntax: true` (e.g. the added `AS` keywords will always be in uppercase). |
125
- | `sqlParamTypes` | `[]` | Array of bound parameter types: `?`, `?nr`, `$nr`, `:name`, `@name`, `$name`. |
126
- | `sqlCanonicalSyntax` | `true` | When enabled, performs some opinionated changes of keywords and operators, like enforcing the use of `AS` in aliases and replacing `<>` comparisons with `!=`. See [STYLE_GUIDE][] for more details. (Since 0.11.0) |
122
+ | API Option | Default | Description |
123
+ | ----------------------------- | :-----: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
124
+ | `sqlKeywordCase` | `upper` | Converts SQL keywords to `upper` or `lower` case, or `preserve` existing. Note that for now `preserve` is somewhat incompatible with `sqlCanonicalSyntax: true` (e.g. the added `AS` keywords will always be in uppercase). |
125
+ | `sqlParamTypes` | `[]` | Array of bound parameter types: `?`, `?nr`, `$nr`, `:name`, `@name`, `$name`. |
126
+ | `sqlCanonicalSyntax` | `true` | When enabled, performs some opinionated changes of keywords and operators, like enforcing the use of `AS` in aliases and replacing `<>` comparisons with `!=`. See [STYLE_GUIDE][] for more details. (Since 0.11.0) |
127
+ | `sqlAcceptUnsupportedGrammar` | `false` | Normally when the plugin encounters SQL syntax it doesn't support it will throw an error and won't format anything at all. With this option enabled, it will skip over SQL statements it doesn't recognize, leaving them as-is. |
127
128
 
128
129
  ## Usage inside VSCode
129
130
 
@@ -173,7 +174,9 @@ The main limitation is that [the parser][sql-parser-cst] does not support full s
173
174
  these dialects. One should expect the parser to crash for syntax that's more specific to
174
175
  these dialects. But as long as the parsing succeeds, the formatting should also succeed.
175
176
  Mainly one can expect the formatting of SELECT, INSERT, UPDATE, DELETE statements to work.
176
- But beyond that you should keep your expectations low. You have been warned.
177
+
178
+ To overcome this limitation you can enable the `sqlAcceptUnsupportedGrammar` option,
179
+ which will make the plugin skip the SQL statements it doesn't recognize.
177
180
 
178
181
  The specifics of the [SQL formatting style][STYLE_GUIDE] are still very much subject to change.
179
182
  Though the general principles should be mostly in place by now.
package/dist/index.js CHANGED
@@ -44,6 +44,8 @@ var createParser = function (dialect) { return ({
44
44
  includeComments: true,
45
45
  filename: options.filepath,
46
46
  paramTypes: options.sqlParamTypes,
47
+ acceptUnsupportedGrammar: options
48
+ .sqlAcceptUnsupportedGrammar,
47
49
  }), text, options);
48
50
  },
49
51
  astFormat: "sql-cst",
package/dist/options.d.ts CHANGED
@@ -4,6 +4,7 @@ export interface SqlPluginOptions {
4
4
  sqlKeywordCase: "preserve" | "upper" | "lower";
5
5
  sqlParamTypes: NonNullable<CstParserOptions["paramTypes"]>;
6
6
  sqlCanonicalSyntax: boolean;
7
+ sqlAcceptUnsupportedGrammar: boolean;
7
8
  }
8
9
  export type AllPrettierOptions<T = Node> = ParserOptions<T> & SqlPluginOptions;
9
10
  export declare const options: SupportOptions;
package/dist/options.js CHANGED
@@ -41,4 +41,11 @@ exports.options = {
41
41
  description: "Enforces one true style of SQL syntax (adds and removes keywords)",
42
42
  // Since 0.11.0
43
43
  },
44
+ sqlAcceptUnsupportedGrammar: {
45
+ type: "boolean",
46
+ category: "SQL",
47
+ default: false,
48
+ description: "Skips formatting unsupported SQL statements instead of exiting with an error",
49
+ // Since 0.12.0
50
+ },
44
51
  };
@@ -45,10 +45,11 @@ var transaction_1 = require("./transaction");
45
45
  var trigger_1 = require("./trigger");
46
46
  var truncate_1 = require("./truncate");
47
47
  var type_1 = require("./type");
48
+ var unsupported_grammar_1 = require("./unsupported_grammar");
48
49
  var update_1 = require("./update");
49
50
  var view_1 = require("./view");
50
51
  var bigquery_1 = require("./dialects/bigquery");
51
52
  var mysql_1 = require("./dialects/mysql");
52
53
  var sqlite_1 = require("./dialects/sqlite");
53
54
  var postgresql_1 = require("./dialects/postgresql");
54
- exports.transformMap = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, alias_1.aliasMap), alter_action_1.alterActionMap), alter_table_1.alterTableMap), analyze_1.analyzeMap), base_1.baseMap), constraint_1.constraintMap), create_table_1.createTableMap), data_type_1.dataTypeMap), dcl_1.dclMap), delete_1.deleteMap), domain_1.domainMap), drop_table_1.dropTableMap), explain_1.explainMap), expr_1.exprMap), frame_1.frameMap), function_1.functionMap), index_1.indexMap), insert_1.insertMap), merge_1.mergeMap), other_clauses_1.otherClausesMap), prepared_statements_1.preparedStatementsMap), proc_clause_1.procClauseMap), procedural_language_1.proceduralLanguageMap), procedure_1.procedureMap), program_1.programMap), rename_table_1.renameTableMap), schema_1.schemaMap), select_1.selectMap), sequence_1.sequenceMap), transaction_1.transactionMap), trigger_1.triggerMap), truncate_1.truncateMap), type_1.typeMap), update_1.updateMap), view_1.viewMap), bigquery_1.bigqueryMap), mysql_1.mysqlMap), postgresql_1.postgresqlMap), sqlite_1.sqliteMap);
55
+ exports.transformMap = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, alias_1.aliasMap), alter_action_1.alterActionMap), alter_table_1.alterTableMap), analyze_1.analyzeMap), base_1.baseMap), constraint_1.constraintMap), create_table_1.createTableMap), data_type_1.dataTypeMap), dcl_1.dclMap), delete_1.deleteMap), domain_1.domainMap), drop_table_1.dropTableMap), explain_1.explainMap), expr_1.exprMap), frame_1.frameMap), function_1.functionMap), index_1.indexMap), insert_1.insertMap), merge_1.mergeMap), other_clauses_1.otherClausesMap), prepared_statements_1.preparedStatementsMap), proc_clause_1.procClauseMap), procedural_language_1.proceduralLanguageMap), procedure_1.procedureMap), program_1.programMap), rename_table_1.renameTableMap), schema_1.schemaMap), select_1.selectMap), sequence_1.sequenceMap), transaction_1.transactionMap), trigger_1.triggerMap), truncate_1.truncateMap), type_1.typeMap), unsupported_grammar_1.unsupportedGrammarMap), update_1.updateMap), view_1.viewMap), bigquery_1.bigqueryMap), mysql_1.mysqlMap), postgresql_1.postgresqlMap), sqlite_1.sqliteMap);
@@ -0,0 +1,3 @@
1
+ import { CstToDocMap } from "../CstToDocMap";
2
+ import { UnsupportedGrammarStmt } from "sql-parser-cst/lib/cst/UnsupportedGrammar";
3
+ export declare const unsupportedGrammarMap: CstToDocMap<UnsupportedGrammarStmt>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unsupportedGrammarMap = void 0;
4
+ exports.unsupportedGrammarMap = {
5
+ unsupported_grammar_stmt: function (print) { return print("text"); },
6
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prettier-plugin-sql-cst",
3
- "version": "0.11.8",
3
+ "version": "0.12.0",
4
4
  "description": "Prettier plugin for SQL",
5
5
  "contributors": [
6
6
  "Bowen Parnell <bparnell@4tel.com.au>",
@@ -36,10 +36,11 @@
36
36
  ],
37
37
  "dependencies": {
38
38
  "prettier": "^3.0.3",
39
- "sql-parser-cst": "^0.29.1"
39
+ "sql-parser-cst": "^0.30.0"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@types/jest": "^29.2.5",
43
+ "@types/node": "^22.9.0",
43
44
  "chalk": "^4.1.2",
44
45
  "dedent-js": "^1.0.1",
45
46
  "jest": "^29.7.0",