prettier-plugin-sql-cst 0.18.0 → 0.19.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 (213) hide show
  1. package/dist/{CstToDocMap.d.ts → src/CstToDocMap.d.ts} +2 -2
  2. package/dist/src/CstToDocMap.js +1 -0
  3. package/dist/src/PrintFn.js +1 -0
  4. package/dist/src/embed.js +6 -0
  5. package/dist/src/embedJs.js +43 -0
  6. package/dist/src/embedJson.js +34 -0
  7. package/dist/src/embedSql.js +39 -0
  8. package/dist/src/index.js +64 -0
  9. package/dist/{node_utils.d.ts → src/node_utils.d.ts} +1 -0
  10. package/dist/src/node_utils.js +44 -0
  11. package/dist/{options.js → src/options.js} +1 -4
  12. package/dist/{printComment.js → src/printComment.js} +2 -6
  13. package/dist/src/printSql.js +61 -0
  14. package/dist/src/print_utils.js +49 -0
  15. package/dist/src/syntax/alias.js +3 -0
  16. package/dist/src/syntax/alter_action.js +120 -0
  17. package/dist/src/syntax/alter_table.js +19 -0
  18. package/dist/src/syntax/analyze.js +4 -0
  19. package/dist/{syntax → src/syntax}/base.js +6 -9
  20. package/dist/src/syntax/cast.js +4 -0
  21. package/dist/src/syntax/comment.js +54 -0
  22. package/dist/{syntax → src/syntax}/constraint.d.ts +1 -1
  23. package/dist/src/syntax/constraint.js +80 -0
  24. package/dist/src/syntax/create_table.js +69 -0
  25. package/dist/src/syntax/data_type.js +29 -0
  26. package/dist/src/syntax/dcl.js +83 -0
  27. package/dist/src/syntax/delete.js +5 -0
  28. package/dist/src/syntax/dialects/bigquery.js +84 -0
  29. package/dist/src/syntax/dialects/mysql.js +3 -0
  30. package/dist/src/syntax/dialects/postgresql.js +9 -0
  31. package/dist/src/syntax/dialects/sqlite.js +9 -0
  32. package/dist/src/syntax/do.js +4 -0
  33. package/dist/src/syntax/domain.js +11 -0
  34. package/dist/src/syntax/drop_table.js +11 -0
  35. package/dist/src/syntax/explain.js +7 -0
  36. package/dist/src/syntax/expr.js +224 -0
  37. package/dist/src/syntax/extension.js +13 -0
  38. package/dist/src/syntax/frame.js +13 -0
  39. package/dist/src/syntax/function.js +55 -0
  40. package/dist/src/syntax/index.js +60 -0
  41. package/dist/src/syntax/insert.js +33 -0
  42. package/dist/src/syntax/merge.js +30 -0
  43. package/dist/src/syntax/other_clauses.js +9 -0
  44. package/dist/src/syntax/parameter.js +18 -0
  45. package/dist/src/syntax/policy.js +27 -0
  46. package/dist/src/syntax/prepared_statements.js +31 -0
  47. package/dist/src/syntax/proc_clause.js +14 -0
  48. package/dist/src/syntax/procedural_language.js +104 -0
  49. package/dist/src/syntax/procedure.js +38 -0
  50. package/dist/src/syntax/program.js +39 -0
  51. package/dist/src/syntax/publication.js +27 -0
  52. package/dist/src/syntax/rename_table.js +8 -0
  53. package/dist/src/syntax/role.js +31 -0
  54. package/dist/src/syntax/schema.js +18 -0
  55. package/dist/src/syntax/select.js +226 -0
  56. package/dist/src/syntax/sequence.js +36 -0
  57. package/dist/src/syntax/subscription.js +10 -0
  58. package/dist/src/syntax/transaction.js +19 -0
  59. package/dist/src/syntax/transformMap.js +100 -0
  60. package/dist/src/syntax/trigger.js +52 -0
  61. package/dist/src/syntax/truncate.js +10 -0
  62. package/dist/src/syntax/type.js +12 -0
  63. package/dist/src/syntax/unsupported_grammar.js +4 -0
  64. package/dist/src/syntax/update.js +14 -0
  65. package/dist/src/syntax/view.js +48 -0
  66. package/dist/src/transform/addFinalSemicolon.js +9 -0
  67. package/dist/src/transform/aliasAs.js +10 -0
  68. package/dist/{transform → src/transform}/canonicKeywords.js +16 -20
  69. package/dist/{transform → src/transform}/canonicOperators.js +8 -12
  70. package/dist/src/transform/comments.js +22 -0
  71. package/dist/src/transform/stripTrailingCommas.js +15 -0
  72. package/dist/src/transform/transformCst.js +21 -0
  73. package/dist/src/transform/transformUtils.js +3 -0
  74. package/dist/src/utils.js +9 -0
  75. package/dist/src/visitAllNodes.js +16 -0
  76. package/dist/tsconfig.json +14 -0
  77. package/package.json +9 -8
  78. package/dist/CstToDocMap.js +0 -2
  79. package/dist/PrintFn.js +0 -2
  80. package/dist/embed.js +0 -14
  81. package/dist/embedJs.js +0 -99
  82. package/dist/embedJson.js +0 -90
  83. package/dist/embedSql.js +0 -89
  84. package/dist/index.js +0 -70
  85. package/dist/node_utils.js +0 -54
  86. package/dist/printSql.js +0 -71
  87. package/dist/print_utils.js +0 -68
  88. package/dist/syntax/alias.js +0 -6
  89. package/dist/syntax/alter_action.js +0 -213
  90. package/dist/syntax/alter_table.js +0 -28
  91. package/dist/syntax/analyze.js +0 -9
  92. package/dist/syntax/cast.js +0 -7
  93. package/dist/syntax/comment.js +0 -123
  94. package/dist/syntax/constraint.js +0 -116
  95. package/dist/syntax/create_table.js +0 -107
  96. package/dist/syntax/data_type.js +0 -48
  97. package/dist/syntax/dcl.js +0 -141
  98. package/dist/syntax/delete.js +0 -10
  99. package/dist/syntax/dialects/bigquery.js +0 -130
  100. package/dist/syntax/dialects/mysql.js +0 -6
  101. package/dist/syntax/dialects/postgresql.js +0 -14
  102. package/dist/syntax/dialects/sqlite.js +0 -18
  103. package/dist/syntax/do.js +0 -7
  104. package/dist/syntax/domain.js +0 -20
  105. package/dist/syntax/drop_table.js +0 -16
  106. package/dist/syntax/explain.js +0 -12
  107. package/dist/syntax/expr.js +0 -273
  108. package/dist/syntax/extension.js +0 -22
  109. package/dist/syntax/frame.js +0 -18
  110. package/dist/syntax/function.js +0 -65
  111. package/dist/syntax/index.js +0 -87
  112. package/dist/syntax/insert.js +0 -50
  113. package/dist/syntax/merge.js +0 -35
  114. package/dist/syntax/other_clauses.js +0 -18
  115. package/dist/syntax/parameter.js +0 -31
  116. package/dist/syntax/policy.js +0 -42
  117. package/dist/syntax/prepared_statements.js +0 -51
  118. package/dist/syntax/proc_clause.js +0 -19
  119. package/dist/syntax/procedural_language.js +0 -135
  120. package/dist/syntax/procedure.js +0 -42
  121. package/dist/syntax/program.js +0 -46
  122. package/dist/syntax/publication.js +0 -48
  123. package/dist/syntax/rename_table.js +0 -13
  124. package/dist/syntax/role.js +0 -56
  125. package/dist/syntax/schema.js +0 -36
  126. package/dist/syntax/select.js +0 -295
  127. package/dist/syntax/sequence.js +0 -53
  128. package/dist/syntax/subscription.js +0 -25
  129. package/dist/syntax/transaction.js +0 -34
  130. package/dist/syntax/transformMap.js +0 -64
  131. package/dist/syntax/trigger.js +0 -76
  132. package/dist/syntax/truncate.js +0 -15
  133. package/dist/syntax/type.js +0 -23
  134. package/dist/syntax/unsupported_grammar.js +0 -7
  135. package/dist/syntax/update.js +0 -21
  136. package/dist/syntax/view.js +0 -59
  137. package/dist/transform/addFinalSemicolon.js +0 -13
  138. package/dist/transform/aliasAs.js +0 -14
  139. package/dist/transform/comments.js +0 -43
  140. package/dist/transform/stripTrailingCommas.js +0 -19
  141. package/dist/transform/transformCst.js +0 -25
  142. package/dist/transform/transformUtils.js +0 -7
  143. package/dist/utils.js +0 -30
  144. package/dist/visitAllNodes.js +0 -21
  145. /package/dist/{PrintFn.d.ts → src/PrintFn.d.ts} +0 -0
  146. /package/dist/{embed.d.ts → src/embed.d.ts} +0 -0
  147. /package/dist/{embedJs.d.ts → src/embedJs.d.ts} +0 -0
  148. /package/dist/{embedJson.d.ts → src/embedJson.d.ts} +0 -0
  149. /package/dist/{embedSql.d.ts → src/embedSql.d.ts} +0 -0
  150. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  151. /package/dist/{options.d.ts → src/options.d.ts} +0 -0
  152. /package/dist/{printComment.d.ts → src/printComment.d.ts} +0 -0
  153. /package/dist/{printSql.d.ts → src/printSql.d.ts} +0 -0
  154. /package/dist/{print_utils.d.ts → src/print_utils.d.ts} +0 -0
  155. /package/dist/{syntax → src/syntax}/alias.d.ts +0 -0
  156. /package/dist/{syntax → src/syntax}/alter_action.d.ts +0 -0
  157. /package/dist/{syntax → src/syntax}/alter_table.d.ts +0 -0
  158. /package/dist/{syntax → src/syntax}/analyze.d.ts +0 -0
  159. /package/dist/{syntax → src/syntax}/base.d.ts +0 -0
  160. /package/dist/{syntax → src/syntax}/cast.d.ts +0 -0
  161. /package/dist/{syntax → src/syntax}/comment.d.ts +0 -0
  162. /package/dist/{syntax → src/syntax}/create_table.d.ts +0 -0
  163. /package/dist/{syntax → src/syntax}/data_type.d.ts +0 -0
  164. /package/dist/{syntax → src/syntax}/dcl.d.ts +0 -0
  165. /package/dist/{syntax → src/syntax}/delete.d.ts +0 -0
  166. /package/dist/{syntax → src/syntax}/dialects/bigquery.d.ts +0 -0
  167. /package/dist/{syntax → src/syntax}/dialects/mysql.d.ts +0 -0
  168. /package/dist/{syntax → src/syntax}/dialects/postgresql.d.ts +0 -0
  169. /package/dist/{syntax → src/syntax}/dialects/sqlite.d.ts +0 -0
  170. /package/dist/{syntax → src/syntax}/do.d.ts +0 -0
  171. /package/dist/{syntax → src/syntax}/domain.d.ts +0 -0
  172. /package/dist/{syntax → src/syntax}/drop_table.d.ts +0 -0
  173. /package/dist/{syntax → src/syntax}/explain.d.ts +0 -0
  174. /package/dist/{syntax → src/syntax}/expr.d.ts +0 -0
  175. /package/dist/{syntax → src/syntax}/extension.d.ts +0 -0
  176. /package/dist/{syntax → src/syntax}/frame.d.ts +0 -0
  177. /package/dist/{syntax → src/syntax}/function.d.ts +0 -0
  178. /package/dist/{syntax → src/syntax}/index.d.ts +0 -0
  179. /package/dist/{syntax → src/syntax}/insert.d.ts +0 -0
  180. /package/dist/{syntax → src/syntax}/merge.d.ts +0 -0
  181. /package/dist/{syntax → src/syntax}/other_clauses.d.ts +0 -0
  182. /package/dist/{syntax → src/syntax}/parameter.d.ts +0 -0
  183. /package/dist/{syntax → src/syntax}/policy.d.ts +0 -0
  184. /package/dist/{syntax → src/syntax}/prepared_statements.d.ts +0 -0
  185. /package/dist/{syntax → src/syntax}/proc_clause.d.ts +0 -0
  186. /package/dist/{syntax → src/syntax}/procedural_language.d.ts +0 -0
  187. /package/dist/{syntax → src/syntax}/procedure.d.ts +0 -0
  188. /package/dist/{syntax → src/syntax}/program.d.ts +0 -0
  189. /package/dist/{syntax → src/syntax}/publication.d.ts +0 -0
  190. /package/dist/{syntax → src/syntax}/rename_table.d.ts +0 -0
  191. /package/dist/{syntax → src/syntax}/role.d.ts +0 -0
  192. /package/dist/{syntax → src/syntax}/schema.d.ts +0 -0
  193. /package/dist/{syntax → src/syntax}/select.d.ts +0 -0
  194. /package/dist/{syntax → src/syntax}/sequence.d.ts +0 -0
  195. /package/dist/{syntax → src/syntax}/subscription.d.ts +0 -0
  196. /package/dist/{syntax → src/syntax}/transaction.d.ts +0 -0
  197. /package/dist/{syntax → src/syntax}/transformMap.d.ts +0 -0
  198. /package/dist/{syntax → src/syntax}/trigger.d.ts +0 -0
  199. /package/dist/{syntax → src/syntax}/truncate.d.ts +0 -0
  200. /package/dist/{syntax → src/syntax}/type.d.ts +0 -0
  201. /package/dist/{syntax → src/syntax}/unsupported_grammar.d.ts +0 -0
  202. /package/dist/{syntax → src/syntax}/update.d.ts +0 -0
  203. /package/dist/{syntax → src/syntax}/view.d.ts +0 -0
  204. /package/dist/{transform → src/transform}/addFinalSemicolon.d.ts +0 -0
  205. /package/dist/{transform → src/transform}/aliasAs.d.ts +0 -0
  206. /package/dist/{transform → src/transform}/canonicKeywords.d.ts +0 -0
  207. /package/dist/{transform → src/transform}/canonicOperators.d.ts +0 -0
  208. /package/dist/{transform → src/transform}/comments.d.ts +0 -0
  209. /package/dist/{transform → src/transform}/stripTrailingCommas.d.ts +0 -0
  210. /package/dist/{transform → src/transform}/transformCst.d.ts +0 -0
  211. /package/dist/{transform → src/transform}/transformUtils.d.ts +0 -0
  212. /package/dist/{utils.d.ts → src/utils.d.ts} +0 -0
  213. /package/dist/{visitAllNodes.d.ts → src/visitAllNodes.d.ts} +0 -0
