@sqlrooms/cells 0.29.0-rc.1 → 0.29.0-rc.11

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 (144) hide show
  1. package/LICENSE.md +2 -1
  2. package/README.md +8 -8
  3. package/dist/cellsSlice.d.ts.map +1 -1
  4. package/dist/cellsSlice.js +305 -264
  5. package/dist/cellsSlice.js.map +1 -1
  6. package/dist/components/AggregationSelector.d.ts +8 -0
  7. package/dist/components/AggregationSelector.d.ts.map +1 -0
  8. package/dist/components/AggregationSelector.js +13 -0
  9. package/dist/components/AggregationSelector.js.map +1 -0
  10. package/dist/components/CellSourceSelector.d.ts +12 -0
  11. package/dist/components/CellSourceSelector.d.ts.map +1 -0
  12. package/dist/components/CellSourceSelector.js +34 -0
  13. package/dist/components/CellSourceSelector.js.map +1 -0
  14. package/dist/components/ChartTypeSelector.d.ts +8 -0
  15. package/dist/components/ChartTypeSelector.d.ts.map +1 -0
  16. package/dist/components/ChartTypeSelector.js +13 -0
  17. package/dist/components/ChartTypeSelector.js.map +1 -0
  18. package/dist/components/CollapsibleSectionButton.d.ts +10 -0
  19. package/dist/components/CollapsibleSectionButton.d.ts.map +1 -0
  20. package/dist/components/CollapsibleSectionButton.js +10 -0
  21. package/dist/components/CollapsibleSectionButton.js.map +1 -0
  22. package/dist/components/ColorSelector.d.ts +24 -0
  23. package/dist/components/ColorSelector.d.ts.map +1 -0
  24. package/dist/components/ColorSelector.js +17 -0
  25. package/dist/components/ColorSelector.js.map +1 -0
  26. package/dist/components/FieldSelector.d.ts +11 -0
  27. package/dist/components/FieldSelector.d.ts.map +1 -0
  28. package/dist/components/FieldSelector.js +11 -0
  29. package/dist/components/FieldSelector.js.map +1 -0
  30. package/dist/components/FieldTypeIcon.d.ts +8 -0
  31. package/dist/components/FieldTypeIcon.d.ts.map +1 -0
  32. package/dist/components/FieldTypeIcon.js +27 -0
  33. package/dist/components/FieldTypeIcon.js.map +1 -0
  34. package/dist/components/InputCellContent.d.ts.map +1 -1
  35. package/dist/components/InputCellContent.js +3 -3
  36. package/dist/components/InputCellContent.js.map +1 -1
  37. package/dist/components/SqlCellConnectionSelector.d.ts +9 -0
  38. package/dist/components/SqlCellConnectionSelector.d.ts.map +1 -0
  39. package/dist/components/SqlCellConnectionSelector.js +21 -0
  40. package/dist/components/SqlCellConnectionSelector.js.map +1 -0
  41. package/dist/components/SqlCellContent.d.ts.map +1 -1
  42. package/dist/components/SqlCellContent.js +31 -160
  43. package/dist/components/SqlCellContent.js.map +1 -1
  44. package/dist/components/SqlCellDependentsMenu.d.ts +11 -0
  45. package/dist/components/SqlCellDependentsMenu.d.ts.map +1 -0
  46. package/dist/components/SqlCellDependentsMenu.js +62 -0
  47. package/dist/components/SqlCellDependentsMenu.js.map +1 -0
  48. package/dist/components/SqlCellEditor.d.ts +14 -0
  49. package/dist/components/SqlCellEditor.d.ts.map +1 -0
  50. package/dist/components/SqlCellEditor.js +17 -0
  51. package/dist/components/SqlCellEditor.js.map +1 -0
  52. package/dist/components/SqlCellResultNameEditor.d.ts +8 -0
  53. package/dist/components/SqlCellResultNameEditor.d.ts.map +1 -0
  54. package/dist/components/SqlCellResultNameEditor.js +38 -0
  55. package/dist/components/SqlCellResultNameEditor.js.map +1 -0
  56. package/dist/components/SqlCellResults.d.ts +17 -0
  57. package/dist/components/SqlCellResults.d.ts.map +1 -0
  58. package/dist/components/SqlCellResults.js +44 -0
  59. package/dist/components/SqlCellResults.js.map +1 -0
  60. package/dist/components/SqlCellRunButton.d.ts +5 -6
  61. package/dist/components/SqlCellRunButton.d.ts.map +1 -1
  62. package/dist/components/SqlCellRunButton.js +11 -7
  63. package/dist/components/SqlCellRunButton.js.map +1 -1
  64. package/dist/components/SqlQueryPreview.d.ts +9 -0
  65. package/dist/components/SqlQueryPreview.d.ts.map +1 -0
  66. package/dist/components/SqlQueryPreview.js +14 -0
  67. package/dist/components/SqlQueryPreview.js.map +1 -0
  68. package/dist/components/TextCellContent.d.ts.map +1 -1
  69. package/dist/components/TextCellContent.js +24 -7
  70. package/dist/components/TextCellContent.js.map +1 -1
  71. package/dist/components/VegaCellContent.d.ts +0 -1
  72. package/dist/components/VegaCellContent.d.ts.map +1 -1
  73. package/dist/components/VegaCellContent.js +28 -49
  74. package/dist/components/VegaCellContent.js.map +1 -1
  75. package/dist/components/VegaCellHeader.d.ts +8 -0
  76. package/dist/components/VegaCellHeader.d.ts.map +1 -0
  77. package/dist/components/VegaCellHeader.js +30 -0
  78. package/dist/components/VegaCellHeader.js.map +1 -0
  79. package/dist/components/VegaConfigPanel.d.ts.map +1 -1
  80. package/dist/components/VegaConfigPanel.js +23 -64
  81. package/dist/components/VegaConfigPanel.js.map +1 -1
  82. package/dist/dagUtils.d.ts +10 -9
  83. package/dist/dagUtils.d.ts.map +1 -1
  84. package/dist/dagUtils.js +76 -50
  85. package/dist/dagUtils.js.map +1 -1
  86. package/dist/defaultCellRegistry.d.ts.map +1 -1
  87. package/dist/defaultCellRegistry.js +82 -39
  88. package/dist/defaultCellRegistry.js.map +1 -1
  89. package/dist/execution.d.ts.map +1 -1
  90. package/dist/execution.js +27 -20
  91. package/dist/execution.js.map +1 -1
  92. package/dist/helpers.d.ts +21 -28
  93. package/dist/helpers.d.ts.map +1 -1
  94. package/dist/helpers.js +77 -90
  95. package/dist/helpers.js.map +1 -1
  96. package/dist/hooks/useVegaCellDataSource.d.ts +18 -0
  97. package/dist/hooks/useVegaCellDataSource.d.ts.map +1 -0
  98. package/dist/hooks/useVegaCellDataSource.js +40 -0
  99. package/dist/hooks/useVegaCellDataSource.js.map +1 -0
  100. package/dist/hooks/useVegaCellQuery.d.ts +12 -0
  101. package/dist/hooks/useVegaCellQuery.d.ts.map +1 -0
  102. package/dist/hooks/useVegaCellQuery.js +12 -0
  103. package/dist/hooks/useVegaCellQuery.js.map +1 -0
  104. package/dist/index.d.ts +2 -3
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +2 -3
  107. package/dist/index.js.map +1 -1
  108. package/dist/resultRelationPolicy.d.ts +2 -2
  109. package/dist/resultRelationPolicy.d.ts.map +1 -1
  110. package/dist/resultRelationPolicy.js +9 -1
  111. package/dist/resultRelationPolicy.js.map +1 -1
  112. package/dist/sqlHelpers.d.ts +8 -8
  113. package/dist/sqlHelpers.d.ts.map +1 -1
  114. package/dist/sqlHelpers.js +16 -12
  115. package/dist/sqlHelpers.js.map +1 -1
  116. package/dist/types.d.ts +113 -70
  117. package/dist/types.d.ts.map +1 -1
  118. package/dist/types.js +22 -13
  119. package/dist/types.js.map +1 -1
  120. package/dist/useValidateResultName.d.ts +34 -0
  121. package/dist/useValidateResultName.d.ts.map +1 -0
  122. package/dist/useValidateResultName.js +111 -0
  123. package/dist/useValidateResultName.js.map +1 -0
  124. package/dist/utils.d.ts +10 -2
  125. package/dist/utils.d.ts.map +1 -1
  126. package/dist/utils.js +20 -4
  127. package/dist/utils.js.map +1 -1
  128. package/dist/vegaSelectionUtils.d.ts +14 -0
  129. package/dist/vegaSelectionUtils.d.ts.map +1 -0
  130. package/dist/vegaSelectionUtils.js +97 -0
  131. package/dist/vegaSelectionUtils.js.map +1 -0
  132. package/dist/vegaSpecBuilder.d.ts +34 -0
  133. package/dist/vegaSpecBuilder.d.ts.map +1 -0
  134. package/dist/vegaSpecBuilder.js +90 -0
  135. package/dist/vegaSpecBuilder.js.map +1 -0
  136. package/package.json +20 -21
  137. package/dist/components/DeleteSheetModal.d.ts +0 -9
  138. package/dist/components/DeleteSheetModal.d.ts.map +0 -1
  139. package/dist/components/DeleteSheetModal.js +0 -6
  140. package/dist/components/DeleteSheetModal.js.map +0 -1
  141. package/dist/components/SheetsTabBar.d.ts +0 -6
  142. package/dist/components/SheetsTabBar.d.ts.map +0 -1
  143. package/dist/components/SheetsTabBar.js +0 -57
  144. package/dist/components/SheetsTabBar.js.map +0 -1
