@sqlrooms/sql-editor 0.29.0-rc.1 → 0.29.0-rc.2

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 (99) hide show
  1. package/README.md +13 -3
  2. package/dist/SqlCodeMirrorEditor.d.ts +29 -0
  3. package/dist/SqlCodeMirrorEditor.d.ts.map +1 -0
  4. package/dist/SqlCodeMirrorEditor.js +54 -0
  5. package/dist/SqlCodeMirrorEditor.js.map +1 -0
  6. package/dist/SqlMonacoEditor.d.ts +10 -4
  7. package/dist/SqlMonacoEditor.d.ts.map +1 -1
  8. package/dist/SqlMonacoEditor.js +51 -11
  9. package/dist/SqlMonacoEditor.js.map +1 -1
  10. package/dist/codemirror/extensions/completion.d.ts +12 -0
  11. package/dist/codemirror/extensions/completion.d.ts.map +1 -0
  12. package/dist/codemirror/extensions/completion.js +60 -0
  13. package/dist/codemirror/extensions/completion.js.map +1 -0
  14. package/dist/codemirror/extensions/create-sql-extension.d.ts +17 -0
  15. package/dist/codemirror/extensions/create-sql-extension.d.ts.map +1 -0
  16. package/dist/codemirror/extensions/create-sql-extension.js +20 -0
  17. package/dist/codemirror/extensions/create-sql-extension.js.map +1 -0
  18. package/dist/codemirror/extensions/duck-db/duck-db.d.ts +9 -0
  19. package/dist/codemirror/extensions/duck-db/duck-db.d.ts.map +1 -0
  20. package/dist/codemirror/extensions/duck-db/duck-db.js +27 -0
  21. package/dist/codemirror/extensions/duck-db/duck-db.js.map +1 -0
  22. package/dist/codemirror/extensions/duck-db/duckdb-keywords.d.ts +2 -0
  23. package/dist/codemirror/extensions/duck-db/duckdb-keywords.d.ts.map +1 -0
  24. package/dist/codemirror/extensions/duck-db/duckdb-keywords.js +487 -0
  25. package/dist/codemirror/extensions/duck-db/duckdb-keywords.js.map +1 -0
  26. package/dist/codemirror/extensions/duck-db/duckdb-sql-extension.d.ts +5 -0
  27. package/dist/codemirror/extensions/duck-db/duckdb-sql-extension.d.ts.map +1 -0
  28. package/dist/codemirror/extensions/duck-db/duckdb-sql-extension.js +36 -0
  29. package/dist/codemirror/extensions/duck-db/duckdb-sql-extension.js.map +1 -0
  30. package/dist/codemirror/extensions/duck-db/duckdb-sql.d.ts +5 -0
  31. package/dist/codemirror/extensions/duck-db/duckdb-sql.d.ts.map +1 -0
  32. package/dist/codemirror/extensions/duck-db/duckdb-sql.js +11 -0
  33. package/dist/codemirror/extensions/duck-db/duckdb-sql.js.map +1 -0
  34. package/dist/codemirror/extensions/duck-db/index.d.ts +2 -0
  35. package/dist/codemirror/extensions/duck-db/index.d.ts.map +1 -0
  36. package/dist/codemirror/extensions/duck-db/index.js +2 -0
  37. package/dist/codemirror/extensions/duck-db/index.js.map +1 -0
  38. package/dist/codemirror/extensions/hover.d.ts +11 -0
  39. package/dist/codemirror/extensions/hover.d.ts.map +1 -0
  40. package/dist/codemirror/extensions/hover.js +55 -0
  41. package/dist/codemirror/extensions/hover.js.map +1 -0
  42. package/dist/codemirror/extensions/sql-keymap.d.ts +4 -0
  43. package/dist/codemirror/extensions/sql-keymap.d.ts.map +1 -0
  44. package/dist/codemirror/extensions/sql-keymap.js +25 -0
  45. package/dist/codemirror/extensions/sql-keymap.js.map +1 -0
  46. package/dist/codemirror/themes/sql-theme.d.ts +7 -0
  47. package/dist/codemirror/themes/sql-theme.d.ts.map +1 -0
  48. package/dist/codemirror/themes/sql-theme.js +55 -0
  49. package/dist/codemirror/themes/sql-theme.js.map +1 -0
  50. package/dist/codemirror/themes/sql-tooltip-theme.d.ts +7 -0
  51. package/dist/codemirror/themes/sql-tooltip-theme.d.ts.map +1 -0
  52. package/dist/codemirror/themes/sql-tooltip-theme.js +21 -0
  53. package/dist/codemirror/themes/sql-tooltip-theme.js.map +1 -0
  54. package/dist/codemirror/utils/schema-converter.d.ts +5 -0
  55. package/dist/codemirror/utils/schema-converter.d.ts.map +1 -0
  56. package/dist/codemirror/utils/schema-converter.js +9 -0
  57. package/dist/codemirror/utils/schema-converter.js.map +1 -0
  58. package/dist/components/CreateTableModal.d.ts.map +1 -1
  59. package/dist/components/CreateTableModal.js +5 -11
  60. package/dist/components/CreateTableModal.js.map +1 -1
  61. package/dist/components/FunctionDocumentation.d.ts +7 -0
  62. package/dist/components/FunctionDocumentation.d.ts.map +1 -0
  63. package/dist/components/FunctionDocumentation.js +44 -0
  64. package/dist/components/FunctionDocumentation.js.map +1 -0
  65. package/dist/components/QueryEditorPanelActions.d.ts.map +1 -1
  66. package/dist/components/QueryEditorPanelActions.js +3 -37
  67. package/dist/components/QueryEditorPanelActions.js.map +1 -1
  68. package/dist/components/QueryEditorPanelEditor.d.ts.map +1 -1
  69. package/dist/components/QueryEditorPanelEditor.js +11 -34
  70. package/dist/components/QueryEditorPanelEditor.js.map +1 -1
  71. package/dist/components/SchemaExplorer.d.ts +25 -0
  72. package/dist/components/SchemaExplorer.d.ts.map +1 -0
  73. package/dist/components/SchemaExplorer.js +20 -0
  74. package/dist/components/SchemaExplorer.js.map +1 -0
  75. package/dist/components/SqlColumnTooltip.d.ts +12 -0
  76. package/dist/components/SqlColumnTooltip.d.ts.map +1 -0
  77. package/dist/components/SqlColumnTooltip.js +15 -0
  78. package/dist/components/SqlColumnTooltip.js.map +1 -0
  79. package/dist/components/SqlColumnsTable.d.ts +10 -0
  80. package/dist/components/SqlColumnsTable.d.ts.map +1 -0
  81. package/dist/components/SqlColumnsTable.js +10 -0
  82. package/dist/components/SqlColumnsTable.js.map +1 -0
  83. package/dist/components/SqlTableTooltip.d.ts +9 -0
  84. package/dist/components/SqlTableTooltip.d.ts.map +1 -0
  85. package/dist/components/SqlTableTooltip.js +13 -0
  86. package/dist/components/SqlTableTooltip.js.map +1 -0
  87. package/dist/components/TableStructurePanel.d.ts +6 -3
  88. package/dist/components/TableStructurePanel.d.ts.map +1 -1
  89. package/dist/components/TableStructurePanel.js +8 -7
  90. package/dist/components/TableStructurePanel.js.map +1 -1
  91. package/dist/index.d.ts +21 -1
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +10 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/utils/qualified-name-parser.d.ts +41 -0
  96. package/dist/utils/qualified-name-parser.d.ts.map +1 -0
  97. package/dist/utils/qualified-name-parser.js +126 -0
  98. package/dist/utils/qualified-name-parser.js.map +1 -0
  99. package/package.json +23 -11
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Parses a qualified column name into its components
3
+ * Supports:
4
+ * - columnName
5
+ * - tableName.columnName
6
+ * - schemaName.tableName.columnName
7
+ * - databaseName.schemaName.tableName.columnName
8
+ */
9
+ export function parseQualifiedColumnName(word) {
10
+ const parts = word.split('.');
11
+ if (parts.length === 2) {
12
+ return {
13
+ tableName: parts[0],
14
+ columnName: parts[1],
15
+ };
16
+ }
17
+ else if (parts.length === 3) {
18
+ return {
19
+ schemaName: parts[0],
20
+ tableName: parts[1],
21
+ columnName: parts[2],
22
+ };
23
+ }
24
+ else if (parts.length === 4) {
25
+ return {
26
+ databaseName: parts[0],
27
+ schemaName: parts[1],
28
+ tableName: parts[2],
29
+ columnName: parts[3],
30
+ };
31
+ }
32
+ else {
33
+ return { columnName: word };
34
+ }
35
+ }
36
+ /**
37
+ * Parses a qualified table name into its components
38
+ * Supports:
39
+ * - tableName
40
+ * - schemaName.tableName
41
+ * - databaseName.schemaName.tableName
42
+ */
43
+ export function parseQualifiedTableName(word) {
44
+ const parts = word.split('.');
45
+ if (parts.length === 2) {
46
+ return {
47
+ schemaName: parts[0],
48
+ tableName: parts[1],
49
+ };
50
+ }
51
+ else if (parts.length === 3) {
52
+ return {
53
+ databaseName: parts[0],
54
+ schemaName: parts[1],
55
+ tableName: parts[2],
56
+ };
57
+ }
58
+ else {
59
+ return { tableName: word };
60
+ }
61
+ }
62
+ /**
63
+ * Finds a table and column by qualified name (case-insensitive)
64
+ */
65
+ export function findTableAndColumn(qualifiedName, tables) {
66
+ const { columnName, tableName, schemaName, databaseName } = qualifiedName;
67
+ for (const table of tables) {
68
+ // Check if table matches the qualification (case-insensitive)
69
+ if (databaseName &&
70
+ table.table.database?.localeCompare(databaseName, undefined, {
71
+ sensitivity: 'accent',
72
+ }) !== 0) {
73
+ continue;
74
+ }
75
+ if (schemaName &&
76
+ table.table.schema?.localeCompare(schemaName, undefined, {
77
+ sensitivity: 'accent',
78
+ }) !== 0) {
79
+ continue;
80
+ }
81
+ if (tableName &&
82
+ table.table.table?.localeCompare(tableName, undefined, {
83
+ sensitivity: 'accent',
84
+ }) !== 0) {
85
+ continue;
86
+ }
87
+ // Find the column (case-insensitive)
88
+ const column = table.columns.find((col) => col.name?.localeCompare(columnName, undefined, {
89
+ sensitivity: 'accent',
90
+ }) === 0);
91
+ if (column) {
92
+ return { table, column };
93
+ }
94
+ }
95
+ return undefined;
96
+ }
97
+ /**
98
+ * Finds a table by qualified name (case-insensitive)
99
+ */
100
+ export function findTable(qualifiedName, tables) {
101
+ const { tableName, schemaName, databaseName } = qualifiedName;
102
+ return tables.find((table) => {
103
+ // Match table name (case-insensitive)
104
+ if (table.table.table?.localeCompare(tableName, undefined, {
105
+ sensitivity: 'accent',
106
+ }) !== 0) {
107
+ return false;
108
+ }
109
+ // Match schema if specified
110
+ if (schemaName &&
111
+ table.table.schema?.localeCompare(schemaName, undefined, {
112
+ sensitivity: 'accent',
113
+ }) !== 0) {
114
+ return false;
115
+ }
116
+ // Match database if specified
117
+ if (databaseName &&
118
+ table.table.database?.localeCompare(databaseName, undefined, {
119
+ sensitivity: 'accent',
120
+ }) !== 0) {
121
+ return false;
122
+ }
123
+ return true;
124
+ });
125
+ }
126
+ //# sourceMappingURL=qualified-name-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qualified-name-parser.js","sourceRoot":"","sources":["../../src/utils/qualified-name-parser.ts"],"names":[],"mappings":"AASA;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACnB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAE;SACtB,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACnB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAE;SACtB,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;YACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACnB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAE;SACtB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAQD;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAY;IAEZ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAE;SACrB,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;YACtB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;YACpB,SAAS,EAAE,KAAK,CAAC,CAAC,CAAE;SACrB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAAwC,EACxC,MAAmB;IAEnB,MAAM,EAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAC,GAAG,aAAa,CAAC;IAExE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,8DAA8D;QAC9D,IACE,YAAY;YACZ,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE;gBAC3D,WAAW,EAAE,QAAQ;aACtB,CAAC,KAAK,CAAC,EACR,CAAC;YACD,SAAS;QACX,CAAC;QACD,IACE,UAAU;YACV,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE;gBACvD,WAAW,EAAE,QAAQ;aACtB,CAAC,KAAK,CAAC,EACR,CAAC;YACD,SAAS;QACX,CAAC;QACD,IACE,SAAS;YACT,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE;gBACrD,WAAW,EAAE,QAAQ;aACtB,CAAC,KAAK,CAAC,EACR,CAAC;YACD,SAAS;QACX,CAAC;QAED,qCAAqC;QACrC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,CAAC,IAAI,EAAE,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE;YAC7C,WAAW,EAAE,QAAQ;SACtB,CAAC,KAAK,CAAC,CACX,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,aAAuC,EACvC,MAAmB;IAEnB,MAAM,EAAC,SAAS,EAAE,UAAU,EAAE,YAAY,EAAC,GAAG,aAAa,CAAC;IAE5D,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,sCAAsC;QACtC,IACE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE;YACrD,WAAW,EAAE,QAAQ;SACtB,CAAC,KAAK,CAAC,EACR,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4BAA4B;QAC5B,IACE,UAAU;YACV,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE;gBACvD,WAAW,EAAE,QAAQ;aACtB,CAAC,KAAK,CAAC,EACR,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,8BAA8B;QAC9B,IACE,YAAY;YACZ,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE;gBAC3D,WAAW,EAAE,QAAQ;aACtB,CAAC,KAAK,CAAC,EACR,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {DataTable, TableColumn} from '@sqlrooms/duckdb';\n\nexport interface ParsedQualifiedColumnName {\n columnName: string;\n tableName?: string;\n schemaName?: string;\n databaseName?: string;\n}\n\n/**\n * Parses a qualified column name into its components\n * Supports:\n * - columnName\n * - tableName.columnName\n * - schemaName.tableName.columnName\n * - databaseName.schemaName.tableName.columnName\n */\nexport function parseQualifiedColumnName(\n word: string,\n): ParsedQualifiedColumnName {\n const parts = word.split('.');\n\n if (parts.length === 2) {\n return {\n tableName: parts[0],\n columnName: parts[1]!,\n };\n } else if (parts.length === 3) {\n return {\n schemaName: parts[0],\n tableName: parts[1],\n columnName: parts[2]!,\n };\n } else if (parts.length === 4) {\n return {\n databaseName: parts[0],\n schemaName: parts[1],\n tableName: parts[2],\n columnName: parts[3]!,\n };\n } else {\n return {columnName: word};\n }\n}\n\nexport interface ParsedQualifiedTableName {\n tableName: string;\n schemaName?: string;\n databaseName?: string;\n}\n\n/**\n * Parses a qualified table name into its components\n * Supports:\n * - tableName\n * - schemaName.tableName\n * - databaseName.schemaName.tableName\n */\nexport function parseQualifiedTableName(\n word: string,\n): ParsedQualifiedTableName {\n const parts = word.split('.');\n\n if (parts.length === 2) {\n return {\n schemaName: parts[0],\n tableName: parts[1]!,\n };\n } else if (parts.length === 3) {\n return {\n databaseName: parts[0],\n schemaName: parts[1],\n tableName: parts[2]!,\n };\n } else {\n return {tableName: word};\n }\n}\n\n/**\n * Finds a table and column by qualified name (case-insensitive)\n */\nexport function findTableAndColumn(\n qualifiedName: ParsedQualifiedColumnName,\n tables: DataTable[],\n): {table: DataTable; column: TableColumn} | undefined {\n const {columnName, tableName, schemaName, databaseName} = qualifiedName;\n\n for (const table of tables) {\n // Check if table matches the qualification (case-insensitive)\n if (\n databaseName &&\n table.table.database?.localeCompare(databaseName, undefined, {\n sensitivity: 'accent',\n }) !== 0\n ) {\n continue;\n }\n if (\n schemaName &&\n table.table.schema?.localeCompare(schemaName, undefined, {\n sensitivity: 'accent',\n }) !== 0\n ) {\n continue;\n }\n if (\n tableName &&\n table.table.table?.localeCompare(tableName, undefined, {\n sensitivity: 'accent',\n }) !== 0\n ) {\n continue;\n }\n\n // Find the column (case-insensitive)\n const column = table.columns.find(\n (col) =>\n col.name?.localeCompare(columnName, undefined, {\n sensitivity: 'accent',\n }) === 0,\n );\n if (column) {\n return {table, column};\n }\n }\n\n return undefined;\n}\n\n/**\n * Finds a table by qualified name (case-insensitive)\n */\nexport function findTable(\n qualifiedName: ParsedQualifiedTableName,\n tables: DataTable[],\n): DataTable | undefined {\n const {tableName, schemaName, databaseName} = qualifiedName;\n\n return tables.find((table) => {\n // Match table name (case-insensitive)\n if (\n table.table.table?.localeCompare(tableName, undefined, {\n sensitivity: 'accent',\n }) !== 0\n ) {\n return false;\n }\n\n // Match schema if specified\n if (\n schemaName &&\n table.table.schema?.localeCompare(schemaName, undefined, {\n sensitivity: 'accent',\n }) !== 0\n ) {\n return false;\n }\n\n // Match database if specified\n if (\n databaseName &&\n table.table.database?.localeCompare(databaseName, undefined, {\n sensitivity: 'accent',\n }) !== 0\n ) {\n return false;\n }\n\n return true;\n });\n}\n"]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@sqlrooms/sql-editor",
3
- "version": "0.29.0-rc.1",
3
+ "version": "0.29.0-rc.2",
4
4
  "author": "SQLRooms Contributors",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "https://github.com/sqlrooms/sqlrooms.git"
