@quereus/quoomb-cli 0.1.2 → 0.1.4
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/bin/quoomb.d.ts +3 -0
- package/dist/bin/quoomb.d.ts.map +1 -0
- package/dist/bin/quoomb.js +210 -0
- package/dist/bin/quoomb.js.map +1 -0
- package/dist/commands/dot-commands.d.ts +14 -0
- package/dist/commands/dot-commands.d.ts.map +1 -0
- package/dist/commands/dot-commands.js +610 -0
- package/dist/commands/dot-commands.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/repl.d.ts +26 -0
- package/dist/repl.d.ts.map +1 -0
- package/dist/repl.js +288 -0
- package/dist/repl.js.map +1 -0
- package/package.json +49 -49
package/dist/repl.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type QuoombConfig } from '@quereus/plugin-loader';
|
|
2
|
+
interface REPLOptions {
|
|
3
|
+
json?: boolean;
|
|
4
|
+
color?: boolean;
|
|
5
|
+
config?: QuoombConfig;
|
|
6
|
+
autoload?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare class REPL {
|
|
9
|
+
private db;
|
|
10
|
+
private rl;
|
|
11
|
+
private dotCommands;
|
|
12
|
+
private options;
|
|
13
|
+
constructor(options?: REPLOptions);
|
|
14
|
+
private getPrompt;
|
|
15
|
+
private setupSignalHandlers;
|
|
16
|
+
start(): Promise<void>;
|
|
17
|
+
private completer;
|
|
18
|
+
private printResults;
|
|
19
|
+
private printTable;
|
|
20
|
+
private printError;
|
|
21
|
+
private printHelp;
|
|
22
|
+
close(): void;
|
|
23
|
+
private printEnhancedError;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=repl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAM5H,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,EAAE,CAAW;IACrB,OAAO,CAAC,EAAE,CAAqB;IAC/B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,OAAO,CAAc;gBAEjB,OAAO,GAAE,WAAgB;IAerC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,mBAAmB;IAOrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkF5B,OAAO,CAAC,SAAS;IAmDjB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IAwBlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,SAAS;IAuBjB,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,kBAAkB;CA2D3B"}
|
package/dist/repl.js
ADDED
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import * as readline from 'readline';
|
|
2
|
+
import { Database, formatErrorChain, unwrapError } from '@quereus/quereus';
|
|
3
|
+
import { loadPluginsFromConfig, interpolateConfigEnvVars } from '@quereus/plugin-loader';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import Table from 'cli-table3';
|
|
6
|
+
import { DotCommands } from './commands/dot-commands.js';
|
|
7
|
+
import { handleDotCommand, loadEnabledPlugins } from './commands/dot-commands.js';
|
|
8
|
+
export class REPL {
|
|
9
|
+
db;
|
|
10
|
+
rl;
|
|
11
|
+
dotCommands;
|
|
12
|
+
options;
|
|
13
|
+
constructor(options = {}) {
|
|
14
|
+
this.options = { color: true, autoload: true, ...options };
|
|
15
|
+
this.db = new Database();
|
|
16
|
+
this.dotCommands = new DotCommands(this.db);
|
|
17
|
+
this.rl = readline.createInterface({
|
|
18
|
+
input: process.stdin,
|
|
19
|
+
output: process.stdout,
|
|
20
|
+
prompt: this.getPrompt(),
|
|
21
|
+
completer: this.completer.bind(this)
|
|
22
|
+
});
|
|
23
|
+
this.setupSignalHandlers();
|
|
24
|
+
}
|
|
25
|
+
getPrompt() {
|
|
26
|
+
return this.options.color ? chalk.green('quoomb> ') : 'quoomb> ';
|
|
27
|
+
}
|
|
28
|
+
setupSignalHandlers() {
|
|
29
|
+
this.rl.on('SIGINT', () => {
|
|
30
|
+
console.log('\nReceived SIGINT. Use .exit to quit.');
|
|
31
|
+
this.rl.prompt();
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async start() {
|
|
35
|
+
console.log('🚀 Quoomb Interactive SQL Shell');
|
|
36
|
+
console.log('Type .help for available commands, or enter SQL statements');
|
|
37
|
+
console.log('');
|
|
38
|
+
// Load plugins from config if provided and autoload is enabled
|
|
39
|
+
if (this.options.config && this.options.autoload !== false) {
|
|
40
|
+
try {
|
|
41
|
+
const config = interpolateConfigEnvVars(this.options.config);
|
|
42
|
+
if (config.autoload !== false) {
|
|
43
|
+
await loadPluginsFromConfig(this.db, config);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.log(`Warning: Error loading plugins from config: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Load enabled plugins at startup (from legacy plugin storage)
|
|
51
|
+
try {
|
|
52
|
+
await loadEnabledPlugins(this.db);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.log(`Warning: Error loading plugins: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
56
|
+
}
|
|
57
|
+
this.rl.prompt();
|
|
58
|
+
this.rl.on('line', async (line) => {
|
|
59
|
+
const trimmed = line.trim();
|
|
60
|
+
if (!trimmed) {
|
|
61
|
+
this.rl.prompt();
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Handle dot commands
|
|
65
|
+
if (trimmed.startsWith('.')) {
|
|
66
|
+
try {
|
|
67
|
+
// Check if it's a plugin command first
|
|
68
|
+
if (trimmed.startsWith('.plugin')) {
|
|
69
|
+
await handleDotCommand(trimmed, this.db, this.rl);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// Use existing dot commands handler
|
|
73
|
+
const handled = await this.dotCommands.handle(trimmed, this.rl);
|
|
74
|
+
if (!handled) {
|
|
75
|
+
console.log(`Unknown command: ${trimmed}`);
|
|
76
|
+
console.log('Type .help for available commands');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
this.printEnhancedError(error);
|
|
82
|
+
}
|
|
83
|
+
this.rl.prompt();
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// Handle SQL
|
|
87
|
+
try {
|
|
88
|
+
const results = [];
|
|
89
|
+
for await (const row of this.db.eval(trimmed)) {
|
|
90
|
+
results.push(row);
|
|
91
|
+
}
|
|
92
|
+
if (results.length > 0) {
|
|
93
|
+
console.table(results);
|
|
94
|
+
console.log(`\n${results.length} row(s) returned\n`);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
console.log('Query executed successfully\n');
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
this.printEnhancedError(error);
|
|
102
|
+
}
|
|
103
|
+
this.rl.prompt();
|
|
104
|
+
});
|
|
105
|
+
this.rl.on('close', () => {
|
|
106
|
+
console.log('\nGoodbye! 👋');
|
|
107
|
+
this.db.close();
|
|
108
|
+
process.exit(0);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
completer(line) {
|
|
112
|
+
const hits = [];
|
|
113
|
+
// Dot command completion
|
|
114
|
+
if (line.startsWith('.')) {
|
|
115
|
+
const dotCommands = [
|
|
116
|
+
'.help',
|
|
117
|
+
'.tables',
|
|
118
|
+
'.schema',
|
|
119
|
+
'.dump',
|
|
120
|
+
'.read',
|
|
121
|
+
'.exit',
|
|
122
|
+
'.plugin',
|
|
123
|
+
'.plugin install',
|
|
124
|
+
'.plugin list',
|
|
125
|
+
'.plugin enable',
|
|
126
|
+
'.plugin disable',
|
|
127
|
+
'.plugin remove',
|
|
128
|
+
'.plugin config',
|
|
129
|
+
'.plugin reload'
|
|
130
|
+
];
|
|
131
|
+
for (const cmd of dotCommands) {
|
|
132
|
+
if (cmd.startsWith(line)) {
|
|
133
|
+
hits.push(cmd);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
// SQL keyword completion
|
|
139
|
+
const sqlKeywords = [
|
|
140
|
+
'SELECT', 'FROM', 'WHERE', 'INSERT', 'UPDATE', 'DELETE',
|
|
141
|
+
'CREATE', 'DROP', 'ALTER', 'TABLE', 'INDEX', 'VIEW',
|
|
142
|
+
'JOIN', 'INNER', 'LEFT', 'RIGHT', 'OUTER', 'ON',
|
|
143
|
+
'GROUP BY', 'ORDER BY', 'HAVING', 'LIMIT', 'OFFSET',
|
|
144
|
+
'AND', 'OR', 'NOT', 'NULL', 'IS', 'IN', 'EXISTS',
|
|
145
|
+
'COUNT', 'SUM', 'AVG', 'MIN', 'MAX', 'DISTINCT'
|
|
146
|
+
];
|
|
147
|
+
const upperLine = line.toUpperCase();
|
|
148
|
+
const lastWord = line.split(/\s+/).pop()?.toUpperCase() || '';
|
|
149
|
+
for (const keyword of sqlKeywords) {
|
|
150
|
+
if (keyword.startsWith(lastWord)) {
|
|
151
|
+
hits.push(line.slice(0, -lastWord.length) + keyword);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return [hits, line];
|
|
156
|
+
}
|
|
157
|
+
printResults(results, executionTime) {
|
|
158
|
+
if (results.length === 0) {
|
|
159
|
+
console.log(chalk.yellow('No rows returned'));
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
if (this.options.json) {
|
|
163
|
+
console.log(JSON.stringify(results, null, 2));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
this.printTable(results);
|
|
167
|
+
}
|
|
168
|
+
console.log(chalk.gray(`\n${results.length} row(s) (${executionTime}ms)`));
|
|
169
|
+
}
|
|
170
|
+
printTable(results) {
|
|
171
|
+
if (results.length === 0)
|
|
172
|
+
return;
|
|
173
|
+
const columns = Object.keys(results[0]);
|
|
174
|
+
const table = new Table({
|
|
175
|
+
head: columns.map(col => this.options.color ? chalk.cyan(col) : col),
|
|
176
|
+
style: {
|
|
177
|
+
head: this.options.color ? ['cyan'] : []
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
for (const row of results) {
|
|
181
|
+
const values = columns.map(col => {
|
|
182
|
+
const value = row[col];
|
|
183
|
+
if (value === null)
|
|
184
|
+
return this.options.color ? chalk.gray('NULL') : 'NULL';
|
|
185
|
+
if (typeof value === 'string')
|
|
186
|
+
return value;
|
|
187
|
+
return String(value);
|
|
188
|
+
});
|
|
189
|
+
table.push(values);
|
|
190
|
+
}
|
|
191
|
+
console.log(table.toString());
|
|
192
|
+
}
|
|
193
|
+
printError(error) {
|
|
194
|
+
if (this.options.color) {
|
|
195
|
+
console.error(chalk.red('Error:'), error.message || error);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
console.error('Error:', error.message || error);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
printHelp() {
|
|
202
|
+
const help = `
|
|
203
|
+
Available commands:
|
|
204
|
+
.help Show this help message
|
|
205
|
+
.exit, .quit Exit the REPL
|
|
206
|
+
.tables List all tables
|
|
207
|
+
.schema [table] Show table schema
|
|
208
|
+
.import <file.csv> Import CSV file as table
|
|
209
|
+
.export <sql> <file> Export query results to file
|
|
210
|
+
|
|
211
|
+
SQL commands:
|
|
212
|
+
Enter any SQL statement to execute it
|
|
213
|
+
|
|
214
|
+
Examples:
|
|
215
|
+
CREATE TABLE users (id INTEGER, name TEXT);
|
|
216
|
+
INSERT INTO users VALUES (1, 'Alice');
|
|
217
|
+
SELECT * FROM users;
|
|
218
|
+
.import data.csv
|
|
219
|
+
.export "SELECT * FROM users" output.json
|
|
220
|
+
`;
|
|
221
|
+
console.log(this.options.color ? chalk.yellow(help) : help);
|
|
222
|
+
}
|
|
223
|
+
close() {
|
|
224
|
+
this.rl.close();
|
|
225
|
+
}
|
|
226
|
+
printEnhancedError(error) {
|
|
227
|
+
if (this.options.color) {
|
|
228
|
+
console.error(chalk.red('━'.repeat(60)));
|
|
229
|
+
console.error(chalk.red.bold('SQL ERROR'));
|
|
230
|
+
console.error(chalk.red('━'.repeat(60)));
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
console.error('━'.repeat(60));
|
|
234
|
+
console.error('SQL ERROR');
|
|
235
|
+
console.error('━'.repeat(60));
|
|
236
|
+
}
|
|
237
|
+
if (error instanceof Error) {
|
|
238
|
+
const errorChain = unwrapError(error);
|
|
239
|
+
if (errorChain.length > 1) {
|
|
240
|
+
// Multiple errors in chain - show formatted chain
|
|
241
|
+
const formattedChain = formatErrorChain(errorChain, false);
|
|
242
|
+
if (this.options.color) {
|
|
243
|
+
// Colorize the error chain
|
|
244
|
+
const colorized = formattedChain
|
|
245
|
+
.replace(/^Error: (.*)$/gm, chalk.red.bold('Error: ') + chalk.red('$1'))
|
|
246
|
+
.replace(/^Caused by: (.*)$/gm, chalk.yellow.bold('Caused by: ') + chalk.yellow('$1'))
|
|
247
|
+
.replace(/\(at line (\d+), column (\d+)\)/g, chalk.cyan('(at line $1, column $2)'));
|
|
248
|
+
console.error(colorized);
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
console.error(formattedChain);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// Single error - use simpler format
|
|
256
|
+
const errorInfo = errorChain[0];
|
|
257
|
+
let message = errorInfo?.message || error.message;
|
|
258
|
+
if (errorInfo?.line && errorInfo?.column) {
|
|
259
|
+
message += ` (at line ${errorInfo.line}, column ${errorInfo.column})`;
|
|
260
|
+
}
|
|
261
|
+
if (this.options.color) {
|
|
262
|
+
console.error(chalk.red(message));
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
console.error(message);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
else {
|
|
270
|
+
// Fallback for non-Error objects
|
|
271
|
+
const message = typeof error === 'string' ? error : String(error);
|
|
272
|
+
if (this.options.color) {
|
|
273
|
+
console.error(chalk.red(message));
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
console.error(message);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
if (this.options.color) {
|
|
280
|
+
console.error(chalk.red('━'.repeat(60)));
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
console.error('━'.repeat(60));
|
|
284
|
+
}
|
|
285
|
+
console.error('');
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=repl.js.map
|
package/dist/repl.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@quereus/quoomb-cli",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"description": "Quoomb CLI - Interactive REPL for Quereus SQL engine",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"main": "dist/index.js",
|
|
8
|
-
"types": "./dist/index.d.ts",
|
|
9
|
-
"bin": {
|
|
10
|
-
"quoomb": "./dist/bin/quoomb.js"
|
|
11
|
-
},
|
|
12
|
-
"files": [
|
|
13
|
-
"dist",
|
|
14
|
-
"!**/*.tsbuildinfo"
|
|
15
|
-
],
|
|
16
|
-
"exports": {
|
|
17
|
-
".": {
|
|
18
|
-
"types": "./dist/index.d.ts",
|
|
19
|
-
"import": "./dist/index.js"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"scripts": {
|
|
23
|
-
"clean": "rimraf dist",
|
|
24
|
-
"build": "tsc",
|
|
25
|
-
"dev": "tsc && node dist/bin/quoomb.js",
|
|
26
|
-
"lint": "eslint src/**/*.ts",
|
|
27
|
-
"test": "vitest",
|
|
28
|
-
"prepublish": "npm run build"
|
|
29
|
-
},
|
|
30
|
-
"devDependencies": {
|
|
31
|
-
"@types/node": "^22.15.29",
|
|
32
|
-
"@typescript-eslint/eslint-plugin": "^8.33.0",
|
|
33
|
-
"@typescript-eslint/parser": "^8.33.0",
|
|
34
|
-
"eslint": "^9.28.0",
|
|
35
|
-
"rimraf": "^6.1.2",
|
|
36
|
-
"tsx": "^4.19.4",
|
|
37
|
-
"typescript": "^5.8.3",
|
|
38
|
-
"vitest": "^3.1.4"
|
|
39
|
-
},
|
|
40
|
-
"dependencies": {
|
|
41
|
-
"@quereus/plugin-loader": "
|
|
42
|
-
"@quereus/quereus": "
|
|
43
|
-
"chalk": "^5.4.1",
|
|
44
|
-
"cli-table3": "^0.6.5",
|
|
45
|
-
"commander": "^14.0.0",
|
|
46
|
-
"papaparse": "^5.5.3",
|
|
47
|
-
"readline": "^1.3.0"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@quereus/quoomb-cli",
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Quoomb CLI - Interactive REPL for Quereus SQL engine",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"bin": {
|
|
10
|
+
"quoomb": "./dist/bin/quoomb.js"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist",
|
|
14
|
+
"!**/*.tsbuildinfo"
|
|
15
|
+
],
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"import": "./dist/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"clean": "rimraf dist",
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"dev": "tsc && node dist/bin/quoomb.js",
|
|
26
|
+
"lint": "eslint src/**/*.ts",
|
|
27
|
+
"test": "vitest",
|
|
28
|
+
"prepublish": "npm run build"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "^22.15.29",
|
|
32
|
+
"@typescript-eslint/eslint-plugin": "^8.33.0",
|
|
33
|
+
"@typescript-eslint/parser": "^8.33.0",
|
|
34
|
+
"eslint": "^9.28.0",
|
|
35
|
+
"rimraf": "^6.1.2",
|
|
36
|
+
"tsx": "^4.19.4",
|
|
37
|
+
"typescript": "^5.8.3",
|
|
38
|
+
"vitest": "^3.1.4"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@quereus/plugin-loader": "^0.1.10",
|
|
42
|
+
"@quereus/quereus": "^0.8.8",
|
|
43
|
+
"chalk": "^5.4.1",
|
|
44
|
+
"cli-table3": "^0.6.5",
|
|
45
|
+
"commander": "^14.0.0",
|
|
46
|
+
"papaparse": "^5.5.3",
|
|
47
|
+
"readline": "^1.3.0"
|
|
48
|
+
}
|
|
49
|
+
}
|