@atmaticai/agent-tools 1.0.3 → 1.1.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 (167) hide show
  1. package/dist/a2a/index.d.mts +169 -0
  2. package/dist/a2a/index.d.ts +169 -0
  3. package/dist/a2a/index.js +6012 -0
  4. package/dist/a2a/index.js.map +1 -0
  5. package/dist/a2a/index.mjs +5934 -0
  6. package/dist/a2a/index.mjs.map +1 -0
  7. package/dist/archive/index.d.mts +1 -0
  8. package/dist/archive/index.d.ts +1 -0
  9. package/dist/archive/index.js +90 -0
  10. package/dist/archive/index.js.map +1 -0
  11. package/dist/archive/index.mjs +80 -0
  12. package/dist/archive/index.mjs.map +1 -0
  13. package/dist/cli.js +4441 -164
  14. package/dist/cli.js.map +1 -1
  15. package/dist/cli.mjs +4408 -161
  16. package/dist/cli.mjs.map +1 -1
  17. package/dist/color/index.d.mts +1 -0
  18. package/dist/color/index.d.ts +1 -0
  19. package/dist/color/index.js +347 -0
  20. package/dist/color/index.js.map +1 -0
  21. package/dist/color/index.mjs +336 -0
  22. package/dist/color/index.mjs.map +1 -0
  23. package/dist/crypto/index.d.mts +1 -0
  24. package/dist/crypto/index.d.ts +1 -0
  25. package/dist/crypto/index.js +116 -0
  26. package/dist/crypto/index.js.map +1 -0
  27. package/dist/crypto/index.mjs +108 -0
  28. package/dist/crypto/index.mjs.map +1 -0
  29. package/dist/csv/index.d.mts +1 -0
  30. package/dist/csv/index.d.ts +1 -0
  31. package/dist/csv/index.js +371 -0
  32. package/dist/csv/index.js.map +1 -0
  33. package/dist/csv/index.mjs +348 -0
  34. package/dist/csv/index.mjs.map +1 -0
  35. package/dist/datetime/index.d.mts +1 -0
  36. package/dist/datetime/index.d.ts +1 -0
  37. package/dist/datetime/index.js +234 -0
  38. package/dist/datetime/index.js.map +1 -0
  39. package/dist/datetime/index.mjs +224 -0
  40. package/dist/datetime/index.mjs.map +1 -0
  41. package/dist/diff/index.d.mts +2 -0
  42. package/dist/diff/index.d.ts +2 -0
  43. package/dist/diff/index.js +84 -0
  44. package/dist/diff/index.js.map +1 -0
  45. package/dist/diff/index.mjs +78 -0
  46. package/dist/diff/index.mjs.map +1 -0
  47. package/dist/excel/index.d.mts +1 -0
  48. package/dist/excel/index.d.ts +1 -0
  49. package/dist/excel/index.js +163 -0
  50. package/dist/excel/index.js.map +1 -0
  51. package/dist/excel/index.mjs +153 -0
  52. package/dist/excel/index.mjs.map +1 -0
  53. package/dist/image/index.d.mts +1 -0
  54. package/dist/image/index.d.ts +1 -0
  55. package/dist/image/index.js +123 -0
  56. package/dist/image/index.js.map +1 -0
  57. package/dist/image/index.mjs +107 -0
  58. package/dist/image/index.mjs.map +1 -0
  59. package/dist/index--vbnYfdE.d.mts +142 -0
  60. package/dist/index--vbnYfdE.d.ts +142 -0
  61. package/dist/index-7FZQloN-.d.mts +62 -0
  62. package/dist/index-7FZQloN-.d.ts +62 -0
  63. package/dist/index-7XgaTVH5.d.mts +93 -0
  64. package/dist/index-7XgaTVH5.d.ts +93 -0
  65. package/dist/index-7bvFmh45.d.mts +87 -0
  66. package/dist/index-7bvFmh45.d.ts +87 -0
  67. package/dist/index-BDZcIVCU.d.mts +53 -0
  68. package/dist/index-BDZcIVCU.d.ts +53 -0
  69. package/dist/index-BKeYao0B.d.mts +320 -0
  70. package/dist/index-BKeYao0B.d.ts +320 -0
  71. package/dist/index-BN00EnUU.d.mts +55 -0
  72. package/dist/index-BN00EnUU.d.ts +55 -0
  73. package/dist/index-BZDcrPs-.d.mts +316 -0
  74. package/dist/index-BZDcrPs-.d.ts +316 -0
  75. package/dist/index-CQ1EukC4.d.mts +59 -0
  76. package/dist/index-CQ1EukC4.d.ts +59 -0
  77. package/dist/index-CgRVnFOt.d.mts +91 -0
  78. package/dist/index-CgRVnFOt.d.ts +91 -0
  79. package/dist/index-Dh47fgVS.d.mts +216 -0
  80. package/dist/index-Dh47fgVS.d.ts +216 -0
  81. package/dist/index-DjBDZzuj.d.mts +54 -0
  82. package/dist/index-DjBDZzuj.d.ts +54 -0
  83. package/dist/index-FFrvmr-n.d.mts +50 -0
  84. package/dist/index-FFrvmr-n.d.ts +50 -0
  85. package/dist/index-QWC8yIgW.d.mts +106 -0
  86. package/dist/index-QWC8yIgW.d.ts +106 -0
  87. package/dist/index-fJD8SORm.d.mts +61 -0
  88. package/dist/index-fJD8SORm.d.ts +61 -0
  89. package/dist/index-pPy_XDQU.d.mts +56 -0
  90. package/dist/index-pPy_XDQU.d.ts +56 -0
  91. package/dist/index-rwh9hdD9.d.mts +68 -0
  92. package/dist/index-rwh9hdD9.d.ts +68 -0
  93. package/dist/index-uXdkAfea.d.mts +93 -0
  94. package/dist/index-uXdkAfea.d.ts +93 -0
  95. package/dist/index.d.mts +25 -5
  96. package/dist/index.d.ts +25 -5
  97. package/dist/index.js +5195 -147
  98. package/dist/index.js.map +1 -1
  99. package/dist/index.mjs +5145 -145
  100. package/dist/index.mjs.map +1 -1
  101. package/dist/json/index.d.mts +1 -0
  102. package/dist/json/index.d.ts +1 -0
  103. package/dist/json/index.js +599 -0
  104. package/dist/json/index.js.map +1 -0
  105. package/dist/json/index.mjs +552 -0
  106. package/dist/json/index.mjs.map +1 -0
  107. package/dist/markdown/index.d.mts +1 -0
  108. package/dist/markdown/index.d.ts +1 -0
  109. package/dist/markdown/index.js +151 -0
  110. package/dist/markdown/index.js.map +1 -0
  111. package/dist/markdown/index.mjs +139 -0
  112. package/dist/markdown/index.mjs.map +1 -0
  113. package/dist/math/index.d.mts +1 -0
  114. package/dist/math/index.d.ts +1 -0
  115. package/dist/math/index.js +247 -0
  116. package/dist/math/index.js.map +1 -0
  117. package/dist/math/index.mjs +240 -0
  118. package/dist/math/index.mjs.map +1 -0
  119. package/dist/pdf/index.d.mts +1 -0
  120. package/dist/pdf/index.d.ts +1 -0
  121. package/dist/pdf/index.js +628 -0
  122. package/dist/pdf/index.js.map +1 -0
  123. package/dist/pdf/index.mjs +598 -0
  124. package/dist/pdf/index.mjs.map +1 -0
  125. package/dist/physics/index.d.mts +1 -0
  126. package/dist/physics/index.d.ts +1 -0
  127. package/dist/physics/index.js +467 -0
  128. package/dist/physics/index.js.map +1 -0
  129. package/dist/physics/index.mjs +435 -0
  130. package/dist/physics/index.mjs.map +1 -0
  131. package/dist/regex/index.d.mts +1 -0
  132. package/dist/regex/index.d.ts +1 -0
  133. package/dist/regex/index.js +93 -0
  134. package/dist/regex/index.js.map +1 -0
  135. package/dist/regex/index.mjs +88 -0
  136. package/dist/regex/index.mjs.map +1 -0
  137. package/dist/settings/index.d.mts +41 -0
  138. package/dist/settings/index.d.ts +41 -0
  139. package/dist/settings/index.js +150 -0
  140. package/dist/settings/index.js.map +1 -0
  141. package/dist/settings/index.mjs +143 -0
  142. package/dist/settings/index.mjs.map +1 -0
  143. package/dist/sql/index.d.mts +1 -0
  144. package/dist/sql/index.d.ts +1 -0
  145. package/dist/sql/index.js +146 -0
  146. package/dist/sql/index.js.map +1 -0
  147. package/dist/sql/index.mjs +139 -0
  148. package/dist/sql/index.mjs.map +1 -0
  149. package/dist/structural/index.d.mts +1 -0
  150. package/dist/structural/index.d.ts +1 -0
  151. package/dist/structural/index.js +608 -0
  152. package/dist/structural/index.js.map +1 -0
  153. package/dist/structural/index.mjs +588 -0
  154. package/dist/structural/index.mjs.map +1 -0
  155. package/dist/text/index.d.mts +1 -0
  156. package/dist/text/index.d.ts +1 -0
  157. package/dist/text/index.js +250 -0
  158. package/dist/text/index.js.map +1 -0
  159. package/dist/text/index.mjs +242 -0
  160. package/dist/text/index.mjs.map +1 -0
  161. package/dist/xml/index.d.mts +1 -0
  162. package/dist/xml/index.d.ts +1 -0
  163. package/dist/xml/index.js +188 -0
  164. package/dist/xml/index.js.map +1 -0
  165. package/dist/xml/index.mjs +180 -0
  166. package/dist/xml/index.mjs.map +1 -0
  167. package/package.json +138 -6