@@ -130,44 +130,48 @@ function extractTablesFromAst(statements) {
130
130
  }
131
131
  /**
132
132
  * Find SQL cell dependencies using AST-based parsing.
133
- * This provides more accurate detection than text-based matching.
133
+ * Returns cell dependencies and unmatched table references.
134
134
  */
135
135
  export async function findSqlDependenciesFromAst(opts) {
136
136
  const { sql, cells, sqlSelectToJson } = opts;
137
137
  try {
138
138
  const parsed = await sqlSelectToJson(sql);
139
139
  if (parsed.error || !parsed.statements) {
140
- return []; // Fall back to empty deps on parse error
140
+ return { cellIds: [] };
141
141
  }
142
142
  const referencedTables = extractTablesFromAst(parsed.statements);
143
143
  const deps = [];
144
+ const matchedNames = new Set();
144
145
  for (const [id, cell] of Object.entries(cells)) {
145
146
  if (cell.type === 'sql') {
146
147
  const cellData = cell.data;
147
148
  const title = cellData.title?.toLowerCase();
148
149
  const effectiveName = getEffectiveResultName(cellData, convertToValidColumnOrTableName).toLowerCase();
149
- // Match on either title or effective result name
150
150
  if ((title && referencedTables.has(title)) ||
151
151
  referencedTables.has(effectiveName)) {
152
152
  deps.push(id);
153
+ if (title)
154
+ matchedNames.add(title);
155
+ matchedNames.add(effectiveName);
153
156
  }
154
157
  }
155
158
  }
156
- return deps;
159
+ const tableNames = Array.from(referencedTables).filter((t) => !matchedNames.has(t));
160
+ return { cellIds: deps, tableNames };
157
161
  }
158
162
  catch {
159
- return [];
163
+ return { cellIds: [] };
160
164
  }
161
165
  }
162
166
  /**
163
- * Rewrites unqualified references to known sheet-local result names as
167
+ * Rewrites unqualified references to known artifact-local result names as
164
168
  * schema-qualified references. This keeps SQL ergonomic without mutable
165
169
  * connector-level current schema state.
166
170
  */