8
+ "url": "git+https://github.com/sqlrooms/sqlrooms.git"
9
9
  },
10
10
  "files": [
11
11
  "dist"
@@ -26,24 +26,36 @@
26
26
  "typedoc": "typedoc"
27
27
  },
28
28
  "dependencies": {
29
+ "@codemirror/autocomplete": "^6.20.0",
30
+ "@codemirror/lang-sql": "^6.8.0",
31
+ "@codemirror/language": "^6.10.0",
32
+ "@codemirror/state": "^6.4.0",
33
+ "@codemirror/view": "^6.33.0",
29
34
  "@hookform/resolvers": "^5.0.0",
35
+ "@lezer/highlight": "^1.2.0",
36
+ "@marimo-team/codemirror-sql": "^0.2.0",
30
37
  "@monaco-editor/react": "^4.7.0",
31
38
  "@paralleldrive/cuid2": "^3.0.0",
32
- "@sqlrooms/data-table": "0.29.0-rc.1",
33
- "@sqlrooms/db": "0.29.0-rc.1",
34
- "@sqlrooms/monaco-editor": "0.29.0-rc.1",
35
- "@sqlrooms/room-shell": "0.29.0-rc.1",
36
- "@sqlrooms/schema-tree": "0.29.0-rc.1",
37
- "@sqlrooms/sql-editor-config": "0.29.0-rc.1",
38
- "@sqlrooms/ui": "0.29.0-rc.1",
39
- "@sqlrooms/utils": "0.29.0-rc.1",
39
+ "@sqlrooms/codemirror": "0.29.0-rc.2",
40
+ "@sqlrooms/data-table": "0.29.0-rc.2",
41
+ "@sqlrooms/db": "0.29.0-rc.2",
42
+ "@sqlrooms/duckdb": "0.29.0-rc.2",
43
+ "@sqlrooms/monaco-editor": "0.29.0-rc.2",
44
+ "@sqlrooms/room-shell": "0.29.0-rc.2",
45
+ "@sqlrooms/schema-tree": "0.29.0-rc.2",
46
+ "@sqlrooms/sql-editor-config": "0.29.0-rc.2",
47
+ "@sqlrooms/ui": "0.29.0-rc.2",
48
+ "@sqlrooms/utils": "0.29.0-rc.2",
40
49
  "@tanstack/react-table": "^8.21.3",
41
50
  "d3-dsv": "^3.0.1",
51
+ "es-toolkit": "^1.39.9",
42
52
  "file-saver": "^2.0.5",
43
53
  "immer": "^11.0.1",
44
54
  "lucide-react": "^0.556.0",
45
55
  "monaco-editor": "^0.55.1",
46
56
  "react-hook-form": "^7.63.0",
57
+ "react-markdown": "^10.1.0",
58
+ "remark-gfm": "^4.0.1",
47
59
  "zod": "^4.1.8"
48
60
  },
49
61
  "peerDependencies": {
@@ -58,5 +70,5 @@
58
70
  "@types/react": "^19.1.13",
59
71
  "@types/react-dom": "^19.1.9"
60
72
  },
61
- "gitHead": "69f127fd34bd7f2ce3d75d6098dbf8c1f5ab50f3"
73
+ "gitHead": "5d511631992c1af8852ea79ced488867aad4a555"
62
74
  }