@sqlrooms/cells 0.29.0-rc.1 → 0.29.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/dist/cellsSlice.d.ts.map +1 -1
- package/dist/cellsSlice.js +305 -264
- package/dist/cellsSlice.js.map +1 -1
- package/dist/components/AggregationSelector.d.ts +8 -0
- package/dist/components/AggregationSelector.d.ts.map +1 -0
- package/dist/components/AggregationSelector.js +13 -0
- package/dist/components/AggregationSelector.js.map +1 -0
- package/dist/components/CellSourceSelector.d.ts +12 -0
- package/dist/components/CellSourceSelector.d.ts.map +1 -0
- package/dist/components/CellSourceSelector.js +34 -0
- package/dist/components/CellSourceSelector.js.map +1 -0
- package/dist/components/ChartTypeSelector.d.ts +8 -0
- package/dist/components/ChartTypeSelector.d.ts.map +1 -0
- package/dist/components/ChartTypeSelector.js +13 -0
- package/dist/components/ChartTypeSelector.js.map +1 -0
- package/dist/components/CollapsibleSectionButton.d.ts +10 -0
- package/dist/components/CollapsibleSectionButton.d.ts.map +1 -0
- package/dist/components/CollapsibleSectionButton.js +10 -0
- package/dist/components/CollapsibleSectionButton.js.map +1 -0
- package/dist/components/ColorSelector.d.ts +24 -0
- package/dist/components/ColorSelector.d.ts.map +1 -0
- package/dist/components/ColorSelector.js +17 -0
- package/dist/components/ColorSelector.js.map +1 -0
- package/dist/components/FieldSelector.d.ts +11 -0
- package/dist/components/FieldSelector.d.ts.map +1 -0
- package/dist/components/FieldSelector.js +11 -0
- package/dist/components/FieldSelector.js.map +1 -0
- package/dist/components/FieldTypeIcon.d.ts +8 -0
- package/dist/components/FieldTypeIcon.d.ts.map +1 -0
- package/dist/components/FieldTypeIcon.js +27 -0
- package/dist/components/FieldTypeIcon.js.map +1 -0
- package/dist/components/InputCellContent.d.ts.map +1 -1
- package/dist/components/InputCellContent.js +3 -3
- package/dist/components/InputCellContent.js.map +1 -1
- package/dist/components/SelectionListener.d.ts +15 -0
- package/dist/components/SelectionListener.d.ts.map +1 -0
- package/dist/components/SelectionListener.js +74 -0
- package/dist/components/SelectionListener.js.map +1 -0
- package/dist/components/SqlCellConnectionSelector.d.ts +9 -0
- package/dist/components/SqlCellConnectionSelector.d.ts.map +1 -0
- package/dist/components/SqlCellConnectionSelector.js +21 -0
- package/dist/components/SqlCellConnectionSelector.js.map +1 -0
- package/dist/components/SqlCellContent.d.ts.map +1 -1
- package/dist/components/SqlCellContent.js +31 -156
- package/dist/components/SqlCellContent.js.map +1 -1
- package/dist/components/SqlCellDependentsMenu.d.ts +11 -0
- package/dist/components/SqlCellDependentsMenu.d.ts.map +1 -0
- package/dist/components/SqlCellDependentsMenu.js +62 -0
- package/dist/components/SqlCellDependentsMenu.js.map +1 -0
- package/dist/components/SqlCellEditor.d.ts +14 -0
- package/dist/components/SqlCellEditor.d.ts.map +1 -0
- package/dist/components/SqlCellEditor.js +17 -0
- package/dist/components/SqlCellEditor.js.map +1 -0
- package/dist/components/SqlCellResultNameEditor.d.ts +8 -0
- package/dist/components/SqlCellResultNameEditor.d.ts.map +1 -0
- package/dist/components/SqlCellResultNameEditor.js +38 -0
- package/dist/components/SqlCellResultNameEditor.js.map +1 -0
- package/dist/components/SqlCellResults.d.ts +17 -0
- package/dist/components/SqlCellResults.d.ts.map +1 -0
- package/dist/components/SqlCellResults.js +45 -0
- package/dist/components/SqlCellResults.js.map +1 -0
- package/dist/components/SqlCellRunButton.d.ts +5 -6
- package/dist/components/SqlCellRunButton.d.ts.map +1 -1
- package/dist/components/SqlCellRunButton.js +11 -7
- package/dist/components/SqlCellRunButton.js.map +1 -1
- package/dist/components/SqlQueryPreview.d.ts +9 -0
- package/dist/components/SqlQueryPreview.d.ts.map +1 -0
- package/dist/components/SqlQueryPreview.js +14 -0
- package/dist/components/SqlQueryPreview.js.map +1 -0
- package/dist/components/TextCellContent.d.ts.map +1 -1
- package/dist/components/TextCellContent.js +24 -7
- package/dist/components/TextCellContent.js.map +1 -1
- package/dist/components/VegaCellContent.d.ts +0 -1
- package/dist/components/VegaCellContent.d.ts.map +1 -1
- package/dist/components/VegaCellContent.js +61 -47
- package/dist/components/VegaCellContent.js.map +1 -1
- package/dist/components/VegaCellHeader.d.ts +11 -0
- package/dist/components/VegaCellHeader.d.ts.map +1 -0
- package/dist/components/VegaCellHeader.js +32 -0
- package/dist/components/VegaCellHeader.js.map +1 -0
- package/dist/components/VegaConfigPanel.d.ts +5 -0
- package/dist/components/VegaConfigPanel.d.ts.map +1 -1
- package/dist/components/VegaConfigPanel.js +53 -63
- package/dist/components/VegaConfigPanel.js.map +1 -1
- package/dist/dagUtils.d.ts +10 -9
- package/dist/dagUtils.d.ts.map +1 -1
- package/dist/dagUtils.js +76 -50
- package/dist/dagUtils.js.map +1 -1
- package/dist/defaultCellRegistry.d.ts.map +1 -1
- package/dist/defaultCellRegistry.js +79 -36
- package/dist/defaultCellRegistry.js.map +1 -1
- package/dist/execution.d.ts.map +1 -1
- package/dist/execution.js +24 -17
- package/dist/execution.js.map +1 -1
- package/dist/helpers.d.ts +20 -16
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +79 -44
- package/dist/helpers.js.map +1 -1
- package/dist/hooks/useVegaCellDataSource.d.ts +18 -0
- package/dist/hooks/useVegaCellDataSource.d.ts.map +1 -0
- package/dist/hooks/useVegaCellDataSource.js +40 -0
- package/dist/hooks/useVegaCellDataSource.js.map +1 -0
- package/dist/hooks/useVegaCellQuery.d.ts +16 -0
- package/dist/hooks/useVegaCellQuery.d.ts.map +1 -0
- package/dist/hooks/useVegaCellQuery.js +25 -0
- package/dist/hooks/useVegaCellQuery.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/sqlHelpers.d.ts +8 -8
- package/dist/sqlHelpers.d.ts.map +1 -1
- package/dist/sqlHelpers.js +16 -12
- package/dist/sqlHelpers.js.map +1 -1
- package/dist/types.d.ts +113 -70
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +22 -13
- package/dist/types.js.map +1 -1
- package/dist/useValidateResultName.d.ts +34 -0
- package/dist/useValidateResultName.d.ts.map +1 -0
- package/dist/useValidateResultName.js +111 -0
- package/dist/useValidateResultName.js.map +1 -0
- package/dist/utils.d.ts +10 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +20 -4
- package/dist/utils.js.map +1 -1
- package/dist/vegaSelectionUtils.d.ts +14 -0
- package/dist/vegaSelectionUtils.d.ts.map +1 -0
- package/dist/vegaSelectionUtils.js +97 -0
- package/dist/vegaSelectionUtils.js.map +1 -0
- package/dist/vegaSpecBuilder.d.ts +34 -0
- package/dist/vegaSpecBuilder.d.ts.map +1 -0
- package/dist/vegaSpecBuilder.js +90 -0
- package/dist/vegaSpecBuilder.js.map +1 -0
- package/package.json +12 -13
- package/dist/components/DeleteSheetModal.d.ts +0 -9
- package/dist/components/DeleteSheetModal.d.ts.map +0 -1
- package/dist/components/DeleteSheetModal.js +0 -6
- package/dist/components/DeleteSheetModal.js.map +0 -1
- package/dist/components/SheetsTabBar.d.ts +0 -6
- package/dist/components/SheetsTabBar.d.ts.map +0 -1
- package/dist/components/SheetsTabBar.js +0 -57
- package/dist/components/SheetsTabBar.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -7,18 +7,18 @@ import { SqlCellRunButton as SqlCellRunButtonComponent } from './components/SqlC
|
|
|
7
7
|
export { createCellsSlice } from './cellsSlice';
|
|
8
8
|
export { initializeInput } from './components/Input/helpers';
|
|
9
9
|
export { InputCellContent } from './components/InputCellContent';
|
|
10
|
-
export { SheetsTabBar } from './components/SheetsTabBar';
|
|
11
10
|
export { SqlCellContentComponent as SqlCellContent };
|
|
12
11
|
export { SqlCellRunButtonComponent as SqlCellRunButton };
|
|
13
12
|
export { TextCellContent } from './components/TextCellContent';
|
|
14
13
|
export { VegaCellContent } from './components/VegaCellContent';
|
|
14
|
+
export { CellSourceSelector } from './components/CellSourceSelector';
|
|
15
15
|
export { createDefaultCellRegistry } from './defaultCellRegistry';
|
|
16
16
|
export { getRenderableDependencyEdges } from './dagUtils';
|
|
17
|
-
export {
|
|
17
|
+
export { findArtifactIdForCell, normalizeCellDependencies, resolveArtifactSchemaName, toDataSourceCell, toDataSourceTable, isDataSourceCell, isDataSourceTable, fromDataSourceCell, fromDataSourceTable, } from './helpers';
|
|
18
18
|
export { useCellsStore } from './hooks';
|
|
19
19
|
export { findSqlDependencies, findSqlDependenciesFromAst, renderSqlWithInputs, runSqlWithCallbacks, } from './sqlHelpers';
|
|
20
|
+
export { buildCrossFilterPredicate, BRUSH_PARAM_NAME, } from './vegaSelectionUtils';
|
|
20
21
|
export * from './types';
|
|
21
|
-
export { getEffectiveResultName, isValidSqlIdentifier } from './utils';
|
|
22
22
|
export const SqlCell = {
|
|
23
23
|
RunButton: SqlCellRunButtonComponent,
|
|
24
24
|
Content: SqlCellContentComponent,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,cAAc,IAAI,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAC,gBAAgB,IAAI,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AAE5F,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,cAAc,IAAI,uBAAuB,EAAC,MAAM,6BAA6B,CAAC;AACtF,OAAO,EAAC,gBAAgB,IAAI,yBAAyB,EAAC,MAAM,+BAA+B,CAAC;AAE5F,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAC,eAAe,EAAC,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAC,uBAAuB,IAAI,cAAc,EAAC,CAAC;AACnD,OAAO,EAAC,yBAAyB,IAAI,gBAAgB,EAAC,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAC,kBAAkB,EAAC,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAC,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,4BAA4B,EAAC,MAAM,YAAY,CAAC;AACxD,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,cAAc,SAAS,CAAC;AAExB,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,SAAS,EAAE,yBAAyB;IACpC,OAAO,EAAE,uBAAuB;CACjC,CAAC","sourcesContent":["/**\n * {@include ../README.md}\n * @packageDocumentation\n */\n\nimport {SqlCellContent as SqlCellContentComponent} from './components/SqlCellContent';\nimport {SqlCellRunButton as SqlCellRunButtonComponent} from './components/SqlCellRunButton';\n\nexport {createCellsSlice} from './cellsSlice';\nexport type {CellsRootState} from './types';\nexport {initializeInput} from './components/Input/helpers';\nexport {InputCellContent} from './components/InputCellContent';\nexport {SqlCellContentComponent as SqlCellContent};\nexport {SqlCellRunButtonComponent as SqlCellRunButton};\nexport {TextCellContent} from './components/TextCellContent';\nexport {VegaCellContent} from './components/VegaCellContent';\nexport {CellSourceSelector} from './components/CellSourceSelector';\nexport {createDefaultCellRegistry} from './defaultCellRegistry';\nexport {getRenderableDependencyEdges} from './dagUtils';\nexport {\n findArtifactIdForCell,\n normalizeCellDependencies,\n resolveArtifactSchemaName,\n toDataSourceCell,\n toDataSourceTable,\n isDataSourceCell,\n isDataSourceTable,\n fromDataSourceCell,\n fromDataSourceTable,\n} from './helpers';\nexport {useCellsStore} from './hooks';\nexport {\n findSqlDependencies,\n findSqlDependenciesFromAst,\n renderSqlWithInputs,\n runSqlWithCallbacks,\n} from './sqlHelpers';\nexport {\n buildCrossFilterPredicate,\n BRUSH_PARAM_NAME,\n} from './vegaSelectionUtils';\nexport * from './types';\n\nexport const SqlCell = {\n RunButton: SqlCellRunButtonComponent,\n Content: SqlCellContentComponent,\n};\n"]}
|
package/dist/sqlHelpers.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Cell, Edge, SqlDependencyOptions, SqlRenderInput, SqlRunCallbacks, SqlRunResult } from './types';
|
|
1
|
+
import type { Cell, CellDependencies, Edge, SqlDependencyOptions, SqlRenderInput, SqlRunCallbacks, SqlRunResult } from './types';
|
|
2
2
|
export declare function deriveEdgesFromSql(cellId: string, sql: string, allCells: Record<string, Cell>): Edge[];
|
|
3
3
|
export declare function renderSqlWithInputs(rawSql: string, inputs: SqlRenderInput[]): string;
|
|
4
4
|
export declare function findSqlDependencies<TCell extends {
|
|
@@ -15,7 +15,7 @@ export declare function findSqlDependencies<TCell extends {
|
|
|
15
15
|
export declare function runSqlWithCallbacks(run: () => Promise<SqlRunResult>, callbacks?: SqlRunCallbacks): Promise<void>;
|
|
16
16
|
/**
|
|
17
17
|
* Find SQL cell dependencies using AST-based parsing.
|
|
18
|
-
*
|
|
18
|
+
* Returns cell dependencies and unmatched table references.
|
|
19
19
|
*/
|
|
20
20
|
export declare function findSqlDependenciesFromAst(opts: {
|
|
21
21
|
sql: string;
|
|
@@ -24,17 +24,17 @@ export declare function findSqlDependenciesFromAst(opts: {
|
|
|
24
24
|
error: boolean;
|
|
25
25
|
statements?: unknown[];
|
|
26
26
|
}>;
|
|
27
|
-
}): Promise<
|
|
27
|
+
}): Promise<CellDependencies>;
|
|
28
28
|
/**
|
|
29
|
-
* Rewrites unqualified references to known
|
|
29
|
+
* Rewrites unqualified references to known artifact-local result names as
|
|
30
30
|
* schema-qualified references. This keeps SQL ergonomic without mutable
|
|
31
31
|
* connector-level current schema state.
|
|
32
32
|
*/
|
|
33
|
-
export declare function
|
|
33
|
+
export declare function qualifyArtifactLocalResultNames(opts: {
|
|
34
34
|
sql: string;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
artifactSchema: string;
|
|
36
|
+
artifactDatabase?: string;
|
|
37
|
+
artifactCellIds: string[];
|
|
38
38
|
cells: Record<string, Cell>;
|
|
39
39
|
getSqlResultName: (cellId: string) => string | undefined;
|
|
40
40
|
}): string;
|
package/dist/sqlHelpers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlHelpers.d.ts","sourceRoot":"","sources":["../src/sqlHelpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,IAAI,EAEJ,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC7B,IAAI,EAAE,CA2BR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EAAE,GACvB,MAAM,CAcR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,SAAS;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EACxC,IAAI,EAAE;IACN,UAAU,EAAE,KAAK,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;IAChD,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzD,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,MAAM,EAAE,CAyCX;AAeD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EAChC,SAAS,GAAE,eAAoB,iBAYhC;AAsCD;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QACxC,KAAK,EAAE,OAAO,CAAC;QACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;KACxB,CAAC,CAAC;CACJ,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"sqlHelpers.d.ts","sourceRoot":"","sources":["../src/sqlHelpers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,IAAI,EACJ,gBAAgB,EAChB,IAAI,EAEJ,oBAAoB,EACpB,cAAc,EACd,eAAe,EACf,YAAY,EACb,MAAM,SAAS,CAAC;AAIjB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAC7B,IAAI,EAAE,CA2BR;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,cAAc,EAAE,GACvB,MAAM,CAcR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,SAAS;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,EACxC,IAAI,EAAE;IACN,UAAU,EAAE,KAAK,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;IAChD,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,SAAS,CAAC;IACrD,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACzD,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC,GAAG,MAAM,EAAE,CAyCX;AAeD,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EAChC,SAAS,GAAE,eAAoB,iBAYhC;AAsCD;;;GAGG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;QACxC,KAAK,EAAE,OAAO,CAAC;QACf,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;KACxB,CAAC,CAAC;CACJ,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwC5B;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC1D,GAAG,MAAM,CAqCT"}
|
package/dist/sqlHelpers.js
CHANGED
|
@@ -130,44 +130,48 @@ function extractTablesFromAst(statements) {
|
|
|
130
130
|
}
|
|
131
131
|
/**
|
|
132
132
|
* Find SQL cell dependencies using AST-based parsing.
|
|
133
|
-
*
|
|
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 [];
|
|
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
|
-
|
|
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
|
|
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
|
|
168
|
-
const { sql,
|
|
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(
|
|
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 =
|
|
183
|
-
? `${
|
|
184
|
-
: `${
|
|
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
|
}
|
package/dist/sqlHelpers.js.map
CHANGED
|
@@ -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":"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","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: (
|
|
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
|
-
|
|
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
|
|
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
|
|
304
|
-
export declare const
|
|
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
|
|
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
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
464
|
-
|
|
465
|
-
|
|
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
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
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
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAC,kBAAkB,EAAE,cAAc,EAAC,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,iBAAiB;AACjB,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,QAAQ,GAAG,eAAe,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AACvD,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC,uBAAuB;AACvB,eAAO,MAAM,UAAU;;;;EAAyC,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAO,MAAM,SAAS;;;;iBAIpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAElD,eAAO,MAAM,WAAW;;;;;;;iBAOtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,aAAa;;;;;iBAKxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;2BAIrB,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEpD,eAAe;AACf,eAAO,MAAM,WAAW;;;;;iBAKtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,gBAAgB;AAChB,eAAO,MAAM,YAAY;;;iBAGvB,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE/D,sDAAsD;AACtD,eAAO,MAAM,iBAAiB;;;oBAKX,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;iBACzD,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAElE,gBAAgB;AAChB,eAAO,MAAM,YAAY;;;;;;;;;wBALN,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;;iBAYzD,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAExD,sBAAsB;AACtB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;iBAGxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,wBAAwB;AACxB,eAAO,MAAM,QAAQ;;;iBAGnB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC;AAEF,eAAO,MAAM,OAAO;;;;;;;;;iBAIlB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;AAE9C,eAAO,MAAM,QAAQ;;;;;;;iBAInB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,QAAQ;;;;;;;;;;;;4BA9CF,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;;;iBAkDzD,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;iBAIpB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAClD,eAAO,MAAM,aAAa;;;;;;;;;iBAAU,CAAC;AACrC,eAAO,MAAM,cAAc;;;;;;;iBAAW,CAAC;AACvC,eAAO,MAAM,cAAc;;;;;;;;;;;;4BA7DR,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;;;iBA6DrB,CAAC;AACvC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;iBAAY,CAAC;AAEzC,qBAAqB;AACrB,eAAO,MAAM,IAAI;;;;iBAIf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC;AAEF,4BAA4B;AAC5B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACvD,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;CACxB,CAAC,CAAC;AAEH,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,cAAc,CAAC;IAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC;CACnE,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,KAAK,SAAS,IAAI,GAAG,IAAI,IAAI;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,KAAK,CAAC;IAC5C,UAAU,EAAE,CAAC,KAAK,EAAE;QAClB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,KAAK,CAAC;QACZ,eAAe,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,KAAK,CAAC,YAAY,CAAC;KACpE,KAAK,KAAK,CAAC,YAAY,CAAC;IACzB,oEAAoE;IACpE,gBAAgB,EAAE,CAAC,IAAI,EAAE;QACvB,IAAI,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,eAAe,EAAE,iBAAiB,CAAC;KACpC,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,gBAAgB,CAAC,CAAC;IAC3C,gFAAgF;IAChF,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE;QACf,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE;YAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAC,CAAC;QAChD,GAAG,EAAE,MAAM,cAAc,CAAC;QAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC;KACnE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,GAAG,EAAE,MAAM,cAAc,CAAC;QAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC;KACnE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpB,oFAAoF;IACpF,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1C,uHAAuH;IACvH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QACpB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,GAAG,EAAE,MAAM,cAAc,CAAC;QAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC;KACnE,KAAK,IAAI,CAAC;IACX,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;QAC/B,GAAG,EAAE,MAAM,cAAc,CAAC;QAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,cAAc,KAAK,IAAI,CAAC;KACnE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3B,0FAA0F;IAC1F,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,KAAK,OAAO,CAAC;IAChE,oHAAoH;IACpH,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,KAAK,UAAU,CAAC;IAC7D,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,EAAE,CAAC;IACtD,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,UAAU,CAAC;IACzE,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,MAAM,GAAG,SAAS,CAAC;CAChE,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAEjE,eAAO,MAAM,QAAQ;;;EAAmC,CAAC;AACzD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAEhD,eAAO,MAAM,IAAI;;;;;;;;iBAKf,CAAC;AACH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;AAExC,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;iBAM9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,kBAAkB;AAClB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;iBASxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,yGAAyG;AACzG,MAAM,MAAM,UAAU,GAAG;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAC,CAAC;AAEhE,4BAA4B;AAC5B,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GACxB;IACE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACD,SAAS,CAAC;AAEd,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAK3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACnC,YAAY,EAAE,YAAY,CAAC;CAC5B,CAAC;AAEF,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,cAAc,GAAG;QACtB,MAAM,EAAE,gBAAgB,CAAC;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACnC,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxD,YAAY,EAAE,YAAY,CAAC;QAC3B,mIAAmI;QACnI,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,iJAAiJ;QACjJ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEpC;;;WAGG;QACH,qBAAqB,EAAE,MAAM,CAC3B,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC,CAC5C,CAAC;QACF,uBAAuB,EAAE,CACvB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,oBAAoB,GAAG,IAAI,KACnC,IAAI,CAAC;QACV,uBAAuB,EAAE,CACvB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,KACV,MAAM,GAAG,IAAI,CAAC;QACnB,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAG/C,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAC,KAC5B,IAAI,CAAC;QACV,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7C,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3E,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,UAAU,EAAE,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,EAC7B,IAAI,CAAC,EAAE;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAC,KACvB,OAAO,CAAC,IAAI,CAAC,CAAC;QAGnB,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,CAAC;QAC9D,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;QACzD,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAG1E,OAAO,EAAE,CACP,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;YAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAC,KAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;QACnB,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACjC,oBAAoB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QAG3C,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;QAC1D,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;QAC9D,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,CAAC;QAC1D,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACtC,mBAAmB,EAAE,CACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAC,EACjD,OAAO,CAAC,EAAE;YAAC,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAA;SAAC,EAAE,KACpC,OAAO,CAAC,IAAI,CAAC,CAAC;QAGnB,oBAAoB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;QAC7D,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QACtE,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/C,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,oBAAoB,EAAE,CACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB,CAAC;IAEF,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAC7C,YAAY,GACZ,eAAe,CAAC;AAElB,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,OAAO,CAErD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,QAAQ,CAEvD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,QAAQ,CAEvD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,IAAI,SAAS,CAEzD;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,UAAU,GAAG,SAAS,GAC7B,MAAM,IAAI,aAAa,CAEzB"}
|