@deaquinodev/querky 0.4.15 → 0.4.16
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 +41 -57
- 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: "#
|
|
1485
|
-
success: "
|
|
1486
|
-
error: "
|
|
1487
|
-
warning: "
|
|
1488
|
-
muted: "
|
|
1480
|
+
accent: "#d75f87",
|
|
1481
|
+
insertMode: "#87afaf",
|
|
1482
|
+
normalMode: "#af875f",
|
|
1483
|
+
shellMode: "#5faf5f",
|
|
1484
|
+
logo: "#d7af87",
|
|
1485
|
+
success: "#5faf5f",
|
|
1486
|
+
error: "#af5f5f",
|
|
1487
|
+
warning: "#d7af87",
|
|
1488
|
+
muted: "#9e9e9e"
|
|
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 = "#af87af";
|
|
1512
|
+
var STR_COLOR = "#5faf5f";
|
|
1513
|
+
var NUM_COLOR = "#d7af87";
|
|
1514
|
+
var CMT_COLOR = "#767676";
|
|
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.16" : 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 = "#d75f87";
|
|
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",
|
|
@@ -1850,23 +1833,24 @@ function cbold(hex, s) {
|
|
|
1850
1833
|
function cdim(hex, s) {
|
|
1851
1834
|
return fg(hex) + DIM + s + R;
|
|
1852
1835
|
}
|
|
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
|
|
1836
|
+
var ACCENT2 = theme.accent;
|
|
1837
|
+
var HEADER_COL = theme.muted;
|
|
1838
|
+
var NULL_COL = theme.muted;
|
|
1839
|
+
var INDIGO = theme.accent;
|
|
1840
|
+
var AI_COL = theme.insertMode;
|
|
1841
|
+
var ERROR_COL = theme.error;
|
|
1842
|
+
var WARN_COL = theme.warning;
|
|
1843
|
+
var SHELL_COL = theme.shellMode;
|
|
1844
|
+
var ERD_BORDER = "#767676";
|
|
1861
1845
|
var ERD_PALETTE = [
|
|
1862
|
-
"#
|
|
1863
|
-
"#
|
|
1864
|
-
"#
|
|
1865
|
-
"#
|
|
1866
|
-
"#
|
|
1867
|
-
"#
|
|
1868
|
-
"#
|
|
1869
|
-
"#
|
|
1846
|
+
"#d75f87",
|
|
1847
|
+
"#5faf5f",
|
|
1848
|
+
"#87afaf",
|
|
1849
|
+
"#af87af",
|
|
1850
|
+
"#af875f",
|
|
1851
|
+
"#d7af87",
|
|
1852
|
+
"#5f87af",
|
|
1853
|
+
"#5f8787"
|
|
1870
1854
|
];
|
|
1871
1855
|
var NULL_MARKER = "\u2205";
|
|
1872
1856
|
var COL_PAD = 1;
|
|
@@ -2110,8 +2094,8 @@ function fmtEntry(entry) {
|
|
|
2110
2094
|
|
|
2111
2095
|
// src/ui/components/App.tsx
|
|
2112
2096
|
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2113
|
-
var PLACEHOLDER2 =
|
|
2114
|
-
var QUERY_HEADER_COLOR =
|
|
2097
|
+
var PLACEHOLDER2 = theme.muted;
|
|
2098
|
+
var QUERY_HEADER_COLOR = theme.muted;
|
|
2115
2099
|
function QueryHeader({ label, query }) {
|
|
2116
2100
|
const isMultiLine = query.includes("\n");
|
|
2117
2101
|
if (isMultiLine) {
|