167
- export function qualifySheetLocalResultNames(opts) {
168
- const { sql, sheetSchema, sheetDatabase, sheetCellIds, cells, getSqlResultName, } = opts;
171
+ export function qualifyArtifactLocalResultNames(opts) {
172
+ const { sql, artifactSchema, artifactDatabase, artifactCellIds, cells, getSqlResultName, } = opts;
169
173
  let rewritten = sql;
170
- const names = Array.from(new Set(sheetCellIds
174
+ const names = Array.from(new Set(artifactCellIds
171
175
  .map((cellId) => {
172
176
  const cell = cells[cellId];
173
177
  if (!cell || cell.type !== 'sql')
@@ -179,9 +183,9 @@ export function qualifySheetLocalResultNames(opts) {
179
183
  })
180
184
  .filter((v) => Boolean(v)))).sort((a, b) => b.length - a.length);
181
185
  for (const name of names) {
182
- const qualified = sheetDatabase
183
- ? `${sheetDatabase}.${sheetSchema}.${name}`
184
- : `${sheetSchema}.${name}`;
186
+ const qualified = artifactDatabase
187
+ ? `${artifactDatabase}.${artifactSchema}.${name}`
188
+ : `${artifactSchema}.${name}`;
185
189
  const pattern = new RegExp(`(?<![a-zA-Z0-9_.])${escapeRegExp(name)}(?![a-zA-Z0-9_])`, 'g');
186
190
  rewritten = rewritten.replace(pattern, qualified);
187
191
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlHelpers.js","sourceRoot":"","sources":["../src/sqlHelpers.ts"],"names":[],"mappings":"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","sourcesContent":["import {convertToValidColumnOrTableName} from '@sqlrooms/utils';\nimport type {\n Cell,\n Edge,\n SqlCellData,\n SqlDependencyOptions,\n SqlRenderInput,\n SqlRunCallbacks,\n SqlRunResult,\n} from './types';\nimport {isInputCell, isSqlCell} from './types';\nimport {getEffectiveResultName} from './utils';\n\nexport function deriveEdgesFromSql(\n cellId: string,\n sql: string,\n allCells: Record<string, Cell>,\n): Edge[] {\n const targetCell = allCells[cellId];\n if (!targetCell) return [];\n\n const deps = findSqlDependencies<Cell>({\n targetCell,\n cells: allCells,\n getSqlText: () => sql,\n getInputVarName: (cell) =>\n isInputCell(cell) ? cell.data.input.varName : undefined,\n getSqlResultName: (cid) => {\n const cell = allCells[cid];\n if (cell && isSqlCell(cell)) {\n return getEffectiveResultName(\n cell.data as SqlCellData,\n convertToValidColumnOrTableName,\n );\n }\n return undefined;\n },\n });\n\n return deps.map((sourceId) => ({\n id: `${sourceId}-${cellId}`,\n source: sourceId,\n target: cellId,\n }));\n}\n\nexport function renderSqlWithInputs(\n rawSql: string,\n inputs: SqlRenderInput[],\n): string {\n const varMap: Record<string, string | number> = {};\n for (const {varName, value} of inputs) {\n varMap[varName] = value;\n }\n return (rawSql || '').replace(\n /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g,\n (_m: string, v: string) => {\n const val = varMap[v];\n return typeof val === 'number'\n ? String(val)\n : `'${String(val ?? '')?.replace(/'/g, \"''\")}'`;\n },\n );\n}\n\nexport function findSqlDependencies<\n TCell extends {id: string; type: string},\n>(opts: {\n targetCell: TCell;\n cells: Record<string, TCell>;\n getSqlText: (cell: TCell) => string | undefined;\n getInputVarName: (cell: TCell) => string | undefined;\n getSqlResultName: (cellId: string) => string | undefined;\n options?: SqlDependencyOptions;\n}): string[] {\n const {\n targetCell,\n cells,\n getSqlText,\n getInputVarName,\n getSqlResultName,\n options,\n } = opts;\n const sql = getSqlText(targetCell) || '';\n const sqlLower = sql.toLowerCase();\n const deps: string[] = [];\n const inputTypes = options?.inputTypes ?? ['input'];\n const sqlTypes = options?.sqlTypes ?? ['sql'];\n\n for (const otherId in cells) {\n if (otherId === targetCell.id) continue;\n const other = cells[otherId];\n if (!other) continue;\n if (inputTypes.includes(other.type)) {\n const vn = getInputVarName(other);\n if (!vn) continue;\n if (sql.includes(`{{${vn}}}`) || sql.includes(`:${vn}`)) {\n deps.push(other.id);\n }\n } else if (sqlTypes.includes(other.type)) {\n const resultName = getSqlResultName(other.id);\n const title =\n typeof (other as {data?: {title?: unknown}}).data?.title === 'string'\n ? ((other as {data?: {title?: string}}).data?.title as string)\n : undefined;\n // Match on title (case-insensitive) with identifier boundaries\n const titleMatch =\n title && containsIdentifier(sqlLower, title.toLowerCase());\n // Match on effective result name (case-insensitive)\n const resultMatch =\n resultName && containsIdentifier(sqlLower, resultName.toLowerCase());\n if (titleMatch || resultMatch) deps.push(other.id);\n }\n }\n return Array.from(new Set(deps));\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction containsIdentifier(sqlLower: string, candidateLower: string): boolean {\n if (!candidateLower.trim()) return false;\n const pattern = new RegExp(\n `(?<![a-zA-Z0-9_.])${escapeRegExp(candidateLower)}(?![a-zA-Z0-9_])`,\n 'i',\n );\n return pattern.test(sqlLower);\n}\n\nexport async function runSqlWithCallbacks(\n run: () => Promise<SqlRunResult>,\n callbacks: SqlRunCallbacks = {},\n) {\n callbacks.onStart?.();\n try {\n const res = await run();\n callbacks.onSuccess?.(res);\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n callbacks.onError?.(message);\n } finally {\n callbacks.onFinally?.();\n }\n}\n\n/**\n * Recursively extract table names from a parsed SQL AST.\n */\nfunction extractTablesFromAst(statements: unknown[]): Set<string> {\n const tables = new Set<string>();\n\n const walk = (node: unknown): void => {\n if (!node || typeof node !== 'object') return;\n const obj = node as Record<string, unknown>;\n\n // DuckDB AST uses table_name for table references\n if (typeof obj.table_name === 'string') {\n tables.add(obj.table_name.toLowerCase());\n }\n\n for (const value of Object.values(obj)) {\n if (Array.isArray(value)) {\n value.forEach(walk);\n } else if (value && typeof value === 'object') {\n walk(value);\n }\n }\n };\n\n for (const stmt of statements) {\n const stmtObj = stmt as Record<string, unknown>;\n if (stmtObj.node) {\n walk(stmtObj.node);\n } else {\n walk(stmt);\n }\n }\n\n return tables;\n}\n\n/**\n * Find SQL cell dependencies using AST-based parsing.\n * This provides more accurate detection than text-based matching.\n */\nexport async function findSqlDependenciesFromAst(opts: {\n sql: string;\n cells: Record<string, Cell>;\n sqlSelectToJson: (sql: string) => Promise<{\n error: boolean;\n statements?: unknown[];\n }>;\n}): Promise<string[]> {\n const {sql, cells, sqlSelectToJson} = opts;\n\n try {\n const parsed = await sqlSelectToJson(sql);\n if (parsed.error || !parsed.statements) {\n return []; // Fall back to empty deps on parse error\n }\n\n const referencedTables = extractTablesFromAst(parsed.statements);\n const deps: string[] = [];\n\n for (const [id, cell] of Object.entries(cells)) {\n if (cell.type === 'sql') {\n const cellData = cell.data as SqlCellData;\n const title = cellData.title?.toLowerCase();\n const effectiveName = getEffectiveResultName(\n cellData,\n convertToValidColumnOrTableName,\n ).toLowerCase();\n // Match on either title or effective result name\n if (\n (title && referencedTables.has(title)) ||\n referencedTables.has(effectiveName)\n ) {\n deps.push(id);\n }\n }\n }\n\n return deps;\n } catch {\n return [];\n }\n}\n\n/**\n * Rewrites unqualified references to known sheet-local result names as\n * schema-qualified references. This keeps SQL ergonomic without mutable\n * connector-level current schema state.\n */\nexport function qualifySheetLocalResultNames(opts: {\n sql: string;\n sheetSchema: string;\n sheetDatabase?: string;\n sheetCellIds: string[];\n cells: Record<string, Cell>;\n getSqlResultName: (cellId: string) => string | undefined;\n}): string {\n const {\n sql,\n sheetSchema,\n sheetDatabase,\n sheetCellIds,\n cells,\n getSqlResultName,\n } = opts;\n let rewritten = sql;\n\n const names = Array.from(\n new Set(\n sheetCellIds\n .map((cellId) => {\n const cell = cells[cellId];\n if (!cell || cell.type !== 'sql') return undefined;\n const resultName = getSqlResultName(cellId);\n if (!resultName || resultName.includes('.')) return undefined;\n return resultName;\n })\n .filter((v): v is string => Boolean(v)),\n ),\n ).sort((a, b) => b.length - a.length);\n\n for (const name of names) {\n const qualified = sheetDatabase\n ? `${sheetDatabase}.${sheetSchema}.${name}`\n : `${sheetSchema}.${name}`;\n const pattern = new RegExp(\n `(?<![a-zA-Z0-9_.])${escapeRegExp(name)}(?![a-zA-Z0-9_])`,\n 'g',\n );\n rewritten = rewritten.replace(pattern, qualified);\n }\n\n return rewritten;\n}\n"]}
1
+ {"version":3,"file":"sqlHelpers.js","sourceRoot":"","sources":["../src/sqlHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,+BAA+B,EAAC,MAAM,iBAAiB,CAAC;AAWhE,OAAO,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAC,sBAAsB,EAAC,MAAM,SAAS,CAAC;AAE/C,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,GAAW,EACX,QAA8B;IAE9B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,mBAAmB,CAAO;QACrC,UAAU;QACV,KAAK,EAAE,QAAQ;QACf,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG;QACrB,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACzD,gBAAgB,EAAE,CAAC,GAAG,EAAE,EAAE;YACxB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC5B,OAAO,sBAAsB,CAC3B,IAAI,CAAC,IAAmB,EACxB,+BAA+B,CAChC,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC7B,EAAE,EAAE,GAAG,QAAQ,IAAI,MAAM,EAAE;QAC3B,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,MAAM;KACf,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,MAAwB;IAExB,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,KAAK,MAAM,EAAC,OAAO,EAAE,KAAK,EAAC,IAAI,MAAM,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAC3B,yCAAyC,EACzC,CAAC,EAAU,EAAE,CAAS,EAAE,EAAE;QACxB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,OAAO,OAAO,GAAG,KAAK,QAAQ;YAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;YACb,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IACpD,CAAC,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAEjC,IAOD;IACC,MAAM,EACJ,UAAU,EACV,KAAK,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,OAAO,GACR,GAAG,IAAI,CAAC;IACT,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC;IAE9C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,UAAU,CAAC,EAAE;YAAE,SAAS;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,CAAC,EAAE;gBAAE,SAAS;YAClB,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,KAAK,GACT,OAAQ,KAAoC,CAAC,IAAI,EAAE,KAAK,KAAK,QAAQ;gBACnE,CAAC,CAAG,KAAmC,CAAC,IAAI,EAAE,KAAgB;gBAC9D,CAAC,CAAC,SAAS,CAAC;YAChB,+DAA+D;YAC/D,MAAM,UAAU,GACd,KAAK,IAAI,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7D,oDAAoD;YACpD,MAAM,WAAW,GACf,UAAU,IAAI,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;YACvE,IAAI,UAAU,IAAI,WAAW;gBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB,EAAE,cAAsB;IAClE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,qBAAqB,YAAY,CAAC,cAAc,CAAC,kBAAkB,EACnE,GAAG,CACJ,CAAC;IACF,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAgC,EAChC,YAA6B,EAAE;IAE/B,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,GAAG,EAAE,CAAC;QACxB,SAAS,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,SAAS,EAAE,EAAE,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,UAAqB;IACjD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,MAAM,IAAI,GAAG,CAAC,IAAa,EAAQ,EAAE;QACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QAC9C,MAAM,GAAG,GAAG,IAA+B,CAAC;QAE5C,kDAAkD;QAClD,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;iBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9C,IAAI,CAAC,KAAK,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,IAA+B,CAAC;QAChD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAOhD;IACC,MAAM,EAAC,GAAG,EAAE,KAAK,EAAE,eAAe,EAAC,GAAG,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACvC,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC;QACvB,CAAC;QAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAmB,CAAC;gBAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC;gBAC5C,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,EACR,+BAA+B,CAChC,CAAC,WAAW,EAAE,CAAC;gBAChB,IACE,CAAC,KAAK,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACtC,gBAAgB,CAAC,GAAG,CAAC,aAAa,CAAC,EACnC,CAAC;oBACD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACd,IAAI,KAAK;wBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CACpD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAC5B,CAAC;QAEF,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAC,OAAO,EAAE,EAAE,EAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,+BAA+B,CAAC,IAO/C;IACC,MAAM,EACJ,GAAG,EACH,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,KAAK,EACL,gBAAgB,GACjB,GAAG,IAAI,CAAC;IACT,IAAI,SAAS,GAAG,GAAG,CAAC;IAEpB,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,GAAG,CACL,eAAe;SACZ,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QACnD,MAAM,UAAU,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC9D,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC1C,CACF,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,gBAAgB;YAChC,CAAC,CAAC,GAAG,gBAAgB,IAAI,cAAc,IAAI,IAAI,EAAE;YACjD,CAAC,CAAC,GAAG,cAAc,IAAI,IAAI,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,MAAM,CACxB,qBAAqB,YAAY,CAAC,IAAI,CAAC,kBAAkB,EACzD,GAAG,CACJ,CAAC;QACF,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import {convertToValidColumnOrTableName} from '@sqlrooms/utils';\nimport type {\n Cell,\n CellDependencies,\n Edge,\n SqlCellData,\n SqlDependencyOptions,\n SqlRenderInput,\n SqlRunCallbacks,\n SqlRunResult,\n} from './types';\nimport {isInputCell, isSqlCell} from './types';\nimport {getEffectiveResultName} from './utils';\n\nexport function deriveEdgesFromSql(\n cellId: string,\n sql: string,\n allCells: Record<string, Cell>,\n): Edge[] {\n const targetCell = allCells[cellId];\n if (!targetCell) return [];\n\n const deps = findSqlDependencies<Cell>({\n targetCell,\n cells: allCells,\n getSqlText: () => sql,\n getInputVarName: (cell) =>\n isInputCell(cell) ? cell.data.input.varName : undefined,\n getSqlResultName: (cid) => {\n const cell = allCells[cid];\n if (cell && isSqlCell(cell)) {\n return getEffectiveResultName(\n cell.data as SqlCellData,\n convertToValidColumnOrTableName,\n );\n }\n return undefined;\n },\n });\n\n return deps.map((sourceId) => ({\n id: `${sourceId}-${cellId}`,\n source: sourceId,\n target: cellId,\n }));\n}\n\nexport function renderSqlWithInputs(\n rawSql: string,\n inputs: SqlRenderInput[],\n): string {\n const varMap: Record<string, string | number> = {};\n for (const {varName, value} of inputs) {\n varMap[varName] = value;\n }\n return (rawSql || '').replace(\n /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g,\n (_m: string, v: string) => {\n const val = varMap[v];\n return typeof val === 'number'\n ? String(val)\n : `'${String(val ?? '')?.replace(/'/g, \"''\")}'`;\n },\n );\n}\n\nexport function findSqlDependencies<\n TCell extends {id: string; type: string},\n>(opts: {\n targetCell: TCell;\n cells: Record<string, TCell>;\n getSqlText: (cell: TCell) => string | undefined;\n getInputVarName: (cell: TCell) => string | undefined;\n getSqlResultName: (cellId: string) => string | undefined;\n options?: SqlDependencyOptions;\n}): string[] {\n const {\n targetCell,\n cells,\n getSqlText,\n getInputVarName,\n getSqlResultName,\n options,\n } = opts;\n const sql = getSqlText(targetCell) || '';\n const sqlLower = sql.toLowerCase();\n const deps: string[] = [];\n const inputTypes = options?.inputTypes ?? ['input'];\n const sqlTypes = options?.sqlTypes ?? ['sql'];\n\n for (const otherId in cells) {\n if (otherId === targetCell.id) continue;\n const other = cells[otherId];\n if (!other) continue;\n if (inputTypes.includes(other.type)) {\n const vn = getInputVarName(other);\n if (!vn) continue;\n if (sql.includes(`{{${vn}}}`) || sql.includes(`:${vn}`)) {\n deps.push(other.id);\n }\n } else if (sqlTypes.includes(other.type)) {\n const resultName = getSqlResultName(other.id);\n const title =\n typeof (other as {data?: {title?: unknown}}).data?.title === 'string'\n ? ((other as {data?: {title?: string}}).data?.title as string)\n : undefined;\n // Match on title (case-insensitive) with identifier boundaries\n const titleMatch =\n title && containsIdentifier(sqlLower, title.toLowerCase());\n // Match on effective result name (case-insensitive)\n const resultMatch =\n resultName && containsIdentifier(sqlLower, resultName.toLowerCase());\n if (titleMatch || resultMatch) deps.push(other.id);\n }\n }\n return Array.from(new Set(deps));\n}\n\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\nfunction containsIdentifier(sqlLower: string, candidateLower: string): boolean {\n if (!candidateLower.trim()) return false;\n const pattern = new RegExp(\n `(?<![a-zA-Z0-9_.])${escapeRegExp(candidateLower)}(?![a-zA-Z0-9_])`,\n 'i',\n );\n return pattern.test(sqlLower);\n}\n\nexport async function runSqlWithCallbacks(\n run: () => Promise<SqlRunResult>,\n callbacks: SqlRunCallbacks = {},\n) {\n callbacks.onStart?.();\n try {\n const res = await run();\n callbacks.onSuccess?.(res);\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n callbacks.onError?.(message);\n } finally {\n callbacks.onFinally?.();\n }\n}\n\n/**\n * Recursively extract table names from a parsed SQL AST.\n */\nfunction extractTablesFromAst(statements: unknown[]): Set<string> {\n const tables = new Set<string>();\n\n const walk = (node: unknown): void => {\n if (!node || typeof node !== 'object') return;\n const obj = node as Record<string, unknown>;\n\n // DuckDB AST uses table_name for table references\n if (typeof obj.table_name === 'string') {\n tables.add(obj.table_name.toLowerCase());\n }\n\n for (const value of Object.values(obj)) {\n if (Array.isArray(value)) {\n value.forEach(walk);\n } else if (value && typeof value === 'object') {\n walk(value);\n }\n }\n };\n\n for (const stmt of statements) {\n const stmtObj = stmt as Record<string, unknown>;\n if (stmtObj.node) {\n walk(stmtObj.node);\n } else {\n walk(stmt);\n }\n }\n\n return tables;\n}\n\n/**\n * Find SQL cell dependencies using AST-based parsing.\n * Returns cell dependencies and unmatched table references.\n */\nexport async function findSqlDependenciesFromAst(opts: {\n sql: string;\n cells: Record<string, Cell>;\n sqlSelectToJson: (sql: string) => Promise<{\n error: boolean;\n statements?: unknown[];\n }>;\n}): Promise<CellDependencies> {\n const {sql, cells, sqlSelectToJson} = opts;\n\n try {\n const parsed = await sqlSelectToJson(sql);\n if (parsed.error || !parsed.statements) {\n return {cellIds: []};\n }\n\n const referencedTables = extractTablesFromAst(parsed.statements);\n const deps: string[] = [];\n const matchedNames = new Set<string>();\n\n for (const [id, cell] of Object.entries(cells)) {\n if (cell.type === 'sql') {\n const cellData = cell.data as SqlCellData;\n const title = cellData.title?.toLowerCase();\n const effectiveName = getEffectiveResultName(\n cellData,\n convertToValidColumnOrTableName,\n ).toLowerCase();\n if (\n (title && referencedTables.has(title)) ||\n referencedTables.has(effectiveName)\n ) {\n deps.push(id);\n if (title) matchedNames.add(title);\n matchedNames.add(effectiveName);\n }\n }\n }\n\n const tableNames = Array.from(referencedTables).filter(\n (t) => !matchedNames.has(t),\n );\n\n return {cellIds: deps, tableNames};\n } catch {\n return {cellIds: []};\n }\n}\n\n/**\n * Rewrites unqualified references to known artifact-local result names as\n * schema-qualified references. This keeps SQL ergonomic without mutable\n * connector-level current schema state.\n */\nexport function qualifyArtifactLocalResultNames(opts: {\n sql: string;\n artifactSchema: string;\n artifactDatabase?: string;\n artifactCellIds: string[];\n cells: Record<string, Cell>;\n getSqlResultName: (cellId: string) => string | undefined;\n}): string {\n const {\n sql,\n artifactSchema,\n artifactDatabase,\n artifactCellIds,\n cells,\n getSqlResultName,\n } = opts;\n let rewritten = sql;\n\n const names = Array.from(\n new Set(\n artifactCellIds\n .map((cellId) => {\n const cell = cells[cellId];\n if (!cell || cell.type !== 'sql') return undefined;\n const resultName = getSqlResultName(cellId);\n if (!resultName || resultName.includes('.')) return undefined;\n return resultName;\n })\n .filter((v): v is string => Boolean(v)),\n ),\n ).sort((a, b) => b.length - a.length);\n\n for (const name of names) {\n const qualified = artifactDatabase\n ? `${artifactDatabase}.${artifactSchema}.${name}`\n : `${artifactSchema}.${name}`;\n const pattern = new RegExp(\n `(?<![a-zA-Z0-9_.])${escapeRegExp(name)}(?![a-zA-Z0-9_])`,\n 'g',\n );\n rewritten = rewritten.replace(pattern, qualified);\n }\n\n return rewritten;\n}\n"]}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { DbSliceState } from '@sqlrooms/db';
2
- import type { BaseRoomStoreState } from '@sqlrooms/room-store';
2
+ import type { BaseRoomStoreState, SliceFunctions } from '@sqlrooms/room-store';
3
3
  import type * as arrow from 'apache-arrow';
4
4
  import type React from 'react';
5
5
  import { z } from 'zod';
@@ -68,12 +68,27 @@ export declare const TextCellData: z.ZodObject<{
68
68
  text: z.ZodDefault<z.ZodString>;
69
69
  }, z.core.$strip>;
70
70
  export type TextCellData = z.infer<typeof TextCellData>;
71
+ /** Field type category for cross-filter predicates */
72
+ export type BrushFieldType = 'numeric' | 'temporal' | 'string';
73
+ /** Cross-filter configuration for Vega chart cells */
74
+ export declare const CrossFilterConfig: z.ZodObject<{
75
+ enabled: z.ZodDefault<z.ZodBoolean>;
76
+ brushField: z.ZodOptional<z.ZodString>;
77
+ brushFieldType: z.ZodOptional<z.ZodType<BrushFieldType>>;
78
+ }, z.core.$strip>;
79
+ export type CrossFilterConfig = z.infer<typeof CrossFilterConfig>;
71
80
  /** Vega Cell */
72
81
  export declare const VegaCellData: z.ZodObject<{
73
82
  title: z.ZodDefault<z.ZodString>;
74
83
  sqlId: z.ZodOptional<z.ZodString>;
84
+ tableRef: z.ZodOptional<z.ZodString>;
75
85
  sql: z.ZodOptional<z.ZodString>;
76
86
  vegaSpec: z.ZodOptional<z.ZodAny>;
87
+ crossFilter: z.ZodDefault<z.ZodObject<{
88
+ enabled: z.ZodDefault<z.ZodBoolean>;
89
+ brushField: z.ZodOptional<z.ZodString>;
90
+ brushFieldType: z.ZodOptional<z.ZodType<BrushFieldType>>;
91
+ }, z.core.$strip>>;
77
92
  }, z.core.$strip>;
78
93
  export type VegaCellData = z.infer<typeof VegaCellData>;
79
94
  /** Input Cell Data */
@@ -133,8 +148,14 @@ export declare const VegaCell: z.ZodObject<{
133
148
  data: z.ZodObject<{
134
149
  title: z.ZodDefault<z.ZodString>;
135
150
  sqlId: z.ZodOptional<z.ZodString>;
151
+ tableRef: z.ZodOptional<z.ZodString>;
136
152
  sql: z.ZodOptional<z.ZodString>;
137
153
  vegaSpec: z.ZodOptional<z.ZodAny>;
154
+ crossFilter: z.ZodDefault<z.ZodObject<{
155
+ enabled: z.ZodDefault<z.ZodBoolean>;
156
+ brushField: z.ZodOptional<z.ZodString>;
157
+ brushFieldType: z.ZodOptional<z.ZodType<BrushFieldType>>;
158
+ }, z.core.$strip>>;
138
159
  }, z.core.$strip>;
139
160
  }, z.core.$strip>;
140
161
  export type VegaCell = z.infer<typeof VegaCell>;
@@ -187,8 +208,14 @@ export declare const VegaCellSchema: z.ZodObject<{
187
208
  data: z.ZodObject<{
188
209
  title: z.ZodDefault<z.ZodString>;
189
210
  sqlId: z.ZodOptional<z.ZodString>;
211
+ tableRef: z.ZodOptional<z.ZodString>;
190
212
  sql: z.ZodOptional<z.ZodString>;
191
213
  vegaSpec: z.ZodOptional<z.ZodAny>;
214
+ crossFilter: z.ZodDefault<z.ZodObject<{
215
+ enabled: z.ZodDefault<z.ZodBoolean>;
216
+ brushField: z.ZodOptional<z.ZodString>;
217
+ brushFieldType: z.ZodOptional<z.ZodType<BrushFieldType>>;
218
+ }, z.core.$strip>>;
192
219
  }, z.core.$strip>;
193
220
  }, z.core.$strip>;
194
221
  export declare const InputCellSchema: z.ZodObject<{
@@ -231,6 +258,7 @@ export type CellContainerProps = {
231
258
  header?: React.ReactNode;
232
259
  content: React.ReactNode;
233
260
  footer?: React.ReactNode;
261
+ showHeader?: boolean;
234
262
  };
235
263
  /** Type for SQL AST parsing function from DuckDB slice */
236
264
  export type SqlSelectToJsonFn = (sql: string) => Promise<{
@@ -238,10 +266,20 @@ export type SqlSelectToJsonFn = (sql: string) => Promise<{
238
266
  error_type?: string;
239
267
  statements?: unknown[];
240
268
  }>;
269
+ /** Return type from findDependencies: cell IDs and optional table names. */
270
+ export type CellDependencies = {
271
+ cellIds: string[];
272
+ tableNames?: string[];
273
+ };
274
+ export type CreateCellArgs = {
275
+ id: string;
276
+ get: () => CellsRootState;
277
+ set: (updater: (state: CellsRootState) => CellsRootState) => void;
278
+ };
241
279
  export type CellRegistryItem<TCell extends Cell = Cell> = {
242
280
  type: string;
243
281
  title: string;
244
- createCell: (id: string) => TCell;
282
+ createCell: (args: CreateCellArgs) => TCell;
245
283
  renderCell: (props: {
246
284
  id: string;
247
285
  cell: TCell;
@@ -251,9 +289,9 @@ export type CellRegistryItem<TCell extends Cell = Cell> = {
251
289
  findDependencies: (args: {
252
290
  cell: TCell;
253
291
  cells: Record<string, Cell>;
254
- sheetId: string;
292
+ artifactId: string;
255
293
  sqlSelectToJson: SqlSelectToJsonFn;
256
- }) => Promise<string[]>;
294
+ }) => Promise<string[] | CellDependencies>;
257
295
  /** Optional: custom execution logic (defaults to SQL execution for sql type) */
258
296
  runCell?: (args: {
259
297
  id: string;
@@ -271,15 +309,34 @@ export type CellRegistryItem<TCell extends Cell = Cell> = {
271
309
  get: () => CellsRootState;
272
310
  set: (updater: (state: CellsRootState) => CellsRootState) => void;
273
311
  }) => Promise<void>;
312
+ /** Return initial CellStatus when a cell is first added. Default: {type:'other'} */
313
+ createStatus?: (id: string) => CellStatus;
314
+ /** Called once during cells.initialize() for each cell of this type. Reset ephemeral runtime state after hydration. */
315
+ onInitialize?: (args: {
316
+ id: string;
317
+ status: CellStatus | undefined;
318
+ get: () => CellsRootState;
319
+ set: (updater: (state: CellsRootState) => CellsRootState) => void;
320
+ }) => void;
321
+ /** Called when cell is removed. Clean up DuckDB relations, caches, etc. */
322
+ onRemove?: (args: {
323
+ id: string;
324
+ status: CellStatus | undefined;
325
+ get: () => CellsRootState;
326
+ set: (updater: (state: CellsRootState) => CellsRootState) => void;
327
+ }) => Promise<void> | void;
328
+ /** Detect whether an updateCell change is semantically significant for this cell type. */
329
+ hasSemanticChange?: (oldCell: TCell, newCell: TCell) => boolean;
330
+ /** Reset status to idle/stale. Called by invalidateCellStatus. If not provided, status is set to {type:'other'}. */
331
+ invalidateStatus?: (currentStatus: CellStatus) => CellStatus;
332
+ /** Collect DuckDB relation names that should be dropped when this cell is removed. */
333
+ getRelationsToDrop?: (status: CellStatus) => string[];
334
+ /** Record an error on the cell status during cascade execution. */
335
+ recordError?: (currentStatus: CellStatus, message: string) => CellStatus;
336
+ /** Return the query relation name for paged fetches, if applicable. */
337
+ getResultRelation?: (status: CellStatus) => string | undefined;
274
338
  };
275
339
  export type CellRegistry = Record<string, CellRegistryItem<any>>;
276
- /** Sheet and Edge types */
277
- export declare const SheetType: z.ZodEnum<{
278
- notebook: "notebook";
279
- canvas: "canvas";
280
- app: "app";
281
- }>;
282
- export type SheetType = z.infer<typeof SheetType>;
283
340
  export declare const EdgeKind: z.ZodEnum<{
284
341
  dependency: "dependency";
285
342
  manual: "manual";
@@ -295,20 +352,15 @@ export declare const Edge: z.ZodObject<{
295
352
  }>>;
296
353
  }, z.core.$strip>;
297
354
  export type Edge = z.infer<typeof Edge>;
298
- export declare const SheetGraphCache: z.ZodObject<{
355
+ export declare const CellArtifactGraphCache: z.ZodObject<{
299
356
  dependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
300
357
  dependents: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
301
358
  contentHashByCell: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
359
+ tableDependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
302
360
  }, z.core.$strip>;
303
- export type SheetGraphCache = z.infer<typeof SheetGraphCache>;
304
- export declare const Sheet: z.ZodObject<{
361
+ export type CellArtifactGraphCache = z.infer<typeof CellArtifactGraphCache>;
362
+ export declare const CellArtifactRuntime: z.ZodObject<{
305
363
  id: z.ZodString;
306
- type: z.ZodEnum<{
307
- notebook: "notebook";
308
- canvas: "canvas";
309
- app: "app";
310
- }>;
311
- title: z.ZodString;
312
364
  schemaName: z.ZodOptional<z.ZodString>;
313
365
  cellIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
314
366
  edges: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -324,9 +376,10 @@ export declare const Sheet: z.ZodObject<{
324
376
  dependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
325
377
  dependents: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
326
378
  contentHashByCell: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
379
+ tableDependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
327
380
  }, z.core.$strip>>;
328
381
  }, z.core.$strip>;
329
- export type Sheet = z.infer<typeof Sheet>;
382
+ export type CellArtifactRuntime = z.infer<typeof CellArtifactRuntime>;
330
383
  /** Cell Status */
331
384
  export declare const SqlCellStatus: z.ZodObject<{
332
385
  type: z.ZodLiteral<"sql">;
@@ -352,28 +405,11 @@ export declare const OtherCellStatus: z.ZodObject<{
352
405
  type: z.ZodLiteral<"other">;
353
406
  }, z.core.$strip>;
354
407
  export type OtherCellStatus = z.infer<typeof OtherCellStatus>;
355
- export declare const CellStatus: z.ZodUnion<readonly [z.ZodObject<{
356
- type: z.ZodLiteral<"sql">;
357
- status: z.ZodEnum<{
358
- success: "success";
359
- idle: "idle";
360
- running: "running";
361
- cancel: "cancel";
362
- error: "error";
363
- }>;
364
- lastError: z.ZodOptional<z.ZodString>;
365
- referencedTables: z.ZodDefault<z.ZodArray<z.ZodString>>;
366
- resultName: z.ZodOptional<z.ZodString>;
367
- resultView: z.ZodOptional<z.ZodString>;
368
- resultRelationType: z.ZodOptional<z.ZodEnum<{
369
- view: "view";
370
- table: "table";
371
- }>>;
372
- lastRunTime: z.ZodOptional<z.ZodNumber>;
373
- }, z.core.$strip>, z.ZodObject<{
374
- type: z.ZodLiteral<"other">;
375
- }, z.core.$strip>]>;
376
- export type CellStatus = z.infer<typeof CellStatus>;
408
+ /** Extensible cell status -- each cell type defines its own shape with a discriminating `type` field. */
409
+ export type CellStatus = {
410
+ type: string;
411
+ [key: string]: unknown;
412
+ };
377
413
  /** SQL execution results */
378
414
  export type SqlRunResult = {
379
415
  resultName?: string;
@@ -405,14 +441,8 @@ export declare const CellsSliceConfig: z.ZodObject<{
405
441
  type: z.ZodString;
406
442
  data: z.ZodRecord<z.ZodString, z.ZodAny>;
407
443
  }, z.core.$strip>>>;
408
- sheets: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
444
+ artifacts: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
409
445
  id: z.ZodString;
410
- type: z.ZodEnum<{
411
- notebook: "notebook";
412
- canvas: "canvas";
413
- app: "app";
414
- }>;
415
- title: z.ZodString;
416
446
  schemaName: z.ZodOptional<z.ZodString>;
417
447
  cellIds: z.ZodDefault<z.ZodArray<z.ZodString>>;
418
448
  edges: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -428,48 +458,58 @@ export declare const CellsSliceConfig: z.ZodObject<{
428
458
  dependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
429
459
  dependents: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
430
460
  contentHashByCell: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
461
+ tableDependencies: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString>>>;
431
462
  }, z.core.$strip>>;
432
463
  }, z.core.$strip>>>;
433
- sheetOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
434
- currentSheetId: z.ZodOptional<z.ZodString>;
464
+ tableDepSchemas: z.ZodDefault<z.ZodArray<z.ZodString>>;
435
465
  }, z.core.$strip>;
436
466
  export type CellsSliceConfig = z.infer<typeof CellsSliceConfig>;
437
467
  export type CellsSliceOptions = {
438
468
  config?: Partial<CellsSliceConfig>;
439
469
  cellRegistry: CellRegistry;
440
- supportedSheetTypes?: SheetType[];
441
470
  };
442
471
  /** Data stored for a cell's query result */
443
472
  export type CellResultData = {
444
473
  arrowTable: arrow.Table;
445
474
  totalRows: number;
446
475
  };
476
+ /** Cross-filter selection value emitted by a Vega chart brush */
477
+ export type CrossFilterSelection = {
478
+ field: string;
479
+ fieldType?: BrushFieldType;
480
+ type: 'interval' | 'point';
481
+ value: unknown;
482
+ };
447
483
  export type CellsSliceState = {
448
- cells: {
484
+ cells: SliceFunctions & {
449
485
  config: CellsSliceConfig;
450
486
  status: Record<string, CellStatus>;
451
487
  activeAbortControllers: Record<string, AbortController>;
452
488
  cellRegistry: CellRegistry;
453
- supportedSheetTypes: SheetType[];
454
489
  /** Monotonic counter per cell, incremented when a new execution result arrives. Used to trigger pagination reset and re-render. */
455
490
  resultVersion: Record<string, number>;
456
491
  /** Monotonic counter per cell, incremented when a pagination/sorting fetch completes. Used to trigger re-render without resetting pagination. */
457
492
  pageVersion: Record<string, number>;
458
- addCell: (sheetId: string, cell: Cell, index?: number) => Promise<void>;
493
+ /**
494
+ * Ephemeral cross-filter selections (not persisted).
495
+ * Outer key: sqlId (the shared data source), inner key: chartCellId.
496
+ */
497
+ crossFilterSelections: Record<string, Record<string, CrossFilterSelection | null>>;
498
+ setCrossFilterSelection: (chartCellId: string, sqlId: string, selection: CrossFilterSelection | null) => void;
499
+ getCrossFilterPredicate: (chartCellId: string, sqlId: string) => string | null;
500
+ clearCrossFilterGroup: (sqlId: string) => void;
501
+ ensureArtifact: (artifactId: string, options?: {
502
+ schemaName?: string;
503
+ }) => void;
504
+ removeArtifact: (artifactId: string) => void;
505
+ addCell: (artifactId: string, cell: Cell, index?: number) => Promise<void>;
459
506
  removeCell: (id: string) => void;
460
507
  updateCell: (id: string, updater: (cell: Cell) => Cell, opts?: {
461
508
  cascade?: boolean;
462
509
  }) => Promise<void>;
463
- addSheet: (title?: string, type?: SheetType) => string;
464
- removeSheet: (sheetId: string) => void;
465
- closeSheet: (sheetId: string) => void;
466
- openSheet: (sheetId: string) => void;
467
- setSheetOrder: (sheetOrder: string[]) => void;
468
- renameSheet: (sheetId: string, title: string) => void;
469
- setCurrentSheet: (sheetId: string) => void;
470
- addEdge: (sheetId: string, edge: Omit<Edge, 'id'>) => void;
471
- removeEdge: (sheetId: string, edgeId: string) => void;
472
- updateEdgesFromSql: (sheetId: string, cellId: string) => Promise<void>;
510
+ addEdge: (artifactId: string, edge: Omit<Edge, 'id'>) => void;
511
+ removeEdge: (artifactId: string, edgeId: string) => void;
512
+ updateEdgesFromSql: (artifactId: string, cellId: string) => Promise<void>;
473
513
  runCell: (id: string, opts?: {
474
514
  cascade?: boolean;
475
515
  schemaName?: string;
@@ -487,15 +527,18 @@ export type CellsSliceState = {
487
527
  id: string;
488
528
  desc: boolean;
489
529
  }[]) => Promise<void>;
490
- getDownstream: (sheetId: string, sourceCellId: string) => string[];
491
- getRootCells: (sheetId: string) => string[];
492
- runAllCellsCascade: (sheetId: string) => Promise<void>;
493
- runDownstreamCascade: (sheetId: string, sourceCellId: string) => Promise<void>;
530
+ getArtifactIdForCell: (cellId: string) => string | undefined;
531
+ getDownstream: (artifactId: string, sourceCellId: string) => string[];
532
+ getRootCells: (artifactId: string) => string[];
533
+ runAllCellsCascade: (artifactId: string) => Promise<void>;
534
+ runDownstreamCascade: (artifactId: string, sourceCellId: string) => Promise<void>;
494
535
  };
536
+ initialize?: () => Promise<void>;
495
537
  };
496
538
  export type CellsRootState = BaseRoomStoreState & DbSliceState & CellsSliceState;
497
539
  export declare function isSqlCell(cell: Cell): cell is SqlCell;
498
540
  export declare function isTextCell(cell: Cell): cell is TextCell;
499
541
  export declare function isVegaCell(cell: Cell): cell is VegaCell;
500
542
  export declare function isInputCell(cell: Cell): cell is InputCell;
543
+ export declare function isSqlCellStatus(status: CellStatus | undefined): status is SqlCellStatus;
501
544
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -38,12 +38,22 @@ export const TextCellData = z.object({
38
38
  title: z.string().default('Text'),
39
39
  text: z.string().default(''),
40
40
  });
41
+ /** Cross-filter configuration for Vega chart cells */
42
+ export const CrossFilterConfig = z.object({
43
+ enabled: z.boolean().default(true),
44
+ brushField: z.string().optional(),
45
+ brushFieldType: z
46
+ .enum(['numeric', 'temporal', 'string'])
47
+ .optional(),
48
+ });
41
49
  /** Vega Cell */
42
50
  export const VegaCellData = z.object({
43
51
  title: z.string().default('Chart'),
44
52
  sqlId: z.string().optional(), // In notebook, it links to another cell. In canvas, it might be the same.
53
+ tableRef: z.string().optional(), // Direct table reference, e.g. "main.flights"
45
54
  sql: z.string().optional(), // In canvas, it often has its own SQL.
46
55
  vegaSpec: z.any().optional(),
56
+ crossFilter: CrossFilterConfig.default({ enabled: true }),
47
57
  });
48
58
  /** Input Cell Data */
49
59
  export const InputCellData = z.object({
@@ -85,8 +95,6 @@ export const Cell = z.object({
85
95
  type: CellType,
86
96
  data: z.record(z.string(), z.any()),
87
97
  });
88
- /** Sheet and Edge types */
89
- export const SheetType = z.enum(['notebook', 'canvas', 'app']);
90
98
  export const EdgeKind = z.enum(['dependency', 'manual']);
91
99
  export const Edge = z.object({
92
100
  id: z.string(),
@@ -94,19 +102,18 @@ export const Edge = z.object({
94
102
  target: z.string(), // cellId
95
103
  kind: EdgeKind.optional(),
96
104
  });
97
- export const SheetGraphCache = z.object({
105
+ export const CellArtifactGraphCache = z.object({
98
106
  dependencies: z.record(z.string(), z.array(z.string())).default({}),
99
107
  dependents: z.record(z.string(), z.array(z.string())).default({}),
100
108
  contentHashByCell: z.record(z.string(), z.string()).optional(),
109
+ tableDependencies: z.record(z.string(), z.array(z.string())).default({}),
101
110
  });
102
- export const Sheet = z.object({
111
+ export const CellArtifactRuntime = z.object({
103
112
  id: z.string(),
104
- type: SheetType,
105
- title: z.string(),
106
113
  schemaName: z.string().optional(),
107
- cellIds: z.array(z.string()).default([]), // Which cells belong to this sheet
108
- edges: z.array(Edge).default([]), // Dependencies
109
- graphCache: SheetGraphCache.optional(),
114
+ cellIds: z.array(z.string()).default([]),
115
+ edges: z.array(Edge).default([]),
116
+ graphCache: CellArtifactGraphCache.optional(),
110
117
  });
111
118
  /** Cell Status */
112
119
  export const SqlCellStatus = z.object({
@@ -122,12 +129,11 @@ export const SqlCellStatus = z.object({
122
129
  export const OtherCellStatus = z.object({
123
130
  type: z.literal('other'),
124
131
  });
125
- export const CellStatus = z.union([SqlCellStatus, OtherCellStatus]);
126
132
  export const CellsSliceConfig = z.object({
127
133
  data: z.record(z.string(), Cell).default({}),
128
- sheets: z.record(z.string(), Sheet).default({}),
129
- sheetOrder: z.array(z.string()).default([]),
130
- currentSheetId: z.string().optional(),
134
+ artifacts: z.record(z.string(), CellArtifactRuntime).default({}),
135
+ /** Which database schemas' tables are eligible for direct table dependencies. */
136
+ tableDepSchemas: z.array(z.string()).default(['main']),
131
137
  });
132
138
  export function isSqlCell(cell) {
133
139
  return cell.type === 'sql';
@@ -141,4 +147,7 @@ export function isVegaCell(cell) {
141
147
  export function isInputCell(cell) {
142
148
  return cell.type === 'input';
143
149
  }
150
+ export function isSqlCellStatus(status) {
151
+ return status?.type === 'sql';
152
+ }
144
153
  //# sourceMappingURL=types.js.map