@@ -0,0 +1,146 @@
1
+ 'use strict';
2
+
3
+ var sqlFormatter = require('sql-formatter');
4
+ var nodeSqlParser = require('node-sql-parser');
5
+
6
+ // src/sql/format.ts
7
+ var dialectMap = {
8
+ mysql: "mysql",
9
+ postgresql: "postgresql",
10
+ sqlite: "sqlite",
11
+ transactsql: "transactsql",
12
+ bigquery: "bigquery"
13
+ };
14
+ function format(input, options = {}) {
15
+ const language = dialectMap[options.dialect ?? "postgresql"] ?? "postgresql";
16
+ return sqlFormatter.format(input, {
17
+ language,
18
+ tabWidth: options.indent ?? 2,
19
+ useTabs: false,
20
+ keywordCase: options.uppercase !== false ? "upper" : "preserve",
21
+ linesBetweenQueries: options.linesBetweenQueries ?? 2
22
+ });
23
+ }
24
+ function minify(input) {
25
+ return input.replace(/--.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/\s+/g, " ").replace(/\s*([,;()=<>+\-*/])\s*/g, "$1").trim();
26
+ }
27
+ var parserDialectMap = {
28
+ mysql: "MySQL",
29
+ postgresql: "PostgresQL",
30
+ sqlite: "SQLite",
31
+ transactsql: "TransactSQL",
32
+ bigquery: "BigQuery"
33
+ };
34
+ function parse(input, dialect = "postgresql") {
35
+ const parser = new nodeSqlParser.Parser();
36
+ const dbType = parserDialectMap[dialect] ?? "PostgresQL";
37
+ const ast = parser.astify(input, { database: dbType });
38
+ const stmts = Array.isArray(ast) ? ast : [ast];
39
+ const tables = /* @__PURE__ */ new Set();
40
+ const columns = /* @__PURE__ */ new Set();
41
+ for (const stmt of stmts) {
42
+ extractTablesAndColumns(stmt, tables, columns);
43
+ }
44
+ return {
45
+ type: stmts[0]?.type ?? "unknown",
46
+ tables: Array.from(tables),
47
+ columns: Array.from(columns),
48
+ ast
49
+ };
50
+ }
51
+ function validate(input, dialect = "postgresql") {
52
+ const parser = new nodeSqlParser.Parser();
53
+ const dbType = parserDialectMap[dialect] ?? "PostgresQL";
54
+ try {
55
+ const ast = parser.astify(input, { database: dbType });
56
+ return { valid: true, ast };
57
+ } catch (e) {
58
+ return {
59
+ valid: false,
60
+ error: e.message
61
+ };
62
+ }
63
+ }
64
+ function getStats(input, dialect = "postgresql") {
65
+ const parser = new nodeSqlParser.Parser();
66
+ const dbType = parserDialectMap[dialect] ?? "PostgresQL";
67
+ const ast = parser.astify(input, { database: dbType });
68
+ const stmts = Array.isArray(ast) ? ast : [ast];
69
+ const queryTypes = {};
70
+ const tables = /* @__PURE__ */ new Set();
71
+ let joins = 0;
72
+ for (const stmt of stmts) {
73
+ const type = (stmt.type ?? "unknown").toLowerCase();
74
+ queryTypes[type] = (queryTypes[type] || 0) + 1;
75
+ extractTablesAndColumns(stmt, tables, /* @__PURE__ */ new Set());
76
+ const stmtStr = JSON.stringify(stmt);
77
+ const joinMatches = stmtStr.match(/"join"/gi);
78
+ if (joinMatches) joins += joinMatches.length;
79
+ }
80
+ const subqueryRegex = /\bSELECT\b/gi;
81
+ const selectMatches = input.match(subqueryRegex);
82
+ const subqueries = Math.max(0, (selectMatches?.length ?? 0) - stmts.filter((s) => s.type === "select").length);
83
+ return {
84
+ queryCount: stmts.length,
85
+ queryTypes,
86
+ tables: Array.from(tables),
87
+ joins,
88
+ subqueries
89
+ };
90
+ }
91
+ function extractTablesAndColumns(node, tables, columns) {
92
+ if (!node || typeof node !== "object") return;
93
+ const obj = node;
94
+ if (obj.table && typeof obj.table === "string") {
95
+ tables.add(obj.table);
96
+ }
97
+ if (obj.from && Array.isArray(obj.from)) {
98
+ for (const item of obj.from) {
99
+ if (item && typeof item === "object" && "table" in item) {
100
+ tables.add(String(item.table));
101
+ }
102
+ }
103
+ }
104
+ if (obj.columns && Array.isArray(obj.columns)) {
105
+ for (const col of obj.columns) {
106
+ if (col && typeof col === "object" && "expr" in col) {
107
+ const expr = col.expr;
108
+ if (expr.type === "column_ref" && typeof expr.column === "string") {
109
+ columns.add(expr.column);
110
+ }
111
+ }
112
+ }
113
+ }
114
+ for (const value of Object.values(obj)) {
115
+ if (Array.isArray(value)) {
116
+ for (const item of value) {
117
+ extractTablesAndColumns(item, tables, columns);
118
+ }
119
+ } else if (typeof value === "object" && value !== null) {
120
+ extractTablesAndColumns(value, tables, columns);
121
+ }
122
+ }
123
+ }
124
+ var parserDialectMap2 = {
125
+ mysql: "MySQL",
126
+ postgresql: "PostgresQL",
127
+ sqlite: "SQLite",
128
+ transactsql: "TransactSQL",
129
+ bigquery: "BigQuery"
130
+ };
131
+ function convert(input, options) {
132
+ const fromDialect = parserDialectMap2[options.from ?? "postgresql"] ?? "PostgresQL";
133
+ const toDialect = parserDialectMap2[options.to] ?? "PostgresQL";
134
+ const parser = new nodeSqlParser.Parser();
135
+ const ast = parser.astify(input, { database: fromDialect });
136
+ return parser.sqlify(ast, { database: toDialect });
137
+ }
138
+
139
+ exports.convert = convert;
140
+ exports.format = format;
141
+ exports.getStats = getStats;
142
+ exports.minify = minify;
143
+ exports.parse = parse;
144
+ exports.validate = validate;
145
+ //# sourceMappingURL=index.js.map
146
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/sql/format.ts","../../src/sql/parse.ts","../../src/sql/convert.ts"],"names":["sqlFormat","Parser","parserDialectMap"],"mappings":";;;;;;AAGA,IAAM,UAAA,GAAqC;AAAA,EACzC,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY,YAAA;AAAA,EACZ,MAAA,EAAQ,QAAA;AAAA,EACR,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU;AACZ,CAAA;AAEO,SAAS,MAAA,CAAO,KAAA,EAAe,OAAA,GAA4B,EAAC,EAAW;AAC5E,EAAA,MAAM,QAAA,GAAW,UAAA,CAAW,OAAA,CAAQ,OAAA,IAAW,YAAY,CAAA,IAAK,YAAA;AAEhE,EAAA,OAAOA,oBAAU,KAAA,EAAO;AAAA,IACtB,QAAA;AAAA,IACA,QAAA,EAAU,QAAQ,MAAA,IAAU,CAAA;AAAA,IAC5B,OAAA,EAAS,KAAA;AAAA,IACT,WAAA,EAAa,OAAA,CAAQ,SAAA,KAAc,KAAA,GAAQ,OAAA,GAAU,UAAA;AAAA,IACrD,mBAAA,EAAqB,QAAQ,mBAAA,IAAuB;AAAA,GACrD,CAAA;AACH;AAEO,SAAS,OAAO,KAAA,EAAuB;AAC5C,EAAA,OAAO,MACJ,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA,CACrB,QAAQ,mBAAA,EAAqB,EAAE,CAAA,CAC/B,OAAA,CAAQ,QAAQ,GAAG,CAAA,CACnB,QAAQ,yBAAA,EAA2B,IAAI,EACvC,IAAA,EAAK;AACV;AC3BA,IAAM,gBAAA,GAA+C;AAAA,EACnD,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY,YAAA;AAAA,EACZ,MAAA,EAAQ,QAAA;AAAA,EACR,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU;AACZ,CAAA;AAEO,SAAS,KAAA,CACd,KAAA,EACA,OAAA,GAAsB,YAAA,EACN;AAChB,EAAA,MAAM,MAAA,GAAS,IAAIC,oBAAA,EAAO;AAC1B,EAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,OAAO,CAAA,IAAK,YAAA;AAC5C,EAAA,MAAM,MAAM,MAAA,CAAO,MAAA,CAAO,OAAO,EAAE,QAAA,EAAU,QAAQ,CAAA;AAErD,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,GAAM,CAAC,GAAG,CAAA;AAC7C,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAY;AAC/B,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAEhC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,uBAAA,CAAwB,IAAA,EAAM,QAAQ,OAAO,CAAA;AAAA,EAC/C;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,KAAA,CAAM,CAAC,CAAA,EAAG,IAAA,IAAQ,SAAA;AAAA,IACxB,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;AAAA,IACzB,OAAA,EAAS,KAAA,CAAM,IAAA,CAAK,OAAO,CAAA;AAAA,IAC3B;AAAA,GACF;AACF;AAEO,SAAS,QAAA,CACd,KAAA,EACA,OAAA,GAAsB,YAAA,EACD;AACrB,EAAA,MAAM,MAAA,GAAS,IAAIA,oBAAA,EAAO;AAC1B,EAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,OAAO,CAAA,IAAK,YAAA;AAE5C,EAAA,IAAI;AACF,IAAA,MAAM,MAAM,MAAA,CAAO,MAAA,CAAO,OAAO,EAAE,QAAA,EAAU,QAAQ,CAAA;AACrD,IAAA,OAAO,EAAE,KAAA,EAAO,IAAA,EAAM,GAAA,EAAI;AAAA,EAC5B,SAAS,CAAA,EAAG;AACV,IAAA,OAAO;AAAA,MACL,KAAA,EAAO,KAAA;AAAA,MACP,OAAQ,CAAA,CAAY;AAAA,KACtB;AAAA,EACF;AACF;AAEO,SAAS,QAAA,CACd,KAAA,EACA,OAAA,GAAsB,YAAA,EACZ;AACV,EAAA,MAAM,MAAA,GAAS,IAAIA,oBAAA,EAAO;AAC1B,EAAA,MAAM,MAAA,GAAS,gBAAA,CAAiB,OAAO,CAAA,IAAK,YAAA;AAE5C,EAAA,MAAM,MAAM,MAAA,CAAO,MAAA,CAAO,OAAO,EAAE,QAAA,EAAU,QAAQ,CAAA;AACrD,EAAA,MAAM,QAAQ,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,GAAI,GAAA,GAAM,CAAC,GAAG,CAAA;AAE7C,EAAA,MAAM,aAAqC,EAAC;AAC5C,EAAA,MAAM,MAAA,uBAAa,GAAA,EAAY;AAC/B,EAAA,IAAI,KAAA,GAAQ,CAAA;AAEZ,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,MAAM,IAAA,GAAA,CAAQ,IAAA,CAAK,IAAA,IAAQ,SAAA,EAAW,WAAA,EAAY;AAClD,IAAA,UAAA,CAAW,IAAI,CAAA,GAAA,CAAK,UAAA,CAAW,IAAI,KAAK,CAAA,IAAK,CAAA;AAC7C,IAAA,uBAAA,CAAwB,IAAA,EAAM,MAAA,kBAAQ,IAAI,GAAA,EAAK,CAAA;AAE/C,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AACnC,IAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA;AAC5C,IAAA,IAAI,WAAA,WAAsB,WAAA,CAAY,MAAA;AAAA,EACxC;AAEA,EAAA,MAAM,aAAA,GAAgB,cAAA;AACtB,EAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,KAAA,CAAM,aAAa,CAAA;AAC/C,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,GAAA,CAAI,CAAA,EAAA,CAAI,eAAe,MAAA,IAAU,CAAA,IAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA,KAAM,CAAA,CAAE,IAAA,KAAS,QAAQ,EAAE,MAAM,CAAA;AAE7G,EAAA,OAAO;AAAA,IACL,YAAY,KAAA,CAAM,MAAA;AAAA,IAClB,UAAA;AAAA,IACA,MAAA,EAAQ,KAAA,CAAM,IAAA,CAAK,MAAM,CAAA;AAAA,IACzB,KAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,uBAAA,CACP,IAAA,EACA,MAAA,EACA,OAAA,EACM;AACN,EAAA,IAAI,CAAC,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,EAAU;AAEvC,EAAA,MAAM,GAAA,GAAM,IAAA;AAEZ,EAAA,IAAI,GAAA,CAAI,KAAA,IAAS,OAAO,GAAA,CAAI,UAAU,QAAA,EAAU;AAC9C,IAAA,MAAA,CAAO,GAAA,CAAI,IAAI,KAAK,CAAA;AAAA,EACtB;AAEA,EAAA,IAAI,IAAI,IAAA,IAAQ,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,EAAG;AACvC,IAAA,KAAA,MAAW,IAAA,IAAQ,IAAI,IAAA,EAAM;AAC3B,MAAA,IAAI,IAAA,IAAQ,OAAO,IAAA,KAAS,QAAA,IAAY,WAAW,IAAA,EAAM;AACvD,QAAA,MAAA,CAAO,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,KAAK,CAAC,CAAA;AAAA,MAC/B;AAAA,IACF;AAAA,EACF;AAEA,EAAA,IAAI,IAAI,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA,EAAG;AAC7C,IAAA,KAAA,MAAW,GAAA,IAAO,IAAI,OAAA,EAAS;AAC7B,MAAA,IAAI,GAAA,IAAO,OAAO,GAAA,KAAQ,QAAA,IAAY,UAAU,GAAA,EAAK;AACnD,QAAA,MAAM,OAAO,GAAA,CAAI,IAAA;AACjB,QAAA,IAAI,KAAK,IAAA,KAAS,YAAA,IAAgB,OAAO,IAAA,CAAK,WAAW,QAAA,EAAU;AACjE,UAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,MAAM,CAAA;AAAA,QACzB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,EAAA,KAAA,MAAW,KAAA,IAAS,MAAA,CAAO,MAAA,CAAO,GAAG,CAAA,EAAG;AACtC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AACxB,MAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,QAAA,uBAAA,CAAwB,IAAA,EAAM,QAAQ,OAAO,CAAA;AAAA,MAC/C;AAAA,IACF,CAAA,MAAA,IAAW,OAAO,KAAA,KAAU,QAAA,IAAY,UAAU,IAAA,EAAM;AACtD,MAAA,uBAAA,CAAwB,KAAA,EAAO,QAAQ,OAAO,CAAA;AAAA,IAChD;AAAA,EACF;AACF;AChIA,IAAMC,iBAAAA,GAA+C;AAAA,EACnD,KAAA,EAAO,OAAA;AAAA,EACP,UAAA,EAAY,YAAA;AAAA,EACZ,MAAA,EAAQ,QAAA;AAAA,EACR,WAAA,EAAa,aAAA;AAAA,EACb,QAAA,EAAU;AACZ,CAAA;AAEO,SAAS,OAAA,CACd,OACA,OAAA,EACQ;AACR,EAAA,MAAM,WAAA,GAAcA,iBAAAA,CAAiB,OAAA,CAAQ,IAAA,IAAQ,YAAY,CAAA,IAAK,YAAA;AACtE,EAAA,MAAM,SAAA,GAAYA,iBAAAA,CAAiB,OAAA,CAAQ,EAAE,CAAA,IAAK,YAAA;AAElD,EAAA,MAAM,MAAA,GAAS,IAAID,oBAAAA,EAAO;AAC1B,EAAA,MAAM,MAAM,MAAA,CAAO,MAAA,CAAO,OAAO,EAAE,QAAA,EAAU,aAAa,CAAA;AAC1D,EAAA,OAAO,OAAO,MAAA,CAAO,GAAA,EAAK,EAAE,QAAA,EAAU,WAAW,CAAA;AACnD","file":"index.js","sourcesContent":["import { format as sqlFormat } from 'sql-formatter';\nimport type { SqlFormatOptions } from './types';\n\nconst dialectMap: Record<string, string> = {\n mysql: 'mysql',\n postgresql: 'postgresql',\n sqlite: 'sqlite',\n transactsql: 'transactsql',\n bigquery: 'bigquery',\n};\n\nexport function format(input: string, options: SqlFormatOptions = {}): string {\n const language = dialectMap[options.dialect ?? 'postgresql'] ?? 'postgresql';\n\n return sqlFormat(input, {\n language: language as 'mysql' | 'postgresql' | 'sqlite' | 'transactsql' | 'bigquery',\n tabWidth: options.indent ?? 2,\n useTabs: false,\n keywordCase: options.uppercase !== false ? 'upper' : 'preserve',\n linesBetweenQueries: options.linesBetweenQueries ?? 2,\n });\n}\n\nexport function minify(input: string): string {\n return input\n .replace(/--.*$/gm, '')\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([,;()=<>+\\-*/])\\s*/g, '$1')\n .trim();\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlDialect, SqlParseResult, SqlValidationResult, SqlStats } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function parse(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlParseResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n const ast = parser.astify(input, { database: dbType });\n\n const stmts = Array.isArray(ast) ? ast : [ast];\n const tables = new Set<string>();\n const columns = new Set<string>();\n\n for (const stmt of stmts) {\n extractTablesAndColumns(stmt, tables, columns);\n }\n\n return {\n type: stmts[0]?.type ?? 'unknown',\n tables: Array.from(tables),\n columns: Array.from(columns),\n ast,\n };\n}\n\nexport function validate(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlValidationResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n try {\n const ast = parser.astify(input, { database: dbType });\n return { valid: true, ast };\n } catch (e) {\n return {\n valid: false,\n error: (e as Error).message,\n };\n }\n}\n\nexport function getStats(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlStats {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n const ast = parser.astify(input, { database: dbType });\n const stmts = Array.isArray(ast) ? ast : [ast];\n\n const queryTypes: Record<string, number> = {};\n const tables = new Set<string>();\n let joins = 0;\n\n for (const stmt of stmts) {\n const type = (stmt.type ?? 'unknown').toLowerCase();\n queryTypes[type] = (queryTypes[type] || 0) + 1;\n extractTablesAndColumns(stmt, tables, new Set());\n\n const stmtStr = JSON.stringify(stmt);\n const joinMatches = stmtStr.match(/\"join\"/gi);\n if (joinMatches) joins += joinMatches.length;\n }\n\n const subqueryRegex = /\\bSELECT\\b/gi;\n const selectMatches = input.match(subqueryRegex);\n const subqueries = Math.max(0, (selectMatches?.length ?? 0) - stmts.filter((s) => s.type === 'select').length);\n\n return {\n queryCount: stmts.length,\n queryTypes,\n tables: Array.from(tables),\n joins,\n subqueries,\n };\n}\n\nfunction extractTablesAndColumns(\n node: unknown,\n tables: Set<string>,\n columns: Set<string>\n): void {\n if (!node || typeof node !== 'object') return;\n\n const obj = node as Record<string, unknown>;\n\n if (obj.table && typeof obj.table === 'string') {\n tables.add(obj.table);\n }\n\n if (obj.from && Array.isArray(obj.from)) {\n for (const item of obj.from) {\n if (item && typeof item === 'object' && 'table' in item) {\n tables.add(String(item.table));\n }\n }\n }\n\n if (obj.columns && Array.isArray(obj.columns)) {\n for (const col of obj.columns) {\n if (col && typeof col === 'object' && 'expr' in col) {\n const expr = col.expr as Record<string, unknown>;\n if (expr.type === 'column_ref' && typeof expr.column === 'string') {\n columns.add(expr.column);\n }\n }\n }\n }\n\n for (const value of Object.values(obj)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n extractTablesAndColumns(item, tables, columns);\n }\n } else if (typeof value === 'object' && value !== null) {\n extractTablesAndColumns(value, tables, columns);\n }\n }\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlConvertOptions, SqlDialect } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function convert(\n input: string,\n options: SqlConvertOptions\n): string {\n const fromDialect = parserDialectMap[options.from ?? 'postgresql'] ?? 'PostgresQL';\n const toDialect = parserDialectMap[options.to] ?? 'PostgresQL';\n\n const parser = new Parser();\n const ast = parser.astify(input, { database: fromDialect });\n return parser.sqlify(ast, { database: toDialect });\n}\n"]}
@@ -0,0 +1,139 @@
1
+ import { format as format$1 } from 'sql-formatter';
2
+ import { Parser } from 'node-sql-parser';
3
+
4
+ // src/sql/format.ts
5
+ var dialectMap = {
6
+ mysql: "mysql",
7
+ postgresql: "postgresql",
8
+ sqlite: "sqlite",
9
+ transactsql: "transactsql",
10
+ bigquery: "bigquery"
11
+ };
12
+ function format(input, options = {}) {
13
+ const language = dialectMap[options.dialect ?? "postgresql"] ?? "postgresql";
14
+ return format$1(input, {
15
+ language,
16
+ tabWidth: options.indent ?? 2,
17
+ useTabs: false,
18
+ keywordCase: options.uppercase !== false ? "upper" : "preserve",
19
+ linesBetweenQueries: options.linesBetweenQueries ?? 2
20
+ });
21
+ }
22
+ function minify(input) {
23
+ return input.replace(/--.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/\s+/g, " ").replace(/\s*([,;()=<>+\-*/])\s*/g, "$1").trim();
24
+ }
25
+ var parserDialectMap = {
26
+ mysql: "MySQL",
27
+ postgresql: "PostgresQL",
28
+ sqlite: "SQLite",
29
+ transactsql: "TransactSQL",
30
+ bigquery: "BigQuery"
31
+ };
32
+ function parse(input, dialect = "postgresql") {
33
+ const parser = new Parser();
34
+ const dbType = parserDialectMap[dialect] ?? "PostgresQL";
35
+ const ast = parser.astify(input, { database: dbType });
36
+ const stmts = Array.isArray(ast) ? ast : [ast];
37
+ const tables = /* @__PURE__ */ new Set();
38
+ const columns = /* @__PURE__ */ new Set();
39
+ for (const stmt of stmts) {
40
+ extractTablesAndColumns(stmt, tables, columns);
41
+ }
42
+ return {
43
+ type: stmts[0]?.type ?? "unknown",
44
+ tables: Array.from(tables),
45
+ columns: Array.from(columns),
46
+ ast
47
+ };
48
+ }
49
+ function validate(input, dialect = "postgresql") {
50
+ const parser = new Parser();
51
+ const dbType = parserDialectMap[dialect] ?? "PostgresQL";
52
+ try {
53
+ const ast = parser.astify(input, { database: dbType });
54
+ return { valid: true, ast };
55
+ } catch (e) {
56
+ return {
57
+ valid: false,
58
+ error: e.message
59
+ };
60
+ }
61
+ }
62
+ function getStats(input, dialect = "postgresql") {
63
+ const parser = new Parser();
64
+ const dbType = parserDialectMap[dialect] ?? "PostgresQL";
65
+ const ast = parser.astify(input, { database: dbType });
66
+ const stmts = Array.isArray(ast) ? ast : [ast];
67
+ const queryTypes = {};
68
+ const tables = /* @__PURE__ */ new Set();
69
+ let joins = 0;
70
+ for (const stmt of stmts) {
71
+ const type = (stmt.type ?? "unknown").toLowerCase();
72
+ queryTypes[type] = (queryTypes[type] || 0) + 1;
73
+ extractTablesAndColumns(stmt, tables, /* @__PURE__ */ new Set());
74
+ const stmtStr = JSON.stringify(stmt);
75
+ const joinMatches = stmtStr.match(/"join"/gi);
76
+ if (joinMatches) joins += joinMatches.length;
77
+ }
78
+ const subqueryRegex = /\bSELECT\b/gi;
79
+ const selectMatches = input.match(subqueryRegex);
80
+ const subqueries = Math.max(0, (selectMatches?.length ?? 0) - stmts.filter((s) => s.type === "select").length);
81
+ return {
82
+ queryCount: stmts.length,
83
+ queryTypes,
84
+ tables: Array.from(tables),
85
+ joins,
86
+ subqueries
87
+ };
88
+ }
89
+ function extractTablesAndColumns(node, tables, columns) {
90
+ if (!node || typeof node !== "object") return;
91
+ const obj = node;
92
+ if (obj.table && typeof obj.table === "string") {
93
+ tables.add(obj.table);
94
+ }
95
+ if (obj.from && Array.isArray(obj.from)) {
96
+ for (const item of obj.from) {
97
+ if (item && typeof item === "object" && "table" in item) {
98
+ tables.add(String(item.table));
99
+ }
100
+ }
101
+ }
102
+ if (obj.columns && Array.isArray(obj.columns)) {
103
+ for (const col of obj.columns) {
104
+ if (col && typeof col === "object" && "expr" in col) {
105
+ const expr = col.expr;
106
+ if (expr.type === "column_ref" && typeof expr.column === "string") {
107
+ columns.add(expr.column);
108
+ }
109
+ }
110
+ }
111
+ }
112
+ for (const value of Object.values(obj)) {
113
+ if (Array.isArray(value)) {
114
+ for (const item of value) {
115
+ extractTablesAndColumns(item, tables, columns);
116
+ }
117
+ } else if (typeof value === "object" && value !== null) {
118
+ extractTablesAndColumns(value, tables, columns);
119
+ }
120
+ }
121
+ }
122
+ var parserDialectMap2 = {
123
+ mysql: "MySQL",
124
+ postgresql: "PostgresQL",
125
+ sqlite: "SQLite",
126
+ transactsql: "TransactSQL",
127
+ bigquery: "BigQuery"
128
+ };
129
+ function convert(input, options) {
130
+ const fromDialect = parserDialectMap2[options.from ?? "postgresql"] ?? "PostgresQL";
131
+ const toDialect = parserDialectMap2[options.to] ?? "PostgresQL";
132
+ const parser = new Parser();
133
+ const ast = parser.astify(input, { database: fromDialect });
134
+ return parser.sqlify(ast, { database: toDialect });
135
+ }
136
+
137
+ export { convert, format, getStats, minify, parse, validate };
138
+ //# sourceMappingURL=index.mjs.map
139
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/sql/format.ts","../../src/sql/parse.ts","../../src/sql/convert.ts"],"names":["sqlFormat","parserDialectMap","Parser"],"mappings":"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","file":"index.mjs","sourcesContent":["import { format as sqlFormat } from 'sql-formatter';\nimport type { SqlFormatOptions } from './types';\n\nconst dialectMap: Record<string, string> = {\n mysql: 'mysql',\n postgresql: 'postgresql',\n sqlite: 'sqlite',\n transactsql: 'transactsql',\n bigquery: 'bigquery',\n};\n\nexport function format(input: string, options: SqlFormatOptions = {}): string {\n const language = dialectMap[options.dialect ?? 'postgresql'] ?? 'postgresql';\n\n return sqlFormat(input, {\n language: language as 'mysql' | 'postgresql' | 'sqlite' | 'transactsql' | 'bigquery',\n tabWidth: options.indent ?? 2,\n useTabs: false,\n keywordCase: options.uppercase !== false ? 'upper' : 'preserve',\n linesBetweenQueries: options.linesBetweenQueries ?? 2,\n });\n}\n\nexport function minify(input: string): string {\n return input\n .replace(/--.*$/gm, '')\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '')\n .replace(/\\s+/g, ' ')\n .replace(/\\s*([,;()=<>+\\-*/])\\s*/g, '$1')\n .trim();\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlDialect, SqlParseResult, SqlValidationResult, SqlStats } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function parse(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlParseResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n const ast = parser.astify(input, { database: dbType });\n\n const stmts = Array.isArray(ast) ? ast : [ast];\n const tables = new Set<string>();\n const columns = new Set<string>();\n\n for (const stmt of stmts) {\n extractTablesAndColumns(stmt, tables, columns);\n }\n\n return {\n type: stmts[0]?.type ?? 'unknown',\n tables: Array.from(tables),\n columns: Array.from(columns),\n ast,\n };\n}\n\nexport function validate(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlValidationResult {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n try {\n const ast = parser.astify(input, { database: dbType });\n return { valid: true, ast };\n } catch (e) {\n return {\n valid: false,\n error: (e as Error).message,\n };\n }\n}\n\nexport function getStats(\n input: string,\n dialect: SqlDialect = 'postgresql'\n): SqlStats {\n const parser = new Parser();\n const dbType = parserDialectMap[dialect] ?? 'PostgresQL';\n\n const ast = parser.astify(input, { database: dbType });\n const stmts = Array.isArray(ast) ? ast : [ast];\n\n const queryTypes: Record<string, number> = {};\n const tables = new Set<string>();\n let joins = 0;\n\n for (const stmt of stmts) {\n const type = (stmt.type ?? 'unknown').toLowerCase();\n queryTypes[type] = (queryTypes[type] || 0) + 1;\n extractTablesAndColumns(stmt, tables, new Set());\n\n const stmtStr = JSON.stringify(stmt);\n const joinMatches = stmtStr.match(/\"join\"/gi);\n if (joinMatches) joins += joinMatches.length;\n }\n\n const subqueryRegex = /\\bSELECT\\b/gi;\n const selectMatches = input.match(subqueryRegex);\n const subqueries = Math.max(0, (selectMatches?.length ?? 0) - stmts.filter((s) => s.type === 'select').length);\n\n return {\n queryCount: stmts.length,\n queryTypes,\n tables: Array.from(tables),\n joins,\n subqueries,\n };\n}\n\nfunction extractTablesAndColumns(\n node: unknown,\n tables: Set<string>,\n columns: Set<string>\n): void {\n if (!node || typeof node !== 'object') return;\n\n const obj = node as Record<string, unknown>;\n\n if (obj.table && typeof obj.table === 'string') {\n tables.add(obj.table);\n }\n\n if (obj.from && Array.isArray(obj.from)) {\n for (const item of obj.from) {\n if (item && typeof item === 'object' && 'table' in item) {\n tables.add(String(item.table));\n }\n }\n }\n\n if (obj.columns && Array.isArray(obj.columns)) {\n for (const col of obj.columns) {\n if (col && typeof col === 'object' && 'expr' in col) {\n const expr = col.expr as Record<string, unknown>;\n if (expr.type === 'column_ref' && typeof expr.column === 'string') {\n columns.add(expr.column);\n }\n }\n }\n }\n\n for (const value of Object.values(obj)) {\n if (Array.isArray(value)) {\n for (const item of value) {\n extractTablesAndColumns(item, tables, columns);\n }\n } else if (typeof value === 'object' && value !== null) {\n extractTablesAndColumns(value, tables, columns);\n }\n }\n}\n","import { Parser } from 'node-sql-parser';\nimport type { SqlConvertOptions, SqlDialect } from './types';\n\nconst parserDialectMap: Record<SqlDialect, string> = {\n mysql: 'MySQL',\n postgresql: 'PostgresQL',\n sqlite: 'SQLite',\n transactsql: 'TransactSQL',\n bigquery: 'BigQuery',\n};\n\nexport function convert(\n input: string,\n options: SqlConvertOptions\n): string {\n const fromDialect = parserDialectMap[options.from ?? 'postgresql'] ?? 'PostgresQL';\n const toDialect = parserDialectMap[options.to] ?? 'PostgresQL';\n\n const parser = new Parser();\n const ast = parser.astify(input, { database: fromDialect });\n return parser.sqlify(ast, { database: toDialect });\n}\n"]}
@@ -0,0 +1 @@
1
+ export { B as BeamLoadType, a as BeamResult, C as CantileverLoadType, b as CantileverResult, c as CircularSectionResult, d as ColumnClassification, E as EarthPressureType, e as EndCondition, f as EulerBucklingResult, F as FactorOfSafetyResult, g as FoundationType, H as HollowCircularSectionResult, h as HoopStressResult, I as IBeamSectionResult, L as LateralEarthPressureResult, M as MaterialProperties, N as NormalStressResult, R as RectangleSectionResult, S as SettlementResult, j as ShearStressResult, k as SlendernessRatioResult, l as StrainResult, T as TerzaghiBearingResult, Y as YoungsModulusResult, m as cantilever, n as circularSection, o as eulerBuckling, p as factorOfSafety, q as getMaterial, r as hollowCircularSection, s as hoopStress, t as iBeamSection, u as lateralEarthPressure, v as listMaterials, w as normalStress, x as rectangleSection, y as settlement, z as shearStress, A as simplySupported, D as slendernessRatio, G as strain, J as terzaghiBearing, K as youngsModulus } from '../index-BKeYao0B.mjs';
@@ -0,0 +1 @@
1
+ export { B as BeamLoadType, a as BeamResult, C as CantileverLoadType, b as CantileverResult, c as CircularSectionResult, d as ColumnClassification, E as EarthPressureType, e as EndCondition, f as EulerBucklingResult, F as FactorOfSafetyResult, g as FoundationType, H as HollowCircularSectionResult, h as HoopStressResult, I as IBeamSectionResult, L as LateralEarthPressureResult, M as MaterialProperties, N as NormalStressResult, R as RectangleSectionResult, S as SettlementResult, j as ShearStressResult, k as SlendernessRatioResult, l as StrainResult, T as TerzaghiBearingResult, Y as YoungsModulusResult, m as cantilever, n as circularSection, o as eulerBuckling, p as factorOfSafety, q as getMaterial, r as hollowCircularSection, s as hoopStress, t as iBeamSection, u as lateralEarthPressure, v as listMaterials, w as normalStress, x as rectangleSection, y as settlement, z as shearStress, A as simplySupported, D as slendernessRatio, G as strain, J as terzaghiBearing, K as youngsModulus } from '../index-BKeYao0B.js';