@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.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=quoomb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quoomb.d.ts","sourceRoot":"","sources":["../../src/bin/quoomb.ts"],"names":[],"mappings":""}
@@ -0,0 +1,210 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { REPL } from '../repl.js';
4
+ import { Database } from '@quereus/quereus';
5
+ import { loadPluginsFromConfig, interpolateConfigEnvVars, validateConfig } from '@quereus/plugin-loader';
6
+ import chalk from 'chalk';
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ import Table from 'cli-table3';
11
+ const program = new Command();
12
+ program
13
+ .name('quoomb')
14
+ .description('Quoomb - Interactive REPL for Quereus SQL engine')
15
+ .version('0.0.1')
16
+ .option('-j, --json', 'output results as JSON instead of ASCII table')
17
+ .option('-f, --file <path>', 'execute SQL from file and exit')
18
+ .option('-c, --cmd <sql>', 'execute SQL command and exit')
19
+ .option('--config <path>', 'load configuration from file')
20
+ .option('--no-autoload', 'do not auto-load plugins from config')
21
+ .option('--no-color', 'disable colored output')
22
+ .action(async (options) => {
23
+ try {
24
+ if (options.file) {
25
+ await executeFile(options.file, options);
26
+ }
27
+ else if (options.cmd) {
28
+ await executeCommand(options.cmd, options);
29
+ }
30
+ else {
31
+ console.log(chalk.blue('Welcome to Quoomb - Quereus SQL REPL'));
32
+ console.log(chalk.gray('Type .help for available commands or enter SQL to execute'));
33
+ console.log(chalk.gray('Use Ctrl+C or .exit to quit\n'));
34
+ // Load config if available
35
+ let config = undefined;
36
+ const configPath = await resolveConfigPath(options.config);
37
+ if (configPath) {
38
+ try {
39
+ config = await loadConfigFile(configPath);
40
+ if (!validateConfig(config)) {
41
+ console.warn(chalk.yellow(`Warning: Invalid config file at ${configPath}`));
42
+ config = undefined;
43
+ }
44
+ else {
45
+ console.log(chalk.gray(`Loaded config from ${configPath}`));
46
+ }
47
+ }
48
+ catch (error) {
49
+ console.warn(chalk.yellow(`Warning: ${error instanceof Error ? error.message : 'Failed to load config'}`));
50
+ }
51
+ }
52
+ const repl = new REPL({ ...options, config, autoload: options.autoload !== false });
53
+ await repl.start();
54
+ }
55
+ }
56
+ catch (error) {
57
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
58
+ process.exit(1);
59
+ }
60
+ });
61
+ /**
62
+ * Resolve config file path following the resolution strategy
63
+ */
64
+ async function resolveConfigPath(configOption) {
65
+ // 1. --config CLI argument (highest priority)
66
+ if (configOption) {
67
+ return path.resolve(configOption);
68
+ }
69
+ // 2. QUOOMB_CONFIG environment variable
70
+ if (process.env.QUOOMB_CONFIG) {
71
+ return path.resolve(process.env.QUOOMB_CONFIG);
72
+ }
73
+ // 3. ./quoomb.config.json (current directory)
74
+ const cwd = process.cwd();
75
+ const cwdConfig = path.join(cwd, 'quoomb.config.json');
76
+ try {
77
+ await fs.access(cwdConfig);
78
+ return cwdConfig;
79
+ }
80
+ catch {
81
+ // File doesn't exist, continue
82
+ }
83
+ // 4. ~/.quoomb/config.json (user home directory)
84
+ const homeDir = os.homedir();
85
+ const homeConfig = path.join(homeDir, '.quoomb', 'config.json');
86
+ try {
87
+ await fs.access(homeConfig);
88
+ return homeConfig;
89
+ }
90
+ catch {
91
+ // File doesn't exist, continue
92
+ }
93
+ // 5. No config found
94
+ return null;
95
+ }
96
+ /**
97
+ * Load and parse config file
98
+ */
99
+ async function loadConfigFile(configPath) {
100
+ try {
101
+ const content = await fs.readFile(configPath, 'utf-8');
102
+ return JSON.parse(content);
103
+ }
104
+ catch (error) {
105
+ throw new Error(`Failed to load config from '${configPath}': ${error instanceof Error ? error.message : error}`);
106
+ }
107
+ }
108
+ async function executeFile(filePath, options) {
109
+ try {
110
+ const sql = await fs.readFile(filePath, 'utf-8');
111
+ await executeCommand(sql.trim(), options);
112
+ }
113
+ catch (error) {
114
+ throw new Error(`Failed to read file '${filePath}': ${error instanceof Error ? error.message : error}`);
115
+ }
116
+ }
117
+ async function executeCommand(sql, options) {
118
+ const db = new Database();
119
+ const startTime = Date.now();
120
+ try {
121
+ // Load config and plugins if available
122
+ const configPath = await resolveConfigPath(options.config);
123
+ if (configPath) {
124
+ try {
125
+ const config = await loadConfigFile(configPath);
126
+ if (validateConfig(config)) {
127
+ const interpolatedConfig = interpolateConfigEnvVars(config);
128
+ if (interpolatedConfig.autoload !== false && options.autoload !== false) {
129
+ await loadPluginsFromConfig(db, interpolatedConfig);
130
+ }
131
+ }
132
+ }
133
+ catch (error) {
134
+ console.warn(chalk.yellow(`Warning: ${error instanceof Error ? error.message : 'Failed to load config'}`));
135
+ }
136
+ }
137
+ // Check if this is a query that returns results
138
+ const trimmedSql = sql.trim().toLowerCase();
139
+ if (trimmedSql.startsWith('select') || trimmedSql.startsWith('with')) {
140
+ const results = [];
141
+ for await (const row of db.eval(sql)) {
142
+ results.push(row);
143
+ }
144
+ const endTime = Date.now();
145
+ if (options.json) {
146
+ console.log(JSON.stringify(results, null, 2));
147
+ }
148
+ else {
149
+ printTable(results, options);
150
+ }
151
+ if (options.color !== false) {
152
+ console.error(chalk.gray(`${results.length} row(s) (${endTime - startTime}ms)`));
153
+ }
154
+ else {
155
+ console.error(`${results.length} row(s) (${endTime - startTime}ms)`);
156
+ }
157
+ }
158
+ else {
159
+ // Execute statement without expecting results
160
+ await db.exec(sql);
161
+ const endTime = Date.now();
162
+ if (options.color !== false) {
163
+ console.error(chalk.green(`Query executed successfully (${endTime - startTime}ms)`));
164
+ }
165
+ else {
166
+ console.error(`Query executed successfully (${endTime - startTime}ms)`);
167
+ }
168
+ }
169
+ }
170
+ catch (error) {
171
+ const endTime = Date.now();
172
+ if (options.color !== false) {
173
+ console.error(chalk.red(`Query failed (${endTime - startTime}ms)`));
174
+ }
175
+ else {
176
+ console.error(`Query failed (${endTime - startTime}ms)`);
177
+ }
178
+ throw error;
179
+ }
180
+ finally {
181
+ await db.close();
182
+ }
183
+ }
184
+ function printTable(results, options) {
185
+ if (results.length === 0) {
186
+ console.log(options.color !== false ? chalk.yellow('No rows returned') : 'No rows returned');
187
+ return;
188
+ }
189
+ const columns = Object.keys(results[0]);
190
+ const table = new Table({
191
+ head: columns.map(col => options.color !== false ? chalk.cyan(col) : col),
192
+ style: {
193
+ head: options.color !== false ? ['cyan'] : []
194
+ }
195
+ });
196
+ for (const row of results) {
197
+ const values = columns.map(col => {
198
+ const value = row[col];
199
+ if (value === null)
200
+ return options.color !== false ? chalk.gray('NULL') : 'NULL';
201
+ if (typeof value === 'string')
202
+ return value;
203
+ return String(value);
204
+ });
205
+ table.push(values);
206
+ }
207
+ console.log(table.toString());
208
+ }
209
+ program.parse();
210
+ //# sourceMappingURL=quoomb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quoomb.js","sourceRoot":"","sources":["../../src/bin/quoomb.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Database } from '@quereus/quereus';
2
+ export declare class DotCommands {
3
+ private db;
4
+ constructor(db: Database);
5
+ handle(command: string, rl: any): Promise<boolean>;
6
+ private printHelp;
7
+ listTables(): Promise<void>;
8
+ showSchema(tableName?: string): Promise<void>;
9
+ importCsv(filePath: string): Promise<void>;
10
+ exportQuery(sql: string, outputPath: string): Promise<void>;
11
+ }
12
+ export declare const handleDotCommand: (line: string, db: Database, readlineInterface: any) => Promise<boolean>;
13
+ export declare const loadEnabledPlugins: (db: Database) => Promise<void>;
14
+ //# sourceMappingURL=dot-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dot-commands.d.ts","sourceRoot":"","sources":["../../src/commands/dot-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAY5C,qBAAa,WAAW;IACV,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAE1B,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IA+BxD,OAAO,CAAC,SAAS;IA+BX,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoE7C,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0F1C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAmClE;AAED,eAAO,MAAM,gBAAgB,GAC3B,MAAM,MAAM,EACZ,IAAI,QAAQ,EACZ,mBAAmB,GAAG,KACrB,OAAO,CAAC,OAAO,CAYjB,CAAC;AAkWF,eAAO,MAAM,kBAAkB,GAAU,IAAI,QAAQ,KAAG,OAAO,CAAC,IAAI,CAqBnE,CAAC"}