@@ -1,11 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.canonicOperators = void 0;
4
- var sql_parser_cst_1 = require("sql-parser-cst");
5
- var transformUtils_1 = require("./transformUtils");
6
- var canonicOperators = function (cst, originalText, options) {
7
- (0, sql_parser_cst_1.cstVisitor)({
8
- binary_expr: function (node) {
1
+ import { cstVisitor } from "sql-parser-cst";
2
+ import { keyword } from "./transformUtils";
3
+ export const canonicOperators = (cst, originalText, options) => {
4
+ cstVisitor({
5
+ binary_expr: (node) => {
9
6
  // Replaces <> operator with !=
10
7
  if (node.operator === "<>") {
11
8
  node.operator = "!=";
@@ -13,15 +10,15 @@ var canonicOperators = function (cst, originalText, options) {
13
10
  // Replace MySQL && and || operators with AND and OR
14
11
  if (options.parser === "mysql" || options.parser === "mariadb") {
15
12
  if (node.operator === "&&") {
16
- node.operator = (0, transformUtils_1.keyword)("AND");
13
+ node.operator = keyword("AND");
17
14
  }
18
15
  if (node.operator === "||") {
19
- node.operator = (0, transformUtils_1.keyword)("OR");
16
+ node.operator = keyword("OR");
20
17
  }
21
18
  }
22
19
  },
23
20
  // Replaces PostgreSQL deprecated := operator with =>
24
- named_arg: function (node) {
21
+ named_arg: (node) => {
25
22
  if (node.operator === ":=") {
26
23
  node.operator = "=>";
27
24
  }
@@ -29,4 +26,3 @@ var canonicOperators = function (cst, originalText, options) {
29
26
  })(cst);
30
27
  return cst;
31
28
  };
32
- exports.canonicOperators = canonicOperators;
@@ -0,0 +1,22 @@
1
+ import { visitAllNodes } from "../visitAllNodes";
2
+ /**
3
+ * Gathers comments from .leading and .trailing fields of all nodes
4
+ * into a single .comments field in root Program node.
5
+ *
6
+ * Previously this also deleted all .leading and .trailing fields,
7
+ * but we need this info to check whether the empty lines between nodes
8
+ * are perhaps inside comments (see hasEmptyLineBetweenNodes()).
9
+ */
10
+ export const moveCommentsToRoot = (cst) => {
11
+ return {
12
+ ...cst,
13
+ comments: extractComments(cst),
14
+ };
15
+ };
16
+ const extractComments = (cst) => {
17
+ const comments = [];
18
+ visitAllNodes(cst, (node) => {
19
+ comments.push(...(node.leading || []), ...(node.trailing || []));
20
+ });
21
+ return comments;
22
+ };
@@ -0,0 +1,15 @@
1
+ import { cstVisitor } from "sql-parser-cst";
2
+ import { isEmpty } from "../node_utils";
3
+ import { last } from "../utils";
4
+ // Removes trailing comma from SELECT clauses
5
+ export const stripTrailingCommas = (cst) => {
6
+ // Trailing comma is represented as an empty element at the end of column list
7
+ cstVisitor({
8
+ select_clause: (node) => {
9
+ if (node.columns && isEmpty(last(node.columns.items))) {
10
+ node.columns.items = node.columns.items.slice(0, -1);
11
+ }
12
+ },
13
+ })(cst);
14
+ return cst;
15
+ };
@@ -0,0 +1,21 @@
1
+ import { moveCommentsToRoot } from "./comments";
2
+ import { processAliasAs } from "./aliasAs";
3
+ import { stripTrailingCommas } from "./stripTrailingCommas";
4
+ import { addFinalSemicolon } from "./addFinalSemicolon";
5
+ import { canonicKeywords } from "./canonicKeywords";
6
+ import { canonicOperators } from "./canonicOperators";
7
+ export const transformCst = (cst, originalText, options) => {
8
+ const transforms = [
9
+ // Note that we first perform moveCommentsToRoot transform,
10
+ // so we don't need to worry about comments interfering with other transforms
11
+ moveCommentsToRoot,
12
+ stripTrailingCommas,
13
+ ];
14
+ if (options.sqlFinalSemicolon) {
15
+ transforms.push(addFinalSemicolon);
16
+ }
17
+ if (options.sqlCanonicalSyntax) {
18
+ transforms.push(processAliasAs, canonicOperators, canonicKeywords);
19
+ }
20
+ return transforms.reduce((cst, transform) => transform(cst, originalText, options), cst);
21
+ };
@@ -0,0 +1,3 @@
1
+ export function keyword(name) {
2
+ return { type: "keyword", name, text: name };
3
+ }
@@ -0,0 +1,9 @@
1
+ export const isDefined = (value) => value !== undefined;
2
+ export const isString = (value) => typeof value === "string";
3
+ export const isObject = (x) => typeof x === "object" && x !== null && !(x instanceof Array);
4
+ export const isArray = (x) => Array.isArray(x);
5
+ export const isEmptyArray = (x) => isArray(x) && x.length === 0;
6
+ export const isNode = (value) => isObject(value) && isString(value.type) && !isCommentType(value.type);
7
+ const isCommentType = (type) => type === "block_comment" || type === "line_comment";
8
+ export const arrayWrap = (x) => (isArray(x) ? x : [x]);
9
+ export const last = (arr) => arr[arr.length - 1];
@@ -0,0 +1,16 @@
1
+ import { isArray, isNode } from "./utils";
2
+ /* Executes a function with all nodes in syntax tree */
3
+ export const visitAllNodes = (node, visit) => {
4
+ visit(node);
5
+ // Visit all children
6
+ for (const child of Object.values(node)) {
7
+ if (isNode(child)) {
8
+ visitAllNodes(child, visit);
9
+ }
10
+ else if (isArray(child)) {
11
+ child
12
+ .filter(isNode)
13
+ .forEach((childNode) => visitAllNodes(childNode, visit));
14
+ }
15
+ }
16
+ };
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "types": ["node", "jest"],
4
+ "target": "es2022",
5
+ "paths": { "src/*": ["./src/*"] },
6
+ "strict": true,
7
+ "noEmit": true,
8
+ "esModuleInterop": true,
9
+ "module": "esnext",
10
+ "moduleResolution": "bundler",
11
+ "declaration": true
12
+ },
13
+ "include": ["src", "tsconfig.json", "test", "scripts"]
14
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prettier-plugin-sql-cst",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
4
4
  "description": "Prettier plugin for SQL",
5
5
  "contributors": [
6
6
  "Barna Magyarkuti <bmagyarkuti@gmail.com>",
@@ -25,11 +25,11 @@
25
25
  "scripts": {
26
26
  "prepublishOnly": "yarn analyze-field-access && yarn test && yarn build",
27
27
  "clean": "rm -rf dist",
28
- "build": "yarn clean && tsc",
28
+ "build": "yarn clean && tsc -p tsconfig.build.json",
29
29
  "test": "yarn node --experimental-vm-modules $(yarn bin jest)",
30
30
  "pretty": "prettier -w src/ test/",
31
31
  "ts:check": "tsc --noEmit",
32
- "analyze-field-access": "ts-node scripts/analyze-field-access.ts src/index.ts"
32
+ "analyze-field-access": "tsx scripts/analyze-field-access.ts src/index.ts"
33
33
  },
34
34
  "keywords": [
35
35
  "prettier",
@@ -38,16 +38,17 @@
38
38
  ],
39
39
  "dependencies": {
40
40
  "prettier": "^3.0.3",
41
- "sql-parser-cst": "^0.38.2"
41
+ "sql-parser-cst": "^0.39.0"
42
42
  },
43
43
  "devDependencies": {
44
- "@types/jest": "^29.2.5",
44
+ "@types/jest": "^30.0.0",
45
45
  "@types/node": "^22.9.0",
46
46
  "chalk": "^4.1.2",
47
47
  "dedent-js": "^1.0.1",
48
- "jest": "^29.7.0",
49
- "ts-jest": "^29.1.1",
48
+ "jest": "^30.3.0",
49
+ "ts-jest": "^29.4.9",
50
50
  "ts-node": "^10.9.2",
51
- "typescript": "^4.9.4"
51
+ "tsx": "^4.21.0",
52
+ "typescript": "^5.9.3"
52
53
  }
53
54
  }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
package/dist/PrintFn.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
package/dist/embed.js DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.embed = void 0;
4
- var embedJs_1 = require("./embedJs");
5
- var embedJson_1 = require("./embedJson");
6
- var embedSql_1 = require("./embedSql");
7
- var embed = function () {
8
- var args = [];
9
- for (var _i = 0; _i < arguments.length; _i++) {
10
- args[_i] = arguments[_i];
11
- }
12
- return embedJson_1.embedJson.apply(void 0, args) || embedJs_1.embedJs.apply(void 0, args) || embedSql_1.embedSql.apply(void 0, args);
13
- };
14
- exports.embed = embed;
package/dist/embedJs.js DELETED
@@ -1,99 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.embedJs = void 0;
51
- var node_utils_1 = require("./node_utils");
52
- var print_utils_1 = require("./print_utils");
53
- var embedJs = function (path, options) {
54
- var node = path.node;
55
- var parent = path.getParentNode(0);
56
- var grandParent = path.getParentNode(1);
57
- if ((0, node_utils_1.isStringLiteral)(node) &&
58
- (0, node_utils_1.isAsClause)(parent) &&
59
- (0, node_utils_1.isCreateFunctionStmt)(grandParent) &&
60
- grandParent.clauses.some(isJavaScriptLanguageClause)) {
61
- return function (textToDoc) { return __awaiter(void 0, void 0, void 0, function () {
62
- var quotes, js;
63
- return __generator(this, function (_a) {
64
- switch (_a.label) {
65
- case 0:
66
- quotes = detectQuotes(node.value);
67
- if (!quotes) {
68
- // Give up for now. Don't format JavaScript inside the string.
69
- // Perhaps tackle this corner-case in the future.
70
- return [2 /*return*/, undefined];
71
- }
72
- return [4 /*yield*/, textToDoc(node.value, __assign(__assign({}, options), { parser: "babel" }))];
73
- case 1:
74
- js = _a.sent();
75
- return [2 /*return*/, [
76
- quotes[0],
77
- (0, print_utils_1.indent)([print_utils_1.hardline, (0, print_utils_1.stripTrailingHardline)(js)]),
78
- print_utils_1.hardline,
79
- quotes[1],
80
- ]];
81
- }
82
- });
83
- }); };
84
- }
85
- return null;
86
- };
87
- exports.embedJs = embedJs;
88
- var isJavaScriptLanguageClause = function (clause) { return (0, node_utils_1.isLanguageClause)(clause) && clause.name.name === "js"; };
89
- // Whether to quote the code with single- or double-quotes.
90
- // Returns undefined when neither can be used without escaping.
91
- var detectQuotes = function (js) {
92
- if (!/'''/.test(js)) {
93
- return ["r'''", "'''"];
94
- }
95
- if (!/"""/.test(js)) {
96
- return ['r"""', '"""'];
97
- }
98
- return undefined;
99
- };
package/dist/embedJson.js DELETED
@@ -1,90 +0,0 @@
1
- "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
- Object.defineProperty(exports, "__esModule", { value: true });
50
- exports.embedJson = void 0;
51
- var node_utils_1 = require("./node_utils");
52
- var print_utils_1 = require("./print_utils");
53
- var embedJson = function (path, options) {
54
- var node = path.node;
55
- var parent = path.getParentNode();
56
- if ((0, node_utils_1.isStringLiteral)(node) &&
57
- ((0, node_utils_1.isJsonLiteral)(parent) || (0, node_utils_1.isJsonbLiteral)(parent))) {
58
- return function (textToDoc) { return __awaiter(void 0, void 0, void 0, function () {
59
- var json, inlineQuote;
60
- return __generator(this, function (_a) {
61
- switch (_a.label) {
62
- case 0:
63
- if (containsTripleQuote(node.value) ||
64
- containsBackslash(node.value) ||
65
- isRawString(node)) {
66
- // Give up for now. Don't format JSON inside the string.
67
- // Tackle these corner-case in the future.
68
- return [2 /*return*/, undefined];
69
- }
70
- return [4 /*yield*/, textToDoc(node.value, __assign(__assign({}, options), { parser: "json" }))];
71
- case 1:
72
- json = _a.sent();
73
- inlineQuote = containsSingleQuote(node.value) ? "'''" : "'";
74
- return [2 /*return*/, [
75
- (0, print_utils_1.ifBreak)("'''", inlineQuote),
76
- (0, print_utils_1.indent)([print_utils_1.softline, (0, print_utils_1.stripTrailingHardline)(json)]),
77
- print_utils_1.softline,
78
- (0, print_utils_1.ifBreak)("'''", inlineQuote),
79
- ]];
80
- }
81
- });
82
- }); };
83
- }
84
- return null;
85
- };
86
- exports.embedJson = embedJson;
87
- var containsSingleQuote = function (json) { return /'/.test(json); };
88
- var containsTripleQuote = function (json) { return /'''/.test(json); };
89
- var containsBackslash = function (json) { return /\\/.test(json); };
90
- var isRawString = function (node) { return /^R/i.test(node.text); };
package/dist/embedSql.js DELETED
@@ -1,89 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.embedSql = void 0;
40
- var node_utils_1 = require("./node_utils");
41
- var print_utils_1 = require("./print_utils");
42
- var embedSql = function (path, options) {
43
- var node = path.node;
44
- var parent = path.getParentNode(0);
45
- var grandParent = path.getParentNode(1);
46
- if ((0, node_utils_1.isStringLiteral)(node) &&
47
- (0, node_utils_1.isAsClause)(parent) &&
48
- ((0, node_utils_1.isCreateFunctionStmt)(grandParent) || (0, node_utils_1.isCreateProcedureStmt)(grandParent)) &&
49
- grandParent.clauses.some(isSqlLanguageClause)) {
50
- return function (textToDoc) { return __awaiter(void 0, void 0, void 0, function () {
51
- var quote, sql;
52
- return __generator(this, function (_a) {
53
- switch (_a.label) {
54
- case 0:
55
- quote = detectQuote(node);
56
- if (!quote) {
57
- return [2 /*return*/, undefined];
58
- }
59
- return [4 /*yield*/, textToDoc(node.value, options)];
60
- case 1:
61
- sql = _a.sent();
62
- return [2 /*return*/, [
63
- quote,
64
- (0, print_utils_1.indent)([print_utils_1.hardline, (0, print_utils_1.stripTrailingHardline)(sql)]),
65
- print_utils_1.hardline,
66
- quote,
67
- ]];
68
- }
69
- });
70
- }); };
71
- }
72
- return null;
73
- };
74
- exports.embedSql = embedSql;
75
- var isSqlLanguageClause = function (clause) {
76
- return (0, node_utils_1.isLanguageClause)(clause) && clause.name.name.toLowerCase() === "sql";
77
- };
78
- var detectQuote = function (node) {
79
- var match = node.text.match(/^('|\$[^$]*\$)/);
80
- var quote = match === null || match === void 0 ? void 0 : match[1];
81
- if (quote === "'") {
82
- // Convert `'` quotes to `$$`.
83
- // But bail out if the code already contains $$.
84
- return node.value.includes("$$") ? undefined : "$$";
85
- }
86
- else {
87
- return quote;
88
- }
89
- };
package/dist/index.js DELETED
@@ -1,70 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printers = exports.parsers = exports.languages = exports.options = void 0;
4
- var sql_parser_cst_1 = require("sql-parser-cst");
5
- var printSql_1 = require("./printSql");
6
- var printComment_1 = require("./printComment");
7
- var embed_1 = require("./embed");
8
- var utils_1 = require("./utils");
9
- var transformCst_1 = require("./transform/transformCst");
10
- var options_1 = require("./options");
11
- Object.defineProperty(exports, "options", { enumerable: true, get: function () { return options_1.options; } });
12
- exports.languages = [
13
- {
14
- extensions: [".sql", ".sqlite"],
15
- name: "SQLite SQL",
16
- parsers: ["sqlite"],
17
- },
18
- {
19
- extensions: [".bigquery"],
20
- name: "BigQuery SQL",
21
- parsers: ["bigquery"],
22
- },
23
- {
24
- extensions: [],
25
- name: "Experimental MySQL SQL",
26
- parsers: ["mysql"],
27
- },
28
- {
29
- extensions: [],
30
- name: "Experimental MariaDB SQL",
31
- parsers: ["mariadb"],
32
- },
33
- {
34
- extensions: [],
35
- name: "Experimental PostgreSQL SQL",
36
- parsers: ["postgresql"],
37
- },
38
- ];
39
- var createParser = function (dialect) { return ({
40
- parse: function (text, options) {
41
- return (0, transformCst_1.transformCst)((0, sql_parser_cst_1.parse)(text, {
42
- dialect: dialect,
43
- includeRange: true,
44
- includeComments: true,
45
- filename: options.filepath,
46
- paramTypes: options.sqlParamTypes,
47
- acceptUnsupportedGrammar: options
48
- .sqlAcceptUnsupportedGrammar,
49
- }), text, options);
50
- },
51
- astFormat: "sql-cst",
52
- locStart: function (node) { var _a; return (_a = node.range) === null || _a === void 0 ? void 0 : _a[0]; },
53
- locEnd: function (node) { var _a; return (_a = node.range) === null || _a === void 0 ? void 0 : _a[1]; },
54
- }); };
55
- exports.parsers = {
56
- sqlite: createParser("sqlite"),
57
- bigquery: createParser("bigquery"),
58
- mysql: createParser("mysql"),
59
- mariadb: createParser("mariadb"),
60
- postgresql: createParser("postgresql"),
61
- };
62
- exports.printers = {
63
- "sql-cst": {
64
- print: printSql_1.printSql,
65
- embed: embed_1.embed,
66
- printComment: printComment_1.printComment,
67
- canAttachComment: utils_1.isNode,
68
- isBlockComment: function (node) { return node.type === "block_comment"; },
69
- },
70
- };
@@ -1,54 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isDataType = exports.isParametricDataType = exports.isTimeDataType = exports.isIntervalUnitRange = exports.isIntervalUnit = exports.isIntervalDataType = exports.isDataTypeName = exports.isExecuteClause = exports.isCreateTriggerStmt = exports.isBigqueryQuotedMemberExpr = exports.isDynamicallyLoadedFunction = exports.isLanguageClause = exports.isAlterActionRename = exports.isDropProcedureStmt = exports.isAlterProcedureStmt = exports.isCreateProcedureStmt = exports.isDropFunctionStmt = exports.isAlterFunctionStmt = exports.isCreateFunctionStmt = exports.isListExpr = exports.isCompoundSelectStmt = exports.isSelectStmt = exports.isMemberExpr = exports.isParenExpr = exports.isAsClause = exports.isArraySubscript = exports.isStringLiteral = exports.isJsonbLiteral = exports.isJsonLiteral = exports.isEmpty = exports.isKeyword = exports.isCreateTableStmt = exports.isFuncArgs = exports.isFuncCall = exports.isValuesClause = exports.isProgram = void 0;
4
- var utils_1 = require("./utils");
5
- var is = function (type) {
6
- return function (node) {
7
- return (0, utils_1.isObject)(node) && node.type === type;
8
- };
9
- };
10
- exports.isProgram = is("program");
11
- exports.isValuesClause = is("values_clause");
12
- exports.isFuncCall = is("func_call");
13
- exports.isFuncArgs = is("func_args");
14
- exports.isCreateTableStmt = is("create_table_stmt");
15
- exports.isKeyword = is("keyword");
16
- exports.isEmpty = is("empty");
17
- exports.isJsonLiteral = is("json_literal");
18
- exports.isJsonbLiteral = is("jsonb_literal");
19
- exports.isStringLiteral = is("string_literal");
20
- exports.isArraySubscript = is("array_subscript");
21
- exports.isAsClause = is("as_clause");
22
- exports.isParenExpr = is("paren_expr");
23
- exports.isMemberExpr = is("member_expr");
24
- exports.isSelectStmt = is("select_stmt");
25
- exports.isCompoundSelectStmt = is("compound_select_stmt");
26
- exports.isListExpr = is("list_expr");
27
- exports.isCreateFunctionStmt = is("create_function_stmt");
28
- exports.isAlterFunctionStmt = is("alter_function_stmt");
29
- exports.isDropFunctionStmt = is("drop_function_stmt");
30
- exports.isCreateProcedureStmt = is("create_procedure_stmt");
31
- exports.isAlterProcedureStmt = is("alter_procedure_stmt");
32
- exports.isDropProcedureStmt = is("drop_procedure_stmt");
33
- exports.isAlterActionRename = is("alter_action_rename");
34
- exports.isLanguageClause = is("language_clause");
35
- exports.isDynamicallyLoadedFunction = is("dynamically_loaded_function");
36
- exports.isBigqueryQuotedMemberExpr = is("bigquery_quoted_member_expr");
37
- exports.isCreateTriggerStmt = is("create_trigger_stmt");
38
- exports.isExecuteClause = is("execute_clause");
39
- exports.isDataTypeName = is("data_type_name");
40
- exports.isIntervalDataType = is("interval_data_type");
41
- exports.isIntervalUnit = is("interval_unit");
42
- exports.isIntervalUnitRange = is("interval_unit_range");
43
- exports.isTimeDataType = is("time_data_type");
44
- exports.isParametricDataType = is("parametric_data_type");
45
- var isDataType = function (_a) {
46
- var node = _a[0], ancestors = _a.slice(1);
47
- return (0, exports.isDataTypeName)(node) ||
48
- (0, exports.isIntervalDataType)(node) ||
49
- ((0, exports.isIntervalUnit)(node) && (0, exports.isDataType)(ancestors)) ||
50
- ((0, exports.isIntervalUnitRange)(node) && (0, exports.isDataType)(ancestors)) ||
51
- (0, exports.isTimeDataType)(node) ||
52
- (0, exports.isParametricDataType)(node);
53
- };
54
- exports.isDataType = isDataType;