@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.
- package/dist/a2a/index.d.mts +169 -0
- package/dist/a2a/index.d.ts +169 -0
- package/dist/a2a/index.js +6012 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/index.mjs +5934 -0
- package/dist/a2a/index.mjs.map +1 -0
- package/dist/archive/index.d.mts +1 -0
- package/dist/archive/index.d.ts +1 -0
- package/dist/archive/index.js +90 -0
- package/dist/archive/index.js.map +1 -0
- package/dist/archive/index.mjs +80 -0
- package/dist/archive/index.mjs.map +1 -0
- package/dist/cli.js +4441 -164
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +4408 -161
- package/dist/cli.mjs.map +1 -1
- package/dist/color/index.d.mts +1 -0
- package/dist/color/index.d.ts +1 -0
- package/dist/color/index.js +347 -0
- package/dist/color/index.js.map +1 -0
- package/dist/color/index.mjs +336 -0
- package/dist/color/index.mjs.map +1 -0
- package/dist/crypto/index.d.mts +1 -0
- package/dist/crypto/index.d.ts +1 -0
- package/dist/crypto/index.js +116 -0
- package/dist/crypto/index.js.map +1 -0
- package/dist/crypto/index.mjs +108 -0
- package/dist/crypto/index.mjs.map +1 -0
- package/dist/csv/index.d.mts +1 -0
- package/dist/csv/index.d.ts +1 -0
- package/dist/csv/index.js +371 -0
- package/dist/csv/index.js.map +1 -0
- package/dist/csv/index.mjs +348 -0
- package/dist/csv/index.mjs.map +1 -0
- package/dist/datetime/index.d.mts +1 -0
- package/dist/datetime/index.d.ts +1 -0
- package/dist/datetime/index.js +234 -0
- package/dist/datetime/index.js.map +1 -0
- package/dist/datetime/index.mjs +224 -0
- package/dist/datetime/index.mjs.map +1 -0
- package/dist/diff/index.d.mts +2 -0
- package/dist/diff/index.d.ts +2 -0
- package/dist/diff/index.js +84 -0
- package/dist/diff/index.js.map +1 -0
- package/dist/diff/index.mjs +78 -0
- package/dist/diff/index.mjs.map +1 -0
- package/dist/excel/index.d.mts +1 -0
- package/dist/excel/index.d.ts +1 -0
- package/dist/excel/index.js +163 -0
- package/dist/excel/index.js.map +1 -0
- package/dist/excel/index.mjs +153 -0
- package/dist/excel/index.mjs.map +1 -0
- package/dist/image/index.d.mts +1 -0
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +123 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/index.mjs +107 -0
- package/dist/image/index.mjs.map +1 -0
- package/dist/index--vbnYfdE.d.mts +142 -0
- package/dist/index--vbnYfdE.d.ts +142 -0
- package/dist/index-7FZQloN-.d.mts +62 -0
- package/dist/index-7FZQloN-.d.ts +62 -0
- package/dist/index-7XgaTVH5.d.mts +93 -0
- package/dist/index-7XgaTVH5.d.ts +93 -0
- package/dist/index-7bvFmh45.d.mts +87 -0
- package/dist/index-7bvFmh45.d.ts +87 -0
- package/dist/index-BDZcIVCU.d.mts +53 -0
- package/dist/index-BDZcIVCU.d.ts +53 -0
- package/dist/index-BKeYao0B.d.mts +320 -0
- package/dist/index-BKeYao0B.d.ts +320 -0
- package/dist/index-BN00EnUU.d.mts +55 -0
- package/dist/index-BN00EnUU.d.ts +55 -0
- package/dist/index-BZDcrPs-.d.mts +316 -0
- package/dist/index-BZDcrPs-.d.ts +316 -0
- package/dist/index-CQ1EukC4.d.mts +59 -0
- package/dist/index-CQ1EukC4.d.ts +59 -0
- package/dist/index-CgRVnFOt.d.mts +91 -0
- package/dist/index-CgRVnFOt.d.ts +91 -0
- package/dist/index-Dh47fgVS.d.mts +216 -0
- package/dist/index-Dh47fgVS.d.ts +216 -0
- package/dist/index-DjBDZzuj.d.mts +54 -0
- package/dist/index-DjBDZzuj.d.ts +54 -0
- package/dist/index-FFrvmr-n.d.mts +50 -0
- package/dist/index-FFrvmr-n.d.ts +50 -0
- package/dist/index-QWC8yIgW.d.mts +106 -0
- package/dist/index-QWC8yIgW.d.ts +106 -0
- package/dist/index-fJD8SORm.d.mts +61 -0
- package/dist/index-fJD8SORm.d.ts +61 -0
- package/dist/index-pPy_XDQU.d.mts +56 -0
- package/dist/index-pPy_XDQU.d.ts +56 -0
- package/dist/index-rwh9hdD9.d.mts +68 -0
- package/dist/index-rwh9hdD9.d.ts +68 -0
- package/dist/index-uXdkAfea.d.mts +93 -0
- package/dist/index-uXdkAfea.d.ts +93 -0
- package/dist/index.d.mts +25 -5
- package/dist/index.d.ts +25 -5
- package/dist/index.js +5195 -147
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5145 -145
- package/dist/index.mjs.map +1 -1
- package/dist/json/index.d.mts +1 -0
- package/dist/json/index.d.ts +1 -0
- package/dist/json/index.js +599 -0
- package/dist/json/index.js.map +1 -0
- package/dist/json/index.mjs +552 -0
- package/dist/json/index.mjs.map +1 -0
- package/dist/markdown/index.d.mts +1 -0
- package/dist/markdown/index.d.ts +1 -0
- package/dist/markdown/index.js +151 -0
- package/dist/markdown/index.js.map +1 -0
- package/dist/markdown/index.mjs +139 -0
- package/dist/markdown/index.mjs.map +1 -0
- package/dist/math/index.d.mts +1 -0
- package/dist/math/index.d.ts +1 -0
- package/dist/math/index.js +247 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/index.mjs +240 -0
- package/dist/math/index.mjs.map +1 -0
- package/dist/pdf/index.d.mts +1 -0
- package/dist/pdf/index.d.ts +1 -0
- package/dist/pdf/index.js +628 -0
- package/dist/pdf/index.js.map +1 -0
- package/dist/pdf/index.mjs +598 -0
- package/dist/pdf/index.mjs.map +1 -0
- package/dist/physics/index.d.mts +1 -0
- package/dist/physics/index.d.ts +1 -0
- package/dist/physics/index.js +467 -0
- package/dist/physics/index.js.map +1 -0
- package/dist/physics/index.mjs +435 -0
- package/dist/physics/index.mjs.map +1 -0
- package/dist/regex/index.d.mts +1 -0
- package/dist/regex/index.d.ts +1 -0
- package/dist/regex/index.js +93 -0
- package/dist/regex/index.js.map +1 -0
- package/dist/regex/index.mjs +88 -0
- package/dist/regex/index.mjs.map +1 -0
- package/dist/settings/index.d.mts +41 -0
- package/dist/settings/index.d.ts +41 -0
- package/dist/settings/index.js +150 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/index.mjs +143 -0
- package/dist/settings/index.mjs.map +1 -0
- package/dist/sql/index.d.mts +1 -0
- package/dist/sql/index.d.ts +1 -0
- package/dist/sql/index.js +146 -0
- package/dist/sql/index.js.map +1 -0
- package/dist/sql/index.mjs +139 -0
- package/dist/sql/index.mjs.map +1 -0
- package/dist/structural/index.d.mts +1 -0
- package/dist/structural/index.d.ts +1 -0
- package/dist/structural/index.js +608 -0
- package/dist/structural/index.js.map +1 -0
- package/dist/structural/index.mjs +588 -0
- package/dist/structural/index.mjs.map +1 -0
- package/dist/text/index.d.mts +1 -0
- package/dist/text/index.d.ts +1 -0
- package/dist/text/index.js +250 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/index.mjs +242 -0
- package/dist/text/index.mjs.map +1 -0
- package/dist/xml/index.d.mts +1 -0
- package/dist/xml/index.d.ts +1 -0
- package/dist/xml/index.js +188 -0
- package/dist/xml/index.js.map +1 -0
- package/dist/xml/index.mjs +180 -0
- package/dist/xml/index.mjs.map +1 -0
- 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":"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","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';
|