@deaquinodev/querky 0.4.15 → 0.4.17
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/README.md +0 -2
- package/dist/index.js +55 -58
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
A quirky terminal SQL client with vim keybindings, schema-aware autocomplete, query aliases, and AI-powered query explanation.
|
|
4
4
|
|
|
5
|
-

|
|
6
|
-
|
|
7
5
|
## Features
|
|
8
6
|
|
|
9
7
|
- **Beautiful tables** — clean, aligned output with automatic expanded mode for wide results
|
package/dist/index.js
CHANGED
|
@@ -1477,15 +1477,15 @@ function tokenizeSql(sql) {
|
|
|
1477
1477
|
|
|
1478
1478
|
// src/ui/theme.ts
|
|
1479
1479
|
var theme = {
|
|
1480
|
-
accent: "
|
|
1481
|
-
insertMode: "
|
|
1482
|
-
normalMode: "
|
|
1483
|
-
shellMode: "
|
|
1484
|
-
logo: "
|
|
1480
|
+
accent: "yellow",
|
|
1481
|
+
insertMode: "cyan",
|
|
1482
|
+
normalMode: "yellow",
|
|
1483
|
+
shellMode: "green",
|
|
1484
|
+
logo: "magenta",
|
|
1485
1485
|
success: "green",
|
|
1486
1486
|
error: "red",
|
|
1487
1487
|
warning: "yellow",
|
|
1488
|
-
muted: "
|
|
1488
|
+
muted: "grey"
|
|
1489
1489
|
};
|
|
1490
1490
|
|
|
1491
1491
|
// src/ui/components/QueryInput.tsx
|
|
@@ -1505,13 +1505,13 @@ function FuzzyHighlight({ text, token, selected }) {
|
|
|
1505
1505
|
) });
|
|
1506
1506
|
}
|
|
1507
1507
|
var BG = "#1e1e1e";
|
|
1508
|
-
var ACCENT =
|
|
1509
|
-
var PROMPT_MUTED =
|
|
1510
|
-
var PLACEHOLDER = "#
|
|
1511
|
-
var KW_COLOR = "
|
|
1512
|
-
var STR_COLOR = "
|
|
1513
|
-
var NUM_COLOR = "
|
|
1514
|
-
var CMT_COLOR = "
|
|
1508
|
+
var ACCENT = theme.insertMode;
|
|
1509
|
+
var PROMPT_MUTED = theme.muted;
|
|
1510
|
+
var PLACEHOLDER = "#585858";
|
|
1511
|
+
var KW_COLOR = "cyan";
|
|
1512
|
+
var STR_COLOR = "green";
|
|
1513
|
+
var NUM_COLOR = "yellow";
|
|
1514
|
+
var CMT_COLOR = "grey";
|
|
1515
1515
|
function sqlTokenColor(type) {
|
|
1516
1516
|
if (type === "keyword") return KW_COLOR;
|
|
1517
1517
|
if (type === "string") return STR_COLOR;
|
|
@@ -1752,10 +1752,12 @@ import { Box as Box3, Text as Text3 } from "ink";
|
|
|
1752
1752
|
// src/ui/components/Table.tsx
|
|
1753
1753
|
import { Box as Box2, Text as Text2 } from "ink";
|
|
1754
1754
|
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1755
|
+
var HEADER_COLOR = theme.accent;
|
|
1756
|
+
var NULL_COLOR = theme.muted;
|
|
1755
1757
|
|
|
1756
1758
|
// src/ui/components/QueryResult.tsx
|
|
1757
1759
|
import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1758
|
-
var ERROR_FG =
|
|
1760
|
+
var ERROR_FG = theme.error;
|
|
1759
1761
|
function ErrorBox({ message }) {
|
|
1760
1762
|
const lines = message.split("\n");
|
|
1761
1763
|
return /* @__PURE__ */ jsx3(Box3, { flexDirection: "column", marginTop: 1, children: lines.map((line, i) => /* @__PURE__ */ jsxs3(Text3, { color: ERROR_FG, bold: true, children: [
|
|
@@ -1767,37 +1769,18 @@ function ErrorBox({ message }) {
|
|
|
1767
1769
|
// src/ui/components/Banner.tsx
|
|
1768
1770
|
import { Box as Box4, Text as Text4 } from "ink";
|
|
1769
1771
|
import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1770
|
-
var version = true ? "0.4.
|
|
1772
|
+
var version = true ? "0.4.17" : process.env.npm_package_version ?? "unknown";
|
|
1771
1773
|
var WORDMARK = [
|
|
1772
1774
|
"\u2597\u2584\u2584\u2584\u2596 \u2597\u2596 \u2597\u2596\u2597\u2584\u2584\u2584\u2596\u2597\u2584\u2584\u2596 \u2597\u2596 \u2597\u2596\u2597\u2596 \u2597\u2596",
|
|
1773
1775
|
"\u2590\u258C \u2590\u258C \u2590\u258C \u2590\u258C\u2590\u258C \u2590\u258C \u2590\u258C\u2590\u258C\u2597\u259E\u2598 \u259D\u259A\u259E\u2598",
|
|
1774
1776
|
"\u2590\u258C \u2590\u258C \u2590\u258C \u2590\u258C\u2590\u259B\u2580\u2580\u2598\u2590\u259B\u2580\u259A\u2596\u2590\u259B\u259A\u2596 \u2590\u258C",
|
|
1775
1777
|
"\u2590\u2599\u2584\u259F\u2599\u2596\u259D\u259A\u2584\u259E\u2598\u2590\u2599\u2584\u2584\u2596\u2590\u258C \u2590\u258C\u2590\u258C \u2590\u258C \u2590\u258C \u2584\u2584\u2584"
|
|
1776
1778
|
];
|
|
1777
|
-
var
|
|
1778
|
-
var GRADIENT = [
|
|
1779
|
-
"#ff00dd",
|
|
1780
|
-
"#ff33bb",
|
|
1781
|
-
"#ff6699",
|
|
1782
|
-
"#ff9966",
|
|
1783
|
-
"#ff7722"
|
|
1784
|
-
];
|
|
1785
|
-
function hexToRgb(hex) {
|
|
1786
|
-
return [parseInt(hex.slice(1, 3), 16), parseInt(hex.slice(3, 5), 16), parseInt(hex.slice(5, 7), 16)];
|
|
1787
|
-
}
|
|
1788
|
-
function gradientColor(t) {
|
|
1789
|
-
const seg = Math.max(0, Math.min(1, t)) * (GRADIENT.length - 1);
|
|
1790
|
-
const i = Math.min(Math.floor(seg), GRADIENT.length - 2);
|
|
1791
|
-
const f = seg - i;
|
|
1792
|
-
const [r1, g1, b1] = hexToRgb(GRADIENT[i]);
|
|
1793
|
-
const [r2, g2, b2] = hexToRgb(GRADIENT[i + 1]);
|
|
1794
|
-
const mix = (a, b) => Math.round(a + (b - a) * f).toString(16).padStart(2, "0");
|
|
1795
|
-
return `#${mix(r1, r2)}${mix(g1, g2)}${mix(b1, b2)}`;
|
|
1796
|
-
}
|
|
1779
|
+
var WORDMARK_COLOR = theme.logo;
|
|
1797
1780
|
function Banner({ connectionState }) {
|
|
1798
1781
|
const isConnected = connectionState.status === "connected";
|
|
1799
1782
|
return /* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", marginTop: 2, marginBottom: 1, children: [
|
|
1800
|
-
/* @__PURE__ */ jsx4(Box4, { flexDirection: "column", children: WORDMARK.map((line, li) => /* @__PURE__ */ jsx4(Box4, { children: [...line].map((ch, x) => /* @__PURE__ */ jsx4(Text4, { color:
|
|
1783
|
+
/* @__PURE__ */ jsx4(Box4, { flexDirection: "column", children: WORDMARK.map((line, li) => /* @__PURE__ */ jsx4(Box4, { children: [...line].map((ch, x) => /* @__PURE__ */ jsx4(Text4, { color: WORDMARK_COLOR, bold: true, children: ch }, x)) }, li)) }),
|
|
1801
1784
|
/* @__PURE__ */ jsxs4(Box4, { flexDirection: "column", marginTop: 1, marginLeft: 1, children: [
|
|
1802
1785
|
/* @__PURE__ */ jsxs4(Text4, { dimColor: true, children: [
|
|
1803
1786
|
"v",
|
|
@@ -1829,10 +1812,23 @@ function Banner({ connectionState }) {
|
|
|
1829
1812
|
var R = "\x1B[0m";
|
|
1830
1813
|
var BOLD = "\x1B[1m";
|
|
1831
1814
|
var DIM = "\x1B[2m";
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1815
|
+
var ANSI_FG = {
|
|
1816
|
+
black: "\x1B[30m",
|
|
1817
|
+
red: "\x1B[31m",
|
|
1818
|
+
green: "\x1B[32m",
|
|
1819
|
+
yellow: "\x1B[33m",
|
|
1820
|
+
blue: "\x1B[34m",
|
|
1821
|
+
magenta: "\x1B[35m",
|
|
1822
|
+
cyan: "\x1B[36m",
|
|
1823
|
+
white: "\x1B[37m",
|
|
1824
|
+
grey: "\x1B[90m",
|
|
1825
|
+
gray: "\x1B[90m"
|
|
1826
|
+
};
|
|
1827
|
+
function fg(color) {
|
|
1828
|
+
if (color in ANSI_FG) return ANSI_FG[color];
|
|
1829
|
+
const r = parseInt(color.slice(1, 3), 16);
|
|
1830
|
+
const g = parseInt(color.slice(3, 5), 16);
|
|
1831
|
+
const b = parseInt(color.slice(5, 7), 16);
|
|
1836
1832
|
return `\x1B[38;2;${r};${g};${b}m`;
|
|
1837
1833
|
}
|
|
1838
1834
|
function c(hex, s) {
|
|
@@ -1850,23 +1846,24 @@ function cbold(hex, s) {
|
|
|
1850
1846
|
function cdim(hex, s) {
|
|
1851
1847
|
return fg(hex) + DIM + s + R;
|
|
1852
1848
|
}
|
|
1853
|
-
var ACCENT2 =
|
|
1854
|
-
var HEADER_COL =
|
|
1855
|
-
var NULL_COL =
|
|
1856
|
-
var INDIGO =
|
|
1857
|
-
var AI_COL =
|
|
1858
|
-
var ERROR_COL =
|
|
1859
|
-
var WARN_COL =
|
|
1860
|
-
var
|
|
1849
|
+
var ACCENT2 = theme.accent;
|
|
1850
|
+
var HEADER_COL = theme.muted;
|
|
1851
|
+
var NULL_COL = theme.muted;
|
|
1852
|
+
var INDIGO = theme.accent;
|
|
1853
|
+
var AI_COL = theme.insertMode;
|
|
1854
|
+
var ERROR_COL = theme.error;
|
|
1855
|
+
var WARN_COL = theme.warning;
|
|
1856
|
+
var SHELL_COL = theme.shellMode;
|
|
1857
|
+
var ERD_BORDER = "grey";
|
|
1861
1858
|
var ERD_PALETTE = [
|
|
1862
|
-
"
|
|
1863
|
-
"
|
|
1864
|
-
"
|
|
1865
|
-
"
|
|
1866
|
-
"
|
|
1867
|
-
"
|
|
1868
|
-
"
|
|
1869
|
-
"
|
|
1859
|
+
"cyan",
|
|
1860
|
+
"green",
|
|
1861
|
+
"yellow",
|
|
1862
|
+
"red",
|
|
1863
|
+
"magenta",
|
|
1864
|
+
"white",
|
|
1865
|
+
"grey",
|
|
1866
|
+
"blue"
|
|
1870
1867
|
];
|
|
1871
1868
|
var NULL_MARKER = "\u2205";
|
|
1872
1869
|
var COL_PAD = 1;
|
|
@@ -2110,8 +2107,8 @@ function fmtEntry(entry) {
|
|
|
2110
2107
|
|
|
2111
2108
|
// src/ui/components/App.tsx
|
|
2112
2109
|
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2113
|
-
var PLACEHOLDER2 =
|
|
2114
|
-
var QUERY_HEADER_COLOR =
|
|
2110
|
+
var PLACEHOLDER2 = theme.muted;
|
|
2111
|
+
var QUERY_HEADER_COLOR = theme.muted;
|
|
2115
2112
|
function QueryHeader({ label, query }) {
|
|
2116
2113
|
const isMultiLine = query.includes("\n");
|
|
2117
2114
|
if (isMultiLine) {
|