superdb-mcp 0.51231.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/LICENSE +28 -0
- package/README.md +160 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +438 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/lsp-client.d.ts +86 -0
- package/dist/lib/lsp-client.d.ts.map +1 -0
- package/dist/lib/lsp-client.js +267 -0
- package/dist/lib/lsp-client.js.map +1 -0
- package/dist/lib/super.d.ts +26 -0
- package/dist/lib/super.d.ts.map +1 -0
- package/dist/lib/super.js +63 -0
- package/dist/lib/super.js.map +1 -0
- package/dist/lib/version.d.ts +57 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +200 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/tools/db.d.ts +56 -0
- package/dist/tools/db.d.ts.map +1 -0
- package/dist/tools/db.js +159 -0
- package/dist/tools/db.js.map +1 -0
- package/dist/tools/info.d.ts +63 -0
- package/dist/tools/info.d.ts.map +1 -0
- package/dist/tools/info.js +220 -0
- package/dist/tools/info.js.map +1 -0
- package/dist/tools/lsp.d.ts +37 -0
- package/dist/tools/lsp.d.ts.map +1 -0
- package/dist/tools/lsp.js +131 -0
- package/dist/tools/lsp.js.map +1 -0
- package/dist/tools/query.d.ts +51 -0
- package/dist/tools/query.d.ts.map +1 -0
- package/dist/tools/query.js +164 -0
- package/dist/tools/query.js.map +1 -0
- package/docs/superdb-expert.md +814 -0
- package/docs/zq-to-super-upgrades.md +408 -0
- package/package.json +43 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import { spawnSync } from 'child_process';
|
|
5
|
+
import { detectVersion, compareVersionInfo, checkDocsCompatibility, } from '../lib/version.js';
|
|
6
|
+
import { runSuper } from '../lib/super.js';
|
|
7
|
+
// Get docs directory path
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = dirname(__filename);
|
|
10
|
+
const docsDir = join(__dirname, '../../docs');
|
|
11
|
+
/**
|
|
12
|
+
* Get SuperDB version and environment info
|
|
13
|
+
*/
|
|
14
|
+
export function superInfo(compareTo) {
|
|
15
|
+
try {
|
|
16
|
+
const runtime = detectVersion();
|
|
17
|
+
const compatibility = checkDocsCompatibility();
|
|
18
|
+
// Check for LSP
|
|
19
|
+
const lspPath = process.env.SUPERDB_LSP_PATH || null;
|
|
20
|
+
let lspAvailable = false;
|
|
21
|
+
if (lspPath) {
|
|
22
|
+
try {
|
|
23
|
+
const result = spawnSync(lspPath, ['--version'], { timeout: 2000, encoding: 'utf-8' });
|
|
24
|
+
lspAvailable = result.status === 0;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
lspAvailable = false;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Provide setup instructions if LSP is not configured
|
|
31
|
+
const lspSetup = lspAvailable
|
|
32
|
+
? null
|
|
33
|
+
: {
|
|
34
|
+
recommendation: 'Install SuperDB LSP for enhanced query assistance',
|
|
35
|
+
benefits: [
|
|
36
|
+
'Better query suggestions via code completions',
|
|
37
|
+
'Function and keyword documentation lookup',
|
|
38
|
+
'Enhanced error diagnostics with fix suggestions',
|
|
39
|
+
],
|
|
40
|
+
releases_url: 'https://github.com/chrismo/superdb-lsp/releases',
|
|
41
|
+
platforms: {
|
|
42
|
+
'macOS (Apple Silicon)': 'superdb-lsp-darwin-arm64',
|
|
43
|
+
'macOS (Intel)': 'superdb-lsp-darwin-amd64',
|
|
44
|
+
'Linux (x64)': 'superdb-lsp-linux-amd64',
|
|
45
|
+
'Linux (ARM64)': 'superdb-lsp-linux-arm64',
|
|
46
|
+
'Windows (x64)': 'superdb-lsp-windows-amd64.exe',
|
|
47
|
+
},
|
|
48
|
+
install_steps: [
|
|
49
|
+
'Download the appropriate binary for your platform from the releases page',
|
|
50
|
+
'Make it executable: chmod +x superdb-lsp-*',
|
|
51
|
+
'Move it to a location in your PATH or note its full path',
|
|
52
|
+
'Set the environment variable: export SUPERDB_LSP_PATH=/path/to/superdb-lsp',
|
|
53
|
+
'Add the export to your shell profile (~/.bashrc, ~/.zshrc, etc.) for persistence',
|
|
54
|
+
],
|
|
55
|
+
env_var: 'SUPERDB_LSP_PATH',
|
|
56
|
+
};
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
runtime,
|
|
60
|
+
docs_version: compatibility.docs,
|
|
61
|
+
lsp_available: lspAvailable,
|
|
62
|
+
lsp_path: lspPath,
|
|
63
|
+
lsp_setup: lspSetup,
|
|
64
|
+
compatibility: {
|
|
65
|
+
runtime_docs_match: compatibility.compatible,
|
|
66
|
+
warnings: compatibility.warnings,
|
|
67
|
+
},
|
|
68
|
+
error: null,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (e) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
runtime: {
|
|
75
|
+
version: 'unknown',
|
|
76
|
+
raw: '',
|
|
77
|
+
date: null,
|
|
78
|
+
sha: null,
|
|
79
|
+
timestamp: null,
|
|
80
|
+
path: 'super',
|
|
81
|
+
source: 'path',
|
|
82
|
+
},
|
|
83
|
+
docs_version: 'unknown',
|
|
84
|
+
lsp_available: false,
|
|
85
|
+
lsp_path: null,
|
|
86
|
+
lsp_setup: null,
|
|
87
|
+
compatibility: {
|
|
88
|
+
runtime_docs_match: false,
|
|
89
|
+
warnings: ['Failed to detect version info'],
|
|
90
|
+
},
|
|
91
|
+
error: e instanceof Error ? e.message : String(e),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Compare two SuperDB versions
|
|
97
|
+
*/
|
|
98
|
+
export function superCompare(currentPath, compareToPath) {
|
|
99
|
+
try {
|
|
100
|
+
const comparison = compareVersionInfo(currentPath, compareToPath);
|
|
101
|
+
return {
|
|
102
|
+
success: true,
|
|
103
|
+
comparison,
|
|
104
|
+
error: null,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
catch (e) {
|
|
108
|
+
return {
|
|
109
|
+
success: false,
|
|
110
|
+
comparison: null,
|
|
111
|
+
error: e instanceof Error ? e.message : String(e),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get help documentation
|
|
117
|
+
*/
|
|
118
|
+
export function superHelp(topic) {
|
|
119
|
+
const topics = {
|
|
120
|
+
'expert': 'superdb-expert.md',
|
|
121
|
+
'upgrade': 'zq-to-super-upgrades.md',
|
|
122
|
+
'upgrade-guide': 'zq-to-super-upgrades.md',
|
|
123
|
+
'migration': 'zq-to-super-upgrades.md',
|
|
124
|
+
};
|
|
125
|
+
const filename = topics[topic.toLowerCase()];
|
|
126
|
+
if (!filename) {
|
|
127
|
+
return {
|
|
128
|
+
success: false,
|
|
129
|
+
topic,
|
|
130
|
+
content: '',
|
|
131
|
+
error: `Unknown topic: ${topic}. Available topics: ${Object.keys(topics).join(', ')}`,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
try {
|
|
135
|
+
const filepath = join(docsDir, filename);
|
|
136
|
+
const content = readFileSync(filepath, 'utf-8');
|
|
137
|
+
return {
|
|
138
|
+
success: true,
|
|
139
|
+
topic,
|
|
140
|
+
content,
|
|
141
|
+
error: null,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
catch (e) {
|
|
145
|
+
return {
|
|
146
|
+
success: false,
|
|
147
|
+
topic,
|
|
148
|
+
content: '',
|
|
149
|
+
error: `Failed to read documentation: ${e instanceof Error ? e.message : String(e)}`,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Test query compatibility across multiple super versions
|
|
155
|
+
*/
|
|
156
|
+
export async function superTestCompat(query, versions) {
|
|
157
|
+
if (versions.length === 0) {
|
|
158
|
+
return {
|
|
159
|
+
success: false,
|
|
160
|
+
query,
|
|
161
|
+
results: [],
|
|
162
|
+
breaking_change_detected: false,
|
|
163
|
+
error: 'No versions specified to test',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
const results = [];
|
|
167
|
+
let hasSuccess = false;
|
|
168
|
+
let hasFailure = false;
|
|
169
|
+
for (const versionPath of versions) {
|
|
170
|
+
const versionInfo = detectVersion(versionPath);
|
|
171
|
+
try {
|
|
172
|
+
// Temporarily override SUPER_PATH
|
|
173
|
+
const originalPath = process.env.SUPER_PATH;
|
|
174
|
+
process.env.SUPER_PATH = versionPath;
|
|
175
|
+
const result = await runSuper(['-c', query]);
|
|
176
|
+
// Restore original
|
|
177
|
+
if (originalPath) {
|
|
178
|
+
process.env.SUPER_PATH = originalPath;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
delete process.env.SUPER_PATH;
|
|
182
|
+
}
|
|
183
|
+
if (result.exitCode === 0) {
|
|
184
|
+
hasSuccess = true;
|
|
185
|
+
results.push({
|
|
186
|
+
path: versionPath,
|
|
187
|
+
version: versionInfo.version,
|
|
188
|
+
success: true,
|
|
189
|
+
output: result.stdout.trim(),
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
hasFailure = true;
|
|
194
|
+
results.push({
|
|
195
|
+
path: versionPath,
|
|
196
|
+
version: versionInfo.version,
|
|
197
|
+
success: false,
|
|
198
|
+
error: result.stderr.trim() || 'Query failed with no error message',
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch (e) {
|
|
203
|
+
hasFailure = true;
|
|
204
|
+
results.push({
|
|
205
|
+
path: versionPath,
|
|
206
|
+
version: versionInfo.version,
|
|
207
|
+
success: false,
|
|
208
|
+
error: e instanceof Error ? e.message : String(e),
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
success: true,
|
|
214
|
+
query,
|
|
215
|
+
results,
|
|
216
|
+
breaking_change_detected: hasSuccess && hasFailure,
|
|
217
|
+
error: null,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/tools/info.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { LSPAvailability } from '../lib/lsp-client.js';
|
|
2
|
+
export interface CompletionResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
completions: Array<{
|
|
5
|
+
label: string;
|
|
6
|
+
kind?: string;
|
|
7
|
+
detail?: string;
|
|
8
|
+
documentation?: string;
|
|
9
|
+
insertText?: string;
|
|
10
|
+
}>;
|
|
11
|
+
lsp_available: boolean;
|
|
12
|
+
error: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface DocsResult {
|
|
15
|
+
success: boolean;
|
|
16
|
+
query: string;
|
|
17
|
+
position: {
|
|
18
|
+
line: number;
|
|
19
|
+
character: number;
|
|
20
|
+
};
|
|
21
|
+
documentation: string | null;
|
|
22
|
+
lsp_available: boolean;
|
|
23
|
+
error: string | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Get code completions for a query at a position
|
|
27
|
+
*/
|
|
28
|
+
export declare function superComplete(query: string, line: number, character: number): Promise<CompletionResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Get documentation for a symbol at a position in a query
|
|
31
|
+
*/
|
|
32
|
+
export declare function superDocs(query: string, line: number, character: number): Promise<DocsResult>;
|
|
33
|
+
/**
|
|
34
|
+
* Get LSP availability status
|
|
35
|
+
*/
|
|
36
|
+
export declare function getLspStatus(): LSPAvailability;
|
|
37
|
+
//# sourceMappingURL=lsp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../../src/tools/lsp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AA+BD;;GAEG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CA+C3B;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,CAAC,CA6CrB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,eAAe,CAE9C"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { getLspClient, checkLspAvailability } from '../lib/lsp-client.js';
|
|
2
|
+
// Map LSP completion kinds to human-readable names
|
|
3
|
+
const completionKindNames = {
|
|
4
|
+
1: 'text',
|
|
5
|
+
2: 'method',
|
|
6
|
+
3: 'function',
|
|
7
|
+
4: 'constructor',
|
|
8
|
+
5: 'field',
|
|
9
|
+
6: 'variable',
|
|
10
|
+
7: 'class',
|
|
11
|
+
8: 'interface',
|
|
12
|
+
9: 'module',
|
|
13
|
+
10: 'property',
|
|
14
|
+
11: 'unit',
|
|
15
|
+
12: 'value',
|
|
16
|
+
13: 'enum',
|
|
17
|
+
14: 'keyword',
|
|
18
|
+
15: 'snippet',
|
|
19
|
+
16: 'color',
|
|
20
|
+
17: 'file',
|
|
21
|
+
18: 'reference',
|
|
22
|
+
19: 'folder',
|
|
23
|
+
20: 'enumMember',
|
|
24
|
+
21: 'constant',
|
|
25
|
+
22: 'struct',
|
|
26
|
+
23: 'event',
|
|
27
|
+
24: 'operator',
|
|
28
|
+
25: 'typeParameter',
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Get code completions for a query at a position
|
|
32
|
+
*/
|
|
33
|
+
export async function superComplete(query, line, character) {
|
|
34
|
+
const client = getLspClient();
|
|
35
|
+
if (!client) {
|
|
36
|
+
const availability = checkLspAvailability();
|
|
37
|
+
return {
|
|
38
|
+
success: false,
|
|
39
|
+
completions: [],
|
|
40
|
+
lsp_available: false,
|
|
41
|
+
error: availability.error || 'LSP not available',
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
try {
|
|
45
|
+
const items = await client.getCompletions(query, line, character);
|
|
46
|
+
const completions = items.map((item) => {
|
|
47
|
+
let documentation;
|
|
48
|
+
if (typeof item.documentation === 'string') {
|
|
49
|
+
documentation = item.documentation;
|
|
50
|
+
}
|
|
51
|
+
else if (item.documentation && typeof item.documentation === 'object') {
|
|
52
|
+
documentation = item.documentation.value;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
label: item.label,
|
|
56
|
+
kind: item.kind ? completionKindNames[item.kind] : undefined,
|
|
57
|
+
detail: item.detail,
|
|
58
|
+
documentation,
|
|
59
|
+
insertText: item.insertText,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
success: true,
|
|
64
|
+
completions,
|
|
65
|
+
lsp_available: true,
|
|
66
|
+
error: null,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
return {
|
|
71
|
+
success: false,
|
|
72
|
+
completions: [],
|
|
73
|
+
lsp_available: true,
|
|
74
|
+
error: e instanceof Error ? e.message : String(e),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get documentation for a symbol at a position in a query
|
|
80
|
+
*/
|
|
81
|
+
export async function superDocs(query, line, character) {
|
|
82
|
+
const client = getLspClient();
|
|
83
|
+
if (!client) {
|
|
84
|
+
const availability = checkLspAvailability();
|
|
85
|
+
return {
|
|
86
|
+
success: false,
|
|
87
|
+
query,
|
|
88
|
+
position: { line, character },
|
|
89
|
+
documentation: null,
|
|
90
|
+
lsp_available: false,
|
|
91
|
+
error: availability.error || 'LSP not available',
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const hover = await client.getHover(query, line, character);
|
|
96
|
+
let documentation = null;
|
|
97
|
+
if (hover) {
|
|
98
|
+
if (typeof hover.contents === 'string') {
|
|
99
|
+
documentation = hover.contents;
|
|
100
|
+
}
|
|
101
|
+
else if (hover.contents && typeof hover.contents === 'object') {
|
|
102
|
+
documentation = hover.contents.value;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
success: true,
|
|
107
|
+
query,
|
|
108
|
+
position: { line, character },
|
|
109
|
+
documentation,
|
|
110
|
+
lsp_available: true,
|
|
111
|
+
error: null,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
return {
|
|
116
|
+
success: false,
|
|
117
|
+
query,
|
|
118
|
+
position: { line, character },
|
|
119
|
+
documentation: null,
|
|
120
|
+
lsp_available: true,
|
|
121
|
+
error: e instanceof Error ? e.message : String(e),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get LSP availability status
|
|
127
|
+
*/
|
|
128
|
+
export function getLspStatus() {
|
|
129
|
+
return checkLspAvailability();
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=lsp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp.js","sourceRoot":"","sources":["../../src/tools/lsp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface QueryParams {
|
|
2
|
+
query: string;
|
|
3
|
+
files?: string[];
|
|
4
|
+
data?: string;
|
|
5
|
+
format?: 'json' | 'sup' | 'csv' | 'table';
|
|
6
|
+
inputFormat?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface QueryResult {
|
|
9
|
+
success: boolean;
|
|
10
|
+
data: unknown[] | null;
|
|
11
|
+
rowCount: number;
|
|
12
|
+
raw?: string;
|
|
13
|
+
error: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ValidateDiagnostic {
|
|
16
|
+
line: number;
|
|
17
|
+
character: number;
|
|
18
|
+
message: string;
|
|
19
|
+
severity: 'error' | 'warning' | 'info' | 'hint';
|
|
20
|
+
}
|
|
21
|
+
export interface ValidateResult {
|
|
22
|
+
valid: boolean;
|
|
23
|
+
error: string | null;
|
|
24
|
+
diagnostics: ValidateDiagnostic[];
|
|
25
|
+
suggestions: string[];
|
|
26
|
+
}
|
|
27
|
+
export interface ShapeInfo {
|
|
28
|
+
type: string;
|
|
29
|
+
count: number;
|
|
30
|
+
example: unknown;
|
|
31
|
+
}
|
|
32
|
+
export interface SchemaResult {
|
|
33
|
+
success: boolean;
|
|
34
|
+
shapes: ShapeInfo[];
|
|
35
|
+
totalRecords: number;
|
|
36
|
+
error: string | null;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Execute a SuperSQL query
|
|
40
|
+
*/
|
|
41
|
+
export declare function superQuery(params: QueryParams): Promise<QueryResult>;
|
|
42
|
+
/**
|
|
43
|
+
* Validate query syntax without executing
|
|
44
|
+
* Includes position diagnostics and migration suggestions for common errors
|
|
45
|
+
*/
|
|
46
|
+
export declare function superValidate(query: string): Promise<ValidateResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Inspect schema/types of a file by finding unique shapes
|
|
49
|
+
*/
|
|
50
|
+
export declare function superSchema(file: string): Promise<SchemaResult>;
|
|
51
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAyE1E;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAkD1E;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CA2CrE"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { runSuper, parseNDJSON } from '../lib/super.js';
|
|
2
|
+
/**
|
|
3
|
+
* Execute a SuperSQL query
|
|
4
|
+
*/
|
|
5
|
+
export async function superQuery(params) {
|
|
6
|
+
const { query, files, data, format = 'json', inputFormat } = params;
|
|
7
|
+
// Build arguments
|
|
8
|
+
const args = [];
|
|
9
|
+
// Output format
|
|
10
|
+
if (format === 'json') {
|
|
11
|
+
args.push('-j'); // Line-oriented JSON
|
|
12
|
+
}
|
|
13
|
+
else if (format === 'sup') {
|
|
14
|
+
args.push('-s');
|
|
15
|
+
}
|
|
16
|
+
else if (format === 'csv') {
|
|
17
|
+
args.push('-f', 'csv');
|
|
18
|
+
}
|
|
19
|
+
else if (format === 'table') {
|
|
20
|
+
args.push('-f', 'table');
|
|
21
|
+
}
|
|
22
|
+
// Input format override
|
|
23
|
+
if (inputFormat) {
|
|
24
|
+
args.push('-i', inputFormat);
|
|
25
|
+
}
|
|
26
|
+
// Query
|
|
27
|
+
args.push('-c', query);
|
|
28
|
+
// Files or stdin
|
|
29
|
+
if (files && files.length > 0) {
|
|
30
|
+
args.push(...files);
|
|
31
|
+
}
|
|
32
|
+
else if (data !== undefined) {
|
|
33
|
+
args.push('-'); // Read from stdin
|
|
34
|
+
}
|
|
35
|
+
// Execute
|
|
36
|
+
const result = await runSuper(args, data);
|
|
37
|
+
if (result.exitCode !== 0) {
|
|
38
|
+
return {
|
|
39
|
+
success: false,
|
|
40
|
+
data: null,
|
|
41
|
+
rowCount: 0,
|
|
42
|
+
error: result.stderr.trim() || 'Query failed with no error message',
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Parse output based on format
|
|
46
|
+
if (format === 'json') {
|
|
47
|
+
try {
|
|
48
|
+
const parsed = parseNDJSON(result.stdout);
|
|
49
|
+
return {
|
|
50
|
+
success: true,
|
|
51
|
+
data: parsed,
|
|
52
|
+
rowCount: parsed.length,
|
|
53
|
+
error: null,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
return {
|
|
58
|
+
success: true,
|
|
59
|
+
data: null,
|
|
60
|
+
rowCount: 0,
|
|
61
|
+
raw: result.stdout,
|
|
62
|
+
error: null,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// For non-JSON formats, return raw output
|
|
68
|
+
return {
|
|
69
|
+
success: true,
|
|
70
|
+
data: null,
|
|
71
|
+
rowCount: 0,
|
|
72
|
+
raw: result.stdout,
|
|
73
|
+
error: null,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Validate query syntax without executing
|
|
79
|
+
* Includes position diagnostics and migration suggestions for common errors
|
|
80
|
+
*/
|
|
81
|
+
export async function superValidate(query) {
|
|
82
|
+
const result = await runSuper(['compile', '-C', query]);
|
|
83
|
+
const diagnostics = [];
|
|
84
|
+
const suggestions = [];
|
|
85
|
+
if (result.exitCode !== 0) {
|
|
86
|
+
const error = result.stderr.trim() || result.stdout.trim();
|
|
87
|
+
// Parse error position from message
|
|
88
|
+
// Format: "parse error at line X, column Y:\n..."
|
|
89
|
+
const posMatch = error.match(/at line (\d+), column (\d+)/);
|
|
90
|
+
const line = posMatch ? parseInt(posMatch[1]) - 1 : 0;
|
|
91
|
+
const character = posMatch ? parseInt(posMatch[2]) - 1 : 0;
|
|
92
|
+
diagnostics.push({
|
|
93
|
+
line,
|
|
94
|
+
character,
|
|
95
|
+
message: error,
|
|
96
|
+
severity: 'error',
|
|
97
|
+
});
|
|
98
|
+
// Add migration suggestions based on error patterns
|
|
99
|
+
if (error.includes('yield')) {
|
|
100
|
+
suggestions.push('Did you mean "values"? (yield was renamed to values in SuperDB)');
|
|
101
|
+
}
|
|
102
|
+
if (error.includes('over')) {
|
|
103
|
+
suggestions.push('Did you mean "unnest"? (over was renamed to unnest in SuperDB)');
|
|
104
|
+
}
|
|
105
|
+
if (error.match(/\/.*\//)) {
|
|
106
|
+
suggestions.push('Inline regex /pattern/ is not supported. Use string patterns: \'pattern\'');
|
|
107
|
+
}
|
|
108
|
+
if (error.includes('func')) {
|
|
109
|
+
suggestions.push('Did you mean "fn"? (func was renamed to fn in SuperDB)');
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
valid: false,
|
|
113
|
+
error,
|
|
114
|
+
diagnostics,
|
|
115
|
+
suggestions,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
valid: true,
|
|
120
|
+
error: null,
|
|
121
|
+
diagnostics,
|
|
122
|
+
suggestions,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Inspect schema/types of a file by finding unique shapes
|
|
127
|
+
*/
|
|
128
|
+
export async function superSchema(file) {
|
|
129
|
+
// Use aggregation to find unique shapes with counts and examples
|
|
130
|
+
const query = 'count(), any(this) by typeof(this) | sort -r count';
|
|
131
|
+
const result = await runSuper(['-j', '-c', query, file]);
|
|
132
|
+
if (result.exitCode !== 0) {
|
|
133
|
+
return {
|
|
134
|
+
success: false,
|
|
135
|
+
shapes: [],
|
|
136
|
+
totalRecords: 0,
|
|
137
|
+
error: result.stderr.trim() || 'Failed to read file',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
try {
|
|
141
|
+
const parsed = parseNDJSON(result.stdout);
|
|
142
|
+
const shapes = parsed.map(row => ({
|
|
143
|
+
type: row.typeof,
|
|
144
|
+
count: row.count,
|
|
145
|
+
example: row.any,
|
|
146
|
+
}));
|
|
147
|
+
const totalRecords = shapes.reduce((sum, s) => sum + s.count, 0);
|
|
148
|
+
return {
|
|
149
|
+
success: true,
|
|
150
|
+
shapes,
|
|
151
|
+
totalRecords,
|
|
152
|
+
error: null,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
return {
|
|
157
|
+
success: false,
|
|
158
|
+
shapes: [],
|
|
159
|
+
totalRecords: 0,
|
|
160
|
+
error: `Failed to parse output: ${e}`,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"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"}
|