@electric-sql/pglite-repl 0.0.1-alpha.0 → 0.2.1
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/Repl.d.ts +11 -5
- package/dist/Repl.js +38 -13
- package/dist/Repl.js.map +1 -1
- package/dist/Repl.umd.cjs +37 -13
- package/dist/Repl.umd.cjs.map +1 -1
- package/dist/style.css +3 -3
- package/dist-webcomponent/Repl.js +1217 -1039
- package/dist-webcomponent/Repl.js.map +1 -1
- package/dist-webcomponent/src/Repl.d.ts +11 -5
- package/dist-webcomponent/src-webcomponent/main.d.ts +3 -3
- package/package.json +14 -11
package/dist/Repl.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { Extension } from '@uiw/react-codemirror';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export type ReplTheme =
|
|
2
|
+
import { CreateThemeOptions } from '@uiw/codemirror-themes';
|
|
3
|
+
import { PGliteInterface } from '@electric-sql/pglite';
|
|
4
|
+
export type ReplTheme = 'light' | 'dark' | 'auto';
|
|
5
|
+
type ThemeInit = (options?: Partial<CreateThemeOptions>) => Extension;
|
|
6
|
+
export declare const defaultLightThemeInit: ThemeInit;
|
|
7
|
+
export declare const defaultLightTheme: Extension;
|
|
8
|
+
export declare const defaultDarkThemeInit: ThemeInit;
|
|
9
|
+
export declare const defaultDarkTheme: Extension;
|
|
5
10
|
export interface ReplProps {
|
|
6
|
-
pg
|
|
11
|
+
pg?: PGliteInterface;
|
|
7
12
|
border?: boolean;
|
|
8
13
|
lightTheme?: Extension;
|
|
9
14
|
darkTheme?: Extension;
|
|
@@ -11,4 +16,5 @@ export interface ReplProps {
|
|
|
11
16
|
showTime?: boolean;
|
|
12
17
|
disableUpdateSchema?: boolean;
|
|
13
18
|
}
|
|
14
|
-
export declare function Repl({ pg, border, lightTheme, darkTheme, theme, showTime, disableUpdateSchema, }: ReplProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function Repl({ pg: pgProp, border, lightTheme, darkTheme, theme, showTime, disableUpdateSchema, }: ReplProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export {};
|
package/dist/Repl.js
CHANGED
|
@@ -5,9 +5,10 @@ import CodeMirror from "@uiw/react-codemirror";
|
|
|
5
5
|
import { defaultKeymap } from "@codemirror/commands";
|
|
6
6
|
import { keymap } from "@codemirror/view";
|
|
7
7
|
import { PostgreSQL, schemaCompletionSource, keywordCompletionSource } from "@codemirror/lang-sql";
|
|
8
|
+
import { usePGlite } from "@electric-sql/pglite-react";
|
|
8
9
|
import { LanguageSupport } from "@codemirror/language";
|
|
9
10
|
import { describe } from "psql-describe";
|
|
10
|
-
import {
|
|
11
|
+
import { githubLightInit, githubLight, githubDarkInit, githubDark } from "@uiw/codemirror-theme-github";
|
|
11
12
|
const describeCompletions = [
|
|
12
13
|
{
|
|
13
14
|
label: "\\d",
|
|
@@ -295,7 +296,7 @@ function describeCompletionsAutoComplete(context) {
|
|
|
295
296
|
};
|
|
296
297
|
}
|
|
297
298
|
function makeSqlExt(config = {}) {
|
|
298
|
-
|
|
299
|
+
const lang = config.dialect || PostgreSQL;
|
|
299
300
|
return new LanguageSupport(lang.language, [
|
|
300
301
|
// schemaCompletion(config),
|
|
301
302
|
config.schema ? lang.language.data.of({
|
|
@@ -431,6 +432,8 @@ function cellValue(value) {
|
|
|
431
432
|
str = JSON.stringify(value);
|
|
432
433
|
} else if (ArrayBuffer.isView(value)) {
|
|
433
434
|
str = `${value.byteLength} bytes`;
|
|
435
|
+
} else if (value === void 0) {
|
|
436
|
+
str = "undefined";
|
|
434
437
|
} else {
|
|
435
438
|
str = value.toString();
|
|
436
439
|
}
|
|
@@ -447,8 +450,14 @@ function ReplTable({ result }) {
|
|
|
447
450
|
};
|
|
448
451
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
449
452
|
/* @__PURE__ */ jsx("div", { className: "PGliteRepl-table-scroll", children: /* @__PURE__ */ jsxs("table", { className: "PGliteRepl-table", children: [
|
|
450
|
-
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { children: result.fields.map((col
|
|
451
|
-
/* @__PURE__ */ jsx("tbody", { children: rows.map((row, i) =>
|
|
453
|
+
/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsx("tr", { children: result.fields.map((col) => /* @__PURE__ */ jsx("th", { children: col.name }, col.name)) }) }),
|
|
454
|
+
/* @__PURE__ */ jsx("tbody", { children: rows.map((row, i) => (
|
|
455
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
456
|
+
/* @__PURE__ */ jsx("tr", { children: row.map((col, j) => (
|
|
457
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
458
|
+
/* @__PURE__ */ jsx("td", { className: cellClass(col), children: cellValue(col) }, j)
|
|
459
|
+
)) }, i)
|
|
460
|
+
)) })
|
|
452
461
|
] }) }),
|
|
453
462
|
/* @__PURE__ */ jsxs("div", { className: "PGliteRepl-table-row-count", children: [
|
|
454
463
|
result.rows.length > maxRows ? `${maxRows} of ` : "",
|
|
@@ -481,7 +490,10 @@ function ReplResponse({
|
|
|
481
490
|
if (response.error) {
|
|
482
491
|
out = /* @__PURE__ */ jsx("div", { className: "PGliteRepl-line PGliteRepl-error", children: response.error });
|
|
483
492
|
} else {
|
|
484
|
-
out = /* @__PURE__ */ jsx(Fragment, { children: (_a = response.results) == null ? void 0 : _a.map((result, i) =>
|
|
493
|
+
out = /* @__PURE__ */ jsx(Fragment, { children: (_a = response.results) == null ? void 0 : _a.map((result, i) => (
|
|
494
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
495
|
+
/* @__PURE__ */ jsx(OutLine, { result }, i)
|
|
496
|
+
)) });
|
|
485
497
|
}
|
|
486
498
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
487
499
|
/* @__PURE__ */ jsx("pre", { className: "PGliteRepl-line PGliteRepl-query", children: response.query }),
|
|
@@ -497,11 +509,15 @@ function ReplResponse({
|
|
|
497
509
|
] });
|
|
498
510
|
}
|
|
499
511
|
const baseKeymap = defaultKeymap.filter((key) => key.key !== "Enter");
|
|
512
|
+
const defaultLightThemeInit = githubLightInit;
|
|
513
|
+
const defaultLightTheme = githubLight;
|
|
514
|
+
const defaultDarkThemeInit = githubDarkInit;
|
|
515
|
+
const defaultDarkTheme = githubDark;
|
|
500
516
|
function Repl({
|
|
501
|
-
pg,
|
|
517
|
+
pg: pgProp,
|
|
502
518
|
border = false,
|
|
503
|
-
lightTheme =
|
|
504
|
-
darkTheme =
|
|
519
|
+
lightTheme = defaultLightTheme,
|
|
520
|
+
darkTheme = defaultDarkTheme,
|
|
505
521
|
theme = "auto",
|
|
506
522
|
showTime = false,
|
|
507
523
|
disableUpdateSchema = false
|
|
@@ -518,6 +534,7 @@ function Repl({
|
|
|
518
534
|
theme === "dark" ? darkTheme : lightTheme
|
|
519
535
|
);
|
|
520
536
|
const [styles, setStyles] = useState({});
|
|
537
|
+
const pg = usePGlite(pgProp);
|
|
521
538
|
useEffect(() => {
|
|
522
539
|
let ignore = false;
|
|
523
540
|
const init = async () => {
|
|
@@ -550,6 +567,7 @@ function Repl({
|
|
|
550
567
|
setTimeout(() => {
|
|
551
568
|
extractStyles();
|
|
552
569
|
}, 0);
|
|
570
|
+
return;
|
|
553
571
|
}
|
|
554
572
|
}, [theme, lightTheme, darkTheme]);
|
|
555
573
|
const onChange = useCallback((val, _viewUpdate) => {
|
|
@@ -653,11 +671,14 @@ function Repl({
|
|
|
653
671
|
defaultSchema: "public"
|
|
654
672
|
})
|
|
655
673
|
],
|
|
656
|
-
[pg, schema, value, output]
|
|
674
|
+
[pg, schema, value, output, disableUpdateSchema]
|
|
657
675
|
);
|
|
658
676
|
const extractStyles = () => {
|
|
659
|
-
var _a;
|
|
660
|
-
const cmEditorEl = (_a = rcm.current) == null ? void 0 : _a.editor.querySelector(".cm-editor");
|
|
677
|
+
var _a, _b;
|
|
678
|
+
const cmEditorEl = (_b = (_a = rcm.current) == null ? void 0 : _a.editor) == null ? void 0 : _b.querySelector(".cm-editor");
|
|
679
|
+
if (!cmEditorEl) {
|
|
680
|
+
throw new Error("No CodeMirror editor found");
|
|
681
|
+
}
|
|
661
682
|
const gutterEl = cmEditorEl.querySelector(".cm-gutters");
|
|
662
683
|
const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl);
|
|
663
684
|
const foregroundColor = cmEditorElComputedStyles.color;
|
|
@@ -691,7 +712,7 @@ function Repl({
|
|
|
691
712
|
ref: (ref) => outputRef.current = ref,
|
|
692
713
|
children: [
|
|
693
714
|
loading && /* @__PURE__ */ jsx("div", { className: "PGliteRepl-loading-msg", children: "Loading..." }),
|
|
694
|
-
output.map((response
|
|
715
|
+
output.map((response) => /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(ReplResponse, { response: response || [], showTime }) }, `${response.query}-${response.time}`))
|
|
695
716
|
]
|
|
696
717
|
}
|
|
697
718
|
),
|
|
@@ -721,6 +742,10 @@ function Repl({
|
|
|
721
742
|
);
|
|
722
743
|
}
|
|
723
744
|
export {
|
|
724
|
-
Repl
|
|
745
|
+
Repl,
|
|
746
|
+
defaultDarkTheme,
|
|
747
|
+
defaultDarkThemeInit,
|
|
748
|
+
defaultLightTheme,
|
|
749
|
+
defaultLightThemeInit
|
|
725
750
|
};
|
|
726
751
|
//# sourceMappingURL=Repl.js.map
|
package/dist/Repl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Repl.js","sources":["../src/sqlSupport.ts","../src/utils.ts","../src/ReplTable.tsx","../src/ReplResponse.tsx","../src/Repl.tsx"],"sourcesContent":["import {\n PostgreSQL,\n SQLConfig,\n keywordCompletionSource,\n schemaCompletionSource,\n} from \"@codemirror/lang-sql\";\nimport { CompletionContext, CompletionResult } from \"@codemirror/autocomplete\";\nimport { LanguageSupport } from \"@codemirror/language\";\n\nconst describeCompletions = [\n {\n label: \"\\\\d\",\n type: \"function\",\n displayLabel: \"\\\\d[S+] [ pattern ]\",\n detail: \"PSQL Describe\",\n },\n {\n label: \"\\\\da\",\n type: \"function\",\n displayLabel: \"\\\\da[S] [ pattern ]\",\n detail: \"Lists aggregate functions\",\n },\n {\n label: \"\\\\dA\",\n type: \"function\",\n displayLabel: \"\\\\dA[+] [ pattern ]\",\n detail: \"Lists access methods\",\n },\n {\n label: \"\\\\dAc\",\n type: \"function\",\n displayLabel: \"\\\\dAc[+] [access-method-pattern [input-type-pattern]]\",\n detail: \"Lists operator classes\",\n },\n {\n label: \"\\\\dAf\",\n type: \"function\",\n displayLabel: \"\\\\dAf[+] [access-method-pattern [input-type-pattern]]\",\n detail: \"Lists operator families\",\n },\n {\n label: \"\\\\dAo\",\n type: \"function\",\n displayLabel: \"\\\\dAo[+] [access-method-pattern [operator-family-pattern]]\",\n detail: \"Lists operators associated with operator families\",\n },\n {\n label: \"\\\\dAp\",\n type: \"function\",\n displayLabel: \"\\\\dAp[+] [access-method-pattern [operator-family-pattern]]\",\n detail: \"Lists support functions associated with operator families\",\n },\n {\n label: \"\\\\db\",\n type: \"function\",\n displayLabel: \"\\\\db[+] [ pattern ]\",\n detail: \"Lists tablespaces\",\n },\n {\n label: \"\\\\dc\",\n type: \"function\",\n displayLabel: \"\\\\dc[S+] [ pattern ]\",\n detail: \"Lists conversions between character-set encodings\",\n },\n {\n label: \"\\\\dconfig\",\n type: \"function\",\n displayLabel: \"\\\\dconfig[+] [ pattern ]\",\n detail: \"Lists server configuration parameters and their values\",\n },\n {\n label: \"\\\\dC\",\n type: \"function\",\n displayLabel: \"\\\\dC[+] [ pattern ]\",\n detail: \"Lists type casts\",\n },\n {\n label: \"\\\\dd\",\n type: \"function\",\n displayLabel: \"\\\\dd[S] [ pattern ]\",\n detail:\n \"Shows the descriptions of objects of type constraint, operator class, operator family, rule, and trigger\",\n },\n {\n label: \"\\\\dD\",\n type: \"function\",\n displayLabel: \"\\\\dD[S+] [ pattern ]\",\n detail: \"Lists domains\",\n },\n {\n label: \"\\\\ddp\",\n type: \"function\",\n displayLabel: \"\\\\ddp [ pattern ]\",\n detail: \"Lists default access privilege settings\",\n },\n {\n label: \"\\\\dE\",\n type: \"function\",\n displayLabel: \"\\\\dE[S+] [ pattern ]\",\n detail: \"Lists foreign tables\",\n },\n {\n label: \"\\\\di\",\n type: \"function\",\n displayLabel: \"\\\\di[S+] [ pattern ]\",\n detail: \"Lists indexes\",\n },\n {\n label: \"\\\\dm\",\n type: \"function\",\n displayLabel: \"\\\\dm[S+] [ pattern ]\",\n detail: \"Lists materialized views\",\n },\n {\n label: \"\\\\ds\",\n type: \"function\",\n displayLabel: \"\\\\ds[S+] [ pattern ]\",\n detail: \"Lists sequences\",\n },\n {\n label: \"\\\\dt\",\n type: \"function\",\n displayLabel: \"\\\\dt[S+] [ pattern ]\",\n detail: \"Lists tables\",\n },\n {\n label: \"\\\\dv\",\n type: \"function\",\n displayLabel: \"\\\\dv[S+] [ pattern ]\",\n detail: \"Lists views\",\n },\n {\n label: \"\\\\des\",\n type: \"function\",\n displayLabel: \"\\\\des[+] [ pattern ]\",\n detail: \"Lists foreign servers\",\n },\n {\n label: \"\\\\det\",\n type: \"function\",\n displayLabel: \"\\\\det[+] [ pattern ]\",\n detail: \"Lists foreign tables\",\n },\n {\n label: \"\\\\deu\",\n type: \"function\",\n displayLabel: \"\\\\deu[+] [ pattern ]\",\n detail: \"Lists user mappings\",\n },\n {\n label: \"\\\\dew\",\n type: \"function\",\n displayLabel: \"\\\\dew[+] [ pattern ]\",\n detail: \"Lists foreign-data wrappers\",\n },\n {\n label: \"\\\\df\",\n type: \"function\",\n displayLabel: \"\\\\df[anptwS+] [ pattern [ arg_pattern ... ] ]\",\n detail: \"Lists functions\",\n },\n {\n label: \"\\\\dF\",\n type: \"function\",\n displayLabel: \"\\\\dF[+] [ pattern ]\",\n detail: \"Lists text search configurations\",\n },\n {\n label: \"\\\\dFd\",\n type: \"function\",\n displayLabel: \"\\\\dFd[+] [ pattern ]\",\n detail: \"Lists text search dictionaries\",\n },\n {\n label: \"\\\\dFp\",\n type: \"function\",\n displayLabel: \"\\\\dFp[+] [ pattern ]\",\n detail: \"Lists text search parsers\",\n },\n {\n label: \"\\\\dFt\",\n type: \"function\",\n displayLabel: \"\\\\dFt[+] [ pattern ]\",\n detail: \"Lists text search templates\",\n },\n {\n label: \"\\\\dg\",\n type: \"function\",\n displayLabel: \"\\\\dg[S+] [ pattern ]\",\n detail: \"Lists database roles\",\n },\n {\n label: \"\\\\dl\",\n type: \"function\",\n displayLabel: \"\\\\dl[+] \",\n detail: \"List large objects\",\n },\n {\n label: \"\\\\dL\",\n type: \"function\",\n displayLabel: \"\\\\dL[S+] [ pattern ]\",\n detail: \"Lists procedural languages\",\n },\n {\n label: \"\\\\dn\",\n type: \"function\",\n displayLabel: \"\\\\dn[S+] [ pattern ]\",\n detail: \"Lists schemas\",\n },\n {\n label: \"\\\\do\",\n type: \"function\",\n displayLabel: \"\\\\do[S+] [ pattern [ arg_pattern [ arg_pattern ] ] ]\",\n detail: \"Lists operators with their operand and result types\",\n },\n {\n label: \"\\\\dO\",\n type: \"function\",\n displayLabel: \"\\\\dO[S+] [ pattern ]\",\n detail: \"Lists collations\",\n },\n {\n label: \"\\\\dp\",\n type: \"function\",\n displayLabel: \"\\\\dp[S] [ pattern ]\",\n detail:\n \"Lists tables, views and sequences with their associated access privileges\",\n },\n {\n label: \"\\\\dP\",\n type: \"function\",\n displayLabel: \"\\\\dP[itn+] [ pattern ]\",\n detail: \"Lists partitioned relations\",\n },\n {\n label: \"\\\\drds\",\n type: \"function\",\n displayLabel: \"\\\\drds [ role-pattern [ database-pattern ] ]\",\n detail: \"Lists defined configuration settings\",\n },\n {\n label: \"\\\\drg\",\n type: \"function\",\n displayLabel: \"\\\\drg[S] [ pattern ]\",\n detail: \"Lists information about each granted role membership\",\n },\n {\n label: \"\\\\dRp\",\n type: \"function\",\n displayLabel: \"\\\\dRp[+] [ pattern ]\",\n detail: \"Lists replication publications\",\n },\n {\n label: \"\\\\dRs\",\n type: \"function\",\n displayLabel: \"\\\\dRs[+] [ pattern ]\",\n detail: \"Lists replication subscriptions\",\n },\n {\n label: \"\\\\dT\",\n type: \"function\",\n displayLabel: \"\\\\dT[S+] [ pattern ]\",\n detail: \"Lists data types\",\n },\n {\n label: \"\\\\du\",\n type: \"function\",\n displayLabel: \"\\\\du[S+] [ pattern ]\",\n detail: \"Lists database roles\",\n },\n {\n label: \"\\\\dx\",\n type: \"function\",\n displayLabel: \"\\\\dx[+] [ pattern ]\",\n detail: \"Lists installed extensions\",\n },\n {\n label: \"\\\\dX\",\n type: \"function\",\n displayLabel: \"\\\\dX [ pattern ]\",\n detail: \"Lists extended statistics\",\n },\n {\n label: \"\\\\dy\",\n type: \"function\",\n displayLabel: \"\\\\dy[+] [ pattern ]\",\n detail: \"Lists event triggers\",\n },\n];\n\nfunction describeCompletionsAutoComplete(\n context: CompletionContext,\n): CompletionResult | null {\n const word = context.matchBefore(/\\\\\\w*/);\n if (!word || word.from === word.to) return null;\n return {\n from: word.from,\n options: describeCompletions,\n };\n}\n\n// This is a reimplemented version of `sql()` from `@codemirror/lang-sql` that\n// includes a custom autocompletion function for postgresql's `\\d` command.\nexport function makeSqlExt(config: SQLConfig = {}) {\n let lang = config.dialect || PostgreSQL;\n return new LanguageSupport(lang.language, [\n // schemaCompletion(config),\n config.schema\n ? lang.language.data.of({\n autocomplete: schemaCompletionSource(config),\n })\n : [],\n // keywordCompletion(lang, !!config.upperCaseKeywords)\n lang.language.data.of({\n autocomplete: keywordCompletionSource(lang, !!config.upperCaseKeywords),\n }),\n lang.language.data.of({\n autocomplete: describeCompletionsAutoComplete,\n }),\n ]);\n}\n","import { type PGlite } from \"@electric-sql/pglite\";\nimport { describe } from \"psql-describe\";\nimport type { Results, Response } from \"./types\";\n\nexport async function runQuery(query: string, pg: PGlite): Promise<Response> {\n if (query.trim().toLowerCase().startsWith(\"\\\\\")) {\n return runDescribe(query, pg);\n }\n const start = performance.now();\n try {\n const result = await pg.exec(query, {\n rowMode: \"array\",\n });\n const elapsed = performance.now() - start;\n return {\n query,\n results: result as any[],\n time: elapsed,\n };\n } catch (err) {\n return {\n query,\n error: (err as Error).message,\n time: performance.now() - start,\n };\n }\n}\n\nexport async function runDescribe(\n query: string,\n pg: PGlite,\n): Promise<Response> {\n const start = performance.now();\n let out: any;\n let ret: Results;\n const { promise, cancel: _cancel } = describe(\n query,\n \"postgres\",\n async (sql) => {\n ret = (await pg.exec(sql, { rowMode: \"array\" }))[0] as Results;\n return {\n rows: ret.rows,\n fields: ret.fields,\n rowCount: ret.rows.length,\n };\n },\n (output) => {\n out = output;\n },\n );\n await promise;\n const elapsed = performance.now() - start;\n\n if (!out) {\n return {\n query,\n error: \"No output\",\n time: elapsed,\n };\n } else if (typeof out === \"string\") {\n if (out.startsWith(\"ERROR:\")) {\n return {\n query,\n error: out,\n time: elapsed,\n };\n } else {\n return {\n query,\n text: out,\n time: elapsed,\n };\n }\n } else {\n return {\n query,\n text: out.title,\n results: [ret!],\n time: elapsed,\n };\n }\n}\n\nexport async function getSchema(pg: PGlite): Promise<Record<string, string[]>> {\n const ret = await pg.query<{\n schema: string;\n table: string;\n columns: string;\n }>(`\n SELECT \n table_schema AS schema,\n table_name AS table,\n array_agg(column_name) AS columns\n FROM \n information_schema.columns\n GROUP BY \n table_schema, table_name\n ORDER BY \n table_schema, table_name;\n `);\n const schema: Record<string, string[]> = {};\n for (const row of ret.rows) {\n schema[`${row.schema}.${row.table}`] = Array.isArray(row.columns)\n ? row.columns\n : row.columns.slice(1, -1).split(\",\");\n }\n return schema;\n}\n","import { useState, useEffect } from \"react\";\nimport type { Results } from \"./types\";\n\nconst tableRowIncrement = 100;\nconst maxCellLength = 200;\n\nfunction cellClass(value: any) {\n if (value === null) {\n return \"PGliteRepl-null\";\n } else if (typeof value === \"number\") {\n return \"PGliteRepl-number\";\n } else if (typeof value === \"boolean\") {\n return \"PGliteRepl-boolean\";\n } else {\n return \"\";\n }\n}\n\nfunction cellValue(value: any) {\n let str: string;\n if (value === null) {\n str = \"null\";\n } else if (typeof value === \"number\") {\n str = value.toString();\n } else if (typeof value === \"boolean\") {\n str = value ? \"true\" : \"false\";\n } else if (value instanceof Date) {\n str = value.toISOString();\n } else if (Array.isArray(value)) {\n str = `[${value.map(cellValue).join(\", \")}]`;\n } else if (typeof value === \"object\") {\n str = JSON.stringify(value);\n } else if (ArrayBuffer.isView(value)) {\n str = `${value.byteLength} bytes`;\n } else {\n str = value.toString();\n }\n return str.length > maxCellLength ? str.slice(0, maxCellLength) + \"…\" : str;\n}\n\nexport function ReplTable({ result }: { result: Results }) {\n const [maxRows, setMaxRows] = useState(tableRowIncrement);\n const rows = result.rows.slice(0, maxRows);\n\n useEffect(() => {\n // Reset maxRows when the result changes\n setMaxRows(tableRowIncrement);\n }, [result]);\n\n const showMore = () => {\n setMaxRows((prev) => prev + tableRowIncrement);\n };\n\n return (\n <>\n <div className=\"PGliteRepl-table-scroll\">\n <table className=\"PGliteRepl-table\">\n <thead>\n <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.name}</th>\n ))}\n </tr>\n {/* <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.dataTypeID}</th>\n ))}\n </tr> */}\n </thead>\n <tbody>\n {rows.map((row, i) => (\n <tr key={i}>\n {row.map((col, j) => (\n <td key={j} className={cellClass(col)}>\n {cellValue(col)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"PGliteRepl-table-row-count\">\n {result.rows.length > maxRows ? `${maxRows} of ` : \"\"}\n {result.rows.length} rows{\" \"}\n {result.rows.length > maxRows && (\n <a\n href=\"\"\n onClick={(e) => {\n e.preventDefault();\n showMore();\n }}\n >\n Show more\n </a>\n )}\n </div>\n </>\n );\n}\n","import type { Results, Response } from \"./types\";\nimport { ReplTable } from \"./ReplTable\";\n\nfunction OutLine({ result }: { result: Results }) {\n return (\n <div className=\"PGliteRepl-line\">\n {result.fields.length > 0 ? (\n <ReplTable result={result} />\n ) : (\n <div className=\"PGliteRepl-null\">null</div>\n )}\n </div>\n );\n}\n\nexport function ReplResponse({\n response,\n showTime,\n}: {\n response: Response;\n showTime: boolean;\n}) {\n let out;\n if (response.error) {\n out = (\n <div className=\"PGliteRepl-line PGliteRepl-error\">{response.error}</div>\n );\n } else {\n out = (\n <>\n {response.results?.map((result, i) => (\n <OutLine key={i} result={result} />\n ))}\n </>\n );\n }\n return (\n <>\n <pre className=\"PGliteRepl-line PGliteRepl-query\">{response.query}</pre>\n {response.text && (\n <div className=\"PGliteRepl-line PGliteRepl-text\">{response.text}</div>\n )}\n {out}\n <div className=\"PGliteRepl-divider\">\n <hr />\n {showTime && (\n <div className=\"PGliteRepl-time\">{response.time.toFixed(1)}ms</div>\n )}\n </div>\n </>\n );\n}\n","import { useState, useCallback, useMemo, useRef, useEffect } from \"react\";\nimport CodeMirror, {\n type ViewUpdate,\n type ReactCodeMirrorRef,\n type Extension,\n} from \"@uiw/react-codemirror\";\nimport { defaultKeymap } from \"@codemirror/commands\";\nimport { keymap } from \"@codemirror/view\";\nimport { PostgreSQL } from \"@codemirror/lang-sql\";\nimport { type PGlite } from \"@electric-sql/pglite\";\nimport { makeSqlExt } from \"./sqlSupport\";\nimport type { Response } from \"./types\";\nimport { runQuery, getSchema } from \"./utils\";\nimport { ReplResponse } from \"./ReplResponse\";\nimport { xcodeDark, xcodeLight } from \"@uiw/codemirror-theme-xcode\";\n\nimport \"./Repl.css\";\n\n// Filter out the Enter key from the default keymap, we entirely override its behavior\n// to run the query when the user presses Enter.\n// We keep the up and down arrow keys as we only override their behavior\n// when the cursor is on the first or last line.\nconst baseKeymap = defaultKeymap.filter((key) => key.key !== \"Enter\");\n\nexport type ReplTheme = \"light\" | \"dark\" | \"auto\";\n\nexport interface ReplProps {\n pg: PGlite;\n border?: boolean;\n lightTheme?: Extension;\n darkTheme?: Extension;\n theme?: ReplTheme;\n showTime?: boolean;\n disableUpdateSchema?: boolean;\n}\n\nexport function Repl({\n pg,\n border = false,\n lightTheme = xcodeLight,\n darkTheme = xcodeDark,\n theme = \"auto\",\n showTime = false,\n disableUpdateSchema = false,\n}: ReplProps) {\n const [value, setValue] = useState(\"\");\n const valueNoHistory = useRef(\"\");\n const [loading, setLoading] = useState(true);\n const [output, setOutput] = useState<Response[]>([]);\n const outputRef = useRef<HTMLDivElement | null>(null);\n const [schema, setSchema] = useState<Record<string, string[]>>({});\n const historyPos = useRef(-1);\n const rcm = useRef<ReactCodeMirrorRef | null>(null);\n const [themeToUse, setThemeToUse] = useState<Extension>(\n theme === \"dark\" ? darkTheme : lightTheme,\n );\n const [styles, setStyles] = useState<{ [key: string]: string | number }>({});\n\n useEffect(() => {\n let ignore = false;\n const init = async () => {\n await pg.waitReady;\n if (ignore) return;\n setLoading(false);\n };\n setLoading(true);\n init();\n return () => {\n ignore = true;\n };\n }, [pg]);\n\n useEffect(() => {\n if (theme === \"auto\") {\n const systemTheme = window.matchMedia(\"(prefers-color-scheme: dark)\")\n .matches\n ? \"dark\"\n : \"light\";\n setThemeToUse(systemTheme === \"dark\" ? darkTheme : lightTheme);\n const listener = (e: MediaQueryListEvent) => {\n setThemeToUse(e.matches ? darkTheme : lightTheme);\n setTimeout(() => {\n extractStyles();\n }, 0);\n };\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .addEventListener(\"change\", listener);\n return () => {\n window\n .matchMedia(\"(prefers-color-scheme: dark)\")\n .removeEventListener(\"change\", listener);\n };\n } else {\n setThemeToUse(theme === \"dark\" ? darkTheme : lightTheme);\n setTimeout(() => {\n extractStyles();\n }, 0);\n }\n }, [theme, lightTheme, darkTheme]);\n\n const onChange = useCallback((val: string, _viewUpdate: ViewUpdate) => {\n extractStyles();\n setValue(val);\n if (historyPos.current === -1) {\n valueNoHistory.current = val;\n }\n }, []);\n\n const extensions = useMemo(\n () => [\n keymap.of([\n {\n key: \"Enter\",\n preventDefault: true,\n run: () => {\n if (value.trim() === \"\") return false; // Do nothing if the input is empty\n runQuery(value, pg).then((response) => {\n setOutput((prev) => [...prev, response]);\n if (outputRef.current) {\n setTimeout(() => {\n outputRef.current!.scrollTop =\n outputRef.current!.scrollHeight;\n }, 0);\n }\n // Update the schema for any new tables to be used in autocompletion\n if (!disableUpdateSchema) {\n getSchema(pg).then(setSchema);\n }\n });\n historyPos.current = -1;\n valueNoHistory.current = \"\";\n setValue(\"\");\n return true;\n },\n },\n {\n key: \"ArrowUp\",\n run: (view) => {\n const state = view.state;\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number;\n if (cursorLine === 1) {\n // If the cursor is on the first line, go back in history\n const currentPos = historyPos.current;\n historyPos.current++;\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1;\n }\n if (historyPos.current < -1) {\n historyPos.current = -1;\n }\n if (historyPos.current === currentPos) return true;\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current);\n } else {\n setValue(output[output.length - historyPos.current - 1].query);\n }\n return true; // Prevent the default behavior\n }\n return false; // Allow the default behavior\n },\n },\n {\n key: \"ArrowDown\",\n run: (view) => {\n const state = view.state;\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number;\n const lastLine = state.doc.lines;\n if (cursorLine === lastLine) {\n // If the cursor is on the last line, go forward in history\n const currentPos = historyPos.current;\n historyPos.current--;\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1;\n }\n if (historyPos.current < -1) {\n historyPos.current = -1;\n }\n if (historyPos.current === currentPos) return true;\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current);\n } else {\n setValue(output[output.length - historyPos.current - 1].query);\n }\n return true; // Prevent the default behavior\n }\n return false; // Allow the default behavior\n },\n },\n ...baseKeymap,\n ]),\n makeSqlExt({\n dialect: PostgreSQL,\n schema: schema,\n tables: [\n {\n label: \"d\",\n displayLabel: \"\\\\d\",\n },\n ],\n defaultSchema: \"public\",\n }),\n ],\n [pg, schema, value, output],\n );\n\n const extractStyles = () => {\n // Get the styles from the CodeMirror editor to use in the REPL\n const cmEditorEl = rcm.current?.editor!.querySelector(\".cm-editor\")!;\n const gutterEl = cmEditorEl.querySelector(\".cm-gutters\")!;\n const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl);\n const foregroundColor = cmEditorElComputedStyles.color;\n const backgroundColor = cmEditorElComputedStyles.backgroundColor;\n\n const gutterElComputedStyles = window.getComputedStyle(gutterEl!);\n const gutterBorder = gutterElComputedStyles.borderRight;\n const borderWidth = parseInt(gutterElComputedStyles.borderRightWidth) || 0;\n const borderColor = borderWidth\n ? gutterElComputedStyles.borderRightColor\n : foregroundColor.replace(\"rgb\", \"rgba\").replace(\")\", \", 0.15)\");\n const border = borderWidth\n ? gutterElComputedStyles.borderRight\n : `1px solid ${borderColor}`;\n\n setStyles({\n \"--PGliteRepl-foreground-color\": foregroundColor,\n \"--PGliteRepl-background-color\": backgroundColor,\n \"--PGliteRepl-border\": border,\n \"--PGliteRepl-gutter-border\": gutterBorder,\n \"--PGliteRepl-border-color\": borderColor,\n });\n };\n\n return (\n <div\n className={`\n PGliteRepl-root\n ${border ? \"PGliteRepl-root-border\" : \"\"}\n `}\n style={styles}\n >\n <div\n className=\"PGliteRepl-output\"\n ref={(ref) => (outputRef.current = ref)}\n >\n {loading && <div className=\"PGliteRepl-loading-msg\">Loading...</div>}\n {output.map((response, i) => (\n <div key={i}>\n <ReplResponse response={response || []} showTime={showTime} />\n </div>\n ))}\n </div>\n <CodeMirror\n ref={rcm}\n className={`PGliteRepl-input ${loading ? \"PGliteRepl-input-loading\" : \"\"}`}\n width=\"100%\"\n value={value}\n basicSetup={{\n defaultKeymap: false,\n }}\n extensions={extensions}\n theme={themeToUse}\n onChange={onChange}\n editable={!loading}\n onCreateEditor={() => {\n extractStyles();\n setTimeout(extractStyles, 0);\n getSchema(pg).then(setSchema);\n }}\n />\n </div>\n );\n}\n"],"names":["border"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Repl.js","sources":["../src/sqlSupport.ts","../src/utils.ts","../src/ReplTable.tsx","../src/ReplResponse.tsx","../src/Repl.tsx"],"sourcesContent":["import {\n PostgreSQL,\n SQLConfig,\n keywordCompletionSource,\n schemaCompletionSource,\n} from '@codemirror/lang-sql'\nimport { CompletionContext, CompletionResult } from '@codemirror/autocomplete'\nimport { LanguageSupport } from '@codemirror/language'\n\nconst describeCompletions = [\n {\n label: '\\\\d',\n type: 'function',\n displayLabel: '\\\\d[S+] [ pattern ]',\n detail: 'PSQL Describe',\n },\n {\n label: '\\\\da',\n type: 'function',\n displayLabel: '\\\\da[S] [ pattern ]',\n detail: 'Lists aggregate functions',\n },\n {\n label: '\\\\dA',\n type: 'function',\n displayLabel: '\\\\dA[+] [ pattern ]',\n detail: 'Lists access methods',\n },\n {\n label: '\\\\dAc',\n type: 'function',\n displayLabel: '\\\\dAc[+] [access-method-pattern [input-type-pattern]]',\n detail: 'Lists operator classes',\n },\n {\n label: '\\\\dAf',\n type: 'function',\n displayLabel: '\\\\dAf[+] [access-method-pattern [input-type-pattern]]',\n detail: 'Lists operator families',\n },\n {\n label: '\\\\dAo',\n type: 'function',\n displayLabel: '\\\\dAo[+] [access-method-pattern [operator-family-pattern]]',\n detail: 'Lists operators associated with operator families',\n },\n {\n label: '\\\\dAp',\n type: 'function',\n displayLabel: '\\\\dAp[+] [access-method-pattern [operator-family-pattern]]',\n detail: 'Lists support functions associated with operator families',\n },\n {\n label: '\\\\db',\n type: 'function',\n displayLabel: '\\\\db[+] [ pattern ]',\n detail: 'Lists tablespaces',\n },\n {\n label: '\\\\dc',\n type: 'function',\n displayLabel: '\\\\dc[S+] [ pattern ]',\n detail: 'Lists conversions between character-set encodings',\n },\n {\n label: '\\\\dconfig',\n type: 'function',\n displayLabel: '\\\\dconfig[+] [ pattern ]',\n detail: 'Lists server configuration parameters and their values',\n },\n {\n label: '\\\\dC',\n type: 'function',\n displayLabel: '\\\\dC[+] [ pattern ]',\n detail: 'Lists type casts',\n },\n {\n label: '\\\\dd',\n type: 'function',\n displayLabel: '\\\\dd[S] [ pattern ]',\n detail:\n 'Shows the descriptions of objects of type constraint, operator class, operator family, rule, and trigger',\n },\n {\n label: '\\\\dD',\n type: 'function',\n displayLabel: '\\\\dD[S+] [ pattern ]',\n detail: 'Lists domains',\n },\n {\n label: '\\\\ddp',\n type: 'function',\n displayLabel: '\\\\ddp [ pattern ]',\n detail: 'Lists default access privilege settings',\n },\n {\n label: '\\\\dE',\n type: 'function',\n displayLabel: '\\\\dE[S+] [ pattern ]',\n detail: 'Lists foreign tables',\n },\n {\n label: '\\\\di',\n type: 'function',\n displayLabel: '\\\\di[S+] [ pattern ]',\n detail: 'Lists indexes',\n },\n {\n label: '\\\\dm',\n type: 'function',\n displayLabel: '\\\\dm[S+] [ pattern ]',\n detail: 'Lists materialized views',\n },\n {\n label: '\\\\ds',\n type: 'function',\n displayLabel: '\\\\ds[S+] [ pattern ]',\n detail: 'Lists sequences',\n },\n {\n label: '\\\\dt',\n type: 'function',\n displayLabel: '\\\\dt[S+] [ pattern ]',\n detail: 'Lists tables',\n },\n {\n label: '\\\\dv',\n type: 'function',\n displayLabel: '\\\\dv[S+] [ pattern ]',\n detail: 'Lists views',\n },\n {\n label: '\\\\des',\n type: 'function',\n displayLabel: '\\\\des[+] [ pattern ]',\n detail: 'Lists foreign servers',\n },\n {\n label: '\\\\det',\n type: 'function',\n displayLabel: '\\\\det[+] [ pattern ]',\n detail: 'Lists foreign tables',\n },\n {\n label: '\\\\deu',\n type: 'function',\n displayLabel: '\\\\deu[+] [ pattern ]',\n detail: 'Lists user mappings',\n },\n {\n label: '\\\\dew',\n type: 'function',\n displayLabel: '\\\\dew[+] [ pattern ]',\n detail: 'Lists foreign-data wrappers',\n },\n {\n label: '\\\\df',\n type: 'function',\n displayLabel: '\\\\df[anptwS+] [ pattern [ arg_pattern ... ] ]',\n detail: 'Lists functions',\n },\n {\n label: '\\\\dF',\n type: 'function',\n displayLabel: '\\\\dF[+] [ pattern ]',\n detail: 'Lists text search configurations',\n },\n {\n label: '\\\\dFd',\n type: 'function',\n displayLabel: '\\\\dFd[+] [ pattern ]',\n detail: 'Lists text search dictionaries',\n },\n {\n label: '\\\\dFp',\n type: 'function',\n displayLabel: '\\\\dFp[+] [ pattern ]',\n detail: 'Lists text search parsers',\n },\n {\n label: '\\\\dFt',\n type: 'function',\n displayLabel: '\\\\dFt[+] [ pattern ]',\n detail: 'Lists text search templates',\n },\n {\n label: '\\\\dg',\n type: 'function',\n displayLabel: '\\\\dg[S+] [ pattern ]',\n detail: 'Lists database roles',\n },\n {\n label: '\\\\dl',\n type: 'function',\n displayLabel: '\\\\dl[+] ',\n detail: 'List large objects',\n },\n {\n label: '\\\\dL',\n type: 'function',\n displayLabel: '\\\\dL[S+] [ pattern ]',\n detail: 'Lists procedural languages',\n },\n {\n label: '\\\\dn',\n type: 'function',\n displayLabel: '\\\\dn[S+] [ pattern ]',\n detail: 'Lists schemas',\n },\n {\n label: '\\\\do',\n type: 'function',\n displayLabel: '\\\\do[S+] [ pattern [ arg_pattern [ arg_pattern ] ] ]',\n detail: 'Lists operators with their operand and result types',\n },\n {\n label: '\\\\dO',\n type: 'function',\n displayLabel: '\\\\dO[S+] [ pattern ]',\n detail: 'Lists collations',\n },\n {\n label: '\\\\dp',\n type: 'function',\n displayLabel: '\\\\dp[S] [ pattern ]',\n detail:\n 'Lists tables, views and sequences with their associated access privileges',\n },\n {\n label: '\\\\dP',\n type: 'function',\n displayLabel: '\\\\dP[itn+] [ pattern ]',\n detail: 'Lists partitioned relations',\n },\n {\n label: '\\\\drds',\n type: 'function',\n displayLabel: '\\\\drds [ role-pattern [ database-pattern ] ]',\n detail: 'Lists defined configuration settings',\n },\n {\n label: '\\\\drg',\n type: 'function',\n displayLabel: '\\\\drg[S] [ pattern ]',\n detail: 'Lists information about each granted role membership',\n },\n {\n label: '\\\\dRp',\n type: 'function',\n displayLabel: '\\\\dRp[+] [ pattern ]',\n detail: 'Lists replication publications',\n },\n {\n label: '\\\\dRs',\n type: 'function',\n displayLabel: '\\\\dRs[+] [ pattern ]',\n detail: 'Lists replication subscriptions',\n },\n {\n label: '\\\\dT',\n type: 'function',\n displayLabel: '\\\\dT[S+] [ pattern ]',\n detail: 'Lists data types',\n },\n {\n label: '\\\\du',\n type: 'function',\n displayLabel: '\\\\du[S+] [ pattern ]',\n detail: 'Lists database roles',\n },\n {\n label: '\\\\dx',\n type: 'function',\n displayLabel: '\\\\dx[+] [ pattern ]',\n detail: 'Lists installed extensions',\n },\n {\n label: '\\\\dX',\n type: 'function',\n displayLabel: '\\\\dX [ pattern ]',\n detail: 'Lists extended statistics',\n },\n {\n label: '\\\\dy',\n type: 'function',\n displayLabel: '\\\\dy[+] [ pattern ]',\n detail: 'Lists event triggers',\n },\n]\n\nfunction describeCompletionsAutoComplete(\n context: CompletionContext,\n): CompletionResult | null {\n const word = context.matchBefore(/\\\\\\w*/)\n if (!word || word.from === word.to) return null\n return {\n from: word.from,\n options: describeCompletions,\n }\n}\n\n// This is a reimplemented version of `sql()` from `@codemirror/lang-sql` that\n// includes a custom autocompletion function for postgresql's `\\d` command.\nexport function makeSqlExt(config: SQLConfig = {}) {\n const lang = config.dialect || PostgreSQL\n return new LanguageSupport(lang.language, [\n // schemaCompletion(config),\n config.schema\n ? lang.language.data.of({\n autocomplete: schemaCompletionSource(config),\n })\n : [],\n // keywordCompletion(lang, !!config.upperCaseKeywords)\n lang.language.data.of({\n autocomplete: keywordCompletionSource(lang, !!config.upperCaseKeywords),\n }),\n lang.language.data.of({\n autocomplete: describeCompletionsAutoComplete,\n }),\n ])\n}\n","import { type PGliteInterface } from '@electric-sql/pglite'\nimport { describe } from 'psql-describe'\nimport type { Results, Response } from './types'\n\nexport async function runQuery(\n query: string,\n pg: PGliteInterface,\n): Promise<Response> {\n if (query.trim().toLowerCase().startsWith('\\\\')) {\n return runDescribe(query, pg)\n }\n const start = performance.now()\n try {\n const result = await pg.exec(query, {\n rowMode: 'array',\n })\n const elapsed = performance.now() - start\n return {\n query,\n results: result as Results[],\n time: elapsed,\n }\n } catch (err) {\n return {\n query,\n error: (err as Error).message,\n time: performance.now() - start,\n }\n }\n}\n\nexport async function runDescribe(\n query: string,\n pg: PGliteInterface,\n): Promise<Response> {\n const start = performance.now()\n let out: string | Record<string, unknown> | undefined\n let ret: Results\n const { promise, cancel: _cancel } = describe(\n query,\n 'postgres',\n async (sql) => {\n ret = (await pg.exec(sql, { rowMode: 'array' }))[0] as Results\n return {\n rows: ret.rows,\n fields: ret.fields,\n rowCount: ret.rows.length,\n }\n },\n (output) => {\n out = output\n },\n )\n await promise\n const elapsed = performance.now() - start\n\n if (!out) {\n return {\n query,\n error: 'No output',\n time: elapsed,\n }\n } else if (typeof out === 'string') {\n if (out.startsWith('ERROR:')) {\n return {\n query,\n error: out,\n time: elapsed,\n }\n } else {\n return {\n query,\n text: out,\n time: elapsed,\n }\n }\n } else {\n return {\n query,\n text: out.title as string,\n results: [ret!],\n time: elapsed,\n }\n }\n}\n\nexport async function getSchema(\n pg: PGliteInterface,\n): Promise<Record<string, string[]>> {\n const ret = await pg.query<{\n schema: string\n table: string\n columns: string\n }>(`\n SELECT \n table_schema AS schema,\n table_name AS table,\n array_agg(column_name) AS columns\n FROM \n information_schema.columns\n GROUP BY \n table_schema, table_name\n ORDER BY \n table_schema, table_name;\n `)\n const schema: Record<string, string[]> = {}\n for (const row of ret.rows) {\n schema[`${row.schema}.${row.table}`] = Array.isArray(row.columns)\n ? row.columns\n : row.columns.slice(1, -1).split(',')\n }\n return schema\n}\n","import { useState, useEffect } from 'react'\nimport type { Results } from './types'\n\nconst tableRowIncrement = 100\nconst maxCellLength = 200\n\nfunction cellClass(value: unknown) {\n if (value === null) {\n return 'PGliteRepl-null'\n } else if (typeof value === 'number') {\n return 'PGliteRepl-number'\n } else if (typeof value === 'boolean') {\n return 'PGliteRepl-boolean'\n } else {\n return ''\n }\n}\n\nfunction cellValue(value: unknown) {\n let str: string\n if (value === null) {\n str = 'null'\n } else if (typeof value === 'number') {\n str = value.toString()\n } else if (typeof value === 'boolean') {\n str = value ? 'true' : 'false'\n } else if (value instanceof Date) {\n str = value.toISOString()\n } else if (Array.isArray(value)) {\n str = `[${value.map(cellValue).join(', ')}]`\n } else if (typeof value === 'object') {\n str = JSON.stringify(value)\n } else if (ArrayBuffer.isView(value)) {\n str = `${value.byteLength} bytes`\n } else if (value === undefined) {\n str = 'undefined'\n } else {\n str = value.toString()\n }\n return str.length > maxCellLength ? str.slice(0, maxCellLength) + '…' : str\n}\n\nexport function ReplTable({ result }: { result: Results }) {\n const [maxRows, setMaxRows] = useState(tableRowIncrement)\n const rows = result.rows.slice(0, maxRows)\n\n useEffect(() => {\n // Reset maxRows when the result changes\n setMaxRows(tableRowIncrement)\n }, [result])\n\n const showMore = () => {\n setMaxRows((prev) => prev + tableRowIncrement)\n }\n\n return (\n <>\n <div className=\"PGliteRepl-table-scroll\">\n <table className=\"PGliteRepl-table\">\n <thead>\n <tr>\n {result.fields.map((col) => (\n <th key={col.name}>{col.name}</th>\n ))}\n </tr>\n {/* <tr>\n {result.fields.map((col, i) => (\n <th key={i}>{col.dataTypeID}</th>\n ))}\n </tr> */}\n </thead>\n <tbody>\n {rows.map((row, i) => (\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <tr key={i}>\n {row.map((col, j) => (\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <td key={j} className={cellClass(col)}>\n {cellValue(col)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n <div className=\"PGliteRepl-table-row-count\">\n {result.rows.length > maxRows ? `${maxRows} of ` : ''}\n {result.rows.length} rows{' '}\n {result.rows.length > maxRows && (\n <a\n href=\"\"\n onClick={(e) => {\n e.preventDefault()\n showMore()\n }}\n >\n Show more\n </a>\n )}\n </div>\n </>\n )\n}\n","import type { Results, Response } from './types'\nimport { ReplTable } from './ReplTable'\n\nfunction OutLine({ result }: { result: Results }) {\n return (\n <div className=\"PGliteRepl-line\">\n {result.fields.length > 0 ? (\n <ReplTable result={result} />\n ) : (\n <div className=\"PGliteRepl-null\">null</div>\n )}\n </div>\n )\n}\n\nexport function ReplResponse({\n response,\n showTime,\n}: {\n response: Response\n showTime: boolean\n}) {\n let out\n if (response.error) {\n out = (\n <div className=\"PGliteRepl-line PGliteRepl-error\">{response.error}</div>\n )\n } else {\n out = (\n <>\n {response.results?.map((result, i) => (\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <OutLine key={i} result={result} />\n ))}\n </>\n )\n }\n return (\n <>\n <pre className=\"PGliteRepl-line PGliteRepl-query\">{response.query}</pre>\n {response.text && (\n <div className=\"PGliteRepl-line PGliteRepl-text\">{response.text}</div>\n )}\n {out}\n <div className=\"PGliteRepl-divider\">\n <hr />\n {showTime && (\n <div className=\"PGliteRepl-time\">{response.time.toFixed(1)}ms</div>\n )}\n </div>\n </>\n )\n}\n","import { useState, useCallback, useMemo, useRef, useEffect } from 'react'\nimport CodeMirror, {\n type ViewUpdate,\n type ReactCodeMirrorRef,\n type Extension,\n} from '@uiw/react-codemirror'\nimport type { CreateThemeOptions } from '@uiw/codemirror-themes'\nimport { defaultKeymap } from '@codemirror/commands'\nimport { keymap } from '@codemirror/view'\nimport { PostgreSQL } from '@codemirror/lang-sql'\nimport type { PGliteInterface } from '@electric-sql/pglite'\nimport type { PGliteWithLive } from '@electric-sql/pglite/live'\nimport { usePGlite } from '@electric-sql/pglite-react'\nimport { makeSqlExt } from './sqlSupport'\nimport type { Response } from './types'\nimport { runQuery, getSchema } from './utils'\nimport { ReplResponse } from './ReplResponse'\nimport {\n githubDark,\n githubDarkInit,\n githubLight,\n githubLightInit,\n} from '@uiw/codemirror-theme-github'\n\nimport './Repl.css'\n\n// Filter out the Enter key from the default keymap, we entirely override its behavior\n// to run the query when the user presses Enter.\n// We keep the up and down arrow keys as we only override their behavior\n// when the cursor is on the first or last line.\nconst baseKeymap = defaultKeymap.filter((key) => key.key !== 'Enter')\n\nexport type ReplTheme = 'light' | 'dark' | 'auto'\n\ntype ThemeInit = (options?: Partial<CreateThemeOptions>) => Extension\n\nexport const defaultLightThemeInit: ThemeInit = githubLightInit\nexport const defaultLightTheme = githubLight\nexport const defaultDarkThemeInit: ThemeInit = githubDarkInit\nexport const defaultDarkTheme = githubDark\n\nexport interface ReplProps {\n pg?: PGliteInterface\n border?: boolean\n lightTheme?: Extension\n darkTheme?: Extension\n theme?: ReplTheme\n showTime?: boolean\n disableUpdateSchema?: boolean\n}\n\nexport function Repl({\n pg: pgProp,\n border = false,\n lightTheme = defaultLightTheme,\n darkTheme = defaultDarkTheme,\n theme = 'auto',\n showTime = false,\n disableUpdateSchema = false,\n}: ReplProps) {\n const [value, setValue] = useState('')\n const valueNoHistory = useRef('')\n const [loading, setLoading] = useState(true)\n const [output, setOutput] = useState<Response[]>([])\n const outputRef = useRef<HTMLDivElement | null>(null)\n const [schema, setSchema] = useState<Record<string, string[]>>({})\n const historyPos = useRef(-1)\n const rcm = useRef<ReactCodeMirrorRef | null>(null)\n const [themeToUse, setThemeToUse] = useState<Extension>(\n theme === 'dark' ? darkTheme : lightTheme,\n )\n const [styles, setStyles] = useState<{ [key: string]: string | number }>({})\n\n const pg: PGliteInterface = usePGlite(pgProp as PGliteWithLive)\n\n useEffect(() => {\n let ignore = false\n const init = async () => {\n await pg.waitReady\n if (ignore) return\n setLoading(false)\n }\n setLoading(true)\n init()\n return () => {\n ignore = true\n }\n }, [pg])\n\n useEffect(() => {\n if (theme === 'auto') {\n const systemTheme = window.matchMedia('(prefers-color-scheme: dark)')\n .matches\n ? 'dark'\n : 'light'\n setThemeToUse(systemTheme === 'dark' ? darkTheme : lightTheme)\n const listener = (e: MediaQueryListEvent) => {\n setThemeToUse(e.matches ? darkTheme : lightTheme)\n setTimeout(() => {\n extractStyles()\n }, 0)\n }\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .addEventListener('change', listener)\n return () => {\n window\n .matchMedia('(prefers-color-scheme: dark)')\n .removeEventListener('change', listener)\n }\n } else {\n setThemeToUse(theme === 'dark' ? darkTheme : lightTheme)\n setTimeout(() => {\n extractStyles()\n }, 0)\n return\n }\n }, [theme, lightTheme, darkTheme])\n\n const onChange = useCallback((val: string, _viewUpdate: ViewUpdate) => {\n extractStyles()\n setValue(val)\n if (historyPos.current === -1) {\n valueNoHistory.current = val\n }\n }, [])\n\n const extensions = useMemo(\n () => [\n keymap.of([\n {\n key: 'Enter',\n preventDefault: true,\n run: () => {\n if (value.trim() === '') return false // Do nothing if the input is empty\n runQuery(value, pg).then((response) => {\n setOutput((prev) => [...prev, response])\n if (outputRef.current) {\n setTimeout(() => {\n outputRef.current!.scrollTop = outputRef.current!.scrollHeight\n }, 0)\n }\n // Update the schema for any new tables to be used in autocompletion\n if (!disableUpdateSchema) {\n getSchema(pg).then(setSchema)\n }\n })\n historyPos.current = -1\n valueNoHistory.current = ''\n setValue('')\n return true\n },\n },\n {\n key: 'ArrowUp',\n run: (view) => {\n const state = view.state\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number\n if (cursorLine === 1) {\n // If the cursor is on the first line, go back in history\n const currentPos = historyPos.current\n historyPos.current++\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1\n }\n if (historyPos.current < -1) {\n historyPos.current = -1\n }\n if (historyPos.current === currentPos) return true\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current)\n } else {\n setValue(output[output.length - historyPos.current - 1].query)\n }\n return true // Prevent the default behavior\n }\n return false // Allow the default behavior\n },\n },\n {\n key: 'ArrowDown',\n run: (view) => {\n const state = view.state\n const cursorLine = state.doc.lineAt(\n state.selection.main.head,\n ).number\n const lastLine = state.doc.lines\n if (cursorLine === lastLine) {\n // If the cursor is on the last line, go forward in history\n const currentPos = historyPos.current\n historyPos.current--\n if (historyPos.current >= output.length) {\n historyPos.current = output.length - 1\n }\n if (historyPos.current < -1) {\n historyPos.current = -1\n }\n if (historyPos.current === currentPos) return true\n if (historyPos.current === -1) {\n setValue(valueNoHistory.current)\n } else {\n setValue(output[output.length - historyPos.current - 1].query)\n }\n return true // Prevent the default behavior\n }\n return false // Allow the default behavior\n },\n },\n ...baseKeymap,\n ]),\n makeSqlExt({\n dialect: PostgreSQL,\n schema: schema,\n tables: [\n {\n label: 'd',\n displayLabel: '\\\\d',\n },\n ],\n defaultSchema: 'public',\n }),\n ],\n [pg, schema, value, output, disableUpdateSchema],\n )\n\n const extractStyles = () => {\n // Get the styles from the CodeMirror editor to use in the REPL\n const cmEditorEl = rcm.current?.editor?.querySelector('.cm-editor')\n if (!cmEditorEl) {\n throw new Error('No CodeMirror editor found')\n }\n const gutterEl = cmEditorEl.querySelector('.cm-gutters')\n const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl)\n const foregroundColor = cmEditorElComputedStyles.color\n const backgroundColor = cmEditorElComputedStyles.backgroundColor\n\n const gutterElComputedStyles = window.getComputedStyle(gutterEl!)\n const gutterBorder = gutterElComputedStyles.borderRight\n const borderWidth = parseInt(gutterElComputedStyles.borderRightWidth) || 0\n const borderColor = borderWidth\n ? gutterElComputedStyles.borderRightColor\n : foregroundColor.replace('rgb', 'rgba').replace(')', ', 0.15)')\n const border = borderWidth\n ? gutterElComputedStyles.borderRight\n : `1px solid ${borderColor}`\n\n setStyles({\n '--PGliteRepl-foreground-color': foregroundColor,\n '--PGliteRepl-background-color': backgroundColor,\n '--PGliteRepl-border': border,\n '--PGliteRepl-gutter-border': gutterBorder,\n '--PGliteRepl-border-color': borderColor,\n })\n }\n\n return (\n <div\n className={`\n PGliteRepl-root\n ${border ? 'PGliteRepl-root-border' : ''}\n `}\n style={styles}\n >\n <div\n className=\"PGliteRepl-output\"\n ref={(ref) => (outputRef.current = ref)}\n >\n {loading && <div className=\"PGliteRepl-loading-msg\">Loading...</div>}\n {output.map((response) => (\n <div key={`${response.query}-${response.time}`}>\n <ReplResponse response={response || []} showTime={showTime} />\n </div>\n ))}\n </div>\n <CodeMirror\n ref={rcm}\n className={`PGliteRepl-input ${loading ? 'PGliteRepl-input-loading' : ''}`}\n width=\"100%\"\n value={value}\n basicSetup={{\n defaultKeymap: false,\n }}\n extensions={extensions}\n theme={themeToUse}\n onChange={onChange}\n editable={!loading}\n onCreateEditor={() => {\n extractStyles()\n setTimeout(extractStyles, 0)\n getSchema(pg).then(setSchema)\n }}\n />\n </div>\n )\n}\n"],"names":["border"],"mappings":"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"}
|
package/dist/Repl.umd.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function(global, factory) {
|
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react/jsx-runtime"), require("react"), require("@uiw/react-codemirror"), require("@codemirror/commands"), require("@codemirror/view"), require("@codemirror/lang-sql"), require("@codemirror/language"), require("psql-describe"), require("@uiw/codemirror-theme-
|
|
3
|
-
})(this, function(exports2, jsxRuntime, react, CodeMirror, commands, view, langSql, language, psqlDescribe,
|
|
2
|
+
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react/jsx-runtime"), require("react"), require("@uiw/react-codemirror"), require("@codemirror/commands"), require("@codemirror/view"), require("@codemirror/lang-sql"), require("@electric-sql/pglite-react"), require("@codemirror/language"), require("psql-describe"), require("@uiw/codemirror-theme-github")) : typeof define === "function" && define.amd ? define(["exports", "react/jsx-runtime", "react", "@uiw/react-codemirror", "@codemirror/commands", "@codemirror/view", "@codemirror/lang-sql", "@electric-sql/pglite-react", "@codemirror/language", "psql-describe", "@uiw/codemirror-theme-github"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.PGliteREPL = {}, global.jsxRuntime, global.react, global.CodeMirror, global.commands, global.view, global.langSql, global.pgliteReact, global.language, global.psqlDescribe, global.codemirrorThemeGithub));
|
|
3
|
+
})(this, function(exports2, jsxRuntime, react, CodeMirror, commands, view, langSql, pgliteReact, language, psqlDescribe, codemirrorThemeGithub) {
|
|
4
4
|
"use strict";
|
|
5
5
|
const describeCompletions = [
|
|
6
6
|
{
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
};
|
|
290
290
|
}
|
|
291
291
|
function makeSqlExt(config = {}) {
|
|
292
|
-
|
|
292
|
+
const lang = config.dialect || langSql.PostgreSQL;
|
|
293
293
|
return new language.LanguageSupport(lang.language, [
|
|
294
294
|
// schemaCompletion(config),
|
|
295
295
|
config.schema ? lang.language.data.of({
|
|
@@ -425,6 +425,8 @@
|
|
|
425
425
|
str = JSON.stringify(value);
|
|
426
426
|
} else if (ArrayBuffer.isView(value)) {
|
|
427
427
|
str = `${value.byteLength} bytes`;
|
|
428
|
+
} else if (value === void 0) {
|
|
429
|
+
str = "undefined";
|
|
428
430
|
} else {
|
|
429
431
|
str = value.toString();
|
|
430
432
|
}
|
|
@@ -441,8 +443,14 @@
|
|
|
441
443
|
};
|
|
442
444
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
443
445
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "PGliteRepl-table-scroll", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "PGliteRepl-table", children: [
|
|
444
|
-
/* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: result.fields.map((col
|
|
445
|
-
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row, i) =>
|
|
446
|
+
/* @__PURE__ */ jsxRuntime.jsx("thead", { children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: result.fields.map((col) => /* @__PURE__ */ jsxRuntime.jsx("th", { children: col.name }, col.name)) }) }),
|
|
447
|
+
/* @__PURE__ */ jsxRuntime.jsx("tbody", { children: rows.map((row, i) => (
|
|
448
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
449
|
+
/* @__PURE__ */ jsxRuntime.jsx("tr", { children: row.map((col, j) => (
|
|
450
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
451
|
+
/* @__PURE__ */ jsxRuntime.jsx("td", { className: cellClass(col), children: cellValue(col) }, j)
|
|
452
|
+
)) }, i)
|
|
453
|
+
)) })
|
|
446
454
|
] }) }),
|
|
447
455
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "PGliteRepl-table-row-count", children: [
|
|
448
456
|
result.rows.length > maxRows ? `${maxRows} of ` : "",
|
|
@@ -475,7 +483,10 @@
|
|
|
475
483
|
if (response.error) {
|
|
476
484
|
out = /* @__PURE__ */ jsxRuntime.jsx("div", { className: "PGliteRepl-line PGliteRepl-error", children: response.error });
|
|
477
485
|
} else {
|
|
478
|
-
out = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (_a = response.results) == null ? void 0 : _a.map((result, i) =>
|
|
486
|
+
out = /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: (_a = response.results) == null ? void 0 : _a.map((result, i) => (
|
|
487
|
+
// eslint-disable-next-line @eslint-react/no-array-index-key
|
|
488
|
+
/* @__PURE__ */ jsxRuntime.jsx(OutLine, { result }, i)
|
|
489
|
+
)) });
|
|
479
490
|
}
|
|
480
491
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
481
492
|
/* @__PURE__ */ jsxRuntime.jsx("pre", { className: "PGliteRepl-line PGliteRepl-query", children: response.query }),
|
|
@@ -491,11 +502,15 @@
|
|
|
491
502
|
] });
|
|
492
503
|
}
|
|
493
504
|
const baseKeymap = commands.defaultKeymap.filter((key) => key.key !== "Enter");
|
|
505
|
+
const defaultLightThemeInit = codemirrorThemeGithub.githubLightInit;
|
|
506
|
+
const defaultLightTheme = codemirrorThemeGithub.githubLight;
|
|
507
|
+
const defaultDarkThemeInit = codemirrorThemeGithub.githubDarkInit;
|
|
508
|
+
const defaultDarkTheme = codemirrorThemeGithub.githubDark;
|
|
494
509
|
function Repl({
|
|
495
|
-
pg,
|
|
510
|
+
pg: pgProp,
|
|
496
511
|
border = false,
|
|
497
|
-
lightTheme =
|
|
498
|
-
darkTheme =
|
|
512
|
+
lightTheme = defaultLightTheme,
|
|
513
|
+
darkTheme = defaultDarkTheme,
|
|
499
514
|
theme = "auto",
|
|
500
515
|
showTime = false,
|
|
501
516
|
disableUpdateSchema = false
|
|
@@ -512,6 +527,7 @@
|
|
|
512
527
|
theme === "dark" ? darkTheme : lightTheme
|
|
513
528
|
);
|
|
514
529
|
const [styles, setStyles] = react.useState({});
|
|
530
|
+
const pg = pgliteReact.usePGlite(pgProp);
|
|
515
531
|
react.useEffect(() => {
|
|
516
532
|
let ignore = false;
|
|
517
533
|
const init = async () => {
|
|
@@ -544,6 +560,7 @@
|
|
|
544
560
|
setTimeout(() => {
|
|
545
561
|
extractStyles();
|
|
546
562
|
}, 0);
|
|
563
|
+
return;
|
|
547
564
|
}
|
|
548
565
|
}, [theme, lightTheme, darkTheme]);
|
|
549
566
|
const onChange = react.useCallback((val, _viewUpdate) => {
|
|
@@ -647,11 +664,14 @@
|
|
|
647
664
|
defaultSchema: "public"
|
|
648
665
|
})
|
|
649
666
|
],
|
|
650
|
-
[pg, schema, value, output]
|
|
667
|
+
[pg, schema, value, output, disableUpdateSchema]
|
|
651
668
|
);
|
|
652
669
|
const extractStyles = () => {
|
|
653
|
-
var _a;
|
|
654
|
-
const cmEditorEl = (_a = rcm.current) == null ? void 0 : _a.editor.querySelector(".cm-editor");
|
|
670
|
+
var _a, _b;
|
|
671
|
+
const cmEditorEl = (_b = (_a = rcm.current) == null ? void 0 : _a.editor) == null ? void 0 : _b.querySelector(".cm-editor");
|
|
672
|
+
if (!cmEditorEl) {
|
|
673
|
+
throw new Error("No CodeMirror editor found");
|
|
674
|
+
}
|
|
655
675
|
const gutterEl = cmEditorEl.querySelector(".cm-gutters");
|
|
656
676
|
const cmEditorElComputedStyles = window.getComputedStyle(cmEditorEl);
|
|
657
677
|
const foregroundColor = cmEditorElComputedStyles.color;
|
|
@@ -685,7 +705,7 @@
|
|
|
685
705
|
ref: (ref) => outputRef.current = ref,
|
|
686
706
|
children: [
|
|
687
707
|
loading && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "PGliteRepl-loading-msg", children: "Loading..." }),
|
|
688
|
-
output.map((response
|
|
708
|
+
output.map((response) => /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(ReplResponse, { response: response || [], showTime }) }, `${response.query}-${response.time}`))
|
|
689
709
|
]
|
|
690
710
|
}
|
|
691
711
|
),
|
|
@@ -715,6 +735,10 @@
|
|
|
715
735
|
);
|
|
716
736
|
}
|
|
717
737
|
exports2.Repl = Repl;
|
|
738
|
+
exports2.defaultDarkTheme = defaultDarkTheme;
|
|
739
|
+
exports2.defaultDarkThemeInit = defaultDarkThemeInit;
|
|
740
|
+
exports2.defaultLightTheme = defaultLightTheme;
|
|
741
|
+
exports2.defaultLightThemeInit = defaultLightThemeInit;
|
|
718
742
|
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
|
719
743
|
});
|
|
720
744
|
//# sourceMappingURL=Repl.umd.cjs.map
|