clawsql 0.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 (311) hide show
  1. package/.env.example +97 -0
  2. package/README.md +372 -0
  3. package/dist/__tests__/config/settings.test.d.ts +5 -0
  4. package/dist/__tests__/config/settings.test.d.ts.map +1 -0
  5. package/dist/__tests__/config/settings.test.js +154 -0
  6. package/dist/__tests__/config/settings.test.js.map +1 -0
  7. package/dist/__tests__/core/discovery/topology.test.d.ts +5 -0
  8. package/dist/__tests__/core/discovery/topology.test.d.ts.map +1 -0
  9. package/dist/__tests__/core/discovery/topology.test.js +191 -0
  10. package/dist/__tests__/core/discovery/topology.test.js.map +1 -0
  11. package/dist/__tests__/core/failover/executor.test.d.ts +5 -0
  12. package/dist/__tests__/core/failover/executor.test.d.ts.map +1 -0
  13. package/dist/__tests__/core/failover/executor.test.js +256 -0
  14. package/dist/__tests__/core/failover/executor.test.js.map +1 -0
  15. package/dist/__tests__/core/monitoring/collector.test.d.ts +5 -0
  16. package/dist/__tests__/core/monitoring/collector.test.d.ts.map +1 -0
  17. package/dist/__tests__/core/monitoring/collector.test.js +131 -0
  18. package/dist/__tests__/core/monitoring/collector.test.js.map +1 -0
  19. package/dist/__tests__/core/monitoring/exporters.test.d.ts +5 -0
  20. package/dist/__tests__/core/monitoring/exporters.test.d.ts.map +1 -0
  21. package/dist/__tests__/core/monitoring/exporters.test.js +90 -0
  22. package/dist/__tests__/core/monitoring/exporters.test.js.map +1 -0
  23. package/dist/__tests__/core/routing/proxysql-manager.test.d.ts +5 -0
  24. package/dist/__tests__/core/routing/proxysql-manager.test.d.ts.map +1 -0
  25. package/dist/__tests__/core/routing/proxysql-manager.test.js +155 -0
  26. package/dist/__tests__/core/routing/proxysql-manager.test.js.map +1 -0
  27. package/dist/__tests__/types/index.test.d.ts +5 -0
  28. package/dist/__tests__/types/index.test.d.ts.map +1 -0
  29. package/dist/__tests__/types/index.test.js +290 -0
  30. package/dist/__tests__/types/index.test.js.map +1 -0
  31. package/dist/__tests__/utils/exceptions.test.d.ts +5 -0
  32. package/dist/__tests__/utils/exceptions.test.d.ts.map +1 -0
  33. package/dist/__tests__/utils/exceptions.test.js +142 -0
  34. package/dist/__tests__/utils/exceptions.test.js.map +1 -0
  35. package/dist/api/routes/clusters.d.ts +7 -0
  36. package/dist/api/routes/clusters.d.ts.map +1 -0
  37. package/dist/api/routes/clusters.js +123 -0
  38. package/dist/api/routes/clusters.js.map +1 -0
  39. package/dist/api/routes/config.d.ts +7 -0
  40. package/dist/api/routes/config.d.ts.map +1 -0
  41. package/dist/api/routes/config.js +65 -0
  42. package/dist/api/routes/config.js.map +1 -0
  43. package/dist/api/routes/failover.d.ts +7 -0
  44. package/dist/api/routes/failover.d.ts.map +1 -0
  45. package/dist/api/routes/failover.js +100 -0
  46. package/dist/api/routes/failover.js.map +1 -0
  47. package/dist/api/routes/instances.d.ts +11 -0
  48. package/dist/api/routes/instances.d.ts.map +1 -0
  49. package/dist/api/routes/instances.js +315 -0
  50. package/dist/api/routes/instances.js.map +1 -0
  51. package/dist/api/routes/monitoring.d.ts +7 -0
  52. package/dist/api/routes/monitoring.d.ts.map +1 -0
  53. package/dist/api/routes/monitoring.js +72 -0
  54. package/dist/api/routes/monitoring.js.map +1 -0
  55. package/dist/api/routes/webhooks.d.ts +12 -0
  56. package/dist/api/routes/webhooks.d.ts.map +1 -0
  57. package/dist/api/routes/webhooks.js +232 -0
  58. package/dist/api/routes/webhooks.js.map +1 -0
  59. package/dist/api/schemas/index.d.ts +965 -0
  60. package/dist/api/schemas/index.d.ts.map +1 -0
  61. package/dist/api/schemas/index.js +171 -0
  62. package/dist/api/schemas/index.js.map +1 -0
  63. package/dist/app.d.ts +13 -0
  64. package/dist/app.d.ts.map +1 -0
  65. package/dist/app.js +197 -0
  66. package/dist/app.js.map +1 -0
  67. package/dist/bin/clawsql.d.ts +12 -0
  68. package/dist/bin/clawsql.d.ts.map +1 -0
  69. package/dist/bin/clawsql.js +43 -0
  70. package/dist/bin/clawsql.js.map +1 -0
  71. package/dist/cli/agent/handler.d.ts +73 -0
  72. package/dist/cli/agent/handler.d.ts.map +1 -0
  73. package/dist/cli/agent/handler.js +258 -0
  74. package/dist/cli/agent/handler.js.map +1 -0
  75. package/dist/cli/agent/index.d.ts +14 -0
  76. package/dist/cli/agent/index.d.ts.map +1 -0
  77. package/dist/cli/agent/index.js +30 -0
  78. package/dist/cli/agent/index.js.map +1 -0
  79. package/dist/cli/agent/openclaw-integration.d.ts +81 -0
  80. package/dist/cli/agent/openclaw-integration.d.ts.map +1 -0
  81. package/dist/cli/agent/openclaw-integration.js +341 -0
  82. package/dist/cli/agent/openclaw-integration.js.map +1 -0
  83. package/dist/cli/agent/providers/anthropic.d.ts +27 -0
  84. package/dist/cli/agent/providers/anthropic.d.ts.map +1 -0
  85. package/dist/cli/agent/providers/anthropic.js +106 -0
  86. package/dist/cli/agent/providers/anthropic.js.map +1 -0
  87. package/dist/cli/agent/providers/base.d.ts +91 -0
  88. package/dist/cli/agent/providers/base.d.ts.map +1 -0
  89. package/dist/cli/agent/providers/base.js +24 -0
  90. package/dist/cli/agent/providers/base.js.map +1 -0
  91. package/dist/cli/agent/providers/openai.d.ts +27 -0
  92. package/dist/cli/agent/providers/openai.d.ts.map +1 -0
  93. package/dist/cli/agent/providers/openai.js +98 -0
  94. package/dist/cli/agent/providers/openai.js.map +1 -0
  95. package/dist/cli/agent/tools/index.d.ts +32 -0
  96. package/dist/cli/agent/tools/index.d.ts.map +1 -0
  97. package/dist/cli/agent/tools/index.js +263 -0
  98. package/dist/cli/agent/tools/index.js.map +1 -0
  99. package/dist/cli/commands/cleanup.d.ts +12 -0
  100. package/dist/cli/commands/cleanup.d.ts.map +1 -0
  101. package/dist/cli/commands/cleanup.js +205 -0
  102. package/dist/cli/commands/cleanup.js.map +1 -0
  103. package/dist/cli/commands/clusters.d.ts +12 -0
  104. package/dist/cli/commands/clusters.d.ts.map +1 -0
  105. package/dist/cli/commands/clusters.js +468 -0
  106. package/dist/cli/commands/clusters.js.map +1 -0
  107. package/dist/cli/commands/config.d.ts +12 -0
  108. package/dist/cli/commands/config.d.ts.map +1 -0
  109. package/dist/cli/commands/config.js +406 -0
  110. package/dist/cli/commands/config.js.map +1 -0
  111. package/dist/cli/commands/cron.d.ts +12 -0
  112. package/dist/cli/commands/cron.d.ts.map +1 -0
  113. package/dist/cli/commands/cron.js +215 -0
  114. package/dist/cli/commands/cron.js.map +1 -0
  115. package/dist/cli/commands/doctor.d.ts +13 -0
  116. package/dist/cli/commands/doctor.d.ts.map +1 -0
  117. package/dist/cli/commands/doctor.js +687 -0
  118. package/dist/cli/commands/doctor.js.map +1 -0
  119. package/dist/cli/commands/failover.d.ts +16 -0
  120. package/dist/cli/commands/failover.d.ts.map +1 -0
  121. package/dist/cli/commands/failover.js +333 -0
  122. package/dist/cli/commands/failover.js.map +1 -0
  123. package/dist/cli/commands/health.d.ts +12 -0
  124. package/dist/cli/commands/health.d.ts.map +1 -0
  125. package/dist/cli/commands/health.js +125 -0
  126. package/dist/cli/commands/health.js.map +1 -0
  127. package/dist/cli/commands/help.d.ts +12 -0
  128. package/dist/cli/commands/help.d.ts.map +1 -0
  129. package/dist/cli/commands/help.js +52 -0
  130. package/dist/cli/commands/help.js.map +1 -0
  131. package/dist/cli/commands/instances.d.ts +12 -0
  132. package/dist/cli/commands/instances.d.ts.map +1 -0
  133. package/dist/cli/commands/instances.js +801 -0
  134. package/dist/cli/commands/instances.js.map +1 -0
  135. package/dist/cli/commands/notify.d.ts +12 -0
  136. package/dist/cli/commands/notify.d.ts.map +1 -0
  137. package/dist/cli/commands/notify.js +43 -0
  138. package/dist/cli/commands/notify.js.map +1 -0
  139. package/dist/cli/commands/sql.d.ts +12 -0
  140. package/dist/cli/commands/sql.d.ts.map +1 -0
  141. package/dist/cli/commands/sql.js +90 -0
  142. package/dist/cli/commands/sql.js.map +1 -0
  143. package/dist/cli/commands/start.d.ts +12 -0
  144. package/dist/cli/commands/start.d.ts.map +1 -0
  145. package/dist/cli/commands/start.js +174 -0
  146. package/dist/cli/commands/start.js.map +1 -0
  147. package/dist/cli/commands/status.d.ts +12 -0
  148. package/dist/cli/commands/status.d.ts.map +1 -0
  149. package/dist/cli/commands/status.js +218 -0
  150. package/dist/cli/commands/status.js.map +1 -0
  151. package/dist/cli/commands/stop.d.ts +12 -0
  152. package/dist/cli/commands/stop.d.ts.map +1 -0
  153. package/dist/cli/commands/stop.js +128 -0
  154. package/dist/cli/commands/stop.js.map +1 -0
  155. package/dist/cli/commands/topology.d.ts +12 -0
  156. package/dist/cli/commands/topology.d.ts.map +1 -0
  157. package/dist/cli/commands/topology.js +106 -0
  158. package/dist/cli/commands/topology.js.map +1 -0
  159. package/dist/cli/completer.d.ts +47 -0
  160. package/dist/cli/completer.d.ts.map +1 -0
  161. package/dist/cli/completer.js +332 -0
  162. package/dist/cli/completer.js.map +1 -0
  163. package/dist/cli/formatter.d.ts +165 -0
  164. package/dist/cli/formatter.d.ts.map +1 -0
  165. package/dist/cli/formatter.js +408 -0
  166. package/dist/cli/formatter.js.map +1 -0
  167. package/dist/cli/index.d.ts +21 -0
  168. package/dist/cli/index.d.ts.map +1 -0
  169. package/dist/cli/index.js +79 -0
  170. package/dist/cli/index.js.map +1 -0
  171. package/dist/cli/raw-input.d.ts +97 -0
  172. package/dist/cli/raw-input.d.ts.map +1 -0
  173. package/dist/cli/raw-input.js +493 -0
  174. package/dist/cli/raw-input.js.map +1 -0
  175. package/dist/cli/registry.d.ts +103 -0
  176. package/dist/cli/registry.d.ts.map +1 -0
  177. package/dist/cli/registry.js +205 -0
  178. package/dist/cli/registry.js.map +1 -0
  179. package/dist/cli/repl.d.ts +83 -0
  180. package/dist/cli/repl.d.ts.map +1 -0
  181. package/dist/cli/repl.js +447 -0
  182. package/dist/cli/repl.js.map +1 -0
  183. package/dist/cli/ui/components.d.ts +144 -0
  184. package/dist/cli/ui/components.d.ts.map +1 -0
  185. package/dist/cli/ui/components.js +331 -0
  186. package/dist/cli/ui/components.js.map +1 -0
  187. package/dist/cli/ui/index.d.ts +7 -0
  188. package/dist/cli/ui/index.d.ts.map +1 -0
  189. package/dist/cli/ui/index.js +23 -0
  190. package/dist/cli/ui/index.js.map +1 -0
  191. package/dist/cli/utils/docker-files.d.ts +39 -0
  192. package/dist/cli/utils/docker-files.d.ts.map +1 -0
  193. package/dist/cli/utils/docker-files.js +223 -0
  194. package/dist/cli/utils/docker-files.js.map +1 -0
  195. package/dist/cli/utils/docker-prereq.d.ts +48 -0
  196. package/dist/cli/utils/docker-prereq.d.ts.map +1 -0
  197. package/dist/cli/utils/docker-prereq.js +203 -0
  198. package/dist/cli/utils/docker-prereq.js.map +1 -0
  199. package/dist/config/settings.d.ts +594 -0
  200. package/dist/config/settings.d.ts.map +1 -0
  201. package/dist/config/settings.js +250 -0
  202. package/dist/config/settings.js.map +1 -0
  203. package/dist/core/discovery/cluster-view.d.ts +50 -0
  204. package/dist/core/discovery/cluster-view.d.ts.map +1 -0
  205. package/dist/core/discovery/cluster-view.js +235 -0
  206. package/dist/core/discovery/cluster-view.js.map +1 -0
  207. package/dist/core/discovery/scanner.d.ts +70 -0
  208. package/dist/core/discovery/scanner.d.ts.map +1 -0
  209. package/dist/core/discovery/scanner.js +197 -0
  210. package/dist/core/discovery/scanner.js.map +1 -0
  211. package/dist/core/discovery/topology.d.ts +118 -0
  212. package/dist/core/discovery/topology.d.ts.map +1 -0
  213. package/dist/core/discovery/topology.js +550 -0
  214. package/dist/core/discovery/topology.js.map +1 -0
  215. package/dist/core/failover/candidate-selector.d.ts +46 -0
  216. package/dist/core/failover/candidate-selector.d.ts.map +1 -0
  217. package/dist/core/failover/candidate-selector.js +70 -0
  218. package/dist/core/failover/candidate-selector.js.map +1 -0
  219. package/dist/core/failover/executor.d.ts +104 -0
  220. package/dist/core/failover/executor.d.ts.map +1 -0
  221. package/dist/core/failover/executor.js +248 -0
  222. package/dist/core/failover/executor.js.map +1 -0
  223. package/dist/core/failover/operation-builder.d.ts +71 -0
  224. package/dist/core/failover/operation-builder.d.ts.map +1 -0
  225. package/dist/core/failover/operation-builder.js +157 -0
  226. package/dist/core/failover/operation-builder.js.map +1 -0
  227. package/dist/core/failover/operation-runner.d.ts +75 -0
  228. package/dist/core/failover/operation-runner.d.ts.map +1 -0
  229. package/dist/core/failover/operation-runner.js +191 -0
  230. package/dist/core/failover/operation-runner.js.map +1 -0
  231. package/dist/core/failover/promoter.d.ts +33 -0
  232. package/dist/core/failover/promoter.d.ts.map +1 -0
  233. package/dist/core/failover/promoter.js +97 -0
  234. package/dist/core/failover/promoter.js.map +1 -0
  235. package/dist/core/failover/recovery-manager.d.ts +47 -0
  236. package/dist/core/failover/recovery-manager.d.ts.map +1 -0
  237. package/dist/core/failover/recovery-manager.js +145 -0
  238. package/dist/core/failover/recovery-manager.js.map +1 -0
  239. package/dist/core/failover/types.d.ts +54 -0
  240. package/dist/core/failover/types.d.ts.map +1 -0
  241. package/dist/core/failover/types.js +8 -0
  242. package/dist/core/failover/types.js.map +1 -0
  243. package/dist/core/monitoring/collector.d.ts +25 -0
  244. package/dist/core/monitoring/collector.d.ts.map +1 -0
  245. package/dist/core/monitoring/collector.js +115 -0
  246. package/dist/core/monitoring/collector.js.map +1 -0
  247. package/dist/core/monitoring/exporters.d.ts +49 -0
  248. package/dist/core/monitoring/exporters.d.ts.map +1 -0
  249. package/dist/core/monitoring/exporters.js +126 -0
  250. package/dist/core/monitoring/exporters.js.map +1 -0
  251. package/dist/core/routing/proxysql-manager.d.ts +213 -0
  252. package/dist/core/routing/proxysql-manager.d.ts.map +1 -0
  253. package/dist/core/routing/proxysql-manager.js +632 -0
  254. package/dist/core/routing/proxysql-manager.js.map +1 -0
  255. package/dist/core/sync/replica-recovery.d.ts +40 -0
  256. package/dist/core/sync/replica-recovery.d.ts.map +1 -0
  257. package/dist/core/sync/replica-recovery.js +134 -0
  258. package/dist/core/sync/replica-recovery.js.map +1 -0
  259. package/dist/core/sync/sync-coordinator.d.ts +83 -0
  260. package/dist/core/sync/sync-coordinator.d.ts.map +1 -0
  261. package/dist/core/sync/sync-coordinator.js +254 -0
  262. package/dist/core/sync/sync-coordinator.js.map +1 -0
  263. package/dist/core/sync/topology-watcher.d.ts +76 -0
  264. package/dist/core/sync/topology-watcher.d.ts.map +1 -0
  265. package/dist/core/sync/topology-watcher.js +222 -0
  266. package/dist/core/sync/topology-watcher.js.map +1 -0
  267. package/dist/core/sync/types.d.ts +85 -0
  268. package/dist/core/sync/types.d.ts.map +1 -0
  269. package/dist/core/sync/types.js +8 -0
  270. package/dist/core/sync/types.js.map +1 -0
  271. package/dist/index.d.ts +5 -0
  272. package/dist/index.d.ts.map +1 -0
  273. package/dist/index.js +9 -0
  274. package/dist/index.js.map +1 -0
  275. package/dist/types/index.d.ts +212 -0
  276. package/dist/types/index.d.ts.map +1 -0
  277. package/dist/types/index.js +153 -0
  278. package/dist/types/index.js.map +1 -0
  279. package/dist/utils/database.d.ts +62 -0
  280. package/dist/utils/database.d.ts.map +1 -0
  281. package/dist/utils/database.js +257 -0
  282. package/dist/utils/database.js.map +1 -0
  283. package/dist/utils/exceptions.d.ts +69 -0
  284. package/dist/utils/exceptions.d.ts.map +1 -0
  285. package/dist/utils/exceptions.js +121 -0
  286. package/dist/utils/exceptions.js.map +1 -0
  287. package/dist/utils/logger.d.ts +20 -0
  288. package/dist/utils/logger.d.ts.map +1 -0
  289. package/dist/utils/logger.js +90 -0
  290. package/dist/utils/logger.js.map +1 -0
  291. package/dist/utils/mysql-client.d.ts +43 -0
  292. package/dist/utils/mysql-client.d.ts.map +1 -0
  293. package/dist/utils/mysql-client.js +125 -0
  294. package/dist/utils/mysql-client.js.map +1 -0
  295. package/docker/Dockerfile +61 -0
  296. package/docker/Dockerfile.node +41 -0
  297. package/docker/grafana/dashboards/clawsql.json +212 -0
  298. package/docker/grafana/provisioning/dashboards/dashboards.yml +13 -0
  299. package/docker/grafana/provisioning/datasources/datasources.yml +12 -0
  300. package/docker/init/primary.sql +26 -0
  301. package/docker/init/replica.sql +16 -0
  302. package/docker/orchestrator/orchestrator.conf.json +98 -0
  303. package/docker/prometheus/prometheus.yml +45 -0
  304. package/docker/proxysql/entrypoint.sh +8 -0
  305. package/docker/proxysql/init.sql.demo +30 -0
  306. package/docker/proxysql/proxysql.cnf +38 -0
  307. package/docker-compose.demo.yml +115 -0
  308. package/docker-compose.yml +217 -0
  309. package/init/primary.sql +19 -0
  310. package/init/replica.sql +13 -0
  311. package/package.json +84 -0
@@ -0,0 +1,408 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - Output Formatter
4
+ *
5
+ * Provides formatted output for CLI commands (tables, colors, JSON).
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.StreamingMarkdownProcessor = exports.Formatter = void 0;
12
+ exports.getFormatter = getFormatter;
13
+ exports.createFormatter = createFormatter;
14
+ const cli_table3_1 = __importDefault(require("cli-table3"));
15
+ const chalk_1 = __importDefault(require("chalk"));
16
+ const components_js_1 = require("./ui/components.js");
17
+ /**
18
+ * Default formatter instance
19
+ */
20
+ let defaultFormatter;
21
+ /**
22
+ * CLI Output Formatter
23
+ */
24
+ class Formatter {
25
+ format;
26
+ colors;
27
+ constructor(options) {
28
+ this.format = options?.format ?? 'table';
29
+ this.colors = options?.colors ?? true;
30
+ }
31
+ /**
32
+ * Format data as a table
33
+ */
34
+ table(data, columns) {
35
+ if (this.format === 'json') {
36
+ return this.json(data);
37
+ }
38
+ if (data.length === 0) {
39
+ return this.warning('No data to display');
40
+ }
41
+ const table = new cli_table3_1.default({
42
+ head: columns.map(col => this.colors ? chalk_1.default.bold(col.header) : col.header),
43
+ colWidths: columns.map(col => col.width ?? 'auto'),
44
+ colAligns: columns.map(col => col.align ?? 'left'),
45
+ style: {
46
+ head: [],
47
+ border: this.colors ? [components_js_1.nord.polarNight.nord3] : [],
48
+ },
49
+ });
50
+ for (const row of data) {
51
+ table.push(columns.map(col => {
52
+ const value = row[col.key];
53
+ if (value === null || value === undefined) {
54
+ return this.colors ? components_js_1.theme.muted('-') : '-';
55
+ }
56
+ return String(value);
57
+ }));
58
+ }
59
+ return table.toString();
60
+ }
61
+ /**
62
+ * Format data as JSON
63
+ */
64
+ json(data) {
65
+ return JSON.stringify(data, null, 2);
66
+ }
67
+ /**
68
+ * Format a success message
69
+ */
70
+ success(message) {
71
+ return this.colors ? components_js_1.theme.success('✓ ') + message : `✓ ${message}`;
72
+ }
73
+ /**
74
+ * Format an error message
75
+ */
76
+ error(message) {
77
+ return this.colors ? components_js_1.theme.error('✗ ') + message : `✗ ${message}`;
78
+ }
79
+ /**
80
+ * Format a warning message
81
+ */
82
+ warning(message) {
83
+ return this.colors ? components_js_1.theme.warning('◆ ') + message : `◆ ${message}`;
84
+ }
85
+ /**
86
+ * Format an info message
87
+ */
88
+ info(message) {
89
+ return this.colors ? components_js_1.theme.info('○ ') + message : `○ ${message}`;
90
+ }
91
+ /**
92
+ * Format a header/title
93
+ */
94
+ header(title) {
95
+ if (this.format === 'json') {
96
+ return title;
97
+ }
98
+ const line = '─'.repeat(Math.max(title.length + 4, 24));
99
+ return this.colors
100
+ ? `${components_js_1.theme.primary.bold(line)}\n ${chalk_1.default.bold(title)}\n${components_js_1.theme.primary.bold(line)}`
101
+ : `${line}\n ${title}\n${line}`;
102
+ }
103
+ /**
104
+ * Format a section header (compact)
105
+ */
106
+ section(title) {
107
+ return this.colors
108
+ ? components_js_1.theme.primary.bold(`[${title}]`)
109
+ : `[${title}]`;
110
+ }
111
+ /**
112
+ * Format a key-value pair (compact)
113
+ */
114
+ keyValue(key, value) {
115
+ const displayValue = value === null || value === undefined
116
+ ? (this.colors ? components_js_1.theme.muted('(not set)') : '(not set)')
117
+ : String(value);
118
+ return this.colors
119
+ ? ` ${components_js_1.theme.muted(key)}: ${displayValue}`
120
+ : ` ${key}: ${displayValue}`;
121
+ }
122
+ /**
123
+ * Format a tree structure (for topology)
124
+ */
125
+ tree(nodes, indent = 0) {
126
+ const lines = [];
127
+ const prefix = ' '.repeat(indent);
128
+ for (const node of nodes) {
129
+ const icon = node.type === 'primary'
130
+ ? (this.colors ? components_js_1.theme.success('●') : '●')
131
+ : node.type === 'replica'
132
+ ? (this.colors ? components_js_1.theme.primary('○') : '○')
133
+ : '·';
134
+ const label = this.colors && node.type === 'primary'
135
+ ? chalk_1.default.bold(node.name)
136
+ : node.name;
137
+ let line = `${prefix}${icon} ${label}`;
138
+ if (node.status) {
139
+ const statusColor = node.status === 'online'
140
+ ? components_js_1.theme.success
141
+ : node.status === 'offline'
142
+ ? components_js_1.theme.error
143
+ : components_js_1.theme.warning;
144
+ line += this.colors
145
+ ? ` ${statusColor(`[${node.status}]`)}`
146
+ : ` [${node.status}]`;
147
+ }
148
+ if (node.extra) {
149
+ line += this.colors
150
+ ? components_js_1.theme.muted(` (${node.extra})`)
151
+ : ` (${node.extra})`;
152
+ }
153
+ lines.push(line);
154
+ if (node.children && node.children.length > 0) {
155
+ lines.push(this.tree(node.children, indent + 1));
156
+ }
157
+ }
158
+ return lines.join('\n');
159
+ }
160
+ /**
161
+ * Format a merged cluster topology view
162
+ */
163
+ clusterTopology(cluster) {
164
+ const lines = [];
165
+ // Header
166
+ const headerLine = '─'.repeat(50);
167
+ lines.push(this.colors ? components_js_1.theme.primary.bold(headerLine) : headerLine);
168
+ lines.push(this.colors ? chalk_1.default.bold(` Cluster: ${cluster.displayName}`) : ` Cluster: ${cluster.displayName}`);
169
+ lines.push(this.colors ? components_js_1.theme.primary.bold(headerLine) : headerLine);
170
+ // Endpoint and hostgroups
171
+ if (cluster.endpoint) {
172
+ lines.push(this.colors
173
+ ? ` ${components_js_1.theme.muted('Endpoint:')} ${components_js_1.theme.primary(`${cluster.endpoint.host}:${cluster.endpoint.port}`)}`
174
+ : ` Endpoint: ${cluster.endpoint.host}:${cluster.endpoint.port}`);
175
+ }
176
+ if (cluster.hostgroups) {
177
+ lines.push(this.colors
178
+ ? ` ${components_js_1.theme.muted('Hostgroups:')} ${components_js_1.theme.success.bold('RW')}=${components_js_1.theme.warning(cluster.hostgroups.writer.toString())}, ${components_js_1.theme.primary('RO')}=${components_js_1.theme.warning(cluster.hostgroups.reader.toString())}`
179
+ : ` Hostgroups: RW=${cluster.hostgroups.writer}, RO=${cluster.hostgroups.reader}`);
180
+ }
181
+ lines.push('');
182
+ // Sync warnings (show prominently before health)
183
+ if (cluster.syncWarnings && cluster.syncWarnings.length > 0) {
184
+ lines.push(this.colors
185
+ ? components_js_1.theme.warning.bold(' ◆ SYNC WARNINGS:')
186
+ : ' ◆ SYNC WARNINGS:');
187
+ for (const warning of cluster.syncWarnings) {
188
+ const icon = warning.type === 'missing_in_proxysql'
189
+ ? '○'
190
+ : warning.type === 'wrong_hostgroup'
191
+ ? '↻'
192
+ : '?';
193
+ lines.push(this.colors
194
+ ? ` ${components_js_1.theme.warning(icon)} ${components_js_1.theme.muted(warning.message)}`
195
+ : ` ${icon} ${warning.message}`);
196
+ }
197
+ lines.push(this.colors
198
+ ? ` ${components_js_1.theme.info('○')} ${components_js_1.theme.muted('Run /clusters sync to reconcile')}`
199
+ : ' ○ Run /clusters sync to reconcile');
200
+ lines.push('');
201
+ }
202
+ // Health status
203
+ const healthIcon = cluster.health === 'healthy'
204
+ ? (this.colors ? components_js_1.theme.success('✓') : '✓')
205
+ : cluster.health === 'degraded'
206
+ ? (this.colors ? components_js_1.theme.warning('◆') : '◆')
207
+ : (this.colors ? components_js_1.theme.error('✗') : '✗');
208
+ lines.push(this.colors
209
+ ? ` ${healthIcon} ${components_js_1.theme.muted('Health:')} ${cluster.health}`
210
+ : ` ${healthIcon} Health: ${cluster.health}`);
211
+ lines.push('');
212
+ // Primary
213
+ if (cluster.primary) {
214
+ lines.push(this.colors ? chalk_1.default.bold(' Primary:') : ' Primary:');
215
+ lines.push(this.formatInstanceLine(cluster.primary, 'primary', cluster.hostgroups));
216
+ }
217
+ else {
218
+ lines.push(this.colors
219
+ ? components_js_1.theme.warning(' No primary found')
220
+ : ' No primary found');
221
+ }
222
+ // Replicas
223
+ if (cluster.replicas.length > 0) {
224
+ lines.push('');
225
+ lines.push(this.colors ? chalk_1.default.bold(' Replicas:') : ' Replicas:');
226
+ for (const replica of cluster.replicas) {
227
+ lines.push(this.formatInstanceLine(replica, 'replica', cluster.hostgroups));
228
+ }
229
+ }
230
+ return lines.join('\n');
231
+ }
232
+ /**
233
+ * Format a single instance line for cluster topology
234
+ */
235
+ formatInstanceLine(instance, type, hostgroups) {
236
+ const icon = type === 'primary'
237
+ ? (this.colors ? components_js_1.theme.success('●') : '●')
238
+ : (this.colors ? components_js_1.theme.primary('○') : '○');
239
+ const statusColor = instance.state === 'online'
240
+ ? components_js_1.theme.success
241
+ : instance.state === 'offline'
242
+ ? components_js_1.theme.error
243
+ : components_js_1.theme.warning;
244
+ const hostPort = `${instance.host}:${instance.port}`;
245
+ const status = instance.state;
246
+ // Build info parts
247
+ const infoParts = [];
248
+ // Determine RW/RO label based on hostgroup
249
+ if (instance.hostgroup !== undefined && hostgroups) {
250
+ const rwLabel = instance.hostgroup === hostgroups.writer
251
+ ? (this.colors ? components_js_1.theme.success.bold('RW') : 'RW')
252
+ : instance.hostgroup === hostgroups.reader
253
+ ? (this.colors ? components_js_1.theme.primary('RO') : 'RO')
254
+ : `hg:${instance.hostgroup}`;
255
+ infoParts.push(rwLabel);
256
+ }
257
+ else if (instance.hostgroup !== undefined) {
258
+ infoParts.push(`hg:${instance.hostgroup}`);
259
+ }
260
+ if (instance.proxysqlStatus) {
261
+ const psColor = instance.proxysqlStatus === 'ONLINE'
262
+ ? components_js_1.theme.success
263
+ : components_js_1.theme.warning;
264
+ infoParts.push(this.colors
265
+ ? psColor(instance.proxysqlStatus)
266
+ : instance.proxysqlStatus);
267
+ }
268
+ if (instance.connections !== undefined && instance.connections > 0) {
269
+ infoParts.push(`conns:${instance.connections}`);
270
+ }
271
+ if (type === 'replica' && instance.replicationLag !== undefined) {
272
+ infoParts.push(`lag:${instance.replicationLag}s`);
273
+ }
274
+ const infoStr = infoParts.length > 0
275
+ ? (this.colors ? components_js_1.theme.muted(`(${infoParts.join(', ')})`) : `(${infoParts.join(', ')})`)
276
+ : '';
277
+ const line = ` ${icon} ${hostPort} ${statusColor(`[${status}]`)} ${infoStr}`;
278
+ // Additional details on next line
279
+ const details = [];
280
+ if (instance.version)
281
+ details.push(`v${instance.version}`);
282
+ if (instance.serverId)
283
+ details.push(`id:${instance.serverId}`);
284
+ if (details.length > 0 && type === 'primary') {
285
+ return line + '\n' + (this.colors ? components_js_1.theme.muted(` ${details.join(', ')}`) : ` ${details.join(', ')}`);
286
+ }
287
+ return line;
288
+ }
289
+ /**
290
+ * Convert markdown to terminal-formatted text
291
+ */
292
+ markdown(text) {
293
+ if (!this.colors) {
294
+ // Strip markdown syntax for non-color output
295
+ return text
296
+ .replace(/\*\*(.+?)\*\*/g, '$1')
297
+ .replace(/\*(.+?)\*/g, '$1')
298
+ .replace(/`(.+?)`/g, '$1')
299
+ .replace(/^#+\s*/gm, '')
300
+ .replace(/^(\s*)- /gm, '$1● ')
301
+ .replace(/^(\s*)\d+\. /gm, '$1○ ');
302
+ }
303
+ return text
304
+ // Bold: **text**
305
+ .replace(/\*\*(.+?)\*\*/g, (_, p1) => chalk_1.default.bold(p1))
306
+ // Italic: *text*
307
+ .replace(/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, (_, p1) => chalk_1.default.italic(p1))
308
+ // Inline code: `code`
309
+ .replace(/`([^`]+)`/g, (_, p1) => components_js_1.theme.primary(p1))
310
+ // Headers (must be at start of line)
311
+ .replace(/^### (.+)$/gm, (_, p1) => '\n' + components_js_1.theme.secondary.bold(p1))
312
+ .replace(/^## (.+)$/gm, (_, p1) => '\n' + chalk_1.default.bold.underline(p1))
313
+ .replace(/^# (.+)$/gm, (_, p1) => '\n' + components_js_1.theme.secondary.bold.underline(p1) + '\n')
314
+ // Bullet points (including indented)
315
+ .replace(/^(\s*)- (.+)$/gm, (_, indent, p1) => `${indent}${components_js_1.theme.muted('●')} ${p1}`)
316
+ // Numbered lists (including indented)
317
+ .replace(/^(\s*)\d+\. (.+)$/gm, (_, indent, p1) => `${indent}${components_js_1.theme.muted('○')} ${p1}`);
318
+ }
319
+ /**
320
+ * Set output format
321
+ */
322
+ setFormat(format) {
323
+ this.format = format;
324
+ }
325
+ /**
326
+ * Get current format
327
+ */
328
+ getFormat() {
329
+ return this.format;
330
+ }
331
+ }
332
+ exports.Formatter = Formatter;
333
+ /**
334
+ * Process streaming text with markdown formatting.
335
+ * Buffers text, processes markdown when complete patterns found.
336
+ */
337
+ class StreamingMarkdownProcessor {
338
+ buffer = '';
339
+ process(chunk) {
340
+ this.buffer += chunk;
341
+ // Try to find and process complete markdown patterns
342
+ let processed = this.buffer;
343
+ let hasMatch = false;
344
+ // Process **bold** patterns
345
+ processed = processed.replace(/\*\*(.+?)\*\*/g, (_, content) => {
346
+ hasMatch = true;
347
+ return chalk_1.default.bold(content);
348
+ });
349
+ // Process `code` patterns
350
+ processed = processed.replace(/`([^`]+)`/g, (_, content) => {
351
+ hasMatch = true;
352
+ return components_js_1.theme.primary(content);
353
+ });
354
+ if (hasMatch) {
355
+ // Found complete patterns - rewrite the buffer
356
+ const backspace = this.buffer.length;
357
+ this.buffer = '';
358
+ return { text: processed, backspace };
359
+ }
360
+ // No complete patterns yet
361
+ // Find where incomplete markdown might start
362
+ const lastBoldStart = this.buffer.lastIndexOf('**');
363
+ const lastCodeStart = this.buffer.lastIndexOf('`');
364
+ // Find the earliest incomplete markdown start
365
+ let markdownStart = -1;
366
+ if (lastBoldStart !== -1 && lastCodeStart !== -1) {
367
+ markdownStart = Math.min(lastBoldStart, lastCodeStart);
368
+ }
369
+ else if (lastBoldStart !== -1) {
370
+ markdownStart = lastBoldStart;
371
+ }
372
+ else if (lastCodeStart !== -1) {
373
+ markdownStart = lastCodeStart;
374
+ }
375
+ if (markdownStart > 0) {
376
+ // Output text before incomplete markdown, keep the rest
377
+ const text = this.buffer.slice(0, markdownStart);
378
+ this.buffer = this.buffer.slice(markdownStart);
379
+ return { text, backspace: 0 };
380
+ }
381
+ // No incomplete markdown - output all
382
+ const text = this.buffer;
383
+ this.buffer = '';
384
+ return { text, backspace: 0 };
385
+ }
386
+ flush() {
387
+ const r = this.buffer;
388
+ this.buffer = '';
389
+ return r;
390
+ }
391
+ }
392
+ exports.StreamingMarkdownProcessor = StreamingMarkdownProcessor;
393
+ /**
394
+ * Get the default formatter instance
395
+ */
396
+ function getFormatter() {
397
+ if (!defaultFormatter) {
398
+ defaultFormatter = new Formatter();
399
+ }
400
+ return defaultFormatter;
401
+ }
402
+ /**
403
+ * Create a new formatter with specific options
404
+ */
405
+ function createFormatter(options) {
406
+ return new Formatter(options);
407
+ }
408
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../src/cli/formatter.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;AAmgBH,oCAKC;AAKD,0CAEC;AA7gBD,4DAA+B;AAC/B,kDAA0B;AAC1B,sDAAiD;AAyBjD;;GAEG;AACH,IAAI,gBAA2B,CAAC;AAEhC;;GAEG;AACH,MAAa,SAAS;IACZ,MAAM,CAAe;IACrB,MAAM,CAAU;IAExB,YAAY,OAAmC;QAC7C,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAA+B,EAAE,OAAiB;QACtD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,oBAAK,CAAC;YACtB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC3E,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,MAA2B,CAAC;YACvE,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC;YAClD,KAAK,EAAE;gBACL,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,oBAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACnD;SACF,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CACR,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAChB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC9C,CAAC;gBACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,IAAa;QAChB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAa;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,GAAG,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,eAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpF,CAAC,CAAC,GAAG,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC;YAClC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAW,EAAE,KAAc;QAClC,MAAM,YAAY,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;YACxD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YACxD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,OAAO,IAAI,CAAC,MAAM;YAChB,CAAC,CAAC,KAAK,qBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,YAAY,EAAE;YAC1C,CAAC,CAAC,KAAK,GAAG,KAAK,YAAY,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,KAAiB,EAAE,SAAiB,CAAC;QACxC,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS;gBAClC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS;oBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC1C,CAAC,CAAC,GAAG,CAAC;YAEV,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAClD,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAEd,IAAI,IAAI,GAAG,GAAG,MAAM,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;YAEvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,KAAK,QAAQ;oBAC1C,CAAC,CAAC,qBAAK,CAAC,OAAO;oBACf,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;wBACzB,CAAC,CAAC,qBAAK,CAAC,KAAK;wBACb,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC;gBACpB,IAAI,IAAI,IAAI,CAAC,MAAM;oBACjB,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACvC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC;YAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,IAAI,CAAC,MAAM;oBACjB,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC;oBACjC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC;YACzB,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEjB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,OAA4B;QAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,SAAS;QACT,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QAChH,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAEtE,0BAA0B;QAC1B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACpB,CAAC,CAAC,KAAK,qBAAK,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,qBAAK,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE;gBACvG,CAAC,CAAC,eAAe,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;QAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACpB,CAAC,CAAC,KAAK,qBAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAK,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE;gBACrM,CAAC,CAAC,oBAAoB,OAAO,CAAC,UAAU,CAAC,MAAM,QAAQ,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,iDAAiD;QACjD,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACpB,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBAC1C,CAAC,CAAC,oBAAoB,CAAC,CAAC;YAC1B,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,qBAAqB;oBACjD,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,iBAAiB;wBAClC,CAAC,CAAC,GAAG;wBACL,CAAC,CAAC,GAAG,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;oBACpB,CAAC,CAAC,OAAO,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,qBAAK,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBAC9D,CAAC,CAAC,OAAO,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACpB,CAAC,CAAC,KAAK,qBAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,qBAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE;gBAC1E,CAAC,CAAC,qCAAqC,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QAED,gBAAgB;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,SAAS;YAC7C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,UAAU;gBAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;YACpB,CAAC,CAAC,KAAK,UAAU,IAAI,qBAAK,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;YAC/D,CAAC,CAAC,KAAK,UAAU,YAAY,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAEjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,UAAU;QACV,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACtF,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACpB,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;gBACrC,CAAC,CAAC,oBAAoB,CAAC,CAAC;QAC5B,CAAC;QAED,WAAW;QACX,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACpE,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,QAA6B,EAAE,IAA2B,EAAE,UAA+C;QACpI,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS;YAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC1C,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAE7C,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAC7C,CAAC,CAAC,qBAAK,CAAC,OAAO;YACf,CAAC,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS;gBAC5B,CAAC,CAAC,qBAAK,CAAC,KAAK;gBACb,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC;QAEpB,MAAM,QAAQ,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC;QAE9B,mBAAmB;QACnB,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,2CAA2C;QAC3C,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,UAAU,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,KAAK,UAAU,CAAC,MAAM;gBACtD,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjD,CAAC,CAAC,QAAQ,CAAC,SAAS,KAAK,UAAU,CAAC,MAAM;oBACxC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5C,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,QAAQ,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,KAAK,QAAQ;gBAClD,CAAC,CAAC,qBAAK,CAAC,OAAO;gBACf,CAAC,CAAC,qBAAK,CAAC,OAAO,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,IAAI,QAAQ,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;YACnE,SAAS,CAAC,IAAI,CAAC,SAAS,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YAChE,SAAS,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,cAAc,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC;YAClC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACxF,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,IAAI,GAAG,OAAO,IAAI,IAAI,QAAQ,IAAI,WAAW,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;QAEhF,kCAAkC;QAClC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,QAAQ,CAAC,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,IAAI,QAAQ,CAAC,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QAE/D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAK,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,6CAA6C;YAC7C,OAAO,IAAI;iBACR,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;iBAC/B,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC;iBAC3B,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;iBACzB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;iBACvB,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;iBAC7B,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACvC,CAAC;QAED,OAAO,IAAI;YACT,iBAAiB;aAChB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,eAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD,iBAAiB;aAChB,OAAO,CAAC,sCAAsC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,eAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7E,sBAAsB;aACrB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,qBAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACpD,qCAAqC;aACpC,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,qBAAK,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACnE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;aAClE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,qBAAK,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACnF,qCAAqC;aACpC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,qBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACpF,sCAAsC;aACrC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,qBAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAoB;QAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AApWD,8BAoWC;AAED;;;GAGG;AACH,MAAa,0BAA0B;IAC7B,MAAM,GAAW,EAAE,CAAC;IAE5B,OAAO,CAAC,KAAa;QACnB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QAErB,qDAAqD;QACrD,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,4BAA4B;QAC5B,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;YAC7D,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,0BAA0B;QAC1B,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;YACzD,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,qBAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,EAAE,CAAC;YACb,+CAA+C;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACrC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;YACjB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QACxC,CAAC;QAED,2BAA2B;QAC3B,6CAA6C;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAEnD,8CAA8C;QAC9C,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,aAAa,KAAK,CAAC,CAAC,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YACjD,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC;aAAM,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YAChC,aAAa,GAAG,aAAa,CAAC;QAChC,CAAC;aAAM,IAAI,aAAa,KAAK,CAAC,CAAC,EAAE,CAAC;YAChC,aAAa,GAAG,aAAa,CAAC;QAChC,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACtB,wDAAwD;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QAChC,CAAC;QAED,sCAAsC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAChC,CAAC;IAED,KAAK;QACH,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AA9DD,gEA8DC;AAmDD;;GAEG;AACH,SAAgB,YAAY;IAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,gBAAgB,GAAG,IAAI,SAAS,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAmC;IACjE,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ClawSQL CLI - Main Entry Point
3
+ *
4
+ * Initializes and starts the CLI.
5
+ */
6
+ /**
7
+ * Start the interactive CLI
8
+ */
9
+ export declare function startCLI(): void;
10
+ /**
11
+ * Execute a single command and exit
12
+ */
13
+ export declare function executeSingleCommand(commandStr: string, options?: {
14
+ json?: boolean;
15
+ }): Promise<void>;
16
+ declare const _default: {
17
+ startCLI: typeof startCLI;
18
+ executeSingleCommand: typeof executeSingleCommand;
19
+ };
20
+ export default _default;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAyCH;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAM/B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,IAAI,CAAC,CAkBf;;;;;AAED,wBAAkD"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ /**
3
+ * ClawSQL CLI - Main Entry Point
4
+ *
5
+ * Initializes and starts the CLI.
6
+ */
7
+ var __importDefault = (this && this.__importDefault) || function (mod) {
8
+ return (mod && mod.__esModule) ? mod : { "default": mod };
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.startCLI = startCLI;
12
+ exports.executeSingleCommand = executeSingleCommand;
13
+ const repl_js_1 = require("./repl.js");
14
+ const registry_js_1 = require("./registry.js");
15
+ // Import all commands
16
+ const help_js_1 = __importDefault(require("./commands/help.js"));
17
+ const topology_js_1 = __importDefault(require("./commands/topology.js"));
18
+ const instances_js_1 = __importDefault(require("./commands/instances.js"));
19
+ const clusters_js_1 = __importDefault(require("./commands/clusters.js"));
20
+ const failover_js_1 = __importDefault(require("./commands/failover.js"));
21
+ const config_js_1 = __importDefault(require("./commands/config.js"));
22
+ const sql_js_1 = __importDefault(require("./commands/sql.js"));
23
+ const cron_js_1 = __importDefault(require("./commands/cron.js"));
24
+ const notify_js_1 = __importDefault(require("./commands/notify.js"));
25
+ const start_js_1 = __importDefault(require("./commands/start.js"));
26
+ const stop_js_1 = __importDefault(require("./commands/stop.js"));
27
+ const status_js_1 = __importDefault(require("./commands/status.js"));
28
+ const cleanup_js_1 = __importDefault(require("./commands/cleanup.js"));
29
+ const doctor_js_1 = __importDefault(require("./commands/doctor.js"));
30
+ /**
31
+ * Register all built-in commands
32
+ */
33
+ function registerBuiltinCommands() {
34
+ (0, registry_js_1.registerCommand)(help_js_1.default);
35
+ (0, registry_js_1.registerCommand)(topology_js_1.default);
36
+ (0, registry_js_1.registerCommand)(instances_js_1.default);
37
+ (0, registry_js_1.registerCommand)(clusters_js_1.default);
38
+ (0, registry_js_1.registerCommand)(failover_js_1.default);
39
+ (0, registry_js_1.registerCommand)(config_js_1.default);
40
+ (0, registry_js_1.registerCommand)(sql_js_1.default);
41
+ (0, registry_js_1.registerCommand)(cron_js_1.default);
42
+ (0, registry_js_1.registerCommand)(notify_js_1.default);
43
+ (0, registry_js_1.registerCommand)(start_js_1.default);
44
+ (0, registry_js_1.registerCommand)(stop_js_1.default);
45
+ (0, registry_js_1.registerCommand)(status_js_1.default);
46
+ (0, registry_js_1.registerCommand)(cleanup_js_1.default);
47
+ (0, registry_js_1.registerCommand)(doctor_js_1.default);
48
+ }
49
+ /**
50
+ * Start the interactive CLI
51
+ */
52
+ function startCLI() {
53
+ // Register all built-in commands
54
+ registerBuiltinCommands();
55
+ // Start the REPL
56
+ (0, repl_js_1.startREPL)();
57
+ }
58
+ /**
59
+ * Execute a single command and exit
60
+ */
61
+ async function executeSingleCommand(commandStr, options = {}) {
62
+ const { executeCommand, createCLIContext, parseInput } = await import('./registry.js');
63
+ // Register commands
64
+ registerBuiltinCommands();
65
+ // Create context with JSON output if requested
66
+ const ctx = createCLIContext(options.json ? 'json' : 'table');
67
+ // Parse and execute
68
+ const parsed = parseInput(commandStr);
69
+ if (parsed && parsed.command) {
70
+ const success = await executeCommand(parsed.command, parsed.args, ctx);
71
+ process.exit(success ? 0 : 1);
72
+ }
73
+ else {
74
+ console.error('Invalid command format. Use /<command>');
75
+ process.exit(1);
76
+ }
77
+ }
78
+ exports.default = { startCLI, executeSingleCommand };
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;AA4CH,4BAMC;AAKD,oDAqBC;AA1ED,uCAAsC;AACtC,+CAAgD;AAEhD,sBAAsB;AACtB,iEAA6C;AAC7C,yEAAqD;AACrD,2EAAuD;AACvD,yEAAqD;AACrD,yEAAqD;AACrD,qEAAiD;AACjD,+DAA2C;AAC3C,iEAA6C;AAC7C,qEAAiD;AACjD,mEAA+C;AAC/C,iEAA6C;AAC7C,qEAAiD;AACjD,uEAAmD;AACnD,qEAAiD;AAEjD;;GAEG;AACH,SAAS,uBAAuB;IAC9B,IAAA,6BAAe,EAAC,iBAAW,CAAC,CAAC;IAC7B,IAAA,6BAAe,EAAC,qBAAe,CAAC,CAAC;IACjC,IAAA,6BAAe,EAAC,sBAAgB,CAAC,CAAC;IAClC,IAAA,6BAAe,EAAC,qBAAe,CAAC,CAAC;IACjC,IAAA,6BAAe,EAAC,qBAAe,CAAC,CAAC;IACjC,IAAA,6BAAe,EAAC,mBAAa,CAAC,CAAC;IAC/B,IAAA,6BAAe,EAAC,gBAAU,CAAC,CAAC;IAC5B,IAAA,6BAAe,EAAC,iBAAW,CAAC,CAAC;IAC7B,IAAA,6BAAe,EAAC,mBAAa,CAAC,CAAC;IAC/B,IAAA,6BAAe,EAAC,kBAAY,CAAC,CAAC;IAC9B,IAAA,6BAAe,EAAC,iBAAW,CAAC,CAAC;IAC7B,IAAA,6BAAe,EAAC,mBAAa,CAAC,CAAC;IAC/B,IAAA,6BAAe,EAAC,oBAAc,CAAC,CAAC;IAChC,IAAA,6BAAe,EAAC,mBAAa,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ;IACtB,iCAAiC;IACjC,uBAAuB,EAAE,CAAC;IAE1B,iBAAiB;IACjB,IAAA,mBAAS,GAAE,CAAC;AACd,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,UAA8B,EAAE;IAEhC,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAEvF,oBAAoB;IACpB,uBAAuB,EAAE,CAAC;IAE1B,+CAA+C;IAC/C,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE9D,oBAAoB;IACpB,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,kBAAe,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * ClawSQL CLI - Raw Input Handler
3
+ *
4
+ * Handles raw keyboard input for real-time command suggestions.
5
+ * Provides Claude Code-style interactive hints with keyboard navigation.
6
+ */
7
+ /**
8
+ * Suggestion item for dropdown
9
+ */
10
+ export interface Suggestion {
11
+ name: string;
12
+ description: string;
13
+ isFlag?: boolean;
14
+ }
15
+ /**
16
+ * Result from the input handler
17
+ */
18
+ export interface InputResult {
19
+ value: string;
20
+ cancelled: boolean;
21
+ exitRequested?: boolean;
22
+ }
23
+ /**
24
+ * Raw input handler for real-time suggestions
25
+ */
26
+ export declare class RawInputHandler {
27
+ private buffer;
28
+ private filteredSuggestions;
29
+ private selectedIndex;
30
+ private showingSuggestions;
31
+ private prompt;
32
+ private allCommands;
33
+ private lastSuggestionLineCount;
34
+ private inBracketedPaste;
35
+ private pasteBuffer;
36
+ private pasteTimeout;
37
+ private static readonly PASTE_TIMEOUT_MS;
38
+ constructor(prompt?: string);
39
+ /**
40
+ * Enable bracketed paste mode (for better paste handling)
41
+ */
42
+ private enableBracketedPaste;
43
+ /**
44
+ * Disable bracketed paste mode
45
+ */
46
+ private disableBracketedPaste;
47
+ /**
48
+ * Clear the paste timeout
49
+ */
50
+ private clearPasteTimeout;
51
+ /**
52
+ * Cleanup - call when done with the handler
53
+ */
54
+ cleanup(): void;
55
+ /**
56
+ * Get visible prompt length (strips ANSI escape codes)
57
+ */
58
+ private getVisiblePromptLength;
59
+ /**
60
+ * Start raw input mode and return the result
61
+ */
62
+ readLine(): Promise<InputResult>;
63
+ /**
64
+ * Handle keyboard input
65
+ */
66
+ private handleInput;
67
+ /**
68
+ * Process pasted content
69
+ */
70
+ private processPaste;
71
+ /**
72
+ * Update suggestions based on current buffer
73
+ */
74
+ private updateSuggestions;
75
+ /**
76
+ * Render the current state
77
+ */
78
+ private render;
79
+ /**
80
+ * Render the suggestions dropdown
81
+ */
82
+ private renderSuggestions;
83
+ /**
84
+ * Clear suggestions from terminal
85
+ * @param resetCount If true, reset lastSuggestionLineCount to 0
86
+ */
87
+ private clearSuggestions;
88
+ /**
89
+ * Clear old suggestions when no longer showing suggestions
90
+ */
91
+ private clearOldSuggestions;
92
+ /**
93
+ * Truncate text with ellipsis
94
+ */
95
+ private truncateText;
96
+ }
97
+ //# sourceMappingURL=raw-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raw-input.d.ts","sourceRoot":"","sources":["../../src/cli/raw-input.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAwBD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,mBAAmB,CAAoB;IAC/C,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,uBAAuB,CAAa;IAC5C,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAQ;gBAEpC,MAAM,GAAE,MAAqB;IAMzC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAM5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAOzB;;OAEG;IACH,OAAO,IAAI,IAAI;IAKf;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAM9B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC;IAgDtC;;OAEG;IACH,OAAO,CAAC,WAAW;IAmLnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAUpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8CzB;;OAEG;IACH,OAAO,CAAC,MAAM;IAed;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyFzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,YAAY;CAKrB"}