prettier-plugin-sql-cst 0.17.4 → 0.18.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/dist/embed.js CHANGED
@@ -3,11 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.embed = void 0;
4
4
  var embedJs_1 = require("./embedJs");
5
5
  var embedJson_1 = require("./embedJson");
6
+ var embedSql_1 = require("./embedSql");
6
7
  var embed = function () {
7
8
  var args = [];
8
9
  for (var _i = 0; _i < arguments.length; _i++) {
9
10
  args[_i] = arguments[_i];
10
11
  }
11
- return embedJson_1.embedJson.apply(void 0, args) || embedJs_1.embedJs.apply(void 0, args);
12
+ return embedJson_1.embedJson.apply(void 0, args) || embedJs_1.embedJs.apply(void 0, args) || embedSql_1.embedSql.apply(void 0, args);
12
13
  };
13
14
  exports.embed = embed;
@@ -0,0 +1,3 @@
1
+ import { Printer } from "prettier";
2
+ import { Node } from "sql-parser-cst";
3
+ export declare const embedSql: NonNullable<Printer<Node>["embed"]>;
@@ -0,0 +1,89 @@
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/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "prettier-plugin-sql-cst",
3
- "version": "0.17.4",
3
+ "version": "0.18.0",
4
4
  "description": "Prettier plugin for SQL",
5
5
  "contributors": [
6
6
  "Barna Magyarkuti <bmagyarkuti@gmail.com>",
7
7
  "Bowen Parnell <bparnell@4tel.com.au>",
8
+ "Joel Mukuthu <joelmukuthu@gmail.com>",
8
9
  "Rene Saarsoo <nene@triin.net>"
9
10
  ],
10
11
  "license": "GPL-3.0-or-later",