From 8ef5ff99fd96b2c0951c700f70437aadfd768091 Mon Sep 17 00:00:00 2001 From: An Phi Date: Mon, 22 Jul 2024 09:26:16 -0400 Subject: [PATCH] datacube: application infrastructure improvements (#3350) * datacube: fix a bug with export to email for Outlook * datacube: disable drag out to remove columns * datacube: ensure ag-grid license is fetched before grid is displayed * repl: minor cleanups * repl: improve debugging capabilities * repl: rework layout manager * datacube: implement window manager * datacube: support blocking error alert * datacube: add documentation viewer window * datacube: add settings panel * repl: remove ANTLR dependencies * bump dependencies --- .changeset/great-clouds-hope.md | 3 + .changeset/heavy-wolves-leave.md | 35 + .changeset/quiet-cars-enjoy.md | 35 + .eslintignore | 1 - .gitattributes | 1 - .gitignore | 1 - .prettierignore | 1 - package.json | 18 +- packages/eslint-plugin/package.json | 12 +- .../package.json | 2 +- .../legend-application-pure-ide/package.json | 4 +- .../package.json | 2 +- .../package.json | 2 +- .../legend-application-query/package.json | 6 +- .../documentation.json | 22 + .../package.json | 4 +- .../scripts/setup.js | 2 + .../src/index.css | 1 + .../src/markdown-viewer.css | 499 ++++++ .../_package.config.js | 2 +- .../grammar/datacube_filter__lexer.g4 | 40 - .../grammar/datacube_filter__parser.g4 | 14 - .../grammar/generateGrammar.js | 43 - .../generated/datacube_filter__lexer.interp | 59 - .../generated/datacube_filter__lexer.tokens | 14 - .../generated/datacube_filter__lexer.ts | 142 -- .../generated/datacube_filter__parser.interp | 38 - .../generated/datacube_filter__parser.tokens | 14 - .../generated/datacube_filter__parser.ts | 514 ------ .../grammar/parser/parser.ts | 55 - packages/legend-application-repl/package.json | 37 +- .../src/__lib__/LegendREPLEvent.ts | 2 +- .../src/__lib__/LegendREPLSetting.ts | 2 +- .../src/application/LegendREPL.tsx | 4 +- .../application/LegendREPLDocumentation.ts | 21 + .../Core_LegendREPLApplicationPlugin.tsx | 4 +- .../src/components/LegendREPLApplication.tsx | 2 + .../LegendREPLFrameworkProvider.tsx | 6 +- .../src/components/REPLStoreProvider.tsx | 42 +- .../src/components/REPLWindow.tsx | 179 -- .../src/components/dataCube/DataCube.tsx | 95 +- .../dataCube/editor/DataCubeEditor.tsx | 187 +- .../editor/DataCubeEditorCodePanel.tsx | 24 +- .../DataCubeEditorColumnPropertiesPanel.tsx | 227 ++- .../editor/DataCubeEditorColumnsPanel.tsx | 8 +- .../editor/DataCubeEditorDeveloperPanel.tsx | 43 - .../DataCubeEditorExtendedColumnsPanel.tsx | 8 +- .../editor/DataCubeEditorFilterPanel.tsx | 8 +- .../DataCubeEditorGeneralPropertiesPanel.tsx | 164 +- .../DataCubeEditorHorizontalPivotsPanel.tsx | 8 +- .../editor/DataCubeEditorSortsPanel.tsx | 10 +- .../DataCubeEditorVerticalPivotsPanel.tsx | 4 +- .../components/dataCube/grid/DataCubeGrid.tsx | 98 +- .../dataCube/grid/DataCubeGridShared.tsx | 4 +- .../src/components/repl/Alert.tsx | 138 ++ .../components/repl/DocumentationPanel.tsx | 88 + .../Form.tsx} | 24 +- .../src/components/repl/LayoutManager.tsx | 190 +++ .../src/components/repl/SettingsPanel.tsx | 148 ++ .../src/server/{models => }/DataCubeQuery.ts | 6 +- .../DataCubeEngineModels.ts => REPLEngine.ts} | 13 + .../src/server/REPLServerClient.ts | 7 +- .../src/stores/LayoutManagerState.ts | 168 ++ .../src/stores/LegendREPLApplicationPlugin.ts | 9 + .../src/stores/LegendREPLBaseStore.ts | 8 +- .../src/stores/REPLStore.ts | 48 - .../src/stores/REPLStore.tsx | 145 ++ ...ubeInfrastructure.ts => DataCubeEngine.ts} | 112 +- .../src/stores/dataCube/DataCubeState.ts | 23 +- .../stores/dataCube/core/DataCubeCoreState.ts | 2 +- .../dataCube/core/DataCubeQueryEngine.ts | 5 +- .../core/DataCubeQuerySnapshotBuilder.ts | 2 +- .../core/DataCubeQuerySnapshotManager.ts | 2 +- .../core/DataCubeQuerySnapshotSubscriber.ts | 10 + .../DataCubeQuerySnapshotBuilder.repl-test.ts | 2 +- .../editor/DataCubeEditorCodePanelState.ts | 2 +- ...EditorState.ts => DataCubeEditorState.tsx} | 36 +- .../dataCube/grid/DataCubeGridClientEngine.ts | 35 +- .../grid/DataCubeGridClientExportEngine.ts | 5 +- .../grid/DataCubeGridConfigurationBuilder.tsx | 20 +- .../dataCube/grid/DataCubeGridMenuBuilder.tsx | 8 +- .../grid/DataCubeGridQuerySnapshotBuilder.ts | 3 - .../stores/dataCube/grid/DataCubeGridState.ts | 12 +- .../tsconfig.build.json | 1 - .../tsconfig.grammar.json | 16 - .../legend-application-repl/tsconfig.json | 1 - .../package.json | 2 +- .../package.json | 2 +- .../legend-application-studio/package.json | 6 +- .../editor/editor-group/EditorGroup.tsx | 8 +- .../testable/FunctionTestableEditor.tsx | 2 +- .../EnumerationMappingEditor.tsx | 2 +- .../testable/ServiceTestsEditor.tsx | 2 +- .../src/stores/editor/EditorStore.ts | 18 +- .../src/stores/editor/ExplorerTreeState.ts | 4 +- packages/legend-application/package.json | 4 +- .../src/__lib__/LegendApplicationEvent.ts | 4 +- .../src/components/NotificationManager.tsx | 2 +- .../src/stores/AlertService.ts | 1 + .../src/stores/ApplicationStore.ts | 23 +- .../src/stores/NotificationService.ts | 8 +- .../src/stores/storage/StorageService.ts | 4 +- packages/legend-art/package.json | 10 +- packages/legend-art/src/icon/DataCubeIcon.tsx | 8 + packages/legend-dev-utils/package.json | 4 +- .../legend-extension-assortment/package.json | 4 +- .../package.json | 4 +- .../src/components/DataQualitySideBar.tsx | 2 +- .../package.json | 4 +- .../package.json | 4 +- .../legend-extension-dsl-diagram/package.json | 6 +- .../package.json | 4 +- .../legend-extension-dsl-service/package.json | 4 +- .../legend-extension-dsl-text/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- packages/legend-graph/package.json | 2 +- ...ernalFormat_PureProtocolProcessorPlugin.ts | 4 +- .../mapping/V1_EnumerationMapping.ts | 4 +- .../from/V1_DSL_ExternalFormat_Transformer.ts | 4 +- .../pureGraph/from/V1_DatabaseTransformer.ts | 4 +- .../V1_GenerationSpecificationTransformer.ts | 2 +- .../pureGraph/from/V1_MappingTransformer.ts | 10 +- .../helpers/V1_FileGenerationBuilderHelper.ts | 2 +- .../FileGenerationSpecification.ts | 2 +- .../mapping/EnumValueMapping.ts | 2 +- .../mapping/EnumerationMapping.ts | 2 +- packages/legend-lego/package.json | 36 +- .../src/code-editor/CodeEditor.tsx | 2 +- packages/legend-manual-tests/package.json | 2 +- packages/legend-query-builder/package.json | 8 +- .../src/components/QueryBuilderSideBar.tsx | 2 +- .../src/components/QueryLoader.tsx | 4 +- .../components/shared/CustomDatePicker.tsx | 2 +- .../explorer/QueryBuilderExplorerState.ts | 2 +- packages/legend-server-sdlc/package.json | 2 +- .../package.json | 2 +- packages/legend-server-showcase/package.json | 2 +- packages/legend-shared/package.json | 4 +- .../legend-shared/src/network/NetworkUtils.ts | 10 +- .../package.json | 4 +- scripts/copyright/copyright.config.js | 4 +- scripts/github-bot/package.json | 2 +- .../workflow/checkProjectReferenceConfigs.js | 10 +- yarn.lock | 1520 ++++++++--------- 146 files changed, 3089 insertions(+), 2791 deletions(-) create mode 100644 .changeset/great-clouds-hope.md create mode 100644 .changeset/heavy-wolves-leave.md create mode 100644 .changeset/quiet-cars-enjoy.md create mode 100644 packages/legend-application-repl-deployment/documentation.json create mode 100644 packages/legend-application-repl-deployment/src/markdown-viewer.css delete mode 100644 packages/legend-application-repl/grammar/datacube_filter__lexer.g4 delete mode 100644 packages/legend-application-repl/grammar/datacube_filter__parser.g4 delete mode 100644 packages/legend-application-repl/grammar/generateGrammar.js delete mode 100644 packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.interp delete mode 100644 packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.tokens delete mode 100644 packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.ts delete mode 100644 packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.interp delete mode 100644 packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.tokens delete mode 100644 packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.ts delete mode 100644 packages/legend-application-repl/grammar/parser/parser.ts create mode 100644 packages/legend-application-repl/src/application/LegendREPLDocumentation.ts delete mode 100644 packages/legend-application-repl/src/components/REPLWindow.tsx delete mode 100644 packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorDeveloperPanel.tsx create mode 100644 packages/legend-application-repl/src/components/repl/Alert.tsx create mode 100644 packages/legend-application-repl/src/components/repl/DocumentationPanel.tsx rename packages/legend-application-repl/src/components/{dataCube/editor/DataCubeEditorShared.tsx => repl/Form.tsx} (95%) create mode 100644 packages/legend-application-repl/src/components/repl/LayoutManager.tsx create mode 100644 packages/legend-application-repl/src/components/repl/SettingsPanel.tsx rename packages/legend-application-repl/src/server/{models => }/DataCubeQuery.ts (95%) rename packages/legend-application-repl/src/server/{models/DataCubeEngineModels.ts => REPLEngine.ts} (89%) create mode 100644 packages/legend-application-repl/src/stores/LayoutManagerState.ts delete mode 100644 packages/legend-application-repl/src/stores/REPLStore.ts create mode 100644 packages/legend-application-repl/src/stores/REPLStore.tsx rename packages/legend-application-repl/src/stores/dataCube/{DataCubeInfrastructure.ts => DataCubeEngine.ts} (58%) rename packages/legend-application-repl/src/stores/dataCube/editor/{DataCubeEditorState.ts => DataCubeEditorState.tsx} (87%) delete mode 100644 packages/legend-application-repl/tsconfig.grammar.json diff --git a/.changeset/great-clouds-hope.md b/.changeset/great-clouds-hope.md new file mode 100644 index 0000000000..44434252c3 --- /dev/null +++ b/.changeset/great-clouds-hope.md @@ -0,0 +1,3 @@ +--- +'@finos/legend-application-repl': patch +--- diff --git a/.changeset/heavy-wolves-leave.md b/.changeset/heavy-wolves-leave.md new file mode 100644 index 0000000000..70423610a7 --- /dev/null +++ b/.changeset/heavy-wolves-leave.md @@ -0,0 +1,35 @@ +--- +'@finos/legend-application-pure-ide-deployment': patch +'@finos/legend-extension-dsl-data-space-studio': patch +'@finos/legend-application-studio-deployment': patch +'@finos/legend-extension-store-service-store': patch +'@finos/legend-vscode-extension-dependencies': patch +'@finos/legend-application-query-deployment': patch +'@finos/legend-application-studio-bootstrap': patch +'@finos/legend-application-query-bootstrap': patch +'@finos/legend-application-repl-deployment': patch +'@finos/legend-extension-dsl-data-quality': patch +'@finos/legend-extension-store-relational': patch +'@finos/legend-server-showcase-deployment': patch +'@finos/legend-extension-dsl-persistence': patch +'@finos/legend-extension-store-flat-data': patch +'@finos/legend-extension-dsl-data-space': patch +'@finos/legend-extension-dsl-diagram': patch +'@finos/legend-extension-dsl-service': patch +'@finos/legend-application-pure-ide': patch +'@finos/legend-extension-assortment': patch +'@finos/legend-application-studio': patch +'@finos/legend-extension-dsl-text': patch +'@finos/legend-application-query': patch +'@finos/legend-application-repl': patch +'@finos/legend-server-showcase': patch +'@finos/legend-query-builder': patch +'@finos/legend-application': patch +'@finos/legend-server-sdlc': patch +'@finos/legend-dev-utils': patch +'@finos/eslint-plugin-legend-studio': patch +'@finos/legend-shared': patch +'@finos/legend-graph': patch +'@finos/legend-lego': patch +'@finos/legend-art': patch +--- diff --git a/.changeset/quiet-cars-enjoy.md b/.changeset/quiet-cars-enjoy.md new file mode 100644 index 0000000000..70423610a7 --- /dev/null +++ b/.changeset/quiet-cars-enjoy.md @@ -0,0 +1,35 @@ +--- +'@finos/legend-application-pure-ide-deployment': patch +'@finos/legend-extension-dsl-data-space-studio': patch +'@finos/legend-application-studio-deployment': patch +'@finos/legend-extension-store-service-store': patch +'@finos/legend-vscode-extension-dependencies': patch +'@finos/legend-application-query-deployment': patch +'@finos/legend-application-studio-bootstrap': patch +'@finos/legend-application-query-bootstrap': patch +'@finos/legend-application-repl-deployment': patch +'@finos/legend-extension-dsl-data-quality': patch +'@finos/legend-extension-store-relational': patch +'@finos/legend-server-showcase-deployment': patch +'@finos/legend-extension-dsl-persistence': patch +'@finos/legend-extension-store-flat-data': patch +'@finos/legend-extension-dsl-data-space': patch +'@finos/legend-extension-dsl-diagram': patch +'@finos/legend-extension-dsl-service': patch +'@finos/legend-application-pure-ide': patch +'@finos/legend-extension-assortment': patch +'@finos/legend-application-studio': patch +'@finos/legend-extension-dsl-text': patch +'@finos/legend-application-query': patch +'@finos/legend-application-repl': patch +'@finos/legend-server-showcase': patch +'@finos/legend-query-builder': patch +'@finos/legend-application': patch +'@finos/legend-server-sdlc': patch +'@finos/legend-dev-utils': patch +'@finos/eslint-plugin-legend-studio': patch +'@finos/legend-shared': patch +'@finos/legend-graph': patch +'@finos/legend-lego': patch +'@finos/legend-art': patch +--- diff --git a/.eslintignore b/.eslintignore index 3af4a602af..d093599009 100644 --- a/.eslintignore +++ b/.eslintignore @@ -17,5 +17,4 @@ .pnp.* # Exceptions -/packages/legend-application-repl/grammar/parser/* /packages/legend-dev-utils/__tests__/fixtures/src/dummy.ts diff --git a/.gitattributes b/.gitattributes index 9603793a21..0d900115aa 100644 --- a/.gitattributes +++ b/.gitattributes @@ -21,7 +21,6 @@ # Mark generated content /.changeset linguist-generated -**/grammar/parser/generated/** linguist-generated # Read more about Github blob languages detector `github/linguist` # https://github.com/github/linguist/blob/master/docs/overrides.md diff --git a/.gitignore b/.gitignore index c7499c74ba..46cecbd82c 100644 --- a/.gitignore +++ b/.gitignore @@ -18,7 +18,6 @@ Thumbs.db npm-debug.log npm-debug.log* yarn-error.log* -**/.antlr /build/ /packages/*/build/ /packages/*/dist/ diff --git a/.prettierignore b/.prettierignore index 8b78f7ec90..022c0d7c12 100644 --- a/.prettierignore +++ b/.prettierignore @@ -14,7 +14,6 @@ .pnp.* # Exceptions -/packages/legend-application-repl/grammar/parser/generated/* /packages/legend-dev-utils/__tests__/fixtures/testTsConfigWithTrailingCommas.json # Template config JSON with variable ($) diff --git a/package.json b/package.json index b52813be41..8776412772 100644 --- a/package.json +++ b/package.json @@ -94,32 +94,32 @@ "devDependencies": { "@actions/core": "1.10.1", "@actions/github": "6.0.0", - "@babel/core": "7.24.8", + "@babel/core": "7.24.9", "@changesets/cli": "2.27.7", "@finos/babel-preset-legend-studio": "workspace:*", "@finos/eslint-plugin-legend-studio": "workspace:*", "@finos/legend-dev-utils": "workspace:*", "@finos/stylelint-config-legend-studio": "workspace:*", - "@types/node": "20.14.10", + "@types/node": "20.14.11", "chalk": "5.3.0", "cross-env": "7.0.3", "envinfo": "7.13.0", "eslint": "8.57.0", "fs-extra": "11.2.0", - "husky": "9.0.11", - "inquirer": "10.0.1", + "husky": "9.1.1", + "inquirer": "10.1.0", "jest": "29.7.0", "lint-staged": "15.2.7", "micromatch": "4.0.7", "npm-run-all": "4.1.5", - "prettier": "3.3.2", + "prettier": "3.3.3", "prettier-plugin-tailwindcss": "0.6.5", "rimraf": "6.0.1", - "sass": "1.77.7", - "semver": "7.6.2", + "sass": "1.77.8", + "semver": "7.6.3", "sort-package-json": "2.10.0", - "stylelint": "16.6.1", - "typedoc": "0.26.4", + "stylelint": "16.7.0", + "typedoc": "0.26.5", "typescript": "5.5.3", "yargs": "17.7.2" }, diff --git a/packages/eslint-plugin/package.json b/packages/eslint-plugin/package.json index fae5ab0a82..6522705839 100644 --- a/packages/eslint-plugin/package.json +++ b/packages/eslint-plugin/package.json @@ -30,17 +30,17 @@ "publish:snapshot": "node ../../scripts/release/publishDevSnapshot.js" }, "dependencies": { - "@babel/core": "7.24.8", + "@babel/core": "7.24.9", "@babel/eslint-parser": "7.24.8", - "@typescript-eslint/eslint-plugin": "7.16.0", - "@typescript-eslint/parser": "7.16.0", + "@typescript-eslint/eslint-plugin": "7.16.1", + "@typescript-eslint/parser": "7.16.1", "eslint-config-prettier": "9.1.0", "eslint-plugin-import": "2.29.1", - "eslint-plugin-prettier": "5.1.3", - "eslint-plugin-react": "7.34.3", + "eslint-plugin-prettier": "5.2.1", + "eslint-plugin-react": "7.35.0", "eslint-plugin-react-hooks": "4.6.2", "micromatch": "4.0.7", - "prettier": "3.3.2" + "prettier": "3.3.3" }, "devDependencies": { "cross-env": "7.0.3", diff --git a/packages/legend-application-pure-ide-deployment/package.json b/packages/legend-application-pure-ide-deployment/package.json index 5558fa9fa3..d5c0f31dc1 100644 --- a/packages/legend-application-pure-ide-deployment/package.json +++ b/packages/legend-application-pure-ide-deployment/package.json @@ -51,7 +51,7 @@ "npm-run-all": "4.1.5", "rimraf": "6.0.1", "typescript": "5.5.3", - "webpack": "5.92.1", + "webpack": "5.93.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4" diff --git a/packages/legend-application-pure-ide/package.json b/packages/legend-application-pure-ide/package.json index f4e04ef264..84bfbb1ffc 100644 --- a/packages/legend-application-pure-ide/package.json +++ b/packages/legend-application-pure-ide/package.json @@ -51,7 +51,7 @@ "@finos/legend-shared": "workspace:*", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "monaco-editor": "0.50.0", "react": "18.3.1", @@ -67,7 +67,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-application-query-bootstrap/package.json b/packages/legend-application-query-bootstrap/package.json index 6e5adcb0c8..86ddb65094 100644 --- a/packages/legend-application-query-bootstrap/package.json +++ b/packages/legend-application-query-bootstrap/package.json @@ -67,7 +67,7 @@ "eslint": "8.57.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "publishConfig": { diff --git a/packages/legend-application-query-deployment/package.json b/packages/legend-application-query-deployment/package.json index 120a859209..c92c5e34d1 100644 --- a/packages/legend-application-query-deployment/package.json +++ b/packages/legend-application-query-deployment/package.json @@ -44,7 +44,7 @@ "npm-run-all": "4.1.5", "rimraf": "6.0.1", "typescript": "5.5.3", - "webpack": "5.92.1", + "webpack": "5.93.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4" diff --git a/packages/legend-application-query/package.json b/packages/legend-application-query/package.json index cc0f016ffe..1e43343731 100644 --- a/packages/legend-application-query/package.json +++ b/packages/legend-application-query/package.json @@ -52,11 +52,11 @@ "@finos/legend-server-depot": "workspace:*", "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", - "@testing-library/dom": "10.3.1", + "@testing-library/dom": "10.3.2", "@testing-library/react": "16.0.0", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-dom": "18.3.1", @@ -70,7 +70,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-application-repl-deployment/documentation.json b/packages/legend-application-repl-deployment/documentation.json new file mode 100644 index 0000000000..2d9cf9fb0f --- /dev/null +++ b/packages/legend-application-repl-deployment/documentation.json @@ -0,0 +1,22 @@ +{ + "entries": { + "data-cube.extended-column.levels": { + "markdownText": { + "value": "# Leaf Level\nThe value in the extended column is computed at the lowest (most granular) level.\n\n# Group Level\nThe value in the extended column is computed for each row in the table, no matter whether it's a leaf-level row or an aggregate.\n\n> This is used for operating on aggregated values, e.g., computing a yield (total credits / total volume) or a percentage change. A group-level extended column does not support grouping (pivoting), because it is computed _after_ those operations have been applied. Values are not aggregated; instead, the value on an aggregate row is computed from other aggregate values on the row." + }, + "title": "Extended Column Levels" + }, + "data-cube.column.kinds": { + "markdownText": { + "value": "# Dimensions\nDescriptions that help group and filter data. Typically associated with string columns where each value represents a category.\n\n# Measures\nNumeric values that detail or aggregate dimensions. Typically associated with numeric columns." + }, + "title": "Column Kinds" + }, + "data-cube.column.display-as-link": { + "markdownText": { + "value": "Each value, if it is a valid URL, will be displayed as a hyperlink. The label of the hyperlink will be extracted from a configurable query parameter (`dataCube.linkLabel` by default), if no label value can be extracted, the whole link will be used as the label." + }, + "title": "Display Column Value as Link" + } + } +} diff --git a/packages/legend-application-repl-deployment/package.json b/packages/legend-application-repl-deployment/package.json index 42a49af22b..5241923379 100644 --- a/packages/legend-application-repl-deployment/package.json +++ b/packages/legend-application-repl-deployment/package.json @@ -51,9 +51,9 @@ "eslint": "8.57.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "tailwindcss": "3.4.4", + "tailwindcss": "3.4.6", "typescript": "5.5.3", - "webpack": "5.92.1", + "webpack": "5.93.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4" diff --git a/packages/legend-application-repl-deployment/scripts/setup.js b/packages/legend-application-repl-deployment/scripts/setup.js index a1e8e7f8c1..bbae2921c4 100644 --- a/packages/legend-application-repl-deployment/scripts/setup.js +++ b/packages/legend-application-repl-deployment/scripts/setup.js @@ -19,6 +19,7 @@ import { hideBin } from 'yargs/helpers'; import { resolve, dirname } from 'path'; import { fileURLToPath } from 'url'; import { existsSync, mkdirSync, writeFileSync } from 'fs'; +import { loadJSON } from '@finos/legend-dev-utils/DevUtils'; const __dirname = dirname(fileURLToPath(import.meta.url)); @@ -55,6 +56,7 @@ const setup = (outputDir) => { documentation: { url: 'https://legend.finos.org', registry: [], + ...loadJSON(resolve(__dirname, '../documentation.json')), }, }, undefined, diff --git a/packages/legend-application-repl-deployment/src/index.css b/packages/legend-application-repl-deployment/src/index.css index 620b1dad44..e7aa959419 100644 --- a/packages/legend-application-repl-deployment/src/index.css +++ b/packages/legend-application-repl-deployment/src/index.css @@ -15,6 +15,7 @@ */ @import url('@finos/legend-art/lib/fonts.css'); +@import url('./markdown-viewer.css'); @import url('@finos/legend-application/lib/index.css'); /* @import url('@finos/legend-lego/lib/index.css'); */ diff --git a/packages/legend-application-repl-deployment/src/markdown-viewer.css b/packages/legend-application-repl-deployment/src/markdown-viewer.css new file mode 100644 index 0000000000..cf658fd197 --- /dev/null +++ b/packages/legend-application-repl-deployment/src/markdown-viewer.css @@ -0,0 +1,499 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +.markdown-content { + margin: 0; + word-wrap: break-word; + width: 100%; +} + +/* +.markdown-content--page { + padding: 4rem; +} + +.markdown-content details, +.markdown-content figcaption, +.markdown-content figure { + display: block; +} + +.markdown-content summary { + display: list-item; +} */ + +.markdown-content [hidden] { + display: none !important; +} + +.markdown-content a { + background: transparent; + color: var(--tw-color-sky-500); + text-decoration: none; +} + +.markdown-content a:active, +.markdown-content a:hover { + outline-width: 0; +} + +.markdown-content abbr[title] { + border-bottom: none; + text-decoration: underline dotted; +} + +.markdown-content b, +.markdown-content strong { + font-weight: 700; +} + +.markdown-content dfn { + font-style: italic; +} + +.markdown-content h1 { + margin: 20px 0 10px; + font-weight: 700; + padding-bottom: 2px; + font-size: 16px; + border-bottom: 1px solid var(--tw-color-neutral-200); +} + +/* +.markdown-content mark { + background: var(--color-dark-grey-280); +} + +.markdown-content small { + font-size: 1.2rem; +} + +.markdown-content sub, +.markdown-content sup { + font-size: 1rem; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +.markdown-content sub { + bottom: -0.25rem; +} + +.markdown-content sup { + top: -0.5rem; +} + +.markdown-content img { + border-style: none; + max-width: 100%; + box-sizing: content-box; + background: var(--color-dark-grey-50); +} */ + +.markdown-content code, +.markdown-content pre, +.markdown-content samp { + font-family: 'Roboto Mono', monospace; + font-size: 10px; +} + +/* +.markdown-content figure { + margin: 1rem 4rem; +} + +.markdown-content hr { + box-sizing: content-box; + overflow: hidden; + border-bottom: 0.1rem solid var(--color-dark-grey-250); + height: 0.25rem; + padding: 0; + margin: 2.4rem 0; + background: var(--color-dark-grey-50); + border: 0; +} + +.markdown-content input { + font: inherit; + margin: 0; + overflow: visible; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +.markdown-content a:hover { + text-decoration: underline; +} + +.markdown-content hr::before { + display: table; + content: ''; +} + +.markdown-content hr::after { + display: table; + clear: both; + content: ''; +} + +.markdown-content table { + border-spacing: 0; + border-collapse: collapse; + display: block; + width: max-content; + max-width: 100%; + overflow: auto; +} + +.markdown-content td, +.markdown-content th { + padding: 0; +} + +.markdown-content details summary { + cursor: pointer; +} + +.markdown-content details:not([open]) > *:not(summary) { + display: none !important; +} + +.markdown-content h1, +.markdown-content h2, +.markdown-content h3, +.markdown-content h4, +.markdown-content h5, +.markdown-content h6 { + margin-top: 2.4rem; + margin-bottom: 1.6rem; + font-weight: 700; + line-height: 1.25; +} + +.markdown-content h2 { + font-weight: 700; + padding-bottom: 0.3rem; + font-size: 1.5rem; + border-bottom: 0.1rem solid var(--color-dark-grey-250); +} + +.markdown-content h3 { + font-weight: 700; + font-size: 1.4rem; +} + +.markdown-content h4 { + font-weight: 700; + font-size: 1.4rem; +} + +.markdown-content h5 { + font-weight: 700; + font-size: 1.2rem; +} + +.markdown-content h6 { + font-weight: 700; + font-size: 1.2rem; +} + +.markdown-content p { + margin-top: 0; + margin-bottom: 1rem; +} + +.markdown-content blockquote { + margin: 0; + padding: 0 1rem; + color: var(--color-dark-grey-500); + border-left: 0.3rem solid var(--color-dark-grey-350); +} + +.markdown-content ul, +.markdown-content ol { + margin-top: 0; + margin-bottom: 0; + padding-left: 2rem; + list-style: disc; +} + +.markdown-content ol ol, +.markdown-content ul ol { + list-style-type: lower-roman; +} + +.markdown-content ul ul ol, +.markdown-content ul ol ol, +.markdown-content ol ul ol, +.markdown-content ol ol ol { + list-style-type: lower-alpha; +} + +.markdown-content ul.contains-task-list, +.markdown-content ol.contains-task-list { + list-style: none; +} + +.markdown-content ul.contains-task-list li:not(.task-list-item) { + list-style: disc; +} + +.markdown-content .task-list-item { + list-style-type: none; +} + +.markdown-content .task-list-item label { + font-weight: 400; +} + +.markdown-content .task-list-item.enabled label { + cursor: pointer; +} + +.markdown-content .task-list-item + .task-list-item { + margin-top: 0.3rem; +} + +.markdown-content .task-list-item .handle { + display: none; +} + +.markdown-content .task-list-item-checkbox { + margin: 0 0.2em 0.25em -1.6em; + vertical-align: middle; +} + +.markdown-content .contains-task-list:dir(rtl) .task-list-item-checkbox { + margin: 0 -1.6em 0.25em 0.2em; +} + +.markdown-content ul.contains-task-list li.task-list-item > input { + margin-left: -1.6rem; +} + +.markdown-content ::placeholder { + opacity: 1; +} + +.markdown-content [data-catalyst] { + display: block; +} + +.markdown-content::before { + display: table; + content: ''; +} + +.markdown-content::after { + display: table; + clear: both; + content: ''; +} + +.markdown-content > *:first-child { + margin-top: 0 !important; +} + +.markdown-content > *:last-child { + margin-bottom: 0 !important; +} + +.markdown-content a:not([href]) { + color: inherit; + text-decoration: none; +} + +.markdown-content p, +.markdown-content blockquote, +.markdown-content ul, +.markdown-content ol, +.markdown-content dl, +.markdown-content table, +.markdown-content pre, +.markdown-content details { + margin-top: 0; + margin-bottom: 1.6rem; +} + +.markdown-content blockquote > :first-child { + margin-top: 0; +} + +.markdown-content blockquote > :last-child { + margin-bottom: 0; +} + +.markdown-content sup > a::before { + content: '['; +} + +.markdown-content sup > a::after { + content: ']'; +} + +.markdown-content h1:hover .anchor, +.markdown-content h2:hover .anchor, +.markdown-content h3:hover .anchor, +.markdown-content h4:hover .anchor, +.markdown-content h5:hover .anchor, +.markdown-content h6:hover .anchor { + text-decoration: none; +} + +.markdown-content h1 code, +.markdown-content h2 code, +.markdown-content h3 code, +.markdown-content h4 code, +.markdown-content h5 code, +.markdown-content h6 code { + padding: 0 0.2rem; + font-size: inherit; +} + +.markdown-content ul.no-list, +.markdown-content ol.no-list { + padding: 0; + list-style-type: none; +} + +.markdown-content ol[type='1'] { + list-style-type: decimal; +} + +.markdown-content ol[type='a'] { + list-style-type: lower-alpha; +} + +.markdown-content ol[type='i'] { + list-style-type: lower-roman; +} + +.markdown-content div > ol:not([type]) { + list-style-type: decimal; +} + +.markdown-content ul ul, +.markdown-content ul ol, +.markdown-content ol ol, +.markdown-content ol ul { + margin-top: 0; + margin-bottom: 0; +} + +.markdown-content dd { + margin-left: 0; +} + +.markdown-content li > p { + margin-top: 1.6rem; +} + +.markdown-content li + li { + margin-top: 0.25rem; +} + +.markdown-content dl { + padding: 0; +} + +.markdown-content dl dt { + padding: 0; + margin-top: 1.6rem; + font-size: 1rem; + font-style: italic; + font-weight: 700; +} + +.markdown-content dl dd { + padding: 0 1.6rem; + margin-bottom: 1.6rem; +} + +.markdown-content table th { + font-weight: 700; +} + +.markdown-content table th, +.markdown-content table td { + padding: 0.6rem 1.3rem; + border: 0.1rem solid var(--color-dark-grey-350); +} + +.markdown-content table img { + background: transparent; +} + +.markdown-content img[align='right'] { + padding-left: 2rem; +} + +.markdown-content img[align='left'] { + padding-right: 2rem; +} +*/ + +.markdown-content code { + font-family: 'Roboto Mono', monospace; + padding: 2px 4px; + margin: 0; + font-size: 12px; + background: var(--tw-color-neutral-200); + border-radius: 2px; +} + +.markdown-content code br { + display: none; +} + +.markdown-content del code { + text-decoration: inherit; +} + +.markdown-content pre > code { + padding: 0; + margin: 0; + word-break: normal; + white-space: pre; + background: transparent; + border: 0; +} + +.markdown-content pre { + margin-top: 0; + margin-bottom: 0; + font-family: 'Roboto Mono', monospace; + word-wrap: normal; + overflow: auto; + font-size: 12px; + line-height: 1.45; + background: var(--tw-color-neutral-100); + border-radius: 2px; +} + +.markdown-content pre code { + display: inline; + max-width: auto; + padding: 0; + margin: 0; + overflow: visible; + line-height: inherit; + word-wrap: normal; + background: transparent; + border: 0; + font-size: 12px; +} diff --git a/packages/legend-application-repl/_package.config.js b/packages/legend-application-repl/_package.config.js index 58b071f4ee..52611ad50b 100644 --- a/packages/legend-application-repl/_package.config.js +++ b/packages/legend-application-repl/_package.config.js @@ -18,7 +18,7 @@ export default { publish: { typescript: { main: './tsconfig.publish.json', - others: ['./tsconfig.package.json', './tsconfig.grammar.json'], + others: ['./tsconfig.package.json'], }, }, }; diff --git a/packages/legend-application-repl/grammar/datacube_filter__lexer.g4 b/packages/legend-application-repl/grammar/datacube_filter__lexer.g4 deleted file mode 100644 index 09e0d8c1ab..0000000000 --- a/packages/legend-application-repl/grammar/datacube_filter__lexer.g4 +++ /dev/null @@ -1,40 +0,0 @@ -lexer grammar datacube_filter__lexer; - -fragment Whitespace: [ \r\t\n]+; -fragment Identifier: Letter (Letter | Digit | ' ')* (Letter | Digit); -fragment Letter: [A-Za-z]; -fragment Digit: [0-9]; -fragment HexDigit: [0-9a-fA-F]; -fragment UnicodeEsc: - 'u' (HexDigit (HexDigit (HexDigit HexDigit?)?)?)?; -fragment Esc: '\\'; -fragment StringEscSeq: - Esc ( - [btnfr"'\\] // The standard escaped character set such as tab, newline, etc. - | UnicodeEsc // A Unicode escape sequence - | . // Invalid escape character - | EOF // Incomplete at EOF - ); -fragment String: ('"' ( StringEscSeq | ~["\r\n\\])* '"'); -fragment Number: ((Digit)* '.' (Digit)+ | (Digit)+) ( - ('e' | 'E') ('+' | '-')? (Digit)+ - )?; -fragment ColumnEscSeq: - Esc ( - [btnfr[\]\\] // The standard escaped character set such as tab, newline, etc. - | UnicodeEsc // A Unicode escape sequence - | . // Invalid escape character - | EOF // Incomplete at EOF - ); -fragment Column: ('[' ( StringEscSeq | ~[[\]\r\n\\])* ']'); - -OPERATOR: '==' | '!=' | '<>' | '>' | '<' | '>=' | '<='; -GROUP_OPERATOR_AND: '&&'; -GROUP_OPERATOR_OR: '||'; -GROUP_OPEN: '('; -GROUP_CLOSE: ')'; -NUMBER: Number; -STRING: String; -COLUMN: Column; -IDENTIFIER: Identifier; -WHITESPACE: [ \t\r\n]+ -> skip; diff --git a/packages/legend-application-repl/grammar/datacube_filter__parser.g4 b/packages/legend-application-repl/grammar/datacube_filter__parser.g4 deleted file mode 100644 index 7dc7f748b3..0000000000 --- a/packages/legend-application-repl/grammar/datacube_filter__parser.g4 +++ /dev/null @@ -1,14 +0,0 @@ -parser grammar datacube_filter__parser; -options { - tokenVocab = datacube_filter__lexer; -} - -filter: (groupCondition | group) EOF; -condition: column (OPERATOR | IDENTIFIER) (value)?; -column: COLUMN; -value: STRING | NUMBER; -group: GROUP_OPEN groupCondition GROUP_CLOSE; -groupOperator: GROUP_OPERATOR_AND | GROUP_OPERATOR_OR; -groupCondition: (condition | group) ( - groupOperator (condition | group) - )*; diff --git a/packages/legend-application-repl/grammar/generateGrammar.js b/packages/legend-application-repl/grammar/generateGrammar.js deleted file mode 100644 index cb40b64bc8..0000000000 --- a/packages/legend-application-repl/grammar/generateGrammar.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright (c) 2020-present, Goldman Sachs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { execSync } from 'child_process'; -import { dirname, resolve } from 'path'; -import { fileURLToPath } from 'url'; -import { rimrafSync } from 'rimraf'; -import { mkdirSync } from 'fs'; - -const __dirname = dirname(fileURLToPath(import.meta.url)); - -const ANTLR_VERSION = '4.13.1'; - -// Download the ANTLR jar to generate grammars -// See https://github.com/antlr/antlr4/blob/master/doc/getting-started.md#unix -execSync( - `curl -o build/antlr.jar https://www.antlr.org/download/antlr-${ANTLR_VERSION}-complete.jar`, -); - -// Flush the content of the current generated content directory -rimrafSync(resolve(__dirname, 'parser/generated')); -mkdirSync(resolve(__dirname, 'parser/generated')); - -// ANTLR generation targeting Typescript -// See https://github.com/antlr/antlr4/blob/master/doc/typescript-target.md -['datacube_filter__lexer.g4', 'datacube_filter__parser.g4'].forEach((file) => { - execSync( - `java -jar ${resolve(__dirname, '../build/antlr.jar')} -Dlanguage=TypeScript -no-listener ${resolve(__dirname, file)} -o ${resolve(__dirname, 'parser/generated')}`, - ); -}); diff --git a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.interp b/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.interp deleted file mode 100644 index 06d7c2760b..0000000000 --- a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.interp +++ /dev/null @@ -1,59 +0,0 @@ -token literal names: -null -null -'&&' -'||' -'(' -')' -null -null -null -null -null - -token symbolic names: -null -OPERATOR -GROUP_OPERATOR_AND -GROUP_OPERATOR_OR -GROUP_OPEN -GROUP_CLOSE -NUMBER -STRING -COLUMN -IDENTIFIER -WHITESPACE - -rule names: -Whitespace -Identifier -Letter -Digit -HexDigit -UnicodeEsc -Esc -StringEscSeq -String -Number -ColumnEscSeq -Column -OPERATOR -GROUP_OPERATOR_AND -GROUP_OPERATOR_OR -GROUP_OPEN -GROUP_CLOSE -NUMBER -STRING -COLUMN -IDENTIFIER -WHITESPACE - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[4, 0, 10, 186, 6, -1, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 2, 7, 7, 7, 2, 8, 7, 8, 2, 9, 7, 9, 2, 10, 7, 10, 2, 11, 7, 11, 2, 12, 7, 12, 2, 13, 7, 13, 2, 14, 7, 14, 2, 15, 7, 15, 2, 16, 7, 16, 2, 17, 7, 17, 2, 18, 7, 18, 2, 19, 7, 19, 2, 20, 7, 20, 2, 21, 7, 21, 1, 0, 4, 0, 47, 8, 0, 11, 0, 12, 0, 48, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 55, 8, 1, 10, 1, 12, 1, 58, 9, 1, 1, 1, 1, 1, 3, 1, 62, 8, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 5, 1, 5, 1, 5, 1, 5, 1, 5, 3, 5, 75, 8, 5, 3, 5, 77, 8, 5, 3, 5, 79, 8, 5, 3, 5, 81, 8, 5, 1, 6, 1, 6, 1, 7, 1, 7, 1, 7, 1, 7, 1, 7, 3, 7, 90, 8, 7, 1, 8, 1, 8, 1, 8, 5, 8, 95, 8, 8, 10, 8, 12, 8, 98, 9, 8, 1, 8, 1, 8, 1, 9, 5, 9, 103, 8, 9, 10, 9, 12, 9, 106, 9, 9, 1, 9, 1, 9, 4, 9, 110, 8, 9, 11, 9, 12, 9, 111, 1, 9, 4, 9, 115, 8, 9, 11, 9, 12, 9, 116, 3, 9, 119, 8, 9, 1, 9, 1, 9, 3, 9, 123, 8, 9, 1, 9, 4, 9, 126, 8, 9, 11, 9, 12, 9, 127, 3, 9, 130, 8, 9, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 3, 10, 137, 8, 10, 1, 11, 1, 11, 1, 11, 5, 11, 142, 8, 11, 10, 11, 12, 11, 145, 9, 11, 1, 11, 1, 11, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 1, 12, 3, 12, 160, 8, 12, 1, 13, 1, 13, 1, 13, 1, 14, 1, 14, 1, 14, 1, 15, 1, 15, 1, 16, 1, 16, 1, 17, 1, 17, 1, 18, 1, 18, 1, 19, 1, 19, 1, 20, 1, 20, 1, 21, 4, 21, 181, 8, 21, 11, 21, 12, 21, 182, 1, 21, 1, 21, 0, 0, 22, 1, 0, 3, 0, 5, 0, 7, 0, 9, 0, 11, 0, 13, 0, 15, 0, 17, 0, 19, 0, 21, 0, 23, 0, 25, 1, 27, 2, 29, 3, 31, 4, 33, 5, 35, 6, 37, 7, 39, 8, 41, 9, 43, 10, 1, 0, 11, 3, 0, 9, 10, 13, 13, 32, 32, 2, 0, 65, 90, 97, 122, 1, 0, 48, 57, 3, 0, 48, 57, 65, 70, 97, 102, 8, 0, 34, 34, 39, 39, 92, 92, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 4, 0, 10, 10, 13, 13, 34, 34, 92, 92, 2, 0, 69, 69, 101, 101, 2, 0, 43, 43, 45, 45, 6, 0, 91, 93, 98, 98, 102, 102, 110, 110, 114, 114, 116, 116, 3, 0, 10, 10, 13, 13, 91, 93, 2, 0, 60, 60, 62, 62, 205, 0, 25, 1, 0, 0, 0, 0, 27, 1, 0, 0, 0, 0, 29, 1, 0, 0, 0, 0, 31, 1, 0, 0, 0, 0, 33, 1, 0, 0, 0, 0, 35, 1, 0, 0, 0, 0, 37, 1, 0, 0, 0, 0, 39, 1, 0, 0, 0, 0, 41, 1, 0, 0, 0, 0, 43, 1, 0, 0, 0, 1, 46, 1, 0, 0, 0, 3, 50, 1, 0, 0, 0, 5, 63, 1, 0, 0, 0, 7, 65, 1, 0, 0, 0, 9, 67, 1, 0, 0, 0, 11, 69, 1, 0, 0, 0, 13, 82, 1, 0, 0, 0, 15, 84, 1, 0, 0, 0, 17, 91, 1, 0, 0, 0, 19, 118, 1, 0, 0, 0, 21, 131, 1, 0, 0, 0, 23, 138, 1, 0, 0, 0, 25, 159, 1, 0, 0, 0, 27, 161, 1, 0, 0, 0, 29, 164, 1, 0, 0, 0, 31, 167, 1, 0, 0, 0, 33, 169, 1, 0, 0, 0, 35, 171, 1, 0, 0, 0, 37, 173, 1, 0, 0, 0, 39, 175, 1, 0, 0, 0, 41, 177, 1, 0, 0, 0, 43, 180, 1, 0, 0, 0, 45, 47, 7, 0, 0, 0, 46, 45, 1, 0, 0, 0, 47, 48, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 48, 49, 1, 0, 0, 0, 49, 2, 1, 0, 0, 0, 50, 56, 3, 5, 2, 0, 51, 55, 3, 5, 2, 0, 52, 55, 3, 7, 3, 0, 53, 55, 5, 32, 0, 0, 54, 51, 1, 0, 0, 0, 54, 52, 1, 0, 0, 0, 54, 53, 1, 0, 0, 0, 55, 58, 1, 0, 0, 0, 56, 54, 1, 0, 0, 0, 56, 57, 1, 0, 0, 0, 57, 61, 1, 0, 0, 0, 58, 56, 1, 0, 0, 0, 59, 62, 3, 5, 2, 0, 60, 62, 3, 7, 3, 0, 61, 59, 1, 0, 0, 0, 61, 60, 1, 0, 0, 0, 62, 4, 1, 0, 0, 0, 63, 64, 7, 1, 0, 0, 64, 6, 1, 0, 0, 0, 65, 66, 7, 2, 0, 0, 66, 8, 1, 0, 0, 0, 67, 68, 7, 3, 0, 0, 68, 10, 1, 0, 0, 0, 69, 80, 5, 117, 0, 0, 70, 78, 3, 9, 4, 0, 71, 76, 3, 9, 4, 0, 72, 74, 3, 9, 4, 0, 73, 75, 3, 9, 4, 0, 74, 73, 1, 0, 0, 0, 74, 75, 1, 0, 0, 0, 75, 77, 1, 0, 0, 0, 76, 72, 1, 0, 0, 0, 76, 77, 1, 0, 0, 0, 77, 79, 1, 0, 0, 0, 78, 71, 1, 0, 0, 0, 78, 79, 1, 0, 0, 0, 79, 81, 1, 0, 0, 0, 80, 70, 1, 0, 0, 0, 80, 81, 1, 0, 0, 0, 81, 12, 1, 0, 0, 0, 82, 83, 5, 92, 0, 0, 83, 14, 1, 0, 0, 0, 84, 89, 3, 13, 6, 0, 85, 90, 7, 4, 0, 0, 86, 90, 3, 11, 5, 0, 87, 90, 9, 0, 0, 0, 88, 90, 5, 0, 0, 1, 89, 85, 1, 0, 0, 0, 89, 86, 1, 0, 0, 0, 89, 87, 1, 0, 0, 0, 89, 88, 1, 0, 0, 0, 90, 16, 1, 0, 0, 0, 91, 96, 5, 34, 0, 0, 92, 95, 3, 15, 7, 0, 93, 95, 8, 5, 0, 0, 94, 92, 1, 0, 0, 0, 94, 93, 1, 0, 0, 0, 95, 98, 1, 0, 0, 0, 96, 94, 1, 0, 0, 0, 96, 97, 1, 0, 0, 0, 97, 99, 1, 0, 0, 0, 98, 96, 1, 0, 0, 0, 99, 100, 5, 34, 0, 0, 100, 18, 1, 0, 0, 0, 101, 103, 3, 7, 3, 0, 102, 101, 1, 0, 0, 0, 103, 106, 1, 0, 0, 0, 104, 102, 1, 0, 0, 0, 104, 105, 1, 0, 0, 0, 105, 107, 1, 0, 0, 0, 106, 104, 1, 0, 0, 0, 107, 109, 5, 46, 0, 0, 108, 110, 3, 7, 3, 0, 109, 108, 1, 0, 0, 0, 110, 111, 1, 0, 0, 0, 111, 109, 1, 0, 0, 0, 111, 112, 1, 0, 0, 0, 112, 119, 1, 0, 0, 0, 113, 115, 3, 7, 3, 0, 114, 113, 1, 0, 0, 0, 115, 116, 1, 0, 0, 0, 116, 114, 1, 0, 0, 0, 116, 117, 1, 0, 0, 0, 117, 119, 1, 0, 0, 0, 118, 104, 1, 0, 0, 0, 118, 114, 1, 0, 0, 0, 119, 129, 1, 0, 0, 0, 120, 122, 7, 6, 0, 0, 121, 123, 7, 7, 0, 0, 122, 121, 1, 0, 0, 0, 122, 123, 1, 0, 0, 0, 123, 125, 1, 0, 0, 0, 124, 126, 3, 7, 3, 0, 125, 124, 1, 0, 0, 0, 126, 127, 1, 0, 0, 0, 127, 125, 1, 0, 0, 0, 127, 128, 1, 0, 0, 0, 128, 130, 1, 0, 0, 0, 129, 120, 1, 0, 0, 0, 129, 130, 1, 0, 0, 0, 130, 20, 1, 0, 0, 0, 131, 136, 3, 13, 6, 0, 132, 137, 7, 8, 0, 0, 133, 137, 3, 11, 5, 0, 134, 137, 9, 0, 0, 0, 135, 137, 5, 0, 0, 1, 136, 132, 1, 0, 0, 0, 136, 133, 1, 0, 0, 0, 136, 134, 1, 0, 0, 0, 136, 135, 1, 0, 0, 0, 137, 22, 1, 0, 0, 0, 138, 143, 5, 91, 0, 0, 139, 142, 3, 15, 7, 0, 140, 142, 8, 9, 0, 0, 141, 139, 1, 0, 0, 0, 141, 140, 1, 0, 0, 0, 142, 145, 1, 0, 0, 0, 143, 141, 1, 0, 0, 0, 143, 144, 1, 0, 0, 0, 144, 146, 1, 0, 0, 0, 145, 143, 1, 0, 0, 0, 146, 147, 5, 93, 0, 0, 147, 24, 1, 0, 0, 0, 148, 149, 5, 61, 0, 0, 149, 160, 5, 61, 0, 0, 150, 151, 5, 33, 0, 0, 151, 160, 5, 61, 0, 0, 152, 153, 5, 60, 0, 0, 153, 160, 5, 62, 0, 0, 154, 160, 7, 10, 0, 0, 155, 156, 5, 62, 0, 0, 156, 160, 5, 61, 0, 0, 157, 158, 5, 60, 0, 0, 158, 160, 5, 61, 0, 0, 159, 148, 1, 0, 0, 0, 159, 150, 1, 0, 0, 0, 159, 152, 1, 0, 0, 0, 159, 154, 1, 0, 0, 0, 159, 155, 1, 0, 0, 0, 159, 157, 1, 0, 0, 0, 160, 26, 1, 0, 0, 0, 161, 162, 5, 38, 0, 0, 162, 163, 5, 38, 0, 0, 163, 28, 1, 0, 0, 0, 164, 165, 5, 124, 0, 0, 165, 166, 5, 124, 0, 0, 166, 30, 1, 0, 0, 0, 167, 168, 5, 40, 0, 0, 168, 32, 1, 0, 0, 0, 169, 170, 5, 41, 0, 0, 170, 34, 1, 0, 0, 0, 171, 172, 3, 19, 9, 0, 172, 36, 1, 0, 0, 0, 173, 174, 3, 17, 8, 0, 174, 38, 1, 0, 0, 0, 175, 176, 3, 23, 11, 0, 176, 40, 1, 0, 0, 0, 177, 178, 3, 3, 1, 0, 178, 42, 1, 0, 0, 0, 179, 181, 7, 0, 0, 0, 180, 179, 1, 0, 0, 0, 181, 182, 1, 0, 0, 0, 182, 180, 1, 0, 0, 0, 182, 183, 1, 0, 0, 0, 183, 184, 1, 0, 0, 0, 184, 185, 6, 21, 0, 0, 185, 44, 1, 0, 0, 0, 24, 0, 48, 54, 56, 61, 74, 76, 78, 80, 89, 94, 96, 104, 111, 116, 118, 122, 127, 129, 136, 141, 143, 159, 182, 1, 6, 0, 0] \ No newline at end of file diff --git a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.tokens b/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.tokens deleted file mode 100644 index 2ae11935e1..0000000000 --- a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.tokens +++ /dev/null @@ -1,14 +0,0 @@ -OPERATOR=1 -GROUP_OPERATOR_AND=2 -GROUP_OPERATOR_OR=3 -GROUP_OPEN=4 -GROUP_CLOSE=5 -NUMBER=6 -STRING=7 -COLUMN=8 -IDENTIFIER=9 -WHITESPACE=10 -'&&'=2 -'||'=3 -'('=4 -')'=5 diff --git a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.ts b/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.ts deleted file mode 100644 index b6b32376b5..0000000000 --- a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__lexer.ts +++ /dev/null @@ -1,142 +0,0 @@ -// Generated from /Users/blacksteed232/Developer/legend/studio/packages/legend-application-repl/grammar/datacube_filter__lexer.g4 by ANTLR 4.13.1 -// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols -import { - ATN, - ATNDeserializer, - CharStream, - DecisionState, DFA, - Lexer, - LexerATNSimulator, - RuleContext, - PredictionContextCache, - Token -} from "antlr4"; -export default class datacube_filter__lexer extends Lexer { - public static readonly OPERATOR = 1; - public static readonly GROUP_OPERATOR_AND = 2; - public static readonly GROUP_OPERATOR_OR = 3; - public static readonly GROUP_OPEN = 4; - public static readonly GROUP_CLOSE = 5; - public static readonly NUMBER = 6; - public static readonly STRING = 7; - public static readonly COLUMN = 8; - public static readonly IDENTIFIER = 9; - public static readonly WHITESPACE = 10; - public static readonly EOF = Token.EOF; - - public static readonly channelNames: string[] = [ "DEFAULT_TOKEN_CHANNEL", "HIDDEN" ]; - public static readonly literalNames: (string | null)[] = [ null, null, - "'&&'", "'||'", - "'('", "')'" ]; - public static readonly symbolicNames: (string | null)[] = [ null, "OPERATOR", - "GROUP_OPERATOR_AND", - "GROUP_OPERATOR_OR", - "GROUP_OPEN", - "GROUP_CLOSE", - "NUMBER", "STRING", - "COLUMN", "IDENTIFIER", - "WHITESPACE" ]; - public static readonly modeNames: string[] = [ "DEFAULT_MODE", ]; - - public static readonly ruleNames: string[] = [ - "Whitespace", "Identifier", "Letter", "Digit", "HexDigit", "UnicodeEsc", - "Esc", "StringEscSeq", "String", "Number", "ColumnEscSeq", "Column", "OPERATOR", - "GROUP_OPERATOR_AND", "GROUP_OPERATOR_OR", "GROUP_OPEN", "GROUP_CLOSE", - "NUMBER", "STRING", "COLUMN", "IDENTIFIER", "WHITESPACE", - ]; - - - constructor(input: CharStream) { - super(input); - this._interp = new LexerATNSimulator(this, datacube_filter__lexer._ATN, datacube_filter__lexer.DecisionsToDFA, new PredictionContextCache()); - } - - public get grammarFileName(): string { return "datacube_filter__lexer.g4"; } - - public get literalNames(): (string | null)[] { return datacube_filter__lexer.literalNames; } - public get symbolicNames(): (string | null)[] { return datacube_filter__lexer.symbolicNames; } - public get ruleNames(): string[] { return datacube_filter__lexer.ruleNames; } - - public get serializedATN(): number[] { return datacube_filter__lexer._serializedATN; } - - public get channelNames(): string[] { return datacube_filter__lexer.channelNames; } - - public get modeNames(): string[] { return datacube_filter__lexer.modeNames; } - - public static readonly _serializedATN: number[] = [4,0,10,186,6,-1,2,0, - 7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9, - 7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7, - 16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,1,0,4,0,47,8,0,11, - 0,12,0,48,1,1,1,1,1,1,1,1,5,1,55,8,1,10,1,12,1,58,9,1,1,1,1,1,3,1,62,8, - 1,1,2,1,2,1,3,1,3,1,4,1,4,1,5,1,5,1,5,1,5,1,5,3,5,75,8,5,3,5,77,8,5,3,5, - 79,8,5,3,5,81,8,5,1,6,1,6,1,7,1,7,1,7,1,7,1,7,3,7,90,8,7,1,8,1,8,1,8,5, - 8,95,8,8,10,8,12,8,98,9,8,1,8,1,8,1,9,5,9,103,8,9,10,9,12,9,106,9,9,1,9, - 1,9,4,9,110,8,9,11,9,12,9,111,1,9,4,9,115,8,9,11,9,12,9,116,3,9,119,8,9, - 1,9,1,9,3,9,123,8,9,1,9,4,9,126,8,9,11,9,12,9,127,3,9,130,8,9,1,10,1,10, - 1,10,1,10,1,10,3,10,137,8,10,1,11,1,11,1,11,5,11,142,8,11,10,11,12,11,145, - 9,11,1,11,1,11,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,1,12,3, - 12,160,8,12,1,13,1,13,1,13,1,14,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17, - 1,18,1,18,1,19,1,19,1,20,1,20,1,21,4,21,181,8,21,11,21,12,21,182,1,21,1, - 21,0,0,22,1,0,3,0,5,0,7,0,9,0,11,0,13,0,15,0,17,0,19,0,21,0,23,0,25,1,27, - 2,29,3,31,4,33,5,35,6,37,7,39,8,41,9,43,10,1,0,11,3,0,9,10,13,13,32,32, - 2,0,65,90,97,122,1,0,48,57,3,0,48,57,65,70,97,102,8,0,34,34,39,39,92,92, - 98,98,102,102,110,110,114,114,116,116,4,0,10,10,13,13,34,34,92,92,2,0,69, - 69,101,101,2,0,43,43,45,45,6,0,91,93,98,98,102,102,110,110,114,114,116, - 116,3,0,10,10,13,13,91,93,2,0,60,60,62,62,205,0,25,1,0,0,0,0,27,1,0,0,0, - 0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1, - 0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,1,46,1,0,0,0,3,50,1,0,0,0,5,63,1,0,0,0, - 7,65,1,0,0,0,9,67,1,0,0,0,11,69,1,0,0,0,13,82,1,0,0,0,15,84,1,0,0,0,17, - 91,1,0,0,0,19,118,1,0,0,0,21,131,1,0,0,0,23,138,1,0,0,0,25,159,1,0,0,0, - 27,161,1,0,0,0,29,164,1,0,0,0,31,167,1,0,0,0,33,169,1,0,0,0,35,171,1,0, - 0,0,37,173,1,0,0,0,39,175,1,0,0,0,41,177,1,0,0,0,43,180,1,0,0,0,45,47,7, - 0,0,0,46,45,1,0,0,0,47,48,1,0,0,0,48,46,1,0,0,0,48,49,1,0,0,0,49,2,1,0, - 0,0,50,56,3,5,2,0,51,55,3,5,2,0,52,55,3,7,3,0,53,55,5,32,0,0,54,51,1,0, - 0,0,54,52,1,0,0,0,54,53,1,0,0,0,55,58,1,0,0,0,56,54,1,0,0,0,56,57,1,0,0, - 0,57,61,1,0,0,0,58,56,1,0,0,0,59,62,3,5,2,0,60,62,3,7,3,0,61,59,1,0,0,0, - 61,60,1,0,0,0,62,4,1,0,0,0,63,64,7,1,0,0,64,6,1,0,0,0,65,66,7,2,0,0,66, - 8,1,0,0,0,67,68,7,3,0,0,68,10,1,0,0,0,69,80,5,117,0,0,70,78,3,9,4,0,71, - 76,3,9,4,0,72,74,3,9,4,0,73,75,3,9,4,0,74,73,1,0,0,0,74,75,1,0,0,0,75,77, - 1,0,0,0,76,72,1,0,0,0,76,77,1,0,0,0,77,79,1,0,0,0,78,71,1,0,0,0,78,79,1, - 0,0,0,79,81,1,0,0,0,80,70,1,0,0,0,80,81,1,0,0,0,81,12,1,0,0,0,82,83,5,92, - 0,0,83,14,1,0,0,0,84,89,3,13,6,0,85,90,7,4,0,0,86,90,3,11,5,0,87,90,9,0, - 0,0,88,90,5,0,0,1,89,85,1,0,0,0,89,86,1,0,0,0,89,87,1,0,0,0,89,88,1,0,0, - 0,90,16,1,0,0,0,91,96,5,34,0,0,92,95,3,15,7,0,93,95,8,5,0,0,94,92,1,0,0, - 0,94,93,1,0,0,0,95,98,1,0,0,0,96,94,1,0,0,0,96,97,1,0,0,0,97,99,1,0,0,0, - 98,96,1,0,0,0,99,100,5,34,0,0,100,18,1,0,0,0,101,103,3,7,3,0,102,101,1, - 0,0,0,103,106,1,0,0,0,104,102,1,0,0,0,104,105,1,0,0,0,105,107,1,0,0,0,106, - 104,1,0,0,0,107,109,5,46,0,0,108,110,3,7,3,0,109,108,1,0,0,0,110,111,1, - 0,0,0,111,109,1,0,0,0,111,112,1,0,0,0,112,119,1,0,0,0,113,115,3,7,3,0,114, - 113,1,0,0,0,115,116,1,0,0,0,116,114,1,0,0,0,116,117,1,0,0,0,117,119,1,0, - 0,0,118,104,1,0,0,0,118,114,1,0,0,0,119,129,1,0,0,0,120,122,7,6,0,0,121, - 123,7,7,0,0,122,121,1,0,0,0,122,123,1,0,0,0,123,125,1,0,0,0,124,126,3,7, - 3,0,125,124,1,0,0,0,126,127,1,0,0,0,127,125,1,0,0,0,127,128,1,0,0,0,128, - 130,1,0,0,0,129,120,1,0,0,0,129,130,1,0,0,0,130,20,1,0,0,0,131,136,3,13, - 6,0,132,137,7,8,0,0,133,137,3,11,5,0,134,137,9,0,0,0,135,137,5,0,0,1,136, - 132,1,0,0,0,136,133,1,0,0,0,136,134,1,0,0,0,136,135,1,0,0,0,137,22,1,0, - 0,0,138,143,5,91,0,0,139,142,3,15,7,0,140,142,8,9,0,0,141,139,1,0,0,0,141, - 140,1,0,0,0,142,145,1,0,0,0,143,141,1,0,0,0,143,144,1,0,0,0,144,146,1,0, - 0,0,145,143,1,0,0,0,146,147,5,93,0,0,147,24,1,0,0,0,148,149,5,61,0,0,149, - 160,5,61,0,0,150,151,5,33,0,0,151,160,5,61,0,0,152,153,5,60,0,0,153,160, - 5,62,0,0,154,160,7,10,0,0,155,156,5,62,0,0,156,160,5,61,0,0,157,158,5,60, - 0,0,158,160,5,61,0,0,159,148,1,0,0,0,159,150,1,0,0,0,159,152,1,0,0,0,159, - 154,1,0,0,0,159,155,1,0,0,0,159,157,1,0,0,0,160,26,1,0,0,0,161,162,5,38, - 0,0,162,163,5,38,0,0,163,28,1,0,0,0,164,165,5,124,0,0,165,166,5,124,0,0, - 166,30,1,0,0,0,167,168,5,40,0,0,168,32,1,0,0,0,169,170,5,41,0,0,170,34, - 1,0,0,0,171,172,3,19,9,0,172,36,1,0,0,0,173,174,3,17,8,0,174,38,1,0,0,0, - 175,176,3,23,11,0,176,40,1,0,0,0,177,178,3,3,1,0,178,42,1,0,0,0,179,181, - 7,0,0,0,180,179,1,0,0,0,181,182,1,0,0,0,182,180,1,0,0,0,182,183,1,0,0,0, - 183,184,1,0,0,0,184,185,6,21,0,0,185,44,1,0,0,0,24,0,48,54,56,61,74,76, - 78,80,89,94,96,104,111,116,118,122,127,129,136,141,143,159,182,1,6,0,0]; - - private static __ATN: ATN; - public static get _ATN(): ATN { - if (!datacube_filter__lexer.__ATN) { - datacube_filter__lexer.__ATN = new ATNDeserializer().deserialize(datacube_filter__lexer._serializedATN); - } - - return datacube_filter__lexer.__ATN; - } - - - static DecisionsToDFA = datacube_filter__lexer._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); -} \ No newline at end of file diff --git a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.interp b/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.interp deleted file mode 100644 index f87ae891b6..0000000000 --- a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.interp +++ /dev/null @@ -1,38 +0,0 @@ -token literal names: -null -null -'&&' -'||' -'(' -')' -null -null -null -null -null - -token symbolic names: -null -OPERATOR -GROUP_OPERATOR_AND -GROUP_OPERATOR_OR -GROUP_OPEN -GROUP_CLOSE -NUMBER -STRING -COLUMN -IDENTIFIER -WHITESPACE - -rule names: -filter -condition -column -value -group -groupOperator -groupCondition - - -atn: -[4, 1, 10, 50, 2, 0, 7, 0, 2, 1, 7, 1, 2, 2, 7, 2, 2, 3, 7, 3, 2, 4, 7, 4, 2, 5, 7, 5, 2, 6, 7, 6, 1, 0, 1, 0, 3, 0, 17, 8, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 3, 1, 24, 8, 1, 1, 2, 1, 2, 1, 3, 1, 3, 1, 4, 1, 4, 1, 4, 1, 4, 1, 5, 1, 5, 1, 6, 1, 6, 3, 6, 38, 8, 6, 1, 6, 1, 6, 1, 6, 3, 6, 43, 8, 6, 5, 6, 45, 8, 6, 10, 6, 12, 6, 48, 9, 6, 1, 6, 0, 0, 7, 0, 2, 4, 6, 8, 10, 12, 0, 3, 2, 0, 1, 1, 9, 9, 1, 0, 6, 7, 1, 0, 2, 3, 47, 0, 16, 1, 0, 0, 0, 2, 20, 1, 0, 0, 0, 4, 25, 1, 0, 0, 0, 6, 27, 1, 0, 0, 0, 8, 29, 1, 0, 0, 0, 10, 33, 1, 0, 0, 0, 12, 37, 1, 0, 0, 0, 14, 17, 3, 12, 6, 0, 15, 17, 3, 8, 4, 0, 16, 14, 1, 0, 0, 0, 16, 15, 1, 0, 0, 0, 17, 18, 1, 0, 0, 0, 18, 19, 5, 0, 0, 1, 19, 1, 1, 0, 0, 0, 20, 21, 3, 4, 2, 0, 21, 23, 7, 0, 0, 0, 22, 24, 3, 6, 3, 0, 23, 22, 1, 0, 0, 0, 23, 24, 1, 0, 0, 0, 24, 3, 1, 0, 0, 0, 25, 26, 5, 8, 0, 0, 26, 5, 1, 0, 0, 0, 27, 28, 7, 1, 0, 0, 28, 7, 1, 0, 0, 0, 29, 30, 5, 4, 0, 0, 30, 31, 3, 12, 6, 0, 31, 32, 5, 5, 0, 0, 32, 9, 1, 0, 0, 0, 33, 34, 7, 2, 0, 0, 34, 11, 1, 0, 0, 0, 35, 38, 3, 2, 1, 0, 36, 38, 3, 8, 4, 0, 37, 35, 1, 0, 0, 0, 37, 36, 1, 0, 0, 0, 38, 46, 1, 0, 0, 0, 39, 42, 3, 10, 5, 0, 40, 43, 3, 2, 1, 0, 41, 43, 3, 8, 4, 0, 42, 40, 1, 0, 0, 0, 42, 41, 1, 0, 0, 0, 43, 45, 1, 0, 0, 0, 44, 39, 1, 0, 0, 0, 45, 48, 1, 0, 0, 0, 46, 44, 1, 0, 0, 0, 46, 47, 1, 0, 0, 0, 47, 13, 1, 0, 0, 0, 48, 46, 1, 0, 0, 0, 5, 16, 23, 37, 42, 46] \ No newline at end of file diff --git a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.tokens b/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.tokens deleted file mode 100644 index 2ae11935e1..0000000000 --- a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.tokens +++ /dev/null @@ -1,14 +0,0 @@ -OPERATOR=1 -GROUP_OPERATOR_AND=2 -GROUP_OPERATOR_OR=3 -GROUP_OPEN=4 -GROUP_CLOSE=5 -NUMBER=6 -STRING=7 -COLUMN=8 -IDENTIFIER=9 -WHITESPACE=10 -'&&'=2 -'||'=3 -'('=4 -')'=5 diff --git a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.ts b/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.ts deleted file mode 100644 index 498d16eb59..0000000000 --- a/packages/legend-application-repl/grammar/parser/generated/datacube_filter__parser.ts +++ /dev/null @@ -1,514 +0,0 @@ -// Generated from /Users/blacksteed232/Developer/legend/studio/packages/legend-application-repl/grammar/datacube_filter__parser.g4 by ANTLR 4.13.1 -// noinspection ES6UnusedImports,JSUnusedGlobalSymbols,JSUnusedLocalSymbols - -import { - ATN, - ATNDeserializer, DecisionState, DFA, FailedPredicateException, - RecognitionException, NoViableAltException, BailErrorStrategy, - Parser, ParserATNSimulator, - RuleContext, ParserRuleContext, PredictionMode, PredictionContextCache, - TerminalNode, RuleNode, - Token, TokenStream, - Interval, IntervalSet -} from 'antlr4'; -// for running tests with parameters, TODO: discuss strategy for typed parameters in CI -// eslint-disable-next-line no-unused-vars -type int = number; - -export default class datacube_filter__parser extends Parser { - public static readonly OPERATOR = 1; - public static readonly GROUP_OPERATOR_AND = 2; - public static readonly GROUP_OPERATOR_OR = 3; - public static readonly GROUP_OPEN = 4; - public static readonly GROUP_CLOSE = 5; - public static readonly NUMBER = 6; - public static readonly STRING = 7; - public static readonly COLUMN = 8; - public static readonly IDENTIFIER = 9; - public static readonly WHITESPACE = 10; - public static readonly EOF = Token.EOF; - public static readonly RULE_filter = 0; - public static readonly RULE_condition = 1; - public static readonly RULE_column = 2; - public static readonly RULE_value = 3; - public static readonly RULE_group = 4; - public static readonly RULE_groupOperator = 5; - public static readonly RULE_groupCondition = 6; - public static readonly literalNames: (string | null)[] = [ null, null, - "'&&'", "'||'", - "'('", "')'" ]; - public static readonly symbolicNames: (string | null)[] = [ null, "OPERATOR", - "GROUP_OPERATOR_AND", - "GROUP_OPERATOR_OR", - "GROUP_OPEN", - "GROUP_CLOSE", - "NUMBER", "STRING", - "COLUMN", "IDENTIFIER", - "WHITESPACE" ]; - // tslint:disable:no-trailing-whitespace - public static readonly ruleNames: string[] = [ - "filter", "condition", "column", "value", "group", "groupOperator", "groupCondition", - ]; - public get grammarFileName(): string { return "datacube_filter__parser.g4"; } - public get literalNames(): (string | null)[] { return datacube_filter__parser.literalNames; } - public get symbolicNames(): (string | null)[] { return datacube_filter__parser.symbolicNames; } - public get ruleNames(): string[] { return datacube_filter__parser.ruleNames; } - public get serializedATN(): number[] { return datacube_filter__parser._serializedATN; } - - protected createFailedPredicateException(predicate?: string, message?: string): FailedPredicateException { - return new FailedPredicateException(this, predicate, message); - } - - constructor(input: TokenStream) { - super(input); - this._interp = new ParserATNSimulator(this, datacube_filter__parser._ATN, datacube_filter__parser.DecisionsToDFA, new PredictionContextCache()); - } - // @RuleVersion(0) - public filter(): FilterContext { - let localctx: FilterContext = new FilterContext(this, this._ctx, this.state); - this.enterRule(localctx, 0, datacube_filter__parser.RULE_filter); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 16; - this._errHandler.sync(this); - switch ( this._interp.adaptivePredict(this._input, 0, this._ctx) ) { - case 1: - { - this.state = 14; - this.groupCondition(); - } - break; - case 2: - { - this.state = 15; - this.group(); - } - break; - } - this.state = 18; - this.match(datacube_filter__parser.EOF); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public condition(): ConditionContext { - let localctx: ConditionContext = new ConditionContext(this, this._ctx, this.state); - this.enterRule(localctx, 2, datacube_filter__parser.RULE_condition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 20; - this.column(); - this.state = 21; - _la = this._input.LA(1); - if(!(_la===1 || _la===9)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - this.state = 23; - this._errHandler.sync(this); - _la = this._input.LA(1); - if (_la===6 || _la===7) { - { - this.state = 22; - this.value(); - } - } - - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public column(): ColumnContext { - let localctx: ColumnContext = new ColumnContext(this, this._ctx, this.state); - this.enterRule(localctx, 4, datacube_filter__parser.RULE_column); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 25; - this.match(datacube_filter__parser.COLUMN); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public value(): ValueContext { - let localctx: ValueContext = new ValueContext(this, this._ctx, this.state); - this.enterRule(localctx, 6, datacube_filter__parser.RULE_value); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 27; - _la = this._input.LA(1); - if(!(_la===6 || _la===7)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public group(): GroupContext { - let localctx: GroupContext = new GroupContext(this, this._ctx, this.state); - this.enterRule(localctx, 8, datacube_filter__parser.RULE_group); - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 29; - this.match(datacube_filter__parser.GROUP_OPEN); - this.state = 30; - this.groupCondition(); - this.state = 31; - this.match(datacube_filter__parser.GROUP_CLOSE); - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public groupOperator(): GroupOperatorContext { - let localctx: GroupOperatorContext = new GroupOperatorContext(this, this._ctx, this.state); - this.enterRule(localctx, 10, datacube_filter__parser.RULE_groupOperator); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 33; - _la = this._input.LA(1); - if(!(_la===2 || _la===3)) { - this._errHandler.recoverInline(this); - } - else { - this._errHandler.reportMatch(this); - this.consume(); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - // @RuleVersion(0) - public groupCondition(): GroupConditionContext { - let localctx: GroupConditionContext = new GroupConditionContext(this, this._ctx, this.state); - this.enterRule(localctx, 12, datacube_filter__parser.RULE_groupCondition); - let _la: number; - try { - this.enterOuterAlt(localctx, 1); - { - this.state = 37; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 8: - { - this.state = 35; - this.condition(); - } - break; - case 4: - { - this.state = 36; - this.group(); - } - break; - default: - throw new NoViableAltException(this); - } - this.state = 46; - this._errHandler.sync(this); - _la = this._input.LA(1); - while (_la===2 || _la===3) { - { - { - this.state = 39; - this.groupOperator(); - this.state = 42; - this._errHandler.sync(this); - switch (this._input.LA(1)) { - case 8: - { - this.state = 40; - this.condition(); - } - break; - case 4: - { - this.state = 41; - this.group(); - } - break; - default: - throw new NoViableAltException(this); - } - } - } - this.state = 48; - this._errHandler.sync(this); - _la = this._input.LA(1); - } - } - } - catch (re) { - if (re instanceof RecognitionException) { - localctx.exception = re; - this._errHandler.reportError(this, re); - this._errHandler.recover(this, re); - } else { - throw re; - } - } - finally { - this.exitRule(); - } - return localctx; - } - - public static readonly _serializedATN: number[] = [4,1,10,50,2,0,7,0,2, - 1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,1,0,1,0,3,0,17,8,0,1,0,1, - 0,1,1,1,1,1,1,3,1,24,8,1,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,4,1,5,1,5,1,6,1, - 6,3,6,38,8,6,1,6,1,6,1,6,3,6,43,8,6,5,6,45,8,6,10,6,12,6,48,9,6,1,6,0,0, - 7,0,2,4,6,8,10,12,0,3,2,0,1,1,9,9,1,0,6,7,1,0,2,3,47,0,16,1,0,0,0,2,20, - 1,0,0,0,4,25,1,0,0,0,6,27,1,0,0,0,8,29,1,0,0,0,10,33,1,0,0,0,12,37,1,0, - 0,0,14,17,3,12,6,0,15,17,3,8,4,0,16,14,1,0,0,0,16,15,1,0,0,0,17,18,1,0, - 0,0,18,19,5,0,0,1,19,1,1,0,0,0,20,21,3,4,2,0,21,23,7,0,0,0,22,24,3,6,3, - 0,23,22,1,0,0,0,23,24,1,0,0,0,24,3,1,0,0,0,25,26,5,8,0,0,26,5,1,0,0,0,27, - 28,7,1,0,0,28,7,1,0,0,0,29,30,5,4,0,0,30,31,3,12,6,0,31,32,5,5,0,0,32,9, - 1,0,0,0,33,34,7,2,0,0,34,11,1,0,0,0,35,38,3,2,1,0,36,38,3,8,4,0,37,35,1, - 0,0,0,37,36,1,0,0,0,38,46,1,0,0,0,39,42,3,10,5,0,40,43,3,2,1,0,41,43,3, - 8,4,0,42,40,1,0,0,0,42,41,1,0,0,0,43,45,1,0,0,0,44,39,1,0,0,0,45,48,1,0, - 0,0,46,44,1,0,0,0,46,47,1,0,0,0,47,13,1,0,0,0,48,46,1,0,0,0,5,16,23,37, - 42,46]; - - private static __ATN: ATN; - public static get _ATN(): ATN { - if (!datacube_filter__parser.__ATN) { - datacube_filter__parser.__ATN = new ATNDeserializer().deserialize(datacube_filter__parser._serializedATN); - } - - return datacube_filter__parser.__ATN; - } - - - static DecisionsToDFA = datacube_filter__parser._ATN.decisionToState.map( (ds: DecisionState, index: number) => new DFA(ds, index) ); - -} - -export class FilterContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public EOF(): TerminalNode { - return this.getToken(datacube_filter__parser.EOF, 0); - } - public groupCondition(): GroupConditionContext { - return this.getTypedRuleContext(GroupConditionContext, 0) as GroupConditionContext; - } - public group(): GroupContext { - return this.getTypedRuleContext(GroupContext, 0) as GroupContext; - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_filter; - } -} - - -export class ConditionContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public column(): ColumnContext { - return this.getTypedRuleContext(ColumnContext, 0) as ColumnContext; - } - public OPERATOR(): TerminalNode { - return this.getToken(datacube_filter__parser.OPERATOR, 0); - } - public IDENTIFIER(): TerminalNode { - return this.getToken(datacube_filter__parser.IDENTIFIER, 0); - } - public value(): ValueContext { - return this.getTypedRuleContext(ValueContext, 0) as ValueContext; - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_condition; - } -} - - -export class ColumnContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public COLUMN(): TerminalNode { - return this.getToken(datacube_filter__parser.COLUMN, 0); - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_column; - } -} - - -export class ValueContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public STRING(): TerminalNode { - return this.getToken(datacube_filter__parser.STRING, 0); - } - public NUMBER(): TerminalNode { - return this.getToken(datacube_filter__parser.NUMBER, 0); - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_value; - } -} - - -export class GroupContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public GROUP_OPEN(): TerminalNode { - return this.getToken(datacube_filter__parser.GROUP_OPEN, 0); - } - public groupCondition(): GroupConditionContext { - return this.getTypedRuleContext(GroupConditionContext, 0) as GroupConditionContext; - } - public GROUP_CLOSE(): TerminalNode { - return this.getToken(datacube_filter__parser.GROUP_CLOSE, 0); - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_group; - } -} - - -export class GroupOperatorContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public GROUP_OPERATOR_AND(): TerminalNode { - return this.getToken(datacube_filter__parser.GROUP_OPERATOR_AND, 0); - } - public GROUP_OPERATOR_OR(): TerminalNode { - return this.getToken(datacube_filter__parser.GROUP_OPERATOR_OR, 0); - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_groupOperator; - } -} - - -export class GroupConditionContext extends ParserRuleContext { - constructor(parser?: datacube_filter__parser, parent?: ParserRuleContext, invokingState?: number) { - super(parent, invokingState); - this.parser = parser; - } - public condition_list(): ConditionContext[] { - return this.getTypedRuleContexts(ConditionContext) as ConditionContext[]; - } - public condition(i: number): ConditionContext { - return this.getTypedRuleContext(ConditionContext, i) as ConditionContext; - } - public group_list(): GroupContext[] { - return this.getTypedRuleContexts(GroupContext) as GroupContext[]; - } - public group(i: number): GroupContext { - return this.getTypedRuleContext(GroupContext, i) as GroupContext; - } - public groupOperator_list(): GroupOperatorContext[] { - return this.getTypedRuleContexts(GroupOperatorContext) as GroupOperatorContext[]; - } - public groupOperator(i: number): GroupOperatorContext { - return this.getTypedRuleContext(GroupOperatorContext, i) as GroupOperatorContext; - } - public get ruleIndex(): number { - return datacube_filter__parser.RULE_groupCondition; - } -} diff --git a/packages/legend-application-repl/grammar/parser/parser.ts b/packages/legend-application-repl/grammar/parser/parser.ts deleted file mode 100644 index 0d4ad192c8..0000000000 --- a/packages/legend-application-repl/grammar/parser/parser.ts +++ /dev/null @@ -1,55 +0,0 @@ -/** - * Copyright (c) 2020-present, Goldman Sachs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - CharStreams, - CommonTokenStream, - ParseTreeVisitor, - ErrorListener, -} from 'antlr4'; -import datacube_filterLexer from './generated/datacube_filter__lexer.js'; -import datacube_filterParser from './generated/datacube_filter__parser.js'; - -class DataCubeFilterErrorListener extends ErrorListener { - syntaxError( - recognizer: any, - offendingSymbol: any, - line: number, - column: number, - msg: string, - e: any, - ) { - // TODO: we should make this set the parser error state when we use this in typeahead - console.error(`${offendingSymbol} line ${line}, col ${column}: ${msg}`, e); - } -} - -export function parseDataCubeQueryFilter(code: string) { - const charStream = CharStreams.fromString(code); - const lexer = new datacube_filterLexer(charStream); - const tokenStream = new CommonTokenStream(lexer); - const parser = new datacube_filterParser(tokenStream); - // parser.buildParseTrees = true; - parser.removeErrorListeners(); - parser.addErrorListener(new DataCubeFilterErrorListener()); - const ruleContext = parser.filter(); - console.log(ruleContext); - // TODO: the last token can be used for auto-complete/typeahead - - // ruleContext.children?.forEach((child) => { - // console.log('suggestion', child, child.getText()); - // }); -} diff --git a/packages/legend-application-repl/package.json b/packages/legend-application-repl/package.json index cc5a08e996..b4d4131d40 100644 --- a/packages/legend-application-repl/package.json +++ b/packages/legend-application-repl/package.json @@ -22,8 +22,7 @@ "type": "module", "exports": { ".": "./lib/index.js", - "./lib/index.css": "./lib/index.css", - "./lib/grammar/parser.js": "./lib/grammar/parser.js" + "./lib/index.css": "./lib/index.css" }, "module": "lib/index.js", "types": "lib/index.d.ts", @@ -31,7 +30,6 @@ "build": "yarn clean && yarn build:sass && yarn build:ts", "build:sass": "cross-env INIT_CWD=$INIT_CWD node ../../scripts/workflow/buildSass.js", "build:ts": "tsc --project ./tsconfig.build.json", - "build:grammar": "node ./grammar/generateGrammar.js", "clean": "npm-run-all clean:cache clean:lib", "clean:cache": "rimraf \"build\"", "clean:lib": "rimraf \"lib\"", @@ -45,20 +43,20 @@ "test:watch": "jest --watch" }, "dependencies": { - "@ag-grid-community/client-side-row-model": "32.0.1", - "@ag-grid-community/core": "32.0.1", - "@ag-grid-community/csv-export": "32.0.1", - "@ag-grid-community/react": "32.0.1", - "@ag-grid-community/styles": "32.0.1", - "@ag-grid-enterprise/clipboard": "32.0.1", - "@ag-grid-enterprise/column-tool-panel": "32.0.1", - "@ag-grid-enterprise/core": "32.0.1", - "@ag-grid-enterprise/excel-export": "32.0.1", - "@ag-grid-enterprise/menu": "32.0.1", - "@ag-grid-enterprise/range-selection": "32.0.1", - "@ag-grid-enterprise/row-grouping": "32.0.1", - "@ag-grid-enterprise/server-side-row-model": "32.0.1", - "@ag-grid-enterprise/side-bar": "32.0.1", + "@ag-grid-community/client-side-row-model": "32.0.2", + "@ag-grid-community/core": "32.0.2", + "@ag-grid-community/csv-export": "32.0.2", + "@ag-grid-community/react": "32.0.2", + "@ag-grid-community/styles": "32.0.2", + "@ag-grid-enterprise/clipboard": "32.0.2", + "@ag-grid-enterprise/column-tool-panel": "32.0.2", + "@ag-grid-enterprise/core": "32.0.2", + "@ag-grid-enterprise/excel-export": "32.0.2", + "@ag-grid-enterprise/menu": "32.0.2", + "@ag-grid-enterprise/range-selection": "32.0.2", + "@ag-grid-enterprise/row-grouping": "32.0.2", + "@ag-grid-enterprise/server-side-row-model": "32.0.2", + "@ag-grid-enterprise/side-bar": "32.0.2", "@finos/legend-application": "workspace:*", "@finos/legend-art": "workspace:*", "@finos/legend-graph": "workspace:*", @@ -66,8 +64,7 @@ "@finos/legend-shared": "workspace:*", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "antlr4": "4.13.1-patch-1", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "monaco-editor": "0.50.0", "react": "18.3.1", @@ -83,7 +80,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-application-repl/src/__lib__/LegendREPLEvent.ts b/packages/legend-application-repl/src/__lib__/LegendREPLEvent.ts index 2482e33906..225306c3e0 100644 --- a/packages/legend-application-repl/src/__lib__/LegendREPLEvent.ts +++ b/packages/legend-application-repl/src/__lib__/LegendREPLEvent.ts @@ -14,7 +14,7 @@ * limitations under the License. */ -export enum LEGEND_REPL_APP_EVENT { +export enum ApplicationEvent { FETCH_TDS_FAILURE = 'repl.fetch-tds.failure', BUILD_TDS_EQUEST_FAILURE = 'repl.build-tds-request.failure', } diff --git a/packages/legend-application-repl/src/__lib__/LegendREPLSetting.ts b/packages/legend-application-repl/src/__lib__/LegendREPLSetting.ts index cfa87f048c..005c6ad12d 100644 --- a/packages/legend-application-repl/src/__lib__/LegendREPLSetting.ts +++ b/packages/legend-application-repl/src/__lib__/LegendREPLSetting.ts @@ -14,6 +14,6 @@ * limitations under the License. */ -export enum LEGEND_APPLICATION_REPL_SETTING_KEY { +export enum SettingsKey { PAGINATION = 'application.pagination.enabled', } diff --git a/packages/legend-application-repl/src/application/LegendREPL.tsx b/packages/legend-application-repl/src/application/LegendREPL.tsx index 26a85cd172..4e68551233 100644 --- a/packages/legend-application-repl/src/application/LegendREPL.tsx +++ b/packages/legend-application-repl/src/application/LegendREPL.tsx @@ -53,10 +53,10 @@ export class LegendREPL extends LegendApplication { } async loadApplication( - applicationStore: LegendREPLApplicationStore, + application: LegendREPLApplicationStore, ): Promise { createRoot(getApplicationRootElement()).render( - + , ); diff --git a/packages/legend-application-repl/src/application/LegendREPLDocumentation.ts b/packages/legend-application-repl/src/application/LegendREPLDocumentation.ts new file mode 100644 index 0000000000..4499a34e13 --- /dev/null +++ b/packages/legend-application-repl/src/application/LegendREPLDocumentation.ts @@ -0,0 +1,21 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export enum DocumentationKey { + DATA_CUBE_EXTENDED_COLUMN_LEVELS = 'data-cube.extended-column.levels', + DATA_CUBE_COLUMN_KINDS = 'data-cube.column.kinds', + DATA_CUBE_COLUMN_DISPLAY_AS_LINK = 'data-cube.column.display-as-link', +} diff --git a/packages/legend-application-repl/src/components/Core_LegendREPLApplicationPlugin.tsx b/packages/legend-application-repl/src/components/Core_LegendREPLApplicationPlugin.tsx index 4c2a1da3e3..dd7b6188de 100644 --- a/packages/legend-application-repl/src/components/Core_LegendREPLApplicationPlugin.tsx +++ b/packages/legend-application-repl/src/components/Core_LegendREPLApplicationPlugin.tsx @@ -31,8 +31,8 @@ export class Core_LegendREPLApplicationPlugin extends LegendREPLApplicationPlugi override getExtraApplicationSetups(): LegendApplicationSetup[] { return [ - async (applicationStore) => { - await configureCodeEditorComponent(applicationStore); + async (application) => { + await configureCodeEditorComponent(application); setupPureLanguageService(); }, ]; diff --git a/packages/legend-application-repl/src/components/LegendREPLApplication.tsx b/packages/legend-application-repl/src/components/LegendREPLApplication.tsx index e600f6fdb1..1052d9c3be 100644 --- a/packages/legend-application-repl/src/components/LegendREPLApplication.tsx +++ b/packages/legend-application-repl/src/components/LegendREPLApplication.tsx @@ -24,6 +24,7 @@ import { DataCube } from './dataCube/DataCube.js'; import { LegendREPLFrameworkProvider } from './LegendREPLFrameworkProvider.js'; import { observer } from 'mobx-react-lite'; import { withREPLStore } from './REPLStoreProvider.js'; +import { ActionAlert } from './repl/Alert.js'; export const LEGEND_REPL_GRID_CLIENT_ROUTE_PATTERN = Object.freeze({ DATA_CUBE: `/dataCube`, @@ -55,6 +56,7 @@ export const LegendREPLWebApplication: React.FC<{ + ); diff --git a/packages/legend-application-repl/src/components/LegendREPLFrameworkProvider.tsx b/packages/legend-application-repl/src/components/LegendREPLFrameworkProvider.tsx index f3ef159eb0..3f3481fc13 100644 --- a/packages/legend-application-repl/src/components/LegendREPLFrameworkProvider.tsx +++ b/packages/legend-application-repl/src/components/LegendREPLFrameworkProvider.tsx @@ -37,10 +37,8 @@ const LegendREPLBaseStoreContext = createContext< const LegendREPLBaseStoreProvider: React.FC<{ children: React.ReactNode; }> = ({ children }) => { - const applicationStore = useLegendREPLApplicationStore(); - const store = useLocalObservable( - () => new LegendREPLBaseStore(applicationStore), - ); + const application = useLegendREPLApplicationStore(); + const store = useLocalObservable(() => new LegendREPLBaseStore(application)); return ( {children} diff --git a/packages/legend-application-repl/src/components/REPLStoreProvider.tsx b/packages/legend-application-repl/src/components/REPLStoreProvider.tsx index b353e2eec6..3fff17cbed 100644 --- a/packages/legend-application-repl/src/components/REPLStoreProvider.tsx +++ b/packages/legend-application-repl/src/components/REPLStoreProvider.tsx @@ -14,8 +14,8 @@ * limitations under the License. */ -import { createContext, useContext } from 'react'; -import { useLocalObservable } from 'mobx-react-lite'; +import { createContext, useContext, useEffect } from 'react'; +import { observer, useLocalObservable } from 'mobx-react-lite'; import { REPLStore } from '../stores/REPLStore.js'; import { guaranteeNonNullable } from '@finos/legend-shared'; import { useApplicationStore } from '@finos/legend-application'; @@ -24,22 +24,28 @@ import type { LegendREPLPluginManager } from '../application/LegendREPLPluginMan const REPLStoreContext = createContext(undefined); -export const REPLStoreProvider = ({ - children, -}: { - children: React.ReactNode; -}): React.ReactElement => { - const applicationStore = useApplicationStore< - LegendREPLApplicationConfig, - LegendREPLPluginManager - >(); - const store = useLocalObservable(() => new REPLStore(applicationStore)); - return ( - - {children} - - ); -}; +export const REPLStoreProvider = observer( + ({ children }: { children: React.ReactNode }): React.ReactElement => { + const application = useApplicationStore< + LegendREPLApplicationConfig, + LegendREPLPluginManager + >(); + const store = useLocalObservable(() => new REPLStore(application)); + + useEffect(() => { + store.initialize().catch(application.logUnhandledError); + }, [store, application]); + + if (!store.initState.hasSucceeded) { + return <>; + } + return ( + + {children} + + ); + }, +); export const useREPLStore = (): REPLStore => guaranteeNonNullable( diff --git a/packages/legend-application-repl/src/components/REPLWindow.tsx b/packages/legend-application-repl/src/components/REPLWindow.tsx deleted file mode 100644 index 9b1ce5e04f..0000000000 --- a/packages/legend-application-repl/src/components/REPLWindow.tsx +++ /dev/null @@ -1,179 +0,0 @@ -/** - * Copyright (c) 2020-present, Goldman Sachs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { useState } from 'react'; -import { DataCubeIcon, ResizableAndDraggableBox, cn } from '@finos/legend-art'; - -const WINDOW_DEFAULT_OFFSET = 50; -const WINDOW_DEFAULT_WIDTH = 800; -const WINDOW_DEFAULT_HEIGHT = 600; -const WINDOW_DEFAULT_MIN_WIDTH = 300; -const WINDOW_DEFAULT_MIN_HEIGHT = 300; - -export type REPLWindowConfig = { - title: string; - uuid: string; - - x?: number | undefined; - y?: number | undefined; - width?: number | undefined; - height?: number | undefined; - minWidth?: number | undefined; - minHeight?: number | undefined; - center?: boolean | undefined; -}; - -export const REPLWindow = (props: { - containerRef: React.RefObject; - children: React.ReactNode; - config: REPLWindowConfig; - onClose: () => void; -}) => { - const { containerRef, children, onClose, config } = props; - - const [windowSpec, setWindowSpec] = useState(() => { - const x = config.x ?? WINDOW_DEFAULT_OFFSET; - const y = config.y ?? WINDOW_DEFAULT_OFFSET; - const width = config.width ?? WINDOW_DEFAULT_WIDTH; - const height = config.height ?? WINDOW_DEFAULT_HEIGHT; - - if (containerRef.current) { - const { width: containerWidth, height: containerHeight } = - containerRef.current.getBoundingClientRect(); - - if (config.center) { - const finalWidth = - width + WINDOW_DEFAULT_OFFSET * 2 > containerWidth - ? containerWidth - WINDOW_DEFAULT_OFFSET * 2 - : width; - const finalHeight = - height + WINDOW_DEFAULT_OFFSET * 2 > containerHeight - ? containerHeight - WINDOW_DEFAULT_OFFSET * 2 - : height; - return { - x: (containerWidth - finalWidth) / 2, - y: (containerHeight - finalHeight) / 2, - width: finalWidth, - height: finalHeight, - }; - } - - return { - x, - y, - width: - width + x + WINDOW_DEFAULT_OFFSET > containerWidth - ? containerWidth - x - WINDOW_DEFAULT_OFFSET - : width, - height: - height + y + WINDOW_DEFAULT_OFFSET > containerHeight - ? containerHeight - y - WINDOW_DEFAULT_OFFSET - : height, - }; - } - - return { - x, - y, - width, - height, - }; - }); - - return ( - { - setWindowSpec({ ...windowSpec, x: data.x, y: data.y }); - }} - dragHandleClassName={`data-cube__window-${config.uuid}`} - onResize={(event, direction, ref, delta, position) => { - setWindowSpec({ - ...position, - width: ref.offsetWidth, - height: ref.offsetHeight, - }); - }} - enableResizing={{ - top: true, - right: true, - bottom: true, - left: true, - topRight: true, - bottomRight: true, - bottomLeft: true, - topLeft: true, - }} - resizeHandleStyles={{ - top: { cursor: 'ns-resize' }, - right: { cursor: 'ew-resize' }, - bottom: { cursor: 'ns-resize' }, - left: { cursor: 'ew-resize' }, - topRight: { - cursor: 'nesw-resize', - width: 14, - height: 14, - top: -7, - right: -7, - }, - bottomRight: { - cursor: 'nwse-resize', - width: 14, - height: 14, - bottom: -7, - right: -7, - }, - bottomLeft: { - cursor: 'nesw-resize', - width: 14, - height: 14, - bottom: -7, - left: -7, - }, - topLeft: { - cursor: 'nwse-resize', - width: 14, - height: 14, - top: -7, - left: -7, - }, - }} - > -
-
-
{config.title}
- -
-
{children}
-
-
- ); -}; diff --git a/packages/legend-application-repl/src/components/dataCube/DataCube.tsx b/packages/legend-application-repl/src/components/dataCube/DataCube.tsx index 31efdde20c..fd32f715b1 100644 --- a/packages/legend-application-repl/src/components/dataCube/DataCube.tsx +++ b/packages/legend-application-repl/src/components/dataCube/DataCube.tsx @@ -16,33 +16,33 @@ import { observer } from 'mobx-react-lite'; import { useREPLStore } from '../REPLStoreProvider.js'; -import { useEffect, useRef } from 'react'; +import { useEffect } from 'react'; import { DataCubeGrid } from './grid/DataCubeGrid.js'; -import { DataCubeEditor } from './editor/DataCubeEditor.js'; import { useApplicationStore } from '@finos/legend-application'; -import { DataCubeIcon, ProgressBar } from '@finos/legend-art'; +import { + DataCubeIcon, + DropdownMenu, + DropdownMenuItem, + ProgressBar, + useDropdownMenu, +} from '@finos/legend-art'; +import { LayoutManager } from '../repl/LayoutManager.js'; const DataCubeStatusBar = observer(() => { - const dataCubeStore = useREPLStore(); - const dataCube = dataCubeStore.dataCube; + const repl = useREPLStore(); + const dataCube = repl.dataCube; return (
-
+
- -
+
+ + { + if (application.documentationService.url) { + application.navigationService.navigator.visitAddress( + application.documentationService.url, + ); + } + closeMenuDropdown(); + }} + // disabled={!application.documentationService.url} + disabled={true} // TODO: enable when we set up the documentation website + > + See Documentation + +
+ { + repl.settingsDisplay.open(); + closeMenuDropdown(); + }} + > + Settings... + +
); }); export const DataCube = observer(() => { - const dataCubeStore = useREPLStore(); - const ref = useRef(null); + const repl = useREPLStore(); const application = useApplicationStore(); - const dataCube = dataCubeStore.dataCube; + const dataCube = repl.dataCube; useEffect(() => { dataCube.initialize().catch(application.logUnhandledError); }, [dataCube, application]); return ( -
+
- {dataCube.editor.isPanelOpen && } +
); }); diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditor.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditor.tsx index 81cd94f2f5..eb8ccc40b1 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditor.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditor.tsx @@ -15,7 +15,7 @@ */ import { observer } from 'mobx-react-lite'; -import { DATA_CUBE_EDITOR_TAB } from '../../../stores/dataCube/editor/DataCubeEditorState.js'; +import { DataCubeEditorTab } from '../../../stores/dataCube/editor/DataCubeEditorState.js'; import { useREPLStore } from '../../REPLStoreProvider.js'; import { DataCubeEditorSortsPanel } from './DataCubeEditorSortsPanel.js'; import { DataCubeEditorGeneralPropertiesPanel } from './DataCubeEditorGeneralPropertiesPanel.js'; @@ -26,105 +26,96 @@ import { DataCubeEditorFilterPanel } from './DataCubeEditorFilterPanel.js'; import { DataCubeEditorExtendedColumnsPanel } from './DataCubeEditorExtendedColumnsPanel.js'; import { DataCubeEditorCodePanel } from './DataCubeEditorCodePanel.js'; import { DataCubeEditorColumnPropertiesPanel } from './DataCubeEditorColumnPropertiesPanel.js'; -import { REPLWindow } from '../../REPLWindow.js'; import { cn } from '@finos/legend-art'; -export const DataCubeEditor = observer( - (props: { containerRef: React.RefObject }) => { - const { containerRef } = props; - const replStore = useREPLStore(); - const editor = replStore.dataCube.editor; - const selectedTab = editor.currentTab; - const tabs = [ - DATA_CUBE_EDITOR_TAB.GENERAL_PROPERTIES, - DATA_CUBE_EDITOR_TAB.COLUMN_PROPERTIES, - DATA_CUBE_EDITOR_TAB.FILTER, - DATA_CUBE_EDITOR_TAB.EXTENDED_COLUMNS, - DATA_CUBE_EDITOR_TAB.COLUMNS, - DATA_CUBE_EDITOR_TAB.VERTICAL_PIVOTS, - DATA_CUBE_EDITOR_TAB.HORIZONTAL_PIVOTS, - DATA_CUBE_EDITOR_TAB.SORTS, - DATA_CUBE_EDITOR_TAB.CODE, - ]; +export const DataCubeEditor = observer(() => { + const repl = useREPLStore(); + const editor = repl.dataCube.editor; + const selectedTab = editor.currentTab; + const tabs = [ + DataCubeEditorTab.GENERAL_PROPERTIES, + DataCubeEditorTab.COLUMN_PROPERTIES, + DataCubeEditorTab.FILTER, + DataCubeEditorTab.EXTENDED_COLUMNS, + DataCubeEditorTab.COLUMNS, + DataCubeEditorTab.VERTICAL_PIVOTS, + DataCubeEditorTab.HORIZONTAL_PIVOTS, + DataCubeEditorTab.SORTS, + DataCubeEditorTab.CODE, + ]; - return ( - editor.closePanel()} - > -
-
- {tabs.map((tab) => ( - - ))} -
-
- {selectedTab === DATA_CUBE_EDITOR_TAB.GENERAL_PROPERTIES && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.COLUMN_PROPERTIES && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.FILTER && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.EXTENDED_COLUMNS && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.COLUMNS && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.SORTS && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.VERTICAL_PIVOTS && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.HORIZONTAL_PIVOTS && ( - - )} - {selectedTab === DATA_CUBE_EDITOR_TAB.CODE && ( - - )} -
+ return ( + <> +
+
+ {tabs.map((tab) => ( + + ))}
-
- - - +
+ {selectedTab === DataCubeEditorTab.GENERAL_PROPERTIES && ( + + )} + {selectedTab === DataCubeEditorTab.COLUMN_PROPERTIES && ( + + )} + {selectedTab === DataCubeEditorTab.FILTER && ( + + )} + {selectedTab === DataCubeEditorTab.EXTENDED_COLUMNS && ( + + )} + {selectedTab === DataCubeEditorTab.COLUMNS && ( + + )} + {selectedTab === DataCubeEditorTab.SORTS && ( + + )} + {selectedTab === DataCubeEditorTab.VERTICAL_PIVOTS && ( + + )} + {selectedTab === DataCubeEditorTab.HORIZONTAL_PIVOTS && ( + + )} + {selectedTab === DataCubeEditorTab.CODE && ( + + )}
- - ); - }, -); +
+
+ + + +
+ + ); +}); diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx index 494606d536..c2a49863b9 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorCodePanel.tsx @@ -18,12 +18,12 @@ import { observer } from 'mobx-react-lite'; import { DataCubeIcon } from '@finos/legend-art'; import { useEffect } from 'react'; import { useREPLStore } from '../../REPLStoreProvider.js'; -import { WIP_Badge } from './DataCubeEditorShared.js'; +import { FormBadge_WIP } from '../../repl/Form.js'; // const DataCubeCodeEditor = observer(() => { -// const replStore = useREPLStore(); -// const applicationStore = replStore.applicationStore; -// const dataCubeState = replStore.dataCubeState; +// const repl = userepl(); +// const application = repl.application; +// const dataCubeState = repl.dataCubeState; // const queryEditorState = dataCubeState.editor.codePanel.queryEditorState; // const onDidChangeModelContentEventDisposer = useRef( // undefined, @@ -42,10 +42,10 @@ import { WIP_Badge } from './DataCubeEditorShared.js'; // () => // debounce((): void => { // flowResult(dataCubeState.editor.codePanel.parseQuery()).catch( -// replStore.applicationStore.logUnhandledError, +// repl.application.logUnhandledError, // ); // }, 1000), -// [dataCubeState, replStore.applicationStore.logUnhandledError], +// [dataCubeState, repl.application.logUnhandledError], // ); // if (editor) { @@ -111,7 +111,7 @@ import { WIP_Badge } from './DataCubeEditorShared.js'; // const _editor = monacoEditorAPI.create(element, { // ...getBaseCodeEditorOptions(), // language: CODE_EDITOR_LANGUAGE.PURE, -// theme: applicationStore.layoutService +// theme: application.layoutService // .TEMPORARY__isLightColorThemeEnabled // ? CODE_EDITOR_THEME.BUILT_IN__VSCODE_LIGHT // : CODE_EDITOR_THEME.DEFAULT_DARK, @@ -119,7 +119,7 @@ import { WIP_Badge } from './DataCubeEditorShared.js'; // setEditor(_editor); // } // }, [ -// applicationStore.layoutService.TEMPORARY__isLightColorThemeEnabled, +// application.layoutService.TEMPORARY__isLightColorThemeEnabled, // editor, // ]); @@ -143,12 +143,12 @@ import { WIP_Badge } from './DataCubeEditorShared.js'; // }); export const DataCubeEditorCodePanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.sorts; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.sorts; // const executeLambda = (): void => { // // TODO: @akphi // // flowResult(dataCubeState.executeLambda()).catch( - // // editorStore.applicationStore.logUnhandledError, + // // editorStore.application.logUnhandledError, // // ); // }; @@ -162,7 +162,7 @@ export const DataCubeEditorCodePanel = observer(() => {
Code - +
diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx index a6269a8e56..bb56815db6 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorColumnPropertiesPanel.tsx @@ -18,17 +18,17 @@ import { cn, DataCubeIcon, useDropdownMenu } from '@finos/legend-art'; import { observer } from 'mobx-react-lite'; import { useREPLStore } from '../../REPLStoreProvider.js'; import { - Advanced_Badge, - DataCubeEditorCheckbox, - DataCubeEditorColorPickerButton, - DataCubeEditorDropdownMenu, - DataCubeEditorDropdownMenuItem, - DataCubeEditorDropdownMenuItemSeparator, - DataCubeEditorDropdownMenuTrigger, - DataCubeEditorNumberInput, - DataCubeEditorTextInput, - WIP_Badge, -} from './DataCubeEditorShared.js'; + FormBadge_Advanced, + FormCheckbox, + FormColorPickerButton, + FormDropdownMenu, + FormDropdownMenuItem, + FormDropdownMenuItemSeparator, + FormDropdownMenuTrigger, + FormNumberInput, + FormTextInput, + FormBadge_WIP, +} from '../../repl/Form.js'; import { DataCubeAggregateFunction, DataCubeColumnDataType, @@ -44,10 +44,12 @@ import { DEFAULT_COLUMN_WIDTH, DEFAULT_URL_LABEL_QUERY_PARAM, } from '../../../stores/dataCube/core/DataCubeQueryEngine.js'; +import { DocumentationKey } from '../../../application/LegendREPLDocumentation.js'; +import { DocumentationPanelLink } from '../../repl/DocumentationPanel.js'; export const DataCubeEditorColumnPropertiesPanel = observer(() => { - const replStore = useREPLStore(); - const dataCube = replStore.dataCube; + const repl = useREPLStore(); + const dataCube = repl.dataCube; const panel = dataCube.editor.columnProperties; const gridConfiguration = dataCube.editor.generalProperties.configuration; const selectedColumn = panel.selectedColumn; @@ -101,14 +103,14 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
- panel.setShowAdvancedSettings(!panel.showAdvancedSettings) } /> - +
@@ -117,7 +119,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
Choose Column:
- @@ -131,13 +133,10 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
)}
- - + + {panel.configurableColumns.map((column) => ( - { panel.setSelectedColumnName(column.name); @@ -150,9 +149,9 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
{column.dataType}
-
+ ))} -
+ {panel.showAdvancedSettings && selectedColumn && ( <>
@@ -160,22 +159,19 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
Kind:
- {selectedColumn.kind} - - + + {[ DataCubeColumnKind.DIMENSION, DataCubeColumnKind.MEASURE, ].map((kind) => ( - { selectedColumn.setKind(kind); @@ -183,11 +179,15 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {kind} - + ))} - - - + + + +
)} @@ -201,7 +201,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
Display Name:
- { @@ -219,7 +219,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
Number Format:
- {
Decimal places
- { ) } /> - {
Number Scale:
- {selectedColumn.numberScale ?? '(None)'} - - + @@ -277,7 +277,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { DataCubeNumberScale.TRILLIONS, DataCubeNumberScale.AUTO, ].map((scale) => ( - { selectedColumn.setNumberScale(scale); @@ -285,23 +285,23 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {scale ?? '(None)'} - + ))} - +
Aggregation Type:
- {selectedColumn.aggregateFunction ?? '(None)'} - - + @@ -312,7 +312,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { DataCubeAggregateFunction.MIN, DataCubeAggregateFunction.MAX, ].map((fn) => ( - { selectedColumn.setAggregateFunction(fn); @@ -320,17 +320,17 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {fn} - + ))} - - + +
Exclude from HPivot?
- selectedColumn.setExcludedFromHorizontalPivot( @@ -339,7 +339,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { } disabled={true} /> - +
)} @@ -349,8 +349,14 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
Dislay as Link? +
- selectedColumn.setDisplayAsLink( @@ -362,7 +368,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => {
Use Parameter in Link as Label:
- {
Visibility:
- selectedColumn.setBlur(!selectedColumn.blur)} disabled={selectedColumn.hideFromView} /> - {
Pin:
- {selectedColumn.pinned ?? '(None)'} - - + + {[ undefined, DataCubeColumnPinPlacement.LEFT, DataCubeColumnPinPlacement.RIGHT, ].map((placement) => ( - { selectedColumn.setPinned(placement); @@ -424,16 +427,16 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {placement ?? '(None)'} - + ))} - +
Width:
- { }} /> - { }} />
- { } /> - { }} />
- { disabled={selectedColumn.fixedWidth !== undefined} />
- {
Font:
- {selectedColumn.fontFamily ?? gridConfiguration.fontFamily} - - + + {[ DataCubeFont.ARIAL, DataCubeFont.ROBOTO, DataCubeFont.ROBOTO_CONDENSED, ].map((font) => ( - { selectedColumn.setFontFamily(font); @@ -570,15 +570,15 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {font} - + ))} - + {[ DataCubeFont.GEORGIA, DataCubeFont.ROBOTO_SERIF, DataCubeFont.TIMES_NEW_ROMAN, ].map((font) => ( - { selectedColumn.setFontFamily(font); @@ -586,15 +586,15 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {font} - + ))} - + {[ DataCubeFont.JERBRAINS_MONO, DataCubeFont.ROBOTO_MONO, DataCubeFont.UBUNTU_MONO, ].map((font) => ( - { selectedColumn.setFontFamily(font); @@ -602,17 +602,17 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {font} - + ))} - + - {selectedColumn.fontSize ?? gridConfiguration.fontSize} - - + @@ -620,7 +620,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 48, 72, ].map((size) => ( - { selectedColumn.setFontSize(size); @@ -628,9 +628,9 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { }} > {size} - + ))} - +
- @@ -723,7 +723,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { DataCubeFontFormatUnderlineVariant.DOUBLE, DataCubeFontFormatUnderlineVariant.WAVY, ].map((variant) => ( - { @@ -760,9 +760,9 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { >                 
- + ))} - + - + {[ DataCubeFontCase.LOWERCASE, DataCubeFontCase.UPPERCASE, DataCubeFontCase.CAPITALIZE, ].map((fontCase) => ( - { @@ -854,9 +851,9 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { > {fontCase}
- + ))} - +
@@ -945,7 +942,7 @@ export const DataCubeEditorColumnPropertiesPanel = observer(() => { Foreground:
- { />
- { />
- { />
- { Background:
- { />
- { />
- { />
- { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.columns; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.columns; useEffect(() => () => panel.propagateColumnSelectionChanges(), [panel]); @@ -40,7 +40,7 @@ export const DataCubeEditorColumnsPanel = observer(() => {
- { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.sorts; - - useEffect(() => {}, [panel]); // TODO: @akphi - remove this dummy useEffect - - return ( -
-
-
- -
-
- Developer - -
-
-
-
- ); -}); diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx index 96377e589a..5e7f5d534a 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorExtendedColumnsPanel.tsx @@ -18,11 +18,11 @@ import { DataCubeIcon } from '@finos/legend-art'; import { observer } from 'mobx-react-lite'; import { useREPLStore } from '../../REPLStoreProvider.js'; import { useEffect } from 'react'; -import { WIP_Badge } from './DataCubeEditorShared.js'; +import { FormBadge_WIP } from '../../repl/Form.js'; export const DataCubeEditorExtendedColumnsPanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.sorts; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.sorts; useEffect(() => {}, [panel]); // TODO: @akphi - remove this dummy useEffect @@ -34,7 +34,7 @@ export const DataCubeEditorExtendedColumnsPanel = observer(() => {
Extended Columns - +
diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorFilterPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorFilterPanel.tsx index 5554f46fb0..18a8c903c1 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorFilterPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorFilterPanel.tsx @@ -18,11 +18,11 @@ import { DataCubeIcon } from '@finos/legend-art'; import { observer } from 'mobx-react-lite'; import { useREPLStore } from '../../REPLStoreProvider.js'; import { useEffect } from 'react'; -import { WIP_Badge } from './DataCubeEditorShared.js'; +import { FormBadge_WIP } from '../../repl/Form.js'; export const DataCubeEditorFilterPanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.sorts; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.sorts; useEffect(() => {}, [panel]); // TODO: @akphi - remove this dummy useEffect @@ -34,7 +34,7 @@ export const DataCubeEditorFilterPanel = observer(() => {
Filter - +
diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.tsx index 64f38a7d39..bcf739e395 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorGeneralPropertiesPanel.tsx @@ -32,20 +32,20 @@ import { DEFAULT_ZERO_FOREGROUND_COLOR, } from '../../../stores/dataCube/core/DataCubeQueryEngine.js'; import { - DataCubeEditorCheckbox, - DataCubeEditorColorPickerButton, - DataCubeEditorDropdownMenu, - DataCubeEditorDropdownMenuItem, - DataCubeEditorDropdownMenuItemSeparator, - DataCubeEditorDropdownMenuTrigger, - DataCubeEditorTextInput, - DataCubeEditorNumberInput, - WIP_Badge, -} from './DataCubeEditorShared.js'; + FormCheckbox, + FormColorPickerButton, + FormDropdownMenu, + FormDropdownMenuItem, + FormDropdownMenuItemSeparator, + FormDropdownMenuTrigger, + FormTextInput, + FormNumberInput, + FormBadge_WIP, +} from '../../repl/Form.js'; export const DataCubeEditorGeneralPropertiesPanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.generalProperties; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.generalProperties; const configuration = panel.configuration; const [ openInitialExpandLevelDropdown, @@ -91,7 +91,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => {
Report Title:
- { @@ -104,19 +104,19 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => {
Initially Expand to Level:
- {configuration.initialExpandLevel ?? '(None)'} - - + {[undefined, 1, 2, 3, 4, 5, 6, 7, 8].map((level) => ( - { configuration.setInitialExpandLevel(level); @@ -124,17 +124,17 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { }} > {level ?? '(None)'} - + ))} - - + +
Show Root Aggregation?
- configuration.setShowRootAggregation( @@ -143,28 +143,28 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { } disabled={true} /> - +
Show Leaf Count?
- configuration.setShowLeafCount(!configuration.showLeafCount) } disabled={true} /> - +
Show Lines?
- @@ -172,8 +172,8 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { } disabled={true} /> - - + { ) } /> - { } />
- {
Show Selection Stats:
- {'(None)'} - - + + {[ DataCubeSelectionStat.SUM, DataCubeSelectionStat.AVERAGE, @@ -224,7 +221,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { DataCubeSelectionStat.MIN, DataCubeSelectionStat.MAX, ].map((operation) => ( - { // TODO @@ -232,17 +229,17 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { }} > {operation} - + ))} - - + +
Row Limit:
- {
- @@ -276,7 +273,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => {
Hightlight Rows:
- { @@ -288,7 +285,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { } }} /> - { } }} /> - { } />
{`row(s)`}
- {
Default Font:
- {configuration.fontFamily} - - + + {[ DataCubeFont.ARIAL, DataCubeFont.ROBOTO, DataCubeFont.ROBOTO_CONDENSED, ].map((font) => ( - { configuration.setFontFamily(font); @@ -352,15 +346,15 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { }} > {font} - + ))} - + {[ DataCubeFont.GEORGIA, DataCubeFont.ROBOTO_SERIF, DataCubeFont.TIMES_NEW_ROMAN, ].map((font) => ( - { configuration.setFontFamily(font); @@ -368,15 +362,15 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { }} > {font} - + ))} - + {[ DataCubeFont.JERBRAINS_MONO, DataCubeFont.ROBOTO_MONO, DataCubeFont.UBUNTU_MONO, ].map((font) => ( - { configuration.setFontFamily(font); @@ -384,25 +378,22 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { }} > {font} - + ))} - + - {configuration.fontSize} - - + + {[ 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 32, 36, 48, 72, ].map((size) => ( - { configuration.setFontSize(size); @@ -410,9 +401,9 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { }} > {size} - + ))} - +
- @@ -486,7 +477,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { DataCubeFontFormatUnderlineVariant.DOUBLE, DataCubeFontFormatUnderlineVariant.WAVY, ].map((variant) => ( - { @@ -520,9 +511,9 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { >                 
- + ))} - + - + {[ DataCubeFontCase.LOWERCASE, DataCubeFontCase.UPPERCASE, DataCubeFontCase.CAPITALIZE, ].map((fontCase) => ( - { @@ -598,9 +586,9 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { > {fontCase}
- + ))} - +
@@ -680,7 +668,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { Foreground:
- @@ -689,7 +677,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { />
- @@ -698,7 +686,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { />
- @@ -707,7 +695,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { />
- @@ -721,7 +709,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { Background:
- @@ -730,7 +718,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { />
- @@ -739,7 +727,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { />
- @@ -748,7 +736,7 @@ export const DataCubeEditorGeneralPropertiesPanel = observer(() => { />
- diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.tsx index 77215eb6dd..b36cf4fbdf 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorHorizontalPivotsPanel.tsx @@ -18,11 +18,11 @@ import { DataCubeIcon } from '@finos/legend-art'; import { observer } from 'mobx-react-lite'; import { useREPLStore } from '../../REPLStoreProvider.js'; import { useEffect } from 'react'; -import { WIP_Badge } from './DataCubeEditorShared.js'; +import { FormBadge_WIP } from '../../repl/Form.js'; export const DataCubeEditorHorizontalPivotsPanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.sorts; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.sorts; useEffect(() => {}, [panel]); // TODO: @akphi - remove this dummy useEffect @@ -34,7 +34,7 @@ export const DataCubeEditorHorizontalPivotsPanel = observer(() => {
Horizontal Pivots - +
diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx index c9bf37446a..bb20dc2e4b 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorSortsPanel.tsx @@ -27,7 +27,7 @@ import type { DataCubeEditorColumnsSelectorState } from '../../../stores/dataCub import type { DataCubeEditorSortColumnState } from '../../../stores/dataCube/editor/DataCubeEditorSortsPanelState.js'; import { DataCubeQuerySortOperation } from '../../../stores/dataCube/core/DataCubeQueryEngine.js'; import { IllegalStateError } from '@finos/legend-shared'; -import { WIP_Badge } from './DataCubeEditorShared.js'; +import { FormBadge_WIP } from '../../repl/Form.js'; function getSortDirectionLabel(operation: DataCubeQuerySortOperation) { switch (operation) { @@ -89,7 +89,7 @@ const SortDirectionDropdown = observer( disabled={true} > {`Ascending (abs)`} - + {`Descending (abs)`} - +
@@ -114,8 +114,8 @@ const SortDirectionDropdown = observer( ); export const DataCubeEditorSortsPanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.sorts; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.sorts; return (
diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorVerticalPivotsPanel.tsx b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorVerticalPivotsPanel.tsx index a528e51759..0303ec5dcf 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorVerticalPivotsPanel.tsx +++ b/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorVerticalPivotsPanel.tsx @@ -20,8 +20,8 @@ import { useREPLStore } from '../../REPLStoreProvider.js'; import { DataCubeEditorColumnsSelector } from './DataCubeEditorColumnsSelector.js'; export const DataCubeEditorVerticalPivotsPanel = observer(() => { - const replStore = useREPLStore(); - const panel = replStore.dataCube.editor.verticalPivots; + const repl = useREPLStore(); + const panel = repl.dataCube.editor.verticalPivots; return (
diff --git a/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGrid.tsx b/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGrid.tsx index d0b292feb1..4916f9a249 100644 --- a/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGrid.tsx +++ b/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGrid.tsx @@ -15,7 +15,6 @@ */ import { observer } from 'mobx-react-lite'; -import { LicenseManager } from '@ag-grid-enterprise/core'; import { ClientSideRowModelModule } from '@ag-grid-community/client-side-row-model'; import { ServerSideRowModelModule } from '@ag-grid-enterprise/server-side-row-model'; import { RowGroupingModule } from '@ag-grid-enterprise/row-grouping'; @@ -26,7 +25,6 @@ import { ColumnsToolPanelModule } from '@ag-grid-enterprise/column-tool-panel'; import { AgGridReact } from '@ag-grid-community/react'; import { CsvExportModule } from '@ag-grid-community/csv-export'; import { ExcelExportModule } from '@ag-grid-enterprise/excel-export'; -import { useEffect } from 'react'; import { useREPLStore } from '../../REPLStoreProvider.js'; import { DataCubeIcon, Switch, cn, Global, css } from '@finos/legend-art'; import { @@ -37,7 +35,7 @@ import { generateFontUnderlineUtilityClassName, generateTextAlignUtilityClassName, generateTextColorUtilityClassName, - INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME, + INTERNAL__GridClientUtilityCssClassName, } from '../../../stores/dataCube/grid/DataCubeGridClientEngine.js'; import { RangeSelectionModule } from '@ag-grid-enterprise/range-selection'; import { @@ -62,7 +60,7 @@ import { generateBaseGridOptions } from '../../../stores/dataCube/grid/DataCubeG const __INTERNAL__original_console_error = console.error; // eslint-disable-line no-console // eslint-disable-next-line no-console console.error = (message?: unknown, ...agrs: unknown[]): void => { - console.log(`%c ${message}`, 'color: silver'); // eslint-disable-line no-console + console.debug(`%c ${message}`, 'color: silver'); // eslint-disable-line no-console }; function textColorStyle( @@ -79,7 +77,7 @@ function textColorStyle( ) .map( (color) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateTextColorUtilityClassName(color, key)}{color:${color};}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateTextColorUtilityClassName(color, key)}{color:${color};}`, ) .join('\n')}`; } @@ -98,21 +96,21 @@ function backgroundColorStyle( ) .map( (color) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateBackgroundColorUtilityClassName(color, key)}{background-color:${color};}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateBackgroundColorUtilityClassName(color, key)}{background-color:${color};}`, ) .join('\n')};`; } export const DataCubeGridStyleController = observer(() => { - const replStore = useREPLStore(); - const dataCube = replStore.dataCube; + const repl = useREPLStore(); + const dataCube = repl.dataCube; const grid = dataCube.grid; const configuration = grid.queryConfiguration; return ( { ? grid.queryConfiguration.gridLineColor : 'transparent'}; } - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.HIGHLIGHT_ROW} { + .${INTERNAL__GridClientUtilityCssClassName.ROOT} + .${INTERNAL__GridClientUtilityCssClassName.HIGHLIGHT_ROW} { background-color: ${grid.queryConfiguration.alternateRows ? grid.queryConfiguration.alternateRowsColor : DEFAULT_ROW_BACKGROUND_COLOR}; @@ -140,7 +138,7 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (fontFamily) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateFontFamilyUtilityClassName(fontFamily)}{font-family:${fontFamily},sans-serif;}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateFontFamilyUtilityClassName(fontFamily)}{font-family:${fontFamily},sans-serif;}`, ) .join('\n')} ${[ @@ -150,7 +148,7 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (fontFamily) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateFontFamilyUtilityClassName(fontFamily)}{font-family:${fontFamily},serif;}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateFontFamilyUtilityClassName(fontFamily)}{font-family:${fontFamily},serif;}`, ) .join('\n')} ${[ @@ -160,10 +158,10 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (fontFamily) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateFontFamilyUtilityClassName(fontFamily)}{font-family:${fontFamily},monospace;}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateFontFamilyUtilityClassName(fontFamily)}{font-family:${fontFamily},monospace;}`, ) .join('\n')} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_BOLD} { + .${INTERNAL__GridClientUtilityCssClassName.FONT_BOLD} { font-weight: 700; } ${[ @@ -172,11 +170,11 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (fontSize) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateFontSizeUtilityClassName(fontSize)}{font-size:${fontSize}px;}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateFontSizeUtilityClassName(fontSize)}{font-size:${fontSize}px;}`, ) .join('\n')} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_ITALIC} { + .${INTERNAL__GridClientUtilityCssClassName.ROOT} + .${INTERNAL__GridClientUtilityCssClassName.FONT_ITALIC} { font-style: italic; } ${[ @@ -188,10 +186,10 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (variant) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateFontUnderlineUtilityClassName(variant)}{text-decoration:underline ${variant};}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateFontUnderlineUtilityClassName(variant)}{text-decoration:underline ${variant};}`, ) .join('\n')} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_STRIKETHROUGH} { + .${INTERNAL__GridClientUtilityCssClassName.ROOT} .${INTERNAL__GridClientUtilityCssClassName.FONT_STRIKETHROUGH} { text-decoration: line-through; } ${[ @@ -201,7 +199,7 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (fontCase) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateFontCaseUtilityClassName(fontCase)}{text-transform:${fontCase};}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateFontCaseUtilityClassName(fontCase)}{text-transform:${fontCase};}`, ) .join('\n')} ${[ @@ -211,7 +209,7 @@ export const DataCubeGridStyleController = observer(() => { ] .map( (alignment) => - `.${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} .${generateTextAlignUtilityClassName(alignment)}{text-align:${alignment};}`, + `.${INTERNAL__GridClientUtilityCssClassName.ROOT} .${generateTextAlignUtilityClassName(alignment)}{text-align:${alignment};}`, ) .join('\n')}; ${backgroundColorStyle('normal', configuration)} @@ -222,12 +220,12 @@ export const DataCubeGridStyleController = observer(() => { ${textColorStyle('zero', configuration)} ${textColorStyle('negative', configuration)} ${textColorStyle('error', configuration)} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.BLUR} { + .${INTERNAL__GridClientUtilityCssClassName.ROOT} + .${INTERNAL__GridClientUtilityCssClassName.BLUR} { filter: blur(3px); } - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.ROOT} - .${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.BLUR}:hover { + .${INTERNAL__GridClientUtilityCssClassName.ROOT} + .${INTERNAL__GridClientUtilityCssClassName.BLUR}:hover { filter: none; } `} @@ -236,22 +234,28 @@ export const DataCubeGridStyleController = observer(() => { }); const DataCubeGridScroller = observer(() => { - const replStore = useREPLStore(); - const dataCube = replStore.dataCube; + const repl = useREPLStore(); + const dataCube = repl.dataCube; const grid = dataCube.grid; const scrollHintText = grid.scrollHintText; const gridClientSideBarElement = document.querySelector( '.data-cube-grid .ag-side-bar', ); + const gridVerticalScrollbar = document.querySelector( + '.data-cube-grid .ag-body-vertical-scroll', + ); return (
@@ -261,8 +265,8 @@ const DataCubeGridScroller = observer(() => { }); const DataCubeGridStatusBar = observer(() => { - const replStore = useREPLStore(); - const dataCube = replStore.dataCube; + const repl = useREPLStore(); + const dataCube = repl.dataCube; const grid = dataCube.grid; return ( @@ -332,8 +336,8 @@ const DataCubeGridStatusBar = observer(() => { }); const DataCubeGridClient = observer(() => { - const replStore = useREPLStore(); - const dataCube = replStore.dataCube; + const repl = useREPLStore(); + const dataCube = repl.dataCube; const grid = dataCube.grid; return ( @@ -370,22 +374,10 @@ const DataCubeGridClient = observer(() => { ); }); -export const DataCubeGrid = observer(() => { - const replStore = useREPLStore(); - const dataCube = replStore.dataCube; - const grid = dataCube.grid; - - useEffect(() => { - if (grid.clientLicenseKey) { - LicenseManager.setLicenseKey(grid.clientLicenseKey); - } - }, [grid.clientLicenseKey]); - - return ( -
- - - -
- ); -}); +export const DataCubeGrid = observer(() => ( +
+ + + +
+)); diff --git a/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGridShared.tsx b/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGridShared.tsx index 1d862ae97b..1ca690638c 100644 --- a/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGridShared.tsx +++ b/packages/legend-application-repl/src/components/dataCube/grid/DataCubeGridShared.tsx @@ -18,7 +18,7 @@ import { useGridMenuItem, type CustomMenuItemProps, } from '@ag-grid-community/react'; -import { WIP_Badge } from '../editor/DataCubeEditorShared.js'; +import { FormBadge_WIP } from '../../repl/Form.js'; export function WIP_GridMenuItem({ name, @@ -34,7 +34,7 @@ export function WIP_GridMenuItem({ {name} - + diff --git a/packages/legend-application-repl/src/components/repl/Alert.tsx b/packages/legend-application-repl/src/components/repl/Alert.tsx new file mode 100644 index 0000000000..534654b50d --- /dev/null +++ b/packages/legend-application-repl/src/components/repl/Alert.tsx @@ -0,0 +1,138 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + ActionAlertType, + useApplicationStore, + type ActionAlertInfo, +} from '@finos/legend-application'; +import { DataCubeIcon, Dialog } from '@finos/legend-art'; +import { noop } from '@finos/legend-shared'; +import { observer } from 'mobx-react-lite'; + +export function ErrorAlert(props: { + message: string; + text?: string | undefined; +}) { + const { message, text } = props; + return ( +
+
+ +
{message}
+
+
{text}
+
+ ); +} + +const ActionAlertContent = observer((props: { info: ActionAlertInfo }) => { + const { info } = props; + const { title, message, prompt, type, onClose, onEnter, actions } = info; + const application = useApplicationStore(); + const handleClose = (): void => { + onClose?.(); + application.alertService.setActionAlertInfo(undefined); + }; + const handleEnter = (): void => onEnter?.(); + const handleSubmit = (): void => { + actions.find((action) => action.default)?.handler?.(); + handleClose(); + }; + + return ( + +
+
+
{title ?? ''}
+
+
{ + event.preventDefault(); + handleSubmit(); + }} + > +
+ {type === ActionAlertType.STANDARD && ( + + )} + {type === ActionAlertType.CAUTION && ( + + )} + {type === ActionAlertType.ERROR && ( + + )} +
{message}
+
+
{prompt}
+ {actions.map((action, idx) => { + // NOTE: need to prevent default for the submit button, otherwise, we would get the warning "Form submission canceled because the form is not connected" + // See https://stackoverflow.com/a/58234405 + const handler: React.ReactEventHandler = ( + e, + ): void => { + e.preventDefault(); + action.handler?.(); + handleClose(); + }; + return ( + + ); + })} + +
+
+ ); +}); + +export const ActionAlert = observer(() => { + const application = useApplicationStore(); + const info = application.alertService.actionAlertInfo; + + if (!info) { + return null; + } + return ; +}); diff --git a/packages/legend-application-repl/src/components/repl/DocumentationPanel.tsx b/packages/legend-application-repl/src/components/repl/DocumentationPanel.tsx new file mode 100644 index 0000000000..5d69738591 --- /dev/null +++ b/packages/legend-application-repl/src/components/repl/DocumentationPanel.tsx @@ -0,0 +1,88 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + shouldDisplayVirtualAssistantDocumentationEntry, + useApplicationStore, +} from '@finos/legend-application'; +import { cn, DataCubeIcon, MarkdownTextViewer } from '@finos/legend-art'; +import { isString } from '@finos/legend-shared'; +import { observer } from 'mobx-react-lite'; +import { useREPLStore } from '../REPLStoreProvider.js'; + +export const DocumentationPanelLink: React.FC<{ + documentationKey: string; + title?: string | undefined; + className?: string | undefined; +}> = ({ documentationKey, title, className }) => { + const application = useApplicationStore(); + const repl = useREPLStore(); + const documentationEntry = + application.documentationService.getDocEntry(documentationKey); + const openDocLink: React.MouseEventHandler = ( + event, + ): void => { + event.preventDefault(); + event.stopPropagation(); + const entry = + application.documentationService.getDocEntry(documentationKey); + if (entry) { + if (shouldDisplayVirtualAssistantDocumentationEntry(entry)) { + application.assistantService.openDocumentationEntry(documentationKey); + repl.documentationDisplay.open(); + } else if (entry.url) { + application.navigationService.navigator.visitAddress(entry.url); + } + } + }; + + if ( + !documentationEntry || + (!documentationEntry.url && + !shouldDisplayVirtualAssistantDocumentationEntry(documentationEntry)) + ) { + return null; + } + return ( +
+ +
+ ); +}; + +export const DocumentationPanel = observer(() => { + const application = useApplicationStore(); + const entry = application.assistantService.currentDocumentationEntry; + + if (!entry) { + return null; + } + return ( +
+
{entry.title}
+ {entry.content && + (isString(entry.content) ? ( +
{entry.content}
+ ) : ( + + ))} +
+ ); +}); diff --git a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorShared.tsx b/packages/legend-application-repl/src/components/repl/Form.tsx similarity index 95% rename from packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorShared.tsx rename to packages/legend-application-repl/src/components/repl/Form.tsx index 24c12a7cac..e21c40de8b 100644 --- a/packages/legend-application-repl/src/components/dataCube/editor/DataCubeEditorShared.tsx +++ b/packages/legend-application-repl/src/components/repl/Form.tsx @@ -34,7 +34,7 @@ import { import { toNumber } from '@finos/legend-shared'; import React, { forwardRef, useEffect, useState } from 'react'; -export function WIP_Badge() { +export function FormBadge_WIP() { return (
& { min?: number | undefined; @@ -146,7 +146,7 @@ export const DataCubeEditorNumberInput = forwardRef( }, ); -export function DataCubeEditorTextInput( +export function FormTextInput( props: React.InputHTMLAttributes, ) { const { className, ...otherProps } = props; @@ -161,7 +161,7 @@ export function DataCubeEditorTextInput( ); } -export function DataCubeEditorCheckbox( +export function FormCheckbox( props: CheckboxProps & { label?: React.ReactNode; onChange: () => void; @@ -202,7 +202,7 @@ export function DataCubeEditorCheckbox( ); } -export function DataCubeEditorDropdownMenuTrigger( +export function FormDropdownMenuTrigger( props: React.ButtonHTMLAttributes, ) { const { children, className, ...otherProps } = props; @@ -224,7 +224,7 @@ export function DataCubeEditorDropdownMenuTrigger( ); } -export function DataCubeEditorDropdownMenu(props: DropdownMenuProps) { +export function FormDropdownMenu(props: DropdownMenuProps) { const { className, ...otherProps } = props; return ( ; } -function DataCubeEditorColorPicker(props: { +function FormColorPicker(props: { color: string; onChange: (value: string) => void; onClose: () => void; @@ -430,7 +430,7 @@ function DataCubeEditorColorPicker(props: { ); } -export function DataCubeEditorColorPickerButton(props: { +export function FormColorPickerButton(props: { color: string; onChange: (value: string) => void; className?: string | undefined; @@ -471,7 +471,7 @@ export function DataCubeEditorColorPickerButton(props: { transformOrigin={{ vertical: 'center', horizontal: 'left' }} onClose={() => setAnchorEl(null)} > - setAnchorEl(null)} diff --git a/packages/legend-application-repl/src/components/repl/LayoutManager.tsx b/packages/legend-application-repl/src/components/repl/LayoutManager.tsx new file mode 100644 index 0000000000..d065316c8b --- /dev/null +++ b/packages/legend-application-repl/src/components/repl/LayoutManager.tsx @@ -0,0 +1,190 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { useState } from 'react'; +import { DataCubeIcon, ResizableAndDraggableBox, cn } from '@finos/legend-art'; +import { + WINDOW_DEFAULT_HEIGHT, + WINDOW_DEFAULT_MIN_HEIGHT, + WINDOW_DEFAULT_MIN_WIDTH, + WINDOW_DEFAULT_OFFSET, + WINDOW_DEFAULT_WIDTH, + type LayoutManagerState, + type WindowState, +} from '../../stores/LayoutManagerState.js'; +import { observer } from 'mobx-react-lite'; + +export const Window = (props: { + parent?: React.RefObject | undefined; + layoutManagerState: LayoutManagerState; + windowState: WindowState; +}) => { + const { parent, layoutManagerState, windowState } = props; + const configuration = windowState.configuration.window; + const [windowSpec, setWindowSpec] = useState(() => { + const x = configuration.x ?? WINDOW_DEFAULT_OFFSET; + const y = configuration.y ?? WINDOW_DEFAULT_OFFSET; + const width = configuration.width ?? WINDOW_DEFAULT_WIDTH; + const height = configuration.height ?? WINDOW_DEFAULT_HEIGHT; + + const parentElement = parent?.current ?? document.body; + + const { width: containerWidth, height: containerHeight } = + parentElement.getBoundingClientRect(); + + if (configuration.center) { + const finalWidth = + width + WINDOW_DEFAULT_OFFSET * 2 > containerWidth + ? containerWidth - WINDOW_DEFAULT_OFFSET * 2 + : width; + const finalHeight = + height + WINDOW_DEFAULT_OFFSET * 2 > containerHeight + ? containerHeight - WINDOW_DEFAULT_OFFSET * 2 + : height; + return { + x: (containerWidth - finalWidth) / 2, + y: (containerHeight - finalHeight) / 2, + width: finalWidth, + height: finalHeight, + }; + } + + const finalWidth = + width + Math.abs(x) + WINDOW_DEFAULT_OFFSET > containerWidth + ? containerWidth - Math.abs(x) - WINDOW_DEFAULT_OFFSET + : width; + const finalHeight = + height + Math.abs(y) + WINDOW_DEFAULT_OFFSET > containerHeight + ? containerHeight - Math.abs(y) - WINDOW_DEFAULT_OFFSET + : height; + + return { + x: x < 0 ? containerWidth - Math.abs(x) - finalWidth : x, + y: y < 0 ? containerHeight - Math.abs(y) - finalHeight : y, + width: finalWidth, + height: finalHeight, + }; + }); + + return ( + { + setWindowSpec({ ...windowSpec, x: data.x, y: data.y }); + }} + dragHandleClassName={`data-cube__window-${windowState.uuid}`} + onResize={(event, direction, ref, delta, position) => { + setWindowSpec({ + ...position, + width: ref.offsetWidth, + height: ref.offsetHeight, + }); + }} + enableResizing={{ + top: true, + right: true, + bottom: true, + left: true, + topRight: true, + bottomRight: true, + bottomLeft: true, + topLeft: true, + }} + resizeHandleStyles={{ + top: { cursor: 'ns-resize' }, + right: { cursor: 'ew-resize' }, + bottom: { cursor: 'ns-resize' }, + left: { cursor: 'ew-resize' }, + topRight: { + cursor: 'nesw-resize', + width: 14, + height: 14, + top: -7, + right: -7, + }, + bottomRight: { + cursor: 'nwse-resize', + width: 14, + height: 14, + bottom: -7, + right: -7, + }, + bottomLeft: { + cursor: 'nesw-resize', + width: 14, + height: 14, + bottom: -7, + left: -7, + }, + topLeft: { + cursor: 'nwse-resize', + width: 14, + height: 14, + top: -7, + left: -7, + }, + }} + > +
{ + layoutManagerState.bringWindowFront(windowState); + }} + > +
+
{windowState.configuration.title}
+ +
+
+ {windowState.configuration.contentRenderer(windowState.configuration)} +
+
+
+ ); +}; + +export const LayoutManager = observer( + (props: { layoutManagerState: LayoutManagerState }) => { + const { layoutManagerState } = props; + + return ( + <> + {layoutManagerState.windows.map((windowState) => ( + + ))} + + ); + }, +); diff --git a/packages/legend-application-repl/src/components/repl/SettingsPanel.tsx b/packages/legend-application-repl/src/components/repl/SettingsPanel.tsx new file mode 100644 index 0000000000..0d0591d747 --- /dev/null +++ b/packages/legend-application-repl/src/components/repl/SettingsPanel.tsx @@ -0,0 +1,148 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { observer } from 'mobx-react-lite'; +import { DataCubeIcon } from '@finos/legend-art'; +import { useREPLStore } from '../REPLStoreProvider.js'; +import { FormCheckbox, FormNumberInput } from './Form.js'; +import { + DEFAULT_ENABLE_DEBUG_MODE, + DEFAULT_GRID_CLIENT_PURGE_CLOSED_ROW_NODES, + DEFAULT_GRID_CLIENT_ROW_BUFFER, +} from '../../stores/dataCube/DataCubeEngine.js'; +import { useState } from 'react'; + +export const SettingsPanel = observer(() => { + const repl = useREPLStore(); + const dataCubeEngine = repl.dataCubeEngine; + + // NOTE: this makes sure the changes are not applied until saved, but it generates + // a lot of boilerplate code, consider using a more ergonomic approach when we need + // to scale this to more settings. + const [gridClientRowBuffer, setGridClientRowBuffer] = useState( + dataCubeEngine.gridClientRowBuffer, + ); + const [gridClientPurgeClosedRowNodes, setGridClientPurgeClosedRowNodes] = + useState(dataCubeEngine.gridClientPurgeClosedRowNodes); + const [enableDebugMode, setEnableDebugMode] = useState( + dataCubeEngine.enableDebugMode, + ); + const save = () => { + dataCubeEngine.setGridClientRowBuffer(gridClientRowBuffer); + dataCubeEngine.setGridClientPurgeClosedRowNodes( + gridClientPurgeClosedRowNodes, + ); + dataCubeEngine.setEnableDebugMode(enableDebugMode); + }; + const restoreDefaults = () => { + setGridClientRowBuffer(DEFAULT_GRID_CLIENT_ROW_BUFFER); + setGridClientPurgeClosedRowNodes( + DEFAULT_GRID_CLIENT_PURGE_CLOSED_ROW_NODES, + ); + setEnableDebugMode(DEFAULT_ENABLE_DEBUG_MODE); + save(); + }; + + return ( + <> +
+
+
+
+
+ +
+
+ Grid +
+
+
+
+
Refresh Group Node Data
+
+ + setGridClientPurgeClosedRowNodes( + !gridClientPurgeClosedRowNodes, + ) + } + /> +
+
+
+
Row Buffer
+
+ {`Sets the number of rows the grid renders outside of the viewable area. e.g. if the buffer is 10 and your grid is showing 50 rows (as that's all that fits on your screen without scrolling), then the grid will actually render 70 in total (10 extra above and 10 extra below). Then when you scroll, the grid will already have 10 rows ready and waiting to show, no redraw is needed. A low small buffer will make initial draws of the grid faster; whereas a big one will reduce the redraw visible vertically scrolling.`} +
+
+ { + setGridClientRowBuffer( + value ?? DEFAULT_GRID_CLIENT_ROW_BUFFER, + ); + }} + /> +
+
+ +
+ +
+
+
+ +
+
+ Debug +
+
+
+
+
Debug Mode: Enabled
+
+ setEnableDebugMode(!enableDebugMode)} + /> +
+
+
+
+
+ + +
+ + ); +}); diff --git a/packages/legend-application-repl/src/server/models/DataCubeQuery.ts b/packages/legend-application-repl/src/server/DataCubeQuery.ts similarity index 95% rename from packages/legend-application-repl/src/server/models/DataCubeQuery.ts rename to packages/legend-application-repl/src/server/DataCubeQuery.ts index 09924c5b0f..d7acdaf0d4 100644 --- a/packages/legend-application-repl/src/server/models/DataCubeQuery.ts +++ b/packages/legend-application-repl/src/server/DataCubeQuery.ts @@ -49,7 +49,7 @@ export class DataCubeQueryColumn { ); } -enum DATA_CUBE_QUERY_SOURCE_TYPE { +enum DataCubeQuerySourceType { REPL_EXECUTED_QUERY = 'REPLExecutedQuery', } @@ -57,7 +57,7 @@ export class DataCubeQuerySourceREPLExecutedQuery extends DataCubeQuerySource { static readonly serialization = new SerializationFactory( createModelSchema(DataCubeQuerySourceREPLExecutedQuery, { _type: usingConstantValueSchema( - DATA_CUBE_QUERY_SOURCE_TYPE.REPL_EXECUTED_QUERY, + DataCubeQuerySourceType.REPL_EXECUTED_QUERY, ), columns: list(usingModelSchema(DataCubeQueryColumn.serialization.schema)), query: primitive(), @@ -70,7 +70,7 @@ function deserializeQuerySource( json: PlainObject, ): DataCubeQuerySource { switch (json._type) { - case DATA_CUBE_QUERY_SOURCE_TYPE.REPL_EXECUTED_QUERY: + case DataCubeQuerySourceType.REPL_EXECUTED_QUERY: return deserialize( DataCubeQuerySourceREPLExecutedQuery.serialization.schema, json, diff --git a/packages/legend-application-repl/src/server/models/DataCubeEngineModels.ts b/packages/legend-application-repl/src/server/REPLEngine.ts similarity index 89% rename from packages/legend-application-repl/src/server/models/DataCubeEngineModels.ts rename to packages/legend-application-repl/src/server/REPLEngine.ts index d87ec3dc03..4a5ad5e49b 100644 --- a/packages/legend-application-repl/src/server/models/DataCubeEngineModels.ts +++ b/packages/legend-application-repl/src/server/REPLEngine.ts @@ -25,6 +25,16 @@ import { } from '@finos/legend-graph'; import { DataCubeQuery, type DataCubeQueryColumn } from './DataCubeQuery.js'; +export class DataCubeInfrastructureInfo { + gridClientLicense?: string | undefined; + + static readonly serialization = new SerializationFactory( + createModelSchema(DataCubeInfrastructureInfo, { + gridClientLicense: optional(primitive()), + }), + ); +} + export class DataCubeGetQueryCodeInput { query!: V1_ValueSpecification; // TODO: @akphi - consider if we should update this to use Lambda instead pretty?: boolean; @@ -67,9 +77,11 @@ export class DataCubeGetQueryRelationReturnTypeInput { export class DataCubeExecutionInput { query!: V1_Lambda; + debug?: boolean | undefined; static readonly serialization = new SerializationFactory( createModelSchema(DataCubeExecutionInput, { + debug: optional(primitive()), query: usingModelSchema(V1_lambdaModelSchema([])), }), ); @@ -77,6 +89,7 @@ export class DataCubeExecutionInput { export type DataCubeExecutionResult = { result: string; + executedSQL: string; }; export type RelationType = { diff --git a/packages/legend-application-repl/src/server/REPLServerClient.ts b/packages/legend-application-repl/src/server/REPLServerClient.ts index f462e18c26..69a6166ae0 100644 --- a/packages/legend-application-repl/src/server/REPLServerClient.ts +++ b/packages/legend-application-repl/src/server/REPLServerClient.ts @@ -29,7 +29,8 @@ import type { DataCubeExecutionInput, DataCubeExecutionResult, DataCubeGetBaseQueryResult, -} from './models/DataCubeEngineModels.js'; + DataCubeInfrastructureInfo, +} from './REPLEngine.js'; import type { V1_ValueSpecification } from '@finos/legend-graph'; export class REPLServerClient { @@ -50,8 +51,8 @@ export class REPLServerClient { return `${this.baseUrl}/api/dataCube`; } - async getGridClientLicenseKey(): Promise { - return this.networkClient.get(`${this.dataCube}/gridLicenseKey`); + async getInfrastructureInfo(): Promise { + return this.networkClient.get(`${this.dataCube}/infrastructureInfo`); } async getQueryTypeahead( diff --git a/packages/legend-application-repl/src/stores/LayoutManagerState.ts b/packages/legend-application-repl/src/stores/LayoutManagerState.ts new file mode 100644 index 0000000000..70eefc227b --- /dev/null +++ b/packages/legend-application-repl/src/stores/LayoutManagerState.ts @@ -0,0 +1,168 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { GenericLegendApplicationStore } from '@finos/legend-application'; +import { uuid } from '@finos/legend-shared'; +import { + action, + computed, + makeObservable, + observable, + runInAction, +} from 'mobx'; + +export type WindowConfiguration = { + x?: number | undefined; + y?: number | undefined; + width?: number | undefined; + height?: number | undefined; + minWidth?: number | undefined; + minHeight?: number | undefined; + center?: boolean | undefined; +}; + +export class LayoutConfiguration { + title: string; + readonly contentRenderer: (config: LayoutConfiguration) => React.ReactNode; + window: WindowConfiguration = {}; + + constructor( + title: string, + contentRenderer: (config: LayoutConfiguration) => React.ReactNode, + ) { + this.contentRenderer = contentRenderer; + this.title = title; + } +} + +export class WindowState { + readonly uuid = uuid(); + readonly configuration: LayoutConfiguration; + readonly onClose?: (() => void) | undefined; + + constructor( + configuration: LayoutConfiguration, + onClose?: (() => void) | undefined, + ) { + this.configuration = configuration; + this.onClose = onClose; + } +} + +export class LayoutManagerState { + readonly application: GenericLegendApplicationStore; + windows: WindowState[] = []; + + constructor(application: GenericLegendApplicationStore) { + makeObservable(this, { + windows: observable, + newWindow: action, + bringWindowFront: action, + closeWindow: action, + }); + + this.application = application; + } + + newWindow(window: WindowState): void { + this.windows.push(window); + } + + bringWindowFront(window: WindowState): void { + const matchingWindow = this.windows.find((w) => w.uuid === window.uuid); + if (matchingWindow) { + this.windows = this.windows.filter((w) => w.uuid !== window.uuid); + this.windows.push(window); + } + } + + closeWindow(window: WindowState): void { + const matchingWindow = this.windows.find((w) => w.uuid === window.uuid); + if (matchingWindow) { + this.windows = this.windows.filter((w) => w.uuid !== window.uuid); + window.onClose?.(); + } + } +} + +export const WINDOW_DEFAULT_OFFSET = 50; +export const WINDOW_DEFAULT_WIDTH = 800; +export const WINDOW_DEFAULT_HEIGHT = 600; +export const WINDOW_DEFAULT_MIN_WIDTH = 300; +export const WINDOW_DEFAULT_MIN_HEIGHT = 300; + +export const DEFAULT_TOOL_PANEL_WINDOW_CONFIG: WindowConfiguration = { + width: WINDOW_DEFAULT_WIDTH, + height: WINDOW_DEFAULT_HEIGHT, + minWidth: WINDOW_DEFAULT_MIN_WIDTH, + minHeight: WINDOW_DEFAULT_MIN_HEIGHT, + center: true, +}; + +export const DEFAULT_ALERT_WINDOW_CONFIG: WindowConfiguration = { + width: 500, + height: 80, + minWidth: 200, + minHeight: 80, + center: true, +}; + +export class SingletonModeDisplayState { + readonly layoutManagerState: LayoutManagerState; + readonly configuration: LayoutConfiguration; + window?: WindowState | undefined; + + constructor( + layoutManagerState: LayoutManagerState, + title: string, + contentRenderer: (config: LayoutConfiguration) => React.ReactNode, + ) { + makeObservable(this, { + window: observable, + isOpen: computed, + open: action, + close: action, + }); + + this.layoutManagerState = layoutManagerState; + this.configuration = new LayoutConfiguration(title, contentRenderer); + this.configuration.window = DEFAULT_TOOL_PANEL_WINDOW_CONFIG; + } + + get isOpen() { + return Boolean(this.window); + } + + open() { + if (this.window) { + this.layoutManagerState.bringWindowFront(this.window); + } else { + this.window = new WindowState(this.configuration, () => + runInAction(() => { + this.window = undefined; + }), + ); + this.layoutManagerState.newWindow(this.window); + } + } + + close() { + if (this.window) { + this.layoutManagerState.closeWindow(this.window); + this.window = undefined; + } + } +} diff --git a/packages/legend-application-repl/src/stores/LegendREPLApplicationPlugin.ts b/packages/legend-application-repl/src/stores/LegendREPLApplicationPlugin.ts index 41f93a83c9..807a3b1984 100644 --- a/packages/legend-application-repl/src/stores/LegendREPLApplicationPlugin.ts +++ b/packages/legend-application-repl/src/stores/LegendREPLApplicationPlugin.ts @@ -16,6 +16,7 @@ import { LegendApplicationPlugin } from '@finos/legend-application'; import type { LegendREPLPluginManager } from '../application/LegendREPLPluginManager.js'; +import { DocumentationKey } from '../application/LegendREPLDocumentation.js'; export abstract class LegendREPLApplicationPlugin extends LegendApplicationPlugin { /** @@ -27,4 +28,12 @@ export abstract class LegendREPLApplicationPlugin extends LegendApplicationPlugi install(pluginManager: LegendREPLPluginManager): void { pluginManager.registerApplicationPlugin(this); } + + override getExtraRequiredDocumentationKeys(): string[] { + return [ + DocumentationKey.DATA_CUBE_EXTENDED_COLUMN_LEVELS, + DocumentationKey.DATA_CUBE_COLUMN_KINDS, + DocumentationKey.DATA_CUBE_COLUMN_DISPLAY_AS_LINK, + ]; + } } diff --git a/packages/legend-application-repl/src/stores/LegendREPLBaseStore.ts b/packages/legend-application-repl/src/stores/LegendREPLBaseStore.ts index 442ed8ee86..7eef36ab1b 100644 --- a/packages/legend-application-repl/src/stores/LegendREPLBaseStore.ts +++ b/packages/legend-application-repl/src/stores/LegendREPLBaseStore.ts @@ -24,11 +24,11 @@ export type LegendREPLApplicationStore = ApplicationStore< >; export class LegendREPLBaseStore { - readonly applicationStore: LegendREPLApplicationStore; + readonly application: LegendREPLApplicationStore; readonly pluginManager: LegendREPLPluginManager; - constructor(applicationStore: LegendREPLApplicationStore) { - this.applicationStore = applicationStore; - this.pluginManager = applicationStore.pluginManager; + constructor(application: LegendREPLApplicationStore) { + this.application = application; + this.pluginManager = application.pluginManager; } } diff --git a/packages/legend-application-repl/src/stores/REPLStore.ts b/packages/legend-application-repl/src/stores/REPLStore.ts deleted file mode 100644 index 093d76ba9d..0000000000 --- a/packages/legend-application-repl/src/stores/REPLStore.ts +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2020-present, Goldman Sachs - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import type { LegendREPLApplicationStore } from './LegendREPLBaseStore.js'; -import { REPLServerClient } from '../server/REPLServerClient.js'; -import { NetworkClient } from '@finos/legend-shared'; -import { makeObservable, observable } from 'mobx'; -import { DataCubeState } from './dataCube/DataCubeState.js'; -import { DataCubeInfrastructure } from './dataCube/DataCubeInfrastructure.js'; - -export class REPLStore { - readonly applicationStore: LegendREPLApplicationStore; - readonly client: REPLServerClient; - - dataCubeInfrastructure!: DataCubeInfrastructure; - // TODO: when we support multi-view, we would need to support multiple states - dataCube!: DataCubeState; - - constructor(applicationStore: LegendREPLApplicationStore) { - makeObservable(this, { - dataCube: observable, - }); - this.applicationStore = applicationStore; - this.client = new REPLServerClient( - new NetworkClient({ - baseUrl: this.applicationStore.config.useDynamicREPLServer - ? window.location.origin + - this.applicationStore.config.baseAddress.replace('/repl/', '') - : this.applicationStore.config.replUrl, - }), - ); - this.dataCubeInfrastructure = new DataCubeInfrastructure(this); - this.dataCube = new DataCubeState(this); - } -} diff --git a/packages/legend-application-repl/src/stores/REPLStore.tsx b/packages/legend-application-repl/src/stores/REPLStore.tsx new file mode 100644 index 0000000000..41f2be8729 --- /dev/null +++ b/packages/legend-application-repl/src/stores/REPLStore.tsx @@ -0,0 +1,145 @@ +/** + * Copyright (c) 2020-present, Goldman Sachs + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import type { LegendREPLApplicationStore } from './LegendREPLBaseStore.js'; +import { REPLServerClient } from '../server/REPLServerClient.js'; +import { + ActionState, + assertErrorThrown, + LogEvent, + NetworkClient, +} from '@finos/legend-shared'; +import { makeObservable, observable } from 'mobx'; +import { DataCubeState } from './dataCube/DataCubeState.js'; +import { DataCubeEngine } from './dataCube/DataCubeEngine.js'; +import { LicenseManager } from '@ag-grid-enterprise/core'; +import { ActionAlertType, APPLICATION_EVENT } from '@finos/legend-application'; +import { + DEFAULT_ALERT_WINDOW_CONFIG, + LayoutConfiguration, + LayoutManagerState, + SingletonModeDisplayState, + WindowState, +} from './LayoutManagerState.js'; +import { ErrorAlert } from '../components/repl/Alert.js'; +import { DocumentationPanel } from '../components/repl/DocumentationPanel.js'; +import { SettingsPanel } from '../components/repl/SettingsPanel.js'; + +export class REPLStore { + readonly application: LegendREPLApplicationStore; + readonly client: REPLServerClient; + readonly layout: LayoutManagerState; + readonly initState = ActionState.create(); + readonly settingsDisplay: SingletonModeDisplayState; + readonly documentationDisplay: SingletonModeDisplayState; + + dataCubeEngine!: DataCubeEngine; + + // TODO: when we support multi-view, we would need to support multiple states + dataCube!: DataCubeState; + + constructor(application: LegendREPLApplicationStore) { + makeObservable(this, { + dataCube: observable, + }); + + this.application = application; + this.client = new REPLServerClient( + new NetworkClient({ + baseUrl: this.application.config.useDynamicREPLServer + ? window.location.origin + + this.application.config.baseAddress.replace('/repl/', '') + : this.application.config.replUrl, + }), + ); + this.layout = new LayoutManagerState(this.application); + this.dataCubeEngine = new DataCubeEngine(this); + this.dataCube = new DataCubeState(this); + this.settingsDisplay = new SingletonModeDisplayState( + this.layout, + 'Settings', + () => , + ); + this.settingsDisplay.configuration.window = { + x: -50, + y: 50, + width: 600, + height: 400, + minWidth: 300, + minHeight: 200, + center: false, + }; + this.documentationDisplay = new SingletonModeDisplayState( + this.layout, + 'Documentation', + () => , + ); + this.documentationDisplay.configuration.window = { + x: -50, + y: -50, + width: 400, + height: 400, + minWidth: 300, + minHeight: 200, + center: false, + }; + } + + notifyError(error: Error, message: string, text?: string | undefined): void { + this.application.notificationService.notifyError(error); + const window = new WindowState( + new LayoutConfiguration('Error', () => ( + + )), + ); + window.configuration.window = DEFAULT_ALERT_WINDOW_CONFIG; + this.layout.newWindow(window); + } + + async initialize(): Promise { + if (!this.initState.isInInitialState) { + // eslint-disable-next-line no-process-env + if (process.env.NODE_ENV === 'production') { + this.application.notificationService.notifyIllegalState( + 'REPL store is re-initialized', + ); + } else { + this.application.logService.debug( + LogEvent.create(APPLICATION_EVENT.DEBUG), + 'REPL store is re-initialized', + ); + } + return; + } + this.initState.inProgress(); + + try { + const info = await this.dataCubeEngine.getInfrastructureInfo(); + if (info.gridClientLicense) { + LicenseManager.setLicenseKey(info.gridClientLicense); + } + this.initState.pass(); + } catch (error: unknown) { + assertErrorThrown(error); + this.application.alertService.setActionAlertInfo({ + message: `Initialization failure: ${error.message}`, + type: ActionAlertType.ERROR, + actions: [], + }); + this.initState.fail(); + } + } +} diff --git a/packages/legend-application-repl/src/stores/dataCube/DataCubeInfrastructure.ts b/packages/legend-application-repl/src/stores/dataCube/DataCubeEngine.ts similarity index 58% rename from packages/legend-application-repl/src/stores/dataCube/DataCubeInfrastructure.ts rename to packages/legend-application-repl/src/stores/dataCube/DataCubeEngine.ts index dff16d3071..bc64a07ab6 100644 --- a/packages/legend-application-repl/src/stores/dataCube/DataCubeInfrastructure.ts +++ b/packages/legend-application-repl/src/stores/dataCube/DataCubeEngine.ts @@ -26,22 +26,70 @@ import { import type { REPLServerClient } from '../../server/REPLServerClient.js'; import { DataCubeGetBaseQueryResult, + type DataCubeInfrastructureInfo, type CompletionItem, -} from '../../server/models/DataCubeEngineModels.js'; +} from '../../server/REPLEngine.js'; import { guaranteeType } from '@finos/legend-shared'; import type { LegendREPLApplicationStore } from '../LegendREPLBaseStore.js'; import type { REPLStore } from '../REPLStore.js'; import { action, makeObservable, observable } from 'mobx'; -class DataCubeEngine { +export const DEFAULT_ENABLE_DEBUG_MODE = false; +export const DEFAULT_GRID_CLIENT_ROW_BUFFER = 50; +export const DEFAULT_GRID_CLIENT_PURGE_CLOSED_ROW_NODES = false; + +export class DataCubeEngine { + readonly repl: REPLStore; + readonly application: LegendREPLApplicationStore; private readonly client: REPLServerClient; - constructor(client: REPLServerClient) { - this.client = client; + enableDebugMode = DEFAULT_ENABLE_DEBUG_MODE; + gridClientRowBuffer = DEFAULT_GRID_CLIENT_ROW_BUFFER; + gridClientPurgeClosedRowNodes = false; + + constructor(repl: REPLStore) { + makeObservable(this, { + enableDebugMode: observable, + setEnableDebugMode: action, + + gridClientRowBuffer: observable, + setGridClientRowBuffer: action, + + gridClientPurgeClosedRowNodes: observable, + setGridClientPurgeClosedRowNodes: action, + }); + + this.repl = repl; + this.application = repl.application; + this.client = repl.client; + } + + setEnableDebugMode(enableDebugMode: boolean): void { + this.enableDebugMode = enableDebugMode; + this.applyChanges(); + } + + setGridClientRowBuffer(rowBuffer: number): void { + this.gridClientRowBuffer = rowBuffer; + this.applyChanges(); + } + + setGridClientPurgeClosedRowNodes(purgeClosedRowNodes: boolean): void { + this.gridClientPurgeClosedRowNodes = purgeClosedRowNodes; + this.applyChanges(); + } + + private applyChanges(): void { + // When we support multi-view (i.e. multiple instances of DataCubes) we would need to traverse + // through and update the configurations of all of their grid clients + this.repl.dataCube.grid.client.updateGridOptions({ + rowBuffer: this.gridClientRowBuffer, + purgeClosedRowNodes: this.gridClientPurgeClosedRowNodes, + }); } - async getGridClientLicenseKey(): Promise { - return this.client.getGridClientLicenseKey(); + async getInfrastructureInfo(): Promise { + return this.client.getInfrastructureInfo(); } async getQueryTypeahead( @@ -70,49 +118,21 @@ class DataCubeEngine { ); } - async executeQuery(query: V1_Lambda): Promise { + async executeQuery( + query: V1_Lambda, + ): Promise<{ result: TDSExecutionResult; executedSQL: string }> { const result = await this.client.executeQuery({ query: V1_serializeValueSpecification(query, []), + debug: this.enableDebugMode, }); - return guaranteeType( - V1_buildExecutionResult( - V1_serializeExecutionResult(JSON.parse(result.result)), + return { + result: guaranteeType( + V1_buildExecutionResult( + V1_serializeExecutionResult(JSON.parse(result.result)), + ), + TDSExecutionResult, ), - TDSExecutionResult, - ); - } -} - -/** - * Infrastructure for data cube, can be shared across multiple data cube states - */ -export class DataCubeInfrastructure { - readonly replStore: REPLStore; - readonly application: LegendREPLApplicationStore; - readonly engine: DataCubeEngine; - - gridClientRowBuffer = 50; - enableDebugMode = false; - - constructor(replStore: REPLStore) { - makeObservable(this, { - gridClientRowBuffer: observable, - setGridClientRowBuffer: action, - - enableDebugMode: observable, - setEnableDebugMode: action, - }); - - this.replStore = replStore; - this.application = replStore.applicationStore; - this.engine = new DataCubeEngine(replStore.client); - } - - setGridClientRowBuffer(rowBuffer: number): void { - this.gridClientRowBuffer = rowBuffer; - } - - setEnableDebugMode(enableDebugMode: boolean): void { - this.enableDebugMode = enableDebugMode; + executedSQL: result.executedSQL, + }; } } diff --git a/packages/legend-application-repl/src/stores/dataCube/DataCubeState.ts b/packages/legend-application-repl/src/stores/dataCube/DataCubeState.ts index da67904d70..d502c1967f 100644 --- a/packages/legend-application-repl/src/stores/dataCube/DataCubeState.ts +++ b/packages/legend-application-repl/src/stores/dataCube/DataCubeState.ts @@ -23,7 +23,8 @@ import type { LegendREPLApplicationStore } from '../LegendREPLBaseStore.js'; import { DataCubeCoreState } from './core/DataCubeCoreState.js'; import { validateAndBuildQuerySnapshot } from './core/DataCubeQuerySnapshotBuilder.js'; import { action, makeObservable, observable } from 'mobx'; -import type { DataCubeInfrastructure } from './DataCubeInfrastructure.js'; +import type { DataCubeEngine } from './DataCubeEngine.js'; +import { ActionAlertType } from '@finos/legend-application'; export class DataCubeTask { uuid = uuid(); @@ -41,9 +42,9 @@ export class DataCubeTask { } export class DataCubeState { - readonly replStore: REPLStore; + readonly repl: REPLStore; readonly application: LegendREPLApplicationStore; - readonly infrastructure: DataCubeInfrastructure; + readonly engine: DataCubeEngine; readonly snapshotManager: DataCubeQuerySnapshotManager; readonly core: DataCubeCoreState; @@ -52,16 +53,16 @@ export class DataCubeState { readonly runningTasks = new Map(); - constructor(replStore: REPLStore) { + constructor(repl: REPLStore) { makeObservable(this, { runningTasks: observable, newTask: action, endTask: action, }); - this.replStore = replStore; - this.application = replStore.applicationStore; - this.infrastructure = replStore.dataCubeInfrastructure; + this.repl = repl; + this.application = repl.application; + this.engine = repl.dataCubeEngine; // NOTE: snapshot manager must be instantiated before subscribers this.snapshotManager = new DataCubeQuerySnapshotManager(this); @@ -93,7 +94,7 @@ export class DataCubeState { }, ), ); - const result = await this.infrastructure.engine.getBaseQuery(); + const result = await this.engine.getBaseQuery(); const initialSnapshot = validateAndBuildQuerySnapshot( result.partialQuery, result.sourceQuery, @@ -103,7 +104,11 @@ export class DataCubeState { this.snapshotManager.broadcastSnapshot(initialSnapshot); } catch (error: unknown) { assertErrorThrown(error); - this.application.notificationService.notifyError(error); + this.repl.application.alertService.setActionAlertInfo({ + message: `Initialization failure: ${error.message}`, + type: ActionAlertType.ERROR, + actions: [], + }); } finally { this.endTask(task); } diff --git a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeCoreState.ts b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeCoreState.ts index e22503f647..fe658fa8ff 100644 --- a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeCoreState.ts +++ b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeCoreState.ts @@ -18,7 +18,7 @@ import { action, makeObservable, observable } from 'mobx'; import type { DataCubeState } from '../DataCubeState.js'; import { DataCubeQuerySnapshotSubscriber } from './DataCubeQuerySnapshotSubscriber.js'; import type { DataCubeQuerySnapshot } from './DataCubeQuerySnapshot.js'; -import type { DataCubeQuery } from '../../../server/models/DataCubeQuery.js'; +import type { DataCubeQuery } from '../../../server/DataCubeQuery.js'; import { formatDate } from '@finos/legend-shared'; import { DEFAULT_REPORT_NAME } from './DataCubeQueryEngine.js'; diff --git a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQueryEngine.ts b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQueryEngine.ts index 65cdc6d8c3..4b650a85d0 100644 --- a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQueryEngine.ts +++ b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQueryEngine.ts @@ -245,15 +245,14 @@ export function getDataType(type: string): DataCubeColumnDataType { export const DEFAULT_URL_LABEL_QUERY_PARAM = 'dataCube.linkLabel'; export const DEFAULT_GRID_LINE_COLOR = TailwindCSSPalette.neutral[200]; -export const DEFAULT_ROW_HIGHLIGHT_BACKGROUND_COLOR = - TailwindCSSPalette.sky[100]; +export const DEFAULT_ROW_HIGHLIGHT_BACKGROUND_COLOR = '#d7e0eb'; export const DEFAULT_COLUMN_WIDTH = 300; export const DEFAULT_COLUMN_MIN_WIDTH = 50; export const DEFAULT_COLUMN_MAX_WIDTH = undefined; export const DEFAULT_FONT_FAMILY = DataCubeFont.ROBOTO; -export const DEFAULT_FONT_SIZE = 12; +export const DEFAULT_FONT_SIZE = 11; export const DEFAULT_FONT_BOLD = false; export const DEFAULT_FONT_ITALIC = false; export const DEFAULT_FONT_CASE = undefined; diff --git a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts index 71840203f1..42116d8c4b 100644 --- a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts +++ b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotBuilder.ts @@ -33,7 +33,7 @@ import { matchFunctionName, type V1_ValueSpecification, } from '@finos/legend-graph'; -import type { DataCubeQuery } from '../../../server/models/DataCubeQuery.js'; +import type { DataCubeQuery } from '../../../server/DataCubeQuery.js'; import { DataCubeQuerySnapshot, type DataCubeQuerySnapshotColumn, diff --git a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotManager.ts b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotManager.ts index 4fcf3453a3..33ddb7d5ab 100644 --- a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotManager.ts +++ b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotManager.ts @@ -24,7 +24,7 @@ import { assertErrorThrown, guaranteeNonNullable, } from '@finos/legend-shared'; -import type { DataCubeQuery } from '../../../server/models/DataCubeQuery.js'; +import type { DataCubeQuery } from '../../../server/DataCubeQuery.js'; // TODO: set a stack depth when we implement undo/redo // const DATA_CUBE_MAX_SNAPSHOT_COUNT = 100; diff --git a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.ts b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.ts index 350da52aaa..2414002a14 100644 --- a/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.ts +++ b/packages/legend-application-repl/src/stores/dataCube/core/DataCubeQuerySnapshotSubscriber.ts @@ -14,6 +14,7 @@ * limitations under the License. */ +import { deepDiff } from '@finos/legend-shared'; import type { LegendREPLApplicationStore } from '../../LegendREPLBaseStore.js'; import type { DataCubeState } from '../DataCubeState.js'; import type { DataCubeQuerySnapshot } from './DataCubeQuerySnapshot.js'; @@ -42,6 +43,15 @@ export abstract class DataCubeQuerySnapshotSubscriber { } publishSnapshot(snapshot: DataCubeQuerySnapshot): void { + if (this.dataCube.engine.enableDebugMode) { + this.application.debugProcess( + `New Snapshot`, + '\nSnapshot', + snapshot, + '\nDiff', + deepDiff(snapshot, this.latestSnapshot ?? {}), + ); + } this.latestSnapshot = snapshot; this.dataCube.snapshotManager.broadcastSnapshot(snapshot); } diff --git a/packages/legend-application-repl/src/stores/dataCube/core/__tests__/DataCubeQuerySnapshotBuilder.repl-test.ts b/packages/legend-application-repl/src/stores/dataCube/core/__tests__/DataCubeQuerySnapshotBuilder.repl-test.ts index 6c62989978..648d01a076 100644 --- a/packages/legend-application-repl/src/stores/dataCube/core/__tests__/DataCubeQuerySnapshotBuilder.repl-test.ts +++ b/packages/legend-application-repl/src/stores/dataCube/core/__tests__/DataCubeQuerySnapshotBuilder.repl-test.ts @@ -26,7 +26,7 @@ import { assertErrorThrown } from '@finos/legend-shared'; import { DataCubeQuery, DataCubeQuerySourceREPLExecutedQuery, -} from '../../../../server/models/DataCubeQuery.js'; +} from '../../../../server/DataCubeQuery.js'; type BaseSnapshotAnalysisTestCase = [ string, // name diff --git a/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorCodePanelState.ts b/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorCodePanelState.ts index 1347813a4e..c8a47edb17 100644 --- a/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorCodePanelState.ts +++ b/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorCodePanelState.ts @@ -106,7 +106,7 @@ export class DataCubeEditorCodePanelState { try { this.queryEditorState.setParserError(undefined); yield flowResult( - this.dataCube.replStore.client.parseQuery({ + this.dataCube.repl.client.parseQuery({ code: `|${this.queryEditorState.query}`, }), ); diff --git a/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorState.ts b/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorState.tsx similarity index 87% rename from packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorState.ts rename to packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorState.tsx index 8e227b255f..ce45842a3a 100644 --- a/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorState.ts +++ b/packages/legend-application-repl/src/stores/dataCube/editor/DataCubeEditorState.tsx @@ -20,15 +20,16 @@ import { DataCubeEditorSortsPanelState } from './DataCubeEditorSortsPanelState.j import { DataCubeEditorCodePanelState } from './DataCubeEditorCodePanelState.js'; import { DataCubeQuerySnapshotSubscriber } from '../core/DataCubeQuerySnapshotSubscriber.js'; import { type DataCubeQuerySnapshot } from '../core/DataCubeQuerySnapshot.js'; -import { guaranteeNonNullable, uuid } from '@finos/legend-shared'; +import { guaranteeNonNullable } from '@finos/legend-shared'; import { DataCubeEditorGeneralPropertiesPanelState } from './DataCubeEditorGeneralPropertiesPanelState.js'; import { DataCubeEditorColumnPropertiesPanelState } from './DataCubeEditorColumnPropertiesPanelState.js'; -import type { REPLWindowConfig } from '../../../components/REPLWindow.js'; import { DataCubeEditorColumnsPanelState } from './DataCubeEditorColumnsPanelState.js'; import { DataCubeConfiguration } from '../core/DataCubeConfiguration.js'; import { DataCubeEditorVerticalPivotsPanelState } from './DataCubeEditorVerticalPivotsPanelState.js'; +import { SingletonModeDisplayState } from '../../LayoutManagerState.js'; +import { DataCubeEditor } from '../../../components/dataCube/editor/DataCubeEditor.js'; -export enum DATA_CUBE_EDITOR_TAB { +export enum DataCubeEditorTab { GENERAL_PROPERTIES = 'General Properties', COLUMN_PROPERTIES = 'Column Properties', FILTER = 'Filter', @@ -41,6 +42,7 @@ export enum DATA_CUBE_EDITOR_TAB { } export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber { + readonly display: SingletonModeDisplayState; readonly generalProperties: DataCubeEditorGeneralPropertiesPanelState; readonly columnProperties: DataCubeEditorColumnPropertiesPanelState; readonly columns: DataCubeEditorColumnsPanelState; @@ -48,14 +50,7 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber { readonly sorts: DataCubeEditorSortsPanelState; readonly code: DataCubeEditorCodePanelState; - readonly window: REPLWindowConfig = { - uuid: uuid(), - title: 'Properties', - center: true, - }; - - isPanelOpen = false; - currentTab = DATA_CUBE_EDITOR_TAB.GENERAL_PROPERTIES; + currentTab = DataCubeEditorTab.GENERAL_PROPERTIES; constructor(dataCube: DataCubeState) { super(dataCube); @@ -65,12 +60,13 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber { currentTab: observable, setCurrentTab: action, - - isPanelOpen: observable, - openPanel: action, - closePanel: action, }); + this.display = new SingletonModeDisplayState( + this.dataCube.repl.layout, + 'Properties', + () => , + ); this.generalProperties = new DataCubeEditorGeneralPropertiesPanelState( this, ); @@ -81,15 +77,7 @@ export class DataCubeEditorState extends DataCubeQuerySnapshotSubscriber { this.code = new DataCubeEditorCodePanelState(this); } - openPanel(): void { - this.isPanelOpen = true; - } - - closePanel(): void { - this.isPanelOpen = false; - } - - setCurrentTab(val: DATA_CUBE_EDITOR_TAB): void { + setCurrentTab(val: DataCubeEditorTab): void { this.currentTab = val; } diff --git a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientEngine.ts b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientEngine.ts index c215206f9b..c60ac1b961 100644 --- a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientEngine.ts +++ b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientEngine.ts @@ -48,7 +48,7 @@ export enum DataCubeGridClientExportFormat { PDF = 'PDF', } -export enum INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME { +export enum INTERNAL__GridClientUtilityCssClassName { ROOT = 'data-cube-grid.ag-theme-balham', HIGHLIGHT_ROW = 'data-cube-grid__utility--highlight-row', SHOW_VERTICAL_GRID_LINES = 'data-cube-grid__utility--show-vertical-grid-lines', @@ -68,29 +68,29 @@ export enum INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME { BACKGROUND_COLOR_PREFIX = 'data-cube-grid__utility--background-color-', } export const generateFontFamilyUtilityClassName = (fontFamily: string) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_FAMILY_PREFIX}${fontFamily.replaceAll(' ', '-')}`; + `${INTERNAL__GridClientUtilityCssClassName.FONT_FAMILY_PREFIX}${fontFamily.replaceAll(' ', '-')}`; export const generateFontSizeUtilityClassName = (fontSize: number) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_SIZE_PREFIX}${fontSize}`; + `${INTERNAL__GridClientUtilityCssClassName.FONT_SIZE_PREFIX}${fontSize}`; export const generateFontUnderlineUtilityClassName = ( variant: string | undefined, ) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_UNDERLINE_PREFIX}${variant ?? 'none'}`; + `${INTERNAL__GridClientUtilityCssClassName.FONT_UNDERLINE_PREFIX}${variant ?? 'none'}`; export const generateFontCaseUtilityClassName = ( fontCase: string | undefined, ) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_CASE_PREFIX}${fontCase ?? 'none'}`; + `${INTERNAL__GridClientUtilityCssClassName.FONT_CASE_PREFIX}${fontCase ?? 'none'}`; export const generateTextAlignUtilityClassName = (alignment: string) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.TEXT_ALIGN_PREFIX}${alignment}`; + `${INTERNAL__GridClientUtilityCssClassName.TEXT_ALIGN_PREFIX}${alignment}`; export const generateTextColorUtilityClassName = ( color: string, key: DataCubeConfigurationColorKey, ) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.TEXT_COLOR_PREFIX}${key}-${color.substring(1)}`; + `${INTERNAL__GridClientUtilityCssClassName.TEXT_COLOR_PREFIX}${key}-${color.substring(1)}`; export const generateBackgroundColorUtilityClassName = ( color: string, key: DataCubeConfigurationColorKey, ) => - `${INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.BACKGROUND_COLOR_PREFIX}${key}-${color.substring(1)}`; + `${INTERNAL__GridClientUtilityCssClassName.BACKGROUND_COLOR_PREFIX}${key}-${color.substring(1)}`; export const INTERNAL__GRID_CLIENT_SIDE_BAR_WIDTH = 200; export const INTERNAL__GRID_CLIENT_COLUMN_MIN_WIDTH = 50; @@ -224,9 +224,16 @@ export class DataCubeGridClientServerSideDataSource }); const lambda = new V1_Lambda(); lambda.body.push(executableQuery); - const result = - await this.grid.dataCube.infrastructure.engine.executeQuery(lambda); - const rowData = TDStoRowData(result.result); + const result = await this.grid.dataCube.engine.executeQuery(lambda); + const rowData = TDStoRowData(result.result.result); + if (this.grid.dataCube.engine.enableDebugMode) { + this.grid.dataCube.application.debugProcess( + `Execution`, + `\nConfig: pagination=${this.grid.isPaginationEnabled}`, + `\nStats: ${rowData.length} rows, ${result.result.result.columns.length} columns`, + `\nSQL: ${result.executedSQL}`, + ); + } if (this.grid.isPaginationEnabled) { params.success({ rowData }); // Only update row count when loading the top-level drilldown data @@ -251,7 +258,11 @@ export class DataCubeGridClientServerSideDataSource } } catch (error) { assertErrorThrown(error); - this.grid.dataCube.application.notificationService.notifyError(error); + this.grid.dataCube.repl.notifyError( + error, + `Data fetch failure: ${error.message}`, + error.stack, + ); params.fail(); } finally { this.grid.dataCube.endTask(task); diff --git a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientExportEngine.ts b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientExportEngine.ts index 2f596180b0..1aa8104f89 100644 --- a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientExportEngine.ts +++ b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridClientExportEngine.ts @@ -158,12 +158,15 @@ export class DataCubeGridClientExportEngine { downloadFileUsingDataURI( `${fileName}.eml`, - `${EMAIL_CONTENT}--${EMAIL_MIXED_BOUNDARY}\n` + + // NOTE: empty lines before email content can cause some mail client to not + // recognize the email content, e.g. Outlook + `${EMAIL_CONTENT.trimStart()}--${EMAIL_MIXED_BOUNDARY}\n` + `Content-Type: ${contentType}; name="${fileNameWithExtension}"\n` + `Content-Transfer-Encoding: base64\n` + `Content-Disposition: attachment; filename="${fileNameWithExtension}"\n\n` + `${attachment}\n\n` + `--${EMAIL_MIXED_BOUNDARY}--`, + // This MIME type here might not matter ContentType.MESSAGE_RFC822, ); } diff --git a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx index a253ad0a3c..ecca5b2f70 100644 --- a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx +++ b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridConfigurationBuilder.tsx @@ -37,7 +37,7 @@ import { GridClientAggregateOperation, GridClientSortDirection, INTERNAL__GRID_CLIENT_COLUMN_MIN_WIDTH, - INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME, + INTERNAL__GridClientUtilityCssClassName, generateFontFamilyUtilityClassName, generateFontSizeUtilityClassName, generateFontUnderlineUtilityClassName, @@ -301,10 +301,9 @@ function _displaySpec(columnData: ColumnData) { cellClassRules: { [generateFontFamilyUtilityClassName(fontFamily)]: () => true, [generateFontSizeUtilityClassName(fontSize)]: () => true, - [INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_BOLD]: () => fontBold, - [INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_ITALIC]: () => - fontItalic, - [INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.FONT_STRIKETHROUGH]: () => + [INTERNAL__GridClientUtilityCssClassName.FONT_BOLD]: () => fontBold, + [INTERNAL__GridClientUtilityCssClassName.FONT_ITALIC]: () => fontItalic, + [INTERNAL__GridClientUtilityCssClassName.FONT_STRIKETHROUGH]: () => fontStrikethrough, [generateFontUnderlineUtilityClassName(fontUnderline)]: () => Boolean(fontUnderline), @@ -346,7 +345,7 @@ function _displaySpec(columnData: ColumnData) { ) => params.node.failedLoad, [generateBackgroundColorUtilityClassName(errorBackgroundColor, 'error')]: (params) => params.node.failedLoad, - [INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.BLUR]: () => column.blur, + [INTERNAL__GridClientUtilityCssClassName.BLUR]: () => column.blur, }, cellRenderer: cellRenderer, pinned: @@ -449,6 +448,7 @@ export function generateBaseGridOptions(dataCube: DataCubeState): GridOptions { groupDisplayType: 'custom', // keeps the column set stable even when row grouping is used suppressRowGroupHidesColumns: true, // keeps the column set stable even when row grouping is used suppressAggFuncInHeader: true, // keeps the columns stable when aggregation is used + // purgeClosedRowNodes: true, // remove closed row nodes from the cache to allow reloading failed rows? - or should we have declarative action to retry? getChildCount: (data) => data[INTERNAL__GRID_CLIENT_ROW_GROUPING_COUNT_AGG_COLUMN_ID], // -------------------------------------- PIVOT -------------------------------------- @@ -510,7 +510,7 @@ export function generateBaseGridOptions(dataCube: DataCubeState): GridOptions { tooltipShowDelay: INTERNAL__GRID_CLIENT_TOOLTIP_SHOW_DELAY, tooltipInteraction: true, // -------------------------------------- COLUMN MOVING -------------------------------------- - // suppressDragLeaveHidesColumns: true, + suppressDragLeaveHidesColumns: true, // disable this since it's quite easy to accidentally hide columns while moving // -------------------------------------- SERVER SIDE ROW MODEL -------------------------------------- suppressScrollOnNewData: true, suppressServerSideFullWidthLoadingRow: true, // make sure each column has its own loading indicator instead of the whole row @@ -537,7 +537,7 @@ export function generateBaseGridOptions(dataCube: DataCubeState): GridOptions { ], position: 'right', }, - // allowDragFromColumnsToolPanel: true, + allowDragFromColumnsToolPanel: true, // -------------------------------------- PERFORMANCE -------------------------------------- animateRows: false, // improve performance suppressColumnMoveAnimation: true, // improve performance @@ -560,9 +560,7 @@ export function generateGridOptionsFromSnapshot( */ rowClassRules: configuration.alternateRows ? { - [INTERNAL__GRID_CLIENT_UTILITY_CSS_CLASS_NAME.HIGHLIGHT_ROW]: ( - params, - ) => + [INTERNAL__GridClientUtilityCssClassName.HIGHLIGHT_ROW]: (params) => params.rowIndex % (configuration.alternateRowsCount * 2) >= configuration.alternateRowsCount, } diff --git a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridMenuBuilder.tsx b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridMenuBuilder.tsx index ec8204de83..cdd81a7bd1 100644 --- a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridMenuBuilder.tsx +++ b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridMenuBuilder.tsx @@ -523,12 +523,8 @@ export function generateMenuBuilder( 'separator', { name: 'Properties...', - disabled: editor.isPanelOpen, - action: () => { - if (!editor.isPanelOpen) { - editor.openPanel(); - } - }, + disabled: editor.display.isOpen, + action: () => editor.display.open(), }, ]; }; diff --git a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts index 26fe1f95d3..02f619fa0a 100644 --- a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts +++ b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridQuerySnapshotBuilder.ts @@ -69,9 +69,6 @@ export function buildQuerySnapshot( ): DataCubeQuerySnapshot { const snapshot = baseSnapshot.clone(); - // --------------------------------- SELECT --------------------------------- - // TODO: @akphi - Implement this - // --------------------------------- GROUP BY --------------------------------- if (request.rowGroupCols.length) { diff --git a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridState.ts b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridState.ts index 79285df66a..5c6422c24a 100644 --- a/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridState.ts +++ b/packages/legend-application-repl/src/stores/dataCube/grid/DataCubeGridState.ts @@ -48,7 +48,6 @@ export class DataCubeGridState extends DataCubeQuerySnapshotSubscriber { private _client?: GridApi | undefined; clientDataSource: DataCubeGridClientServerSideDataSource; - clientLicenseKey?: string | undefined; isPaginationEnabled = false; scrollHintText?: string | undefined; @@ -63,9 +62,6 @@ export class DataCubeGridState extends DataCubeQuerySnapshotSubscriber { datasourceConfiguration: observable, queryConfiguration: observable, - clientLicenseKey: observable, - setClientLicenseKey: action, - isPaginationEnabled: observable, setPaginationEnabled: action, @@ -80,10 +76,6 @@ export class DataCubeGridState extends DataCubeQuerySnapshotSubscriber { this.clientDataSource = new DataCubeGridClientServerSideDataSource(this); } - setClientLicenseKey(val: string): void { - this.clientLicenseKey = val; - } - setPaginationEnabled(val: boolean): void { this.isPaginationEnabled = val; @@ -142,8 +134,6 @@ export class DataCubeGridState extends DataCubeQuerySnapshotSubscriber { } override async initialize(): Promise { - this.setClientLicenseKey( - await this.dataCube.replStore.client.getGridClientLicenseKey(), - ); + // do nothing } } diff --git a/packages/legend-application-repl/tsconfig.build.json b/packages/legend-application-repl/tsconfig.build.json index 8d5757f8dd..bc7f194030 100644 --- a/packages/legend-application-repl/tsconfig.build.json +++ b/packages/legend-application-repl/tsconfig.build.json @@ -7,7 +7,6 @@ "exclude": ["src/**/__tests__/**/*.*", "src/**/__mocks__/**/*.*"], "references": [ { "path": "./tsconfig.package.json" }, - { "path": "./tsconfig.grammar.json" }, { "path": "../legend-shared/tsconfig.build.json" }, { "path": "../legend-application/tsconfig.build.json" }, { "path": "../legend-art/tsconfig.build.json" }, diff --git a/packages/legend-application-repl/tsconfig.grammar.json b/packages/legend-application-repl/tsconfig.grammar.json deleted file mode 100644 index 7c2d9c1108..0000000000 --- a/packages/legend-application-repl/tsconfig.grammar.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - // ANTLR4 default output for target Typescript mismatches that of Legend's tsconfig - // we need to create a separate tsconfig just to parse these grammar files - // See https://github.com/antlr/antlr4/issues/4218 - "compilerOptions": { - "composite": true, - "declaration": true, - "target": "esnext", - "moduleResolution": "node", - "skipLibCheck": true, // skip type checking of all declaration files (*.d.ts) - "rootDir": "grammar/parser", - "tsBuildInfoFile": "build/grammar.tsbuildinfo", - "outDir": "lib/grammar" - }, - "include": ["grammar/parser/**/*.ts"] -} diff --git a/packages/legend-application-repl/tsconfig.json b/packages/legend-application-repl/tsconfig.json index 856d18d880..65b4533f52 100644 --- a/packages/legend-application-repl/tsconfig.json +++ b/packages/legend-application-repl/tsconfig.json @@ -9,7 +9,6 @@ "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.json"], "references": [ { "path": "./tsconfig.package.json" }, - { "path": "./tsconfig.grammar.json" }, { "path": "../legend-shared" }, { "path": "../legend-application" }, { "path": "../legend-art" }, diff --git a/packages/legend-application-studio-bootstrap/package.json b/packages/legend-application-studio-bootstrap/package.json index 88850114f3..b03ba39095 100644 --- a/packages/legend-application-studio-bootstrap/package.json +++ b/packages/legend-application-studio-bootstrap/package.json @@ -68,7 +68,7 @@ "eslint": "8.57.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "publishConfig": { diff --git a/packages/legend-application-studio-deployment/package.json b/packages/legend-application-studio-deployment/package.json index 7109d0a224..68371c8cf0 100644 --- a/packages/legend-application-studio-deployment/package.json +++ b/packages/legend-application-studio-deployment/package.json @@ -44,7 +44,7 @@ "npm-run-all": "4.1.5", "rimraf": "6.0.1", "typescript": "5.5.3", - "webpack": "5.92.1", + "webpack": "5.93.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", "webpack-dev-server": "5.0.4" diff --git a/packages/legend-application-studio/package.json b/packages/legend-application-studio/package.json index 5ecef63cb4..d8257ed9a3 100644 --- a/packages/legend-application-studio/package.json +++ b/packages/legend-application-studio/package.json @@ -55,12 +55,12 @@ "@finos/legend-server-showcase": "workspace:*", "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", - "@testing-library/dom": "10.3.1", + "@testing-library/dom": "10.3.2", "@testing-library/react": "16.0.0", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", "fast-xml-parser": "4.4.0", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "mobx-utils": "6.0.8", "monaco-editor": "0.50.0", @@ -79,7 +79,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-application-studio/src/components/editor/editor-group/EditorGroup.tsx b/packages/legend-application-studio/src/components/editor/editor-group/EditorGroup.tsx index 427fefe770..6a46129704 100644 --- a/packages/legend-application-studio/src/components/editor/editor-group/EditorGroup.tsx +++ b/packages/legend-application-studio/src/components/editor/editor-group/EditorGroup.tsx @@ -384,9 +384,9 @@ export const EditorGroup = observer(() => {
{editorState.element ? ( - getElementIcon(editorState.element, editorStore, { + (getElementIcon(editorState.element, editorStore, { returnEmptyForUnknown: true, - }) ?? + }) ?? ) ) : ( )} @@ -421,9 +421,9 @@ export const EditorGroup = observer(() => {
{editorState instanceof ElementEditorState ? ( - getElementIcon(editorState.element, editorStore, { + (getElementIcon(editorState.element, editorStore, { returnEmptyForUnknown: true, - }) ?? + }) ?? ) ) : ( )} diff --git a/packages/legend-application-studio/src/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.tsx b/packages/legend-application-studio/src/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.tsx index e97f3b869b..d729e912d2 100644 --- a/packages/legend-application-studio/src/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.tsx +++ b/packages/legend-application-studio/src/components/editor/editor-group/function-activator/testable/FunctionTestableEditor.tsx @@ -370,7 +370,7 @@ const FunctionTestParameterEditor = observer( paramState.varExpression.multiplicity.lowerBound > 0; const type = contentTypeParamPair ? contentTypeParamPair.contentType - : paramState.varExpression.genericType?.value.rawType.name ?? 'unknown'; + : (paramState.varExpression.genericType?.value.rawType.name ?? 'unknown'); const paramValue = paramState.varExpression.genericType?.value.rawType === PrimitiveType.BYTE ? atob( diff --git a/packages/legend-application-studio/src/components/editor/editor-group/mapping-editor/EnumerationMappingEditor.tsx b/packages/legend-application-studio/src/components/editor/editor-group/mapping-editor/EnumerationMappingEditor.tsx index 149d51fd42..03f2b1f55d 100644 --- a/packages/legend-application-studio/src/components/editor/editor-group/mapping-editor/EnumerationMappingEditor.tsx +++ b/packages/legend-application-studio/src/components/editor/editor-group/mapping-editor/EnumerationMappingEditor.tsx @@ -186,7 +186,7 @@ export const SourceValueInput = observer( const value = sourceValue.value instanceof Enum ? sourceValue.value.name - : sourceValue.value ?? ''; + : (sourceValue.value ?? ''); const onChange: React.ChangeEventHandler = (event) => updateSourceValue(event.target.value); const onBlur: React.ChangeEventHandler = (event) => { diff --git a/packages/legend-application-studio/src/components/editor/editor-group/service-editor/testable/ServiceTestsEditor.tsx b/packages/legend-application-studio/src/components/editor/editor-group/service-editor/testable/ServiceTestsEditor.tsx index e539a7f7f1..ceeb4cf908 100644 --- a/packages/legend-application-studio/src/components/editor/editor-group/service-editor/testable/ServiceTestsEditor.tsx +++ b/packages/legend-application-studio/src/components/editor/editor-group/service-editor/testable/ServiceTestsEditor.tsx @@ -155,7 +155,7 @@ const ServiceTestParameterEditor = observer( paramState.varExpression.multiplicity.lowerBound > 0; const type = contentTypeParamPair ? contentTypeParamPair.contentType - : paramState.varExpression.genericType?.value.rawType.name ?? 'unknown'; + : (paramState.varExpression.genericType?.value.rawType.name ?? 'unknown'); const paramValue = paramState.varExpression.genericType?.value.rawType === PrimitiveType.BYTE ? atob( diff --git a/packages/legend-application-studio/src/stores/editor/EditorStore.ts b/packages/legend-application-studio/src/stores/editor/EditorStore.ts index d9590b8e88..0a97a09282 100644 --- a/packages/legend-application-studio/src/stores/editor/EditorStore.ts +++ b/packages/legend-application-studio/src/stores/editor/EditorStore.ts @@ -553,16 +553,24 @@ export class EditorStore implements CommandRegistrar { */ // eslint-disable-next-line no-process-env if (process.env.NODE_ENV === 'development') { - this.applicationStore.logService.info( - LogEvent.create(APPLICATION_EVENT.DEVELOPMENT_ISSUE), + this.applicationStore.logService.debug( + LogEvent.create(APPLICATION_EVENT.DEBUG), `Fast-refreshing the app - undoing cleanUp() and preventing initialize() recall in editor store...`, ); this.changeDetectionState.start(); return; } - this.applicationStore.notificationService.notifyIllegalState( - 'Editor store is re-initialized', - ); + // eslint-disable-next-line no-process-env + if (process.env.NODE_ENV === 'production') { + this.applicationStore.notificationService.notifyIllegalState( + 'Editor store is re-initialized', + ); + } else { + this.applicationStore.logService.debug( + LogEvent.create(APPLICATION_EVENT.DEBUG), + 'Editor store is re-initialized', + ); + } return; } this.initState.inProgress(); diff --git a/packages/legend-application-studio/src/stores/editor/ExplorerTreeState.ts b/packages/legend-application-studio/src/stores/editor/ExplorerTreeState.ts index 2287b1b558..c3cf30923a 100644 --- a/packages/legend-application-studio/src/stores/editor/ExplorerTreeState.ts +++ b/packages/legend-application-studio/src/stores/editor/ExplorerTreeState.ts @@ -152,8 +152,8 @@ export class ExplorerTreeState { } return this.selectedNode.packageableElement instanceof Package ? this.selectedNode.packageableElement - : this.selectedNode.packageableElement.package ?? - this.editorStore.graphManagerState.graph.root; + : (this.selectedNode.packageableElement.package ?? + this.editorStore.graphManagerState.graph.root); } setTreeData(data: TreeData): void { diff --git a/packages/legend-application/package.json b/packages/legend-application/package.json index fbb266cb56..3c0d2a80e3 100644 --- a/packages/legend-application/package.json +++ b/packages/legend-application/package.json @@ -51,7 +51,7 @@ "@types/react-dom": "18.3.0", "@types/react-router-dom": "5.3.3", "history": "5.3.0", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-dnd": "16.0.1", @@ -75,7 +75,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-application/src/__lib__/LegendApplicationEvent.ts b/packages/legend-application/src/__lib__/LegendApplicationEvent.ts index 41295fed0b..a78cf92ad3 100644 --- a/packages/legend-application/src/__lib__/LegendApplicationEvent.ts +++ b/packages/legend-application/src/__lib__/LegendApplicationEvent.ts @@ -43,11 +43,11 @@ export enum APPLICATION_EVENT { COMMAND_CENTER_REGISTRATION__FAILURE = 'application.command.registration.failure', - DEVELOPMENT_ISSUE = 'development.issue', - APPLICATION_CONTEXT__ACCESS = 'application.context.access', APPLICATION_USAGE__INTERRUPT = 'application.usage.interrupt', APPLICATION_TELEMETRY_EVENT__FAILURE = 'application.telemetry-event.failure', + + DEBUG = 'development.debug', } diff --git a/packages/legend-application/src/components/NotificationManager.tsx b/packages/legend-application/src/components/NotificationManager.tsx index c8fb033cf1..d66324548e 100644 --- a/packages/legend-application/src/components/NotificationManager.tsx +++ b/packages/legend-application/src/components/NotificationManager.tsx @@ -115,7 +115,7 @@ export const NotificationManager = observer(() => { // setting the auto-hide duration to null will stop it from hiding automatically autoHideDuration={ notification - ? notification.autoHideDuration ?? null + ? (notification.autoHideDuration ?? null) : DEFAULT_NOTIFICATION_HIDE_TIME } onClose={onSnackbarAutoHideOrClickAway} diff --git a/packages/legend-application/src/stores/AlertService.ts b/packages/legend-application/src/stores/AlertService.ts index a4db07fb87..831714fb40 100644 --- a/packages/legend-application/src/stores/AlertService.ts +++ b/packages/legend-application/src/stores/AlertService.ts @@ -20,6 +20,7 @@ import type { GenericLegendApplicationStore } from './ApplicationStore.js'; export enum ActionAlertType { STANDARD = 'STANDARD', CAUTION = 'CAUTION', + ERROR = 'ERROR', } export enum ActionAlertActionType { diff --git a/packages/legend-application/src/stores/ApplicationStore.ts b/packages/legend-application/src/stores/ApplicationStore.ts index 7d1d31138c..a3a127a399 100644 --- a/packages/legend-application/src/stores/ApplicationStore.ts +++ b/packages/legend-application/src/stores/ApplicationStore.ts @@ -168,9 +168,17 @@ export class ApplicationStore< async initialize(platform: ApplicationPlatform): Promise { if (!this.initState.isInInitialState) { - this.notificationService.notifyIllegalState( - 'Application store is re-initialized', - ); + // eslint-disable-next-line no-process-env + if (process.env.NODE_ENV === 'production') { + this.notificationService.notifyIllegalState( + 'Application store is re-initialized', + ); + } else { + this.logService.debug( + LogEvent.create(APPLICATION_EVENT.DEBUG), + 'Application store is re-initialized', + ); + } return; } this.initState.inProgress(); @@ -214,6 +222,15 @@ export class ApplicationStore< ); }; + debugProcess(processName: string, ...data: unknown[]): void { + this.logService.debug( + LogEvent.create(APPLICATION_EVENT.DEBUG), + `\n------ START DEBUG PROCESS: ${processName} ------\n`, + ...data, + `\n------- END DEBUG PROCESS: ${processName} -------\n`, + ); + } + /** * Guarantee that the action being used by the component does not throw unhandled errors */ diff --git a/packages/legend-application/src/stores/NotificationService.ts b/packages/legend-application/src/stores/NotificationService.ts index 3e02980868..4dc132ac72 100644 --- a/packages/legend-application/src/stores/NotificationService.ts +++ b/packages/legend-application/src/stores/NotificationService.ts @@ -89,7 +89,7 @@ export class NotificationService { actions ?? [], autoHideDuration === null ? undefined - : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME, + : (autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME), ), ); } @@ -106,7 +106,7 @@ export class NotificationService { actions ?? [], autoHideDuration === null ? undefined - : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME, + : (autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME), ), ); } @@ -123,7 +123,7 @@ export class NotificationService { actions ?? [], autoHideDuration === null ? undefined - : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME, + : (autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME), ), ); } @@ -162,7 +162,7 @@ export class NotificationService { actions ?? [], autoHideDuration === null ? undefined - : autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME, + : (autoHideDuration ?? DEFAULT_NOTIFICATION_HIDE_TIME), ), ); } diff --git a/packages/legend-application/src/stores/storage/StorageService.ts b/packages/legend-application/src/stores/storage/StorageService.ts index 34983b21a7..e0e503251e 100644 --- a/packages/legend-application/src/stores/storage/StorageService.ts +++ b/packages/legend-application/src/stores/storage/StorageService.ts @@ -90,9 +90,9 @@ export class StorageService { applicationStore.config.applicationStorageKey, ); this.data = data - ? returnUndefOnError( + ? (returnUndefOnError( () => JSON.parse(data) as Record, - ) ?? {} + ) ?? {}) : {}; } diff --git a/packages/legend-art/package.json b/packages/legend-art/package.json index 25c40e01a4..2faffe14be 100644 --- a/packages/legend-art/package.json +++ b/packages/legend-art/package.json @@ -48,8 +48,8 @@ "test:watch": "jest --watch" }, "dependencies": { - "@emotion/react": "11.11.4", - "@emotion/styled": "11.11.5", + "@emotion/react": "11.13.0", + "@emotion/styled": "11.13.0", "@finos/legend-shared": "workspace:*", "@fontsource/jetbrains-mono": "5.0.20", "@fontsource/raleway": "5.0.19", @@ -58,14 +58,14 @@ "@fontsource/roboto-mono": "5.0.18", "@fontsource/roboto-serif": "5.0.13", "@fontsource/ubuntu-mono": "5.0.20", - "@mui/material": "5.16.1", + "@mui/material": "5.16.4", "@types/react": "18.3.3", "@types/react-select": "4.0.18", "@types/react-window": "1.8.8", "clsx": "2.1.1", "color-parse": "2.0.2", "mermaid": "10.9.1", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-colorful": "5.6.1", @@ -93,7 +93,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-art/src/icon/DataCubeIcon.tsx b/packages/legend-art/src/icon/DataCubeIcon.tsx index 1216cd4c4a..4d853a0435 100644 --- a/packages/legend-art/src/icon/DataCubeIcon.tsx +++ b/packages/legend-art/src/icon/DataCubeIcon.tsx @@ -65,7 +65,10 @@ import { TbSettings, TbChevronDown, TbCaretRightFilled, + TbMenu2, + TbBug, } from 'react-icons/tb'; +import { VscError, VscInfo, VscQuestion } from 'react-icons/vsc'; export const DataCubeIcon = { AdvancedSettings: TbSettingsBolt, @@ -78,13 +81,18 @@ export const DataCubeIcon = { ChevronDown: TbChevronDown, Code: TbCode, Cube: TbCube, + Debug: TbBug, Documentation: TbBook, + DocumentationHint: VscQuestion, + Error: VscError, FontBold: MdOutlineFormatBold, FontCase: RxLetterCaseCapitalize, FontItalic: MdOutlineFormatItalic, FontUnderline: MdOutlineFormatUnderlined, FontStrikethrough: MdOutlineStrikethroughS, + Info: VscInfo, Loader: TbLoader2, + Menu: TbMenu2, Note: TbNote, Pin: GoPin, Search: TbSearch, diff --git a/packages/legend-dev-utils/package.json b/packages/legend-dev-utils/package.json index a61eb3e9a8..d3cf0d901b 100644 --- a/packages/legend-dev-utils/package.json +++ b/packages/legend-dev-utils/package.json @@ -50,7 +50,7 @@ "test:watch": "jest --watch" }, "dependencies": { - "@babel/core": "7.24.8", + "@babel/core": "7.24.9", "@changesets/assemble-release-plan": "6.0.3", "@changesets/changelog-github": "0.5.0", "@changesets/config": "3.0.2", @@ -88,7 +88,7 @@ "react-refresh": "0.14.2", "resolve": "1.22.8", "typescript": "5.5.3", - "webpack": "5.92.1" + "webpack": "5.93.0" }, "devDependencies": { "cross-env": "7.0.3", diff --git a/packages/legend-extension-assortment/package.json b/packages/legend-extension-assortment/package.json index d31a71e6a5..52efddfac1 100644 --- a/packages/legend-extension-assortment/package.json +++ b/packages/legend-extension-assortment/package.json @@ -49,7 +49,7 @@ "@finos/legend-lego": "workspace:*", "@finos/legend-shared": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "serializr": "3.0.2" @@ -62,7 +62,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-data-quality/package.json b/packages/legend-extension-dsl-data-quality/package.json index 6c2bbd8256..c93ce08386 100644 --- a/packages/legend-extension-dsl-data-quality/package.json +++ b/packages/legend-extension-dsl-data-quality/package.json @@ -53,7 +53,7 @@ "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-dnd": "16.0.1", @@ -68,7 +68,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-data-quality/src/components/DataQualitySideBar.tsx b/packages/legend-extension-dsl-data-quality/src/components/DataQualitySideBar.tsx index 1a888ad1e1..2998fe2fc7 100644 --- a/packages/legend-extension-dsl-data-quality/src/components/DataQualitySideBar.tsx +++ b/packages/legend-extension-dsl-data-quality/src/components/DataQualitySideBar.tsx @@ -113,7 +113,7 @@ export const DataQualityClassSelector = observer( placeholder={ classOptions.length ? 'Choose a class...' - : noMatchMessage ?? 'No class found' + : (noMatchMessage ?? 'No class found') } disabled={ classOptions.length < 1 || diff --git a/packages/legend-extension-dsl-data-space-studio/package.json b/packages/legend-extension-dsl-data-space-studio/package.json index 30a4baf3c0..a41375567d 100644 --- a/packages/legend-extension-dsl-data-space-studio/package.json +++ b/packages/legend-extension-dsl-data-space-studio/package.json @@ -50,7 +50,7 @@ "@finos/legend-server-depot": "workspace:*", "@finos/legend-server-sdlc": "workspace:*", "@finos/legend-shared": "workspace:*", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7" }, "devDependencies": { @@ -61,7 +61,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-data-space/package.json b/packages/legend-extension-dsl-data-space/package.json index e8f12660cb..908061c74e 100644 --- a/packages/legend-extension-dsl-data-space/package.json +++ b/packages/legend-extension-dsl-data-space/package.json @@ -54,7 +54,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-dom": "18.3.1", @@ -68,7 +68,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-diagram/package.json b/packages/legend-extension-dsl-diagram/package.json index 0bbb01b457..f1afb1c31b 100644 --- a/packages/legend-extension-dsl-diagram/package.json +++ b/packages/legend-extension-dsl-diagram/package.json @@ -54,7 +54,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-dnd": "16.0.1", @@ -64,14 +64,14 @@ "devDependencies": { "@finos/legend-dev-utils": "workspace:*", "@jest/globals": "29.7.0", - "@testing-library/dom": "10.3.1", + "@testing-library/dom": "10.3.2", "@testing-library/react": "16.0.0", "cross-env": "7.0.3", "eslint": "8.57.0", "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-persistence/package.json b/packages/legend-extension-dsl-persistence/package.json index 091ca5b023..44338315a3 100644 --- a/packages/legend-extension-dsl-persistence/package.json +++ b/packages/legend-extension-dsl-persistence/package.json @@ -52,7 +52,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "react": "18.3.1", "serializr": "3.0.2" }, @@ -64,7 +64,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-service/package.json b/packages/legend-extension-dsl-service/package.json index ead03bd153..9e90ccb267 100644 --- a/packages/legend-extension-dsl-service/package.json +++ b/packages/legend-extension-dsl-service/package.json @@ -54,7 +54,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "react-dom": "18.3.1", @@ -68,7 +68,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-dsl-text/package.json b/packages/legend-extension-dsl-text/package.json index 9a966a54bc..ba7da97e53 100644 --- a/packages/legend-extension-dsl-text/package.json +++ b/packages/legend-extension-dsl-text/package.json @@ -52,7 +52,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "serializr": "3.0.2" @@ -65,7 +65,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-store-flat-data/package.json b/packages/legend-extension-store-flat-data/package.json index 13570eb44b..7d7c718a3b 100644 --- a/packages/legend-extension-store-flat-data/package.json +++ b/packages/legend-extension-store-flat-data/package.json @@ -50,7 +50,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "serializr": "3.0.2" @@ -63,7 +63,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-store-relational/package.json b/packages/legend-extension-store-relational/package.json index effa80361b..4adcd75abe 100644 --- a/packages/legend-extension-store-relational/package.json +++ b/packages/legend-extension-store-relational/package.json @@ -50,7 +50,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "serializr": "3.0.2" @@ -63,7 +63,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-extension-store-service-store/package.json b/packages/legend-extension-store-service-store/package.json index 934e7b34a4..8a3545adeb 100644 --- a/packages/legend-extension-store-service-store/package.json +++ b/packages/legend-extension-store-service-store/package.json @@ -50,7 +50,7 @@ "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", "@types/react": "18.3.3", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "react": "18.3.1", "serializr": "3.0.2" @@ -63,7 +63,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-graph/package.json b/packages/legend-graph/package.json index 4c4c8e843b..1c863458b6 100644 --- a/packages/legend-graph/package.json +++ b/packages/legend-graph/package.json @@ -42,7 +42,7 @@ "dependencies": { "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", - "mobx": "6.13.0", + "mobx": "6.13.1", "serializr": "3.0.2" }, "devDependencies": { diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.ts b/packages/legend-graph/src/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.ts index 6671638686..f99c824b6a 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/extensions/DSL_ExternalFormat_PureProtocolProcessorPlugin.ts @@ -257,13 +257,13 @@ export class DSL_ExternalFormat_PureProtocolProcessorPlugin modelUnit.packageableElementExcludes = metamodel.modelUnit.packageableElementExcludes.map((path) => path instanceof PackageableElementReference - ? path.valueForSerialization ?? '' + ? (path.valueForSerialization ?? '') : path, ); modelUnit.packageableElementIncludes = metamodel.modelUnit.packageableElementIncludes.map((path) => path instanceof PackageableElementReference - ? path.valueForSerialization ?? '' + ? (path.valueForSerialization ?? '') : path, ); protocol.modelUnit = modelUnit; diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_EnumerationMapping.ts b/packages/legend-graph/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_EnumerationMapping.ts index 671326e826..2a2cd2ad1f 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_EnumerationMapping.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/v1/model/packageableElements/mapping/V1_EnumerationMapping.ts @@ -46,7 +46,7 @@ export class V1_EnumerationMapping implements Hashable { // otherwise, we don't need to account for the source type in hash computation // If there is no enum value mapping, ignore the source type since it's synthetic and used by the editor this.enumValueMappings.length - ? getNullableFirstEntry( + ? (getNullableFirstEntry( Array.from( new Set( this.enumValueMappings.flatMap((evm) => @@ -54,7 +54,7 @@ export class V1_EnumerationMapping implements Hashable { ), ).values(), ), - ) ?? '' + ) ?? '') : '', // source type hashArray(this.enumValueMappings), ]); diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DSL_ExternalFormat_Transformer.ts b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DSL_ExternalFormat_Transformer.ts index bc8743c52f..13b6e354fd 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DSL_ExternalFormat_Transformer.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DSL_ExternalFormat_Transformer.ts @@ -23,13 +23,13 @@ export const V1_transformModelUnit = (metamodel: ModelUnit): V1_ModelUnit => { modelUnit.packageableElementExcludes = metamodel.packageableElementExcludes.map((path) => path instanceof PackageableElementReference - ? path.valueForSerialization ?? '' + ? (path.valueForSerialization ?? '') : path, ); modelUnit.packageableElementIncludes = metamodel.packageableElementIncludes.map((path) => path instanceof PackageableElementReference - ? path.valueForSerialization ?? '' + ? (path.valueForSerialization ?? '') : path, ); return modelUnit; diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts index 83adf88849..d6a5df2b41 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_DatabaseTransformer.ts @@ -189,7 +189,7 @@ export const V1_transformTableAliasToTablePointer = ( const tablePtr = new V1_TablePtr(); tablePtr.database = options?.TEMPORARY__resolveToFullPath ? tableAlias.relation.ownerReference.value.path - : tableAlias.relation.ownerReference.valueForSerialization ?? ''; + : (tableAlias.relation.ownerReference.valueForSerialization ?? ''); // NOTE: Sometimes, we interpret this, so to maintain roundtrip stability, we need to handle this differrently // See https://github.com/finos/legend-studio/issues/295 tablePtr.mainTableDb = tablePtr.database; @@ -274,7 +274,7 @@ export const V1_transformRelationalOperationElement = ( const joinPtr = new V1_JoinPointer(); joinPtr.db = options?.TEMPORARY__resolveToFullPath ? node.join.ownerReference.value.path - : node.join.ownerReference.valueForSerialization ?? ''; + : (node.join.ownerReference.valueForSerialization ?? ''); joinPtr.joinType = node.joinType; joinPtr.name = node.join.value.name; return joinPtr; diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_GenerationSpecificationTransformer.ts b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_GenerationSpecificationTransformer.ts index ece8165439..5c1678c7f4 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_GenerationSpecificationTransformer.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_GenerationSpecificationTransformer.ts @@ -83,7 +83,7 @@ export const V1_transformFileGeneration = ( ); fileGeneration.scopeElements = element.scopeElements.map((path) => path instanceof PackageableElementReference - ? path.valueForSerialization ?? '' + ? (path.valueForSerialization ?? '') : path, ); fileGeneration.type = element.type; diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts index a4ae5dd86e..61fc193827 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/from/V1_MappingTransformer.ts @@ -187,7 +187,7 @@ export const V1_transformPropertyReference = ( options?.isTransformingEmbeddedPropertyMapping || options?.isTransformingLocalPropertyMapping ? undefined - : element.ownerReference.valueForSerialization ?? ''; + : (element.ownerReference.valueForSerialization ?? ''); property.property = element.value.name; return property; }; @@ -408,12 +408,12 @@ const transformMappingInclude = ( mappingInclude.includedMapping = element.included.valueForSerialization ?? ''; mappingInclude.sourceDatabasePath = element.storeSubstitutions.length - ? (element.storeSubstitutions[0] as SubstituteStore).original - .valueForSerialization ?? '' + ? ((element.storeSubstitutions[0] as SubstituteStore).original + .valueForSerialization ?? '') : undefined; mappingInclude.targetDatabasePath = element.storeSubstitutions.length - ? (element.storeSubstitutions[0] as SubstituteStore).substitute - .valueForSerialization ?? '' + ? ((element.storeSubstitutions[0] as SubstituteStore).substitute + .valueForSerialization ?? '') : undefined; return mappingInclude; } diff --git a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_FileGenerationBuilderHelper.ts b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_FileGenerationBuilderHelper.ts index 637c651c5d..49d08bd3ba 100644 --- a/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_FileGenerationBuilderHelper.ts +++ b/packages/legend-graph/src/graph-manager/protocol/pure/v1/transformation/pureGraph/to/helpers/V1_FileGenerationBuilderHelper.ts @@ -41,5 +41,5 @@ export const V1_buildScopeElement = ( return _package ? // NOTE: this is always intended to be provided as full path by user and it's always explicit PackageableElementExplicitReference.create(_package) - : returnUndefOnError(() => context.resolveElement(path, false)) ?? path; + : (returnUndefOnError(() => context.resolveElement(path, false)) ?? path); }; diff --git a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/fileGeneration/FileGenerationSpecification.ts b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/fileGeneration/FileGenerationSpecification.ts index 6f7a265962..0518a2f87e 100644 --- a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/fileGeneration/FileGenerationSpecification.ts +++ b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/fileGeneration/FileGenerationSpecification.ts @@ -43,7 +43,7 @@ export class FileGenerationSpecification hashArray( this.scopeElements.map((element) => element instanceof PackageableElementReference - ? element.valueForSerialization ?? '' + ? (element.valueForSerialization ?? '') : element, ), ), diff --git a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumValueMapping.ts b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumValueMapping.ts index e159ddac77..7d4f9b56af 100644 --- a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumValueMapping.ts +++ b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumValueMapping.ts @@ -56,7 +56,7 @@ export class EnumValueMapping implements Hashable { ? value.toString() : value instanceof Enum ? `${value._OWNER.path}.${value.name}` - : value ?? ''; + : (value ?? ''); }), ), ]); diff --git a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumerationMapping.ts b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumerationMapping.ts index df6bb3efd4..04e8f26797 100644 --- a/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumerationMapping.ts +++ b/packages/legend-graph/src/graph/metamodel/pure/packageableElements/mapping/EnumerationMapping.ts @@ -56,7 +56,7 @@ export class EnumerationMapping implements Hashable { isNonNullable(sourceValue.value), ).length, ).length - ? this.sourceType?.valueForSerialization ?? '' + ? (this.sourceType?.valueForSerialization ?? '') : '', // default source value when there is no element hashArray( this.enumValueMappings.filter( diff --git a/packages/legend-lego/package.json b/packages/legend-lego/package.json index bf63d8a316..4f4a6b7aa4 100644 --- a/packages/legend-lego/package.json +++ b/packages/legend-lego/package.json @@ -47,22 +47,22 @@ "test:watch": "jest --watch" }, "dependencies": { - "@ag-grid-community/client-side-row-model": "32.0.1", - "@ag-grid-community/core": "32.0.1", - "@ag-grid-community/csv-export": "32.0.1", - "@ag-grid-community/react": "32.0.1", - "@ag-grid-community/styles": "32.0.1", - "@ag-grid-enterprise/clipboard": "32.0.1", - "@ag-grid-enterprise/column-tool-panel": "32.0.1", - "@ag-grid-enterprise/core": "32.0.1", - "@ag-grid-enterprise/excel-export": "32.0.1", - "@ag-grid-enterprise/filter-tool-panel": "32.0.1", - "@ag-grid-enterprise/menu": "32.0.1", - "@ag-grid-enterprise/range-selection": "32.0.1", - "@ag-grid-enterprise/row-grouping": "32.0.1", - "@ag-grid-enterprise/server-side-row-model": "32.0.1", - "@ag-grid-enterprise/side-bar": "32.0.1", - "@ag-grid-enterprise/status-bar": "32.0.1", + "@ag-grid-community/client-side-row-model": "32.0.2", + "@ag-grid-community/core": "32.0.2", + "@ag-grid-community/csv-export": "32.0.2", + "@ag-grid-community/react": "32.0.2", + "@ag-grid-community/styles": "32.0.2", + "@ag-grid-enterprise/clipboard": "32.0.2", + "@ag-grid-enterprise/column-tool-panel": "32.0.2", + "@ag-grid-enterprise/core": "32.0.2", + "@ag-grid-enterprise/excel-export": "32.0.2", + "@ag-grid-enterprise/filter-tool-panel": "32.0.2", + "@ag-grid-enterprise/menu": "32.0.2", + "@ag-grid-enterprise/range-selection": "32.0.2", + "@ag-grid-enterprise/row-grouping": "32.0.2", + "@ag-grid-enterprise/server-side-row-model": "32.0.2", + "@ag-grid-enterprise/side-bar": "32.0.2", + "@ag-grid-enterprise/status-bar": "32.0.2", "@finos/legend-application": "workspace:*", "@finos/legend-art": "workspace:*", "@finos/legend-graph": "workspace:*", @@ -70,7 +70,7 @@ "@types/css-font-loading-module": "0.0.13", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", - "mobx": "6.13.0", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "monaco-editor": "0.50.0", "react": "18.3.1", @@ -85,7 +85,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-lego/src/code-editor/CodeEditor.tsx b/packages/legend-lego/src/code-editor/CodeEditor.tsx index 4044cab993..cdf2390d9b 100644 --- a/packages/legend-lego/src/code-editor/CodeEditor.tsx +++ b/packages/legend-lego/src/code-editor/CodeEditor.tsx @@ -99,7 +99,7 @@ export const CodeEditor: React.FC<{ ...getBaseCodeEditorOptions(), theme: applicationStore.layoutService .TEMPORARY__isLightColorThemeEnabled - ? lightTheme ?? CODE_EDITOR_THEME.BUILT_IN__VSCODE_LIGHT + ? (lightTheme ?? CODE_EDITOR_THEME.BUILT_IN__VSCODE_LIGHT) : CODE_EDITOR_THEME.DEFAULT_DARK, // layout diff --git a/packages/legend-manual-tests/package.json b/packages/legend-manual-tests/package.json index 0617936571..6255707c89 100644 --- a/packages/legend-manual-tests/package.json +++ b/packages/legend-manual-tests/package.json @@ -31,7 +31,7 @@ "@finos/legend-graph": "workspace:*", "@finos/legend-query-builder": "workspace:*", "@finos/legend-shared": "workspace:*", - "@testing-library/dom": "10.3.1", + "@testing-library/dom": "10.3.2", "@testing-library/react": "16.0.0", "react": "18.3.1", "react-dom": "18.3.1" diff --git a/packages/legend-query-builder/package.json b/packages/legend-query-builder/package.json index afaa9faf03..adda2ca887 100644 --- a/packages/legend-query-builder/package.json +++ b/packages/legend-query-builder/package.json @@ -49,13 +49,13 @@ "@finos/legend-server-depot": "workspace:*", "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", - "@testing-library/dom": "10.3.1", + "@testing-library/dom": "10.3.2", "@testing-library/react": "16.0.0", "@types/react": "18.3.3", "@types/react-dom": "18.3.0", "chart.js": "4.4.3", - "mathjs": "13.0.2", - "mobx": "6.13.0", + "mathjs": "13.0.3", + "mobx": "6.13.1", "mobx-react-lite": "4.0.7", "monaco-editor": "0.50.0", "react": "18.3.1", @@ -73,7 +73,7 @@ "jest": "29.7.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "sass": "1.77.7", + "sass": "1.77.8", "typescript": "5.5.3" }, "peerDependencies": { diff --git a/packages/legend-query-builder/src/components/QueryBuilderSideBar.tsx b/packages/legend-query-builder/src/components/QueryBuilderSideBar.tsx index 05ffd9cde7..45b5562532 100644 --- a/packages/legend-query-builder/src/components/QueryBuilderSideBar.tsx +++ b/packages/legend-query-builder/src/components/QueryBuilderSideBar.tsx @@ -145,7 +145,7 @@ export const QueryBuilderClassSelector = observer( placeholder={ classOptions.length ? 'Choose an entity...' - : noMatchMessage ?? 'No entity found' + : (noMatchMessage ?? 'No entity found') } disabled={ classOptions.length < 1 || diff --git a/packages/legend-query-builder/src/components/QueryLoader.tsx b/packages/legend-query-builder/src/components/QueryLoader.tsx index 3c55bec7d6..936eab1211 100644 --- a/packages/legend-query-builder/src/components/QueryLoader.tsx +++ b/packages/legend-query-builder/src/components/QueryLoader.tsx @@ -401,9 +401,9 @@ export const QueryLoader = observer( <>
{queryLoaderState.showingDefaultQueries ? ( - queryLoaderState.generateDefaultQueriesSummaryText?.( + (queryLoaderState.generateDefaultQueriesSummaryText?.( results, - ) ?? 'Refine your search to get better matches' + ) ?? 'Refine your search to get better matches') ) : !queryLoaderState.isCuratedTemplateToggled ? ( results.length >= QUERY_LOADER_TYPEAHEAD_SEARCH_LIMIT ? ( <> diff --git a/packages/legend-query-builder/src/components/shared/CustomDatePicker.tsx b/packages/legend-query-builder/src/components/shared/CustomDatePicker.tsx index 3a2af38511..eb59f760f0 100644 --- a/packages/legend-query-builder/src/components/shared/CustomDatePicker.tsx +++ b/packages/legend-query-builder/src/components/shared/CustomDatePicker.tsx @@ -977,7 +977,7 @@ const CustomDateInstanceValueEditor: React.FC<{ ) => { const duration = event.target.value !== '' - ? returnUndefOnError(() => parseNumber(event.target.value)) ?? 0 + ? (returnUndefOnError(() => parseNumber(event.target.value)) ?? 0) : 0; setDurationValue(duration); changeValue(duration, unitValue, directionValue, referenceMomentValue); diff --git a/packages/legend-query-builder/src/stores/explorer/QueryBuilderExplorerState.ts b/packages/legend-query-builder/src/stores/explorer/QueryBuilderExplorerState.ts index ee68778d62..655297a38a 100644 --- a/packages/legend-query-builder/src/stores/explorer/QueryBuilderExplorerState.ts +++ b/packages/legend-query-builder/src/stores/explorer/QueryBuilderExplorerState.ts @@ -765,7 +765,7 @@ export class QueryBuilderExplorerState { } nodeToOpen = nodeToOpen instanceof QueryBuilderExplorerTreePropertyNodeData - ? this.treeData?.nodes.get(nodeToOpen.parentId) ?? null + ? (this.treeData?.nodes.get(nodeToOpen.parentId) ?? null) : null; } this.refreshTree(); diff --git a/packages/legend-server-sdlc/package.json b/packages/legend-server-sdlc/package.json index fad594b1d4..e351c767d4 100644 --- a/packages/legend-server-sdlc/package.json +++ b/packages/legend-server-sdlc/package.json @@ -41,7 +41,7 @@ "dependencies": { "@finos/legend-shared": "workspace:*", "@finos/legend-storage": "workspace:*", - "mobx": "6.13.0", + "mobx": "6.13.1", "serializr": "3.0.2" }, "devDependencies": { diff --git a/packages/legend-server-showcase-deployment/package.json b/packages/legend-server-showcase-deployment/package.json index ce33788aa0..a6a28b6f2f 100644 --- a/packages/legend-server-showcase-deployment/package.json +++ b/packages/legend-server-showcase-deployment/package.json @@ -65,7 +65,7 @@ "npm-run-all": "4.1.5", "rimraf": "6.0.1", "typescript": "5.5.3", - "webpack": "5.92.1", + "webpack": "5.93.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4" }, diff --git a/packages/legend-server-showcase/package.json b/packages/legend-server-showcase/package.json index e5b2d6e8cd..fab5dae897 100644 --- a/packages/legend-server-showcase/package.json +++ b/packages/legend-server-showcase/package.json @@ -40,7 +40,7 @@ "dependencies": { "@finos/legend-shared": "workspace:*", "fastify": "4.28.1", - "mobx": "6.13.0", + "mobx": "6.13.1", "serializr": "3.0.2", "yaml": "2.4.5" }, diff --git a/packages/legend-shared/package.json b/packages/legend-shared/package.json index 8202a99e43..4956f17a5d 100644 --- a/packages/legend-shared/package.json +++ b/packages/legend-shared/package.json @@ -40,7 +40,7 @@ "test:watch": "jest --watch" }, "dependencies": { - "@braintree/sanitize-url": "7.0.4", + "@braintree/sanitize-url": "7.1.0", "@types/lodash-es": "4.17.12", "@types/object-hash": "3.0.6", "@types/pako": "2.0.3", @@ -54,7 +54,7 @@ "http-status-codes": "2.3.0", "lodash-es": "4.17.21", "lossless-json": "4.0.1", - "mobx": "6.13.0", + "mobx": "6.13.1", "object-hash": "3.0.0", "pako": "2.1.0", "papaparse": "5.4.1", diff --git a/packages/legend-shared/src/network/NetworkUtils.ts b/packages/legend-shared/src/network/NetworkUtils.ts index 11da87fc95..95fde1f7b9 100644 --- a/packages/legend-shared/src/network/NetworkUtils.ts +++ b/packages/legend-shared/src/network/NetworkUtils.ts @@ -593,6 +593,14 @@ export const buildUrl = (parts: string[]): string => .map((part) => part.replaceAll(/^\/+/g, '').replaceAll(/\/+$/g, '')) .join(URL_SEPARATOR); -export const sanitizeURL = (val: string): string => sanitizeUrl(val); +export const sanitizeURL = (val: string): string => { + // eslint-disable-next-line no-process-env + if (process.env.NODE_ENV === 'test') { + // NOTE: the library we use for sanizing URL use URL.canParse() which is not available in JSDOM + // so we skip sanitizing URL in test environment for now + return val; + } + return sanitizeUrl(val); +}; export const isValidURL = (val: string): boolean => URL_REGEX.test(val); diff --git a/packages/legend-vscode-extension-dependencies/package.json b/packages/legend-vscode-extension-dependencies/package.json index e53260a66e..f38e60e127 100644 --- a/packages/legend-vscode-extension-dependencies/package.json +++ b/packages/legend-vscode-extension-dependencies/package.json @@ -44,7 +44,7 @@ "@finos/legend-storage": "workspace:*" }, "devDependencies": { - "@babel/core": "7.24.8", + "@babel/core": "7.24.9", "@finos/legend-dev-utils": "workspace:*", "@rollup/plugin-babel": "6.0.4", "@rollup/plugin-commonjs": "26.0.1", @@ -55,7 +55,7 @@ "eslint": "8.57.0", "npm-run-all": "4.1.5", "rimraf": "6.0.1", - "rollup": "4.18.1", + "rollup": "4.19.0", "rollup-plugin-flow": "1.1.1", "rollup-plugin-import-css": "3.5.0", "typescript": "5.5.3" diff --git a/scripts/copyright/copyright.config.js b/scripts/copyright/copyright.config.js index d9c680f061..4dd7098d80 100644 --- a/scripts/copyright/copyright.config.js +++ b/scripts/copyright/copyright.config.js @@ -22,9 +22,7 @@ const __dirname = dirname(fileURLToPath(import.meta.url)); export default { extensions: ['js', 'ts', 'tsx', 'css', 'scss'], - excludePatterns: [ - 'packages/legend-application-repl/grammar/parser/generated/*', - ], + excludePatterns: [], copyrightText: readFileSync(resolve(__dirname, './COPYRIGHT_HEADER.txt'), { encoding: 'utf-8', }), diff --git a/scripts/github-bot/package.json b/scripts/github-bot/package.json index 3b8545ef75..7d6a7cc090 100644 --- a/scripts/github-bot/package.json +++ b/scripts/github-bot/package.json @@ -17,6 +17,6 @@ "@actions/core": "1.10.1", "@actions/github": "6.0.0", "chalk": "5.3.0", - "semver": "7.6.2" + "semver": "7.6.3" } } diff --git a/scripts/workflow/checkProjectReferenceConfigs.js b/scripts/workflow/checkProjectReferenceConfigs.js index 2fa62d3bd9..73de66b6ae 100644 --- a/scripts/workflow/checkProjectReferenceConfigs.js +++ b/scripts/workflow/checkProjectReferenceConfigs.js @@ -26,10 +26,7 @@ console.log( checkProjectReferenceConfig({ rootDir: resolve(__dirname, '../../'), - excludeReferencePatterns: [ - '**/tsconfig.package.json', - '**/tsconfig.grammar.json', - ], + excludeReferencePatterns: ['**/tsconfig.package.json'], }); console.log( @@ -43,8 +40,5 @@ checkProjectReferenceConfig({ '@finos/legend-manual-tests', '@finos/legend-application-*-deployment', ], - excludeReferencePatterns: [ - '**/tsconfig.package.json', - '**/tsconfig.grammar.json', - ], + excludeReferencePatterns: ['**/tsconfig.package.json'], }); diff --git a/yarn.lock b/yarn.lock index be1318fc2e..4b883ae209 100644 --- a/yarn.lock +++ b/yarn.lock @@ -37,169 +37,169 @@ __metadata: languageName: node linkType: hard -"@ag-grid-community/client-side-row-model@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-community/client-side-row-model@npm:32.0.1" +"@ag-grid-community/client-side-row-model@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-community/client-side-row-model@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" + "@ag-grid-community/core": "npm:32.0.2" tslib: "npm:^2.3.0" - checksum: 10/a623cdeff24e1d359696f183a4b7a0c795f7ae25836e67f36de729c64f47fee3d1968f6e456938a2c9fe3d96f23d358e87acde102e6fc9eef4fad4bec25f4128 + checksum: 10/e323648bb53d805087586b13eb929092631db2fdcd39c236675b63487592fcc12b9fefc01542e61dafc9a26421307eb87cc1fdb56a36ee3d4993e3ee2a348370 languageName: node linkType: hard -"@ag-grid-community/core@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-community/core@npm:32.0.1" +"@ag-grid-community/core@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-community/core@npm:32.0.2" dependencies: - ag-charts-types: "npm:10.0.1" + ag-charts-types: "npm:10.0.2" tslib: "npm:^2.3.0" - checksum: 10/34c56c9eef7c428bef9a7033e7f0c30055181d97cf3b72333d327c6b703c416ce282a47fbca4e4cccccc7262779cd1bf8eec2d58be27112686484a9d7732bbee + checksum: 10/f8308dc3f1575abc962c5540020c5449a932e7c3d7df2d7d61d99a0b890284777ab97f6c0f8bd56f05e23b31b3edefebac97a96e3fe6080c3f55a7d65503820d languageName: node linkType: hard -"@ag-grid-community/csv-export@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-community/csv-export@npm:32.0.1" +"@ag-grid-community/csv-export@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-community/csv-export@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" + "@ag-grid-community/core": "npm:32.0.2" tslib: "npm:^2.3.0" - checksum: 10/033735d4933ddc66772d7b7b6752e3d7968394936a8b4858596860200231e3a0bebc3d46277a26431931c35e432afd6d07f3d65ed91e0e28bec26a5957b7db9b + checksum: 10/a61a25b5fa34cf1019102717c5c6c481569905d98d38e80f14086ec5b82bd712734ce82deae3d136877e98cea0db3ce2d44f4b35a439f42b65c8bbbf9190d2b9 languageName: node linkType: hard -"@ag-grid-community/react@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-community/react@npm:32.0.1" +"@ag-grid-community/react@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-community/react@npm:32.0.2" dependencies: prop-types: "npm:^15.8.1" peerDependencies: - "@ag-grid-community/core": 32.0.1 + "@ag-grid-community/core": 32.0.2 react: ^16.3.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.3.0 || ^17.0.0 || ^18.0.0 - checksum: 10/d3f069e65f4cf4cebc4c79d1a023abf93488e88232d7d30f8f9185b6bbe97ccdc4950ca998cf0939aa5ec2eee961226204599019afbc17bcb4073ce6fbac5820 + checksum: 10/93d62e585e7a5b0d321b5942f14ee4360a2064f7d1c5a12a1eba81de96712e4b7708d40a81cf4bb0d8ec2b1f056b9e663d65116e7ad572ce047b5bf29128b07a languageName: node linkType: hard -"@ag-grid-community/styles@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-community/styles@npm:32.0.1" - checksum: 10/66727a588fa602f23c315ba2c60ebf60286ae5b2cf543542f075566a940393bc754279d9daaed654d07c507b23981da72d555de7530063aadfe6f4984921d524 +"@ag-grid-community/styles@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-community/styles@npm:32.0.2" + checksum: 10/f62d348bb3d7c18d1b63dfd0b9cc62748295278d0ce2b52deeb50123a389b96e7926253720785a48a2f2505142b82d6396504f0bcfb8c45c85ddab6388f3120b languageName: node linkType: hard -"@ag-grid-enterprise/clipboard@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/clipboard@npm:32.0.1" +"@ag-grid-enterprise/clipboard@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/clipboard@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-community/csv-export": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/cf999a28e975ca9bd58b6347873e009984f2ed4e3cf1401dc17b1dff5374b1f04289cb5bda8956fcdd0f8021345ca514610d3cdc7401c2bca9b34fec3450ec60 + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-community/csv-export": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/1f769c519a99ddc11e7e46f9950d9cc83af09058c37c63cc78be5f82247cb5a87be0c077f1e2cecf3e5758b348ce6b6956e43e47c8dd63798735e1ba64e1fbf6 languageName: node linkType: hard -"@ag-grid-enterprise/column-tool-panel@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/column-tool-panel@npm:32.0.1" +"@ag-grid-enterprise/column-tool-panel@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/column-tool-panel@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - "@ag-grid-enterprise/row-grouping": "npm:32.0.1" - "@ag-grid-enterprise/side-bar": "npm:32.0.1" - checksum: 10/e5022433eb231583499237df2402aec7763e1505ade94b99b1a86e06f4c58db261a2dfa73c585efc3ddbb63ffcb1c6f31e0f855ce60cb82fae0f05c8939f29fc + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + "@ag-grid-enterprise/row-grouping": "npm:32.0.2" + "@ag-grid-enterprise/side-bar": "npm:32.0.2" + checksum: 10/5dbdfe00d3658c4fe05132ff4d69e162decc58e27202cf9df3f1975ba3b11900368df29af4eed4e05683a0baf915ea7ecc1aadb0c1f6f1df52c4936b8069249d languageName: node linkType: hard -"@ag-grid-enterprise/core@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/core@npm:32.0.1" +"@ag-grid-enterprise/core@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/core@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - checksum: 10/3b8c4ebde9016bdb02d022a1c98339073f3641ffdf7829194e10241795475c31c69a61b133b69a3da24e21ad915b80f682294839d07d0e5f083ba7c1813a7306 + "@ag-grid-community/core": "npm:32.0.2" + checksum: 10/f1921807dfb31baebc2364ea85a02dccd7c9996029340bf33fe93bee91db05c7928f6ddedc33835ca99a4143af2ff36dce106b61f31b6f8793cac75e19565ac9 languageName: node linkType: hard -"@ag-grid-enterprise/excel-export@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/excel-export@npm:32.0.1" +"@ag-grid-enterprise/excel-export@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/excel-export@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-community/csv-export": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/9bbcfd7cbb8983691b7dce3303570b443183867b77ba4b78da32e6620f69d7c904c28fa63e6eafd63c7e060e055731de6ba832ee4af280280d917e5aad449458 + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-community/csv-export": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/a33c3e8943d89009ff45e4942f34b0f059a602118d8c7ff2715edbec3eb4d987bf454a31c1263a81f3c3d04d49044d87fc2326b7f5af9801094817d48b975c72 languageName: node linkType: hard -"@ag-grid-enterprise/filter-tool-panel@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/filter-tool-panel@npm:32.0.1" +"@ag-grid-enterprise/filter-tool-panel@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/filter-tool-panel@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - "@ag-grid-enterprise/side-bar": "npm:32.0.1" - checksum: 10/a6649bad2fab74523ea4638c0986349814816d51a0dd2ce2439aac06b70ec2d5fafcee64a1a8f165f543abee4eb52cc2799d10ef5cd8e0666c8a0ea72a49373c + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + "@ag-grid-enterprise/side-bar": "npm:32.0.2" + checksum: 10/afa1d4833e55e61c7752efff0ef158f85c9a0a905dfdbcf9bfd84c3ea2ec808def8763044c65dd11879ae3669e345283a655752d47bbd669174fad67cec2f801 languageName: node linkType: hard -"@ag-grid-enterprise/menu@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/menu@npm:32.0.1" +"@ag-grid-enterprise/menu@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/menu@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/column-tool-panel": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/5b6d89baaad36385ad4a048e9448f095a6be8d76c8ff3b50d8c0717d1f29e1d90c37af6b774beba433d40549b419186a366feaba847267e6b41ce2e2aeb6d2c8 + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/column-tool-panel": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/d27165fd2c4395460d2845504306a81fe5982952671dcae86d9275d153793f3bcf249ae6050f3d5d89eff618d45cd3e1ad806591bd50e0fd0d4bfe1b799777f2 languageName: node linkType: hard -"@ag-grid-enterprise/range-selection@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/range-selection@npm:32.0.1" +"@ag-grid-enterprise/range-selection@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/range-selection@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/976cdcd0eae0ec64f0da5ad402abb636eba783378236b7ad184d6d3e312602d8b446b043e721fb9e6473c62e3bbf24eeb873fd0eb2bc3b2576c8517d4ab24b3f + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/261ff7640819bd2fee6f772d31200d4636e71ea865fd786de0da9aa989c52ec1093de2a669744d36e6f776beed2e53411345ccc4c195f0bc2433c7cd402a946b languageName: node linkType: hard -"@ag-grid-enterprise/row-grouping@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/row-grouping@npm:32.0.1" +"@ag-grid-enterprise/row-grouping@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/row-grouping@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/520d4a9f2168275fc9042ada4612685616f2ea6e0877ec8d3fa99db4e3c72ed8d9a11bc15b93b6903809aea9e6cbb510c39a3a3ffeac74a5103c001caba3392a + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/f4e8b8e50c5ebbd4789165061d355820e143a74662ddf6b4be0cd5962ff9247d368f30b7cbffcf23610b6fd57115ac474f08ea0a4f717ed0ac99b1e3635e8b8a languageName: node linkType: hard -"@ag-grid-enterprise/server-side-row-model@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/server-side-row-model@npm:32.0.1" +"@ag-grid-enterprise/server-side-row-model@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/server-side-row-model@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/6684928678fff84d69aa87577edd36ed34be6c9faac452f9cec10331c516cfbd20b3bb893e3b3c0d1e9c36af124eb1da5b4e5899d3703dc51a3ee85288775ae5 + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/6e9c1f7edee32b5fd34b65cb3949fc0d951a0c7af9dc4338ded9e76545ec4190fe4359b6d177d157894d0514d127b8e4b5181365b41d3de73efba66ffc9dc019 languageName: node linkType: hard -"@ag-grid-enterprise/side-bar@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/side-bar@npm:32.0.1" +"@ag-grid-enterprise/side-bar@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/side-bar@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - checksum: 10/9385728f7497d1751f671c0ebe4f1e0a10a9aec574e29799fd6c9f5bb6f68ab436bf953cb90fe16ffac9b5ea251a576bf5db58e8e9eed91bccdb0f4229c6ef3c + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + checksum: 10/2e2d885b497f5e3cb438266541c98b79c63f82af77a5dd44a47098e81bafb72457a424eb25b4dd88ba0802a12fe1be6cff23f5ed6941416c868636fe4641eaa3 languageName: node linkType: hard -"@ag-grid-enterprise/status-bar@npm:32.0.1": - version: 32.0.1 - resolution: "@ag-grid-enterprise/status-bar@npm:32.0.1" +"@ag-grid-enterprise/status-bar@npm:32.0.2": + version: 32.0.2 + resolution: "@ag-grid-enterprise/status-bar@npm:32.0.2" dependencies: - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" tslib: "npm:^2.3.0" - checksum: 10/f7f69a24fd8f91bd746aeb42faab30275dc9ec077dc0bd6c22db870c27354ebf5465f763ed60eb1925dfeca0a07b097a7a40c661c0c596d2aceb32288082cc21 + checksum: 10/35087104be060a2ed63ca64ac44a91c167aafc0e2f9051ae17d3fe5345729bf4ba0006e622eaba8b93a15b0468443adeef1b2b0c7a4deaf75acff9ea7a98f2c9 languageName: node linkType: hard @@ -231,32 +231,32 @@ __metadata: linkType: hard "@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/compat-data@npm:7.24.8" - checksum: 10/6989b8a61782d9c6c7a1fc58b4efd4fb68e5f5a5b6be3463a3de3752f39a30d21438b8b4485c18cb6b8d7f29e07f79d79639caa08737fae57838e81d7da055c0 + version: 7.24.9 + resolution: "@babel/compat-data@npm:7.24.9" + checksum: 10/fcdbf3dd978305880f06ae20a23f4f68a8eddbe64fc5d2fbc98dfe4cdf15c174cff41e3a8eb9d935f9f3a68d3a23fa432044082ee9768a2ed4b15f769b8f6853 languageName: node linkType: hard -"@babel/core@npm:7.24.8, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": - version: 7.24.8 - resolution: "@babel/core@npm:7.24.8" +"@babel/core@npm:7.24.9, @babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.23.9": + version: 7.24.9 + resolution: "@babel/core@npm:7.24.9" dependencies: "@ampproject/remapping": "npm:^2.2.0" "@babel/code-frame": "npm:^7.24.7" - "@babel/generator": "npm:^7.24.8" + "@babel/generator": "npm:^7.24.9" "@babel/helper-compilation-targets": "npm:^7.24.8" - "@babel/helper-module-transforms": "npm:^7.24.8" + "@babel/helper-module-transforms": "npm:^7.24.9" "@babel/helpers": "npm:^7.24.8" "@babel/parser": "npm:^7.24.8" "@babel/template": "npm:^7.24.7" "@babel/traverse": "npm:^7.24.8" - "@babel/types": "npm:^7.24.8" + "@babel/types": "npm:^7.24.9" convert-source-map: "npm:^2.0.0" debug: "npm:^4.1.0" gensync: "npm:^1.0.0-beta.2" json5: "npm:^2.2.3" semver: "npm:^6.3.1" - checksum: 10/79818e6e8ecd5f50ffbfb8dfb1748928e6e17b198bd8da0d6f725bf67aece5141020cd3aba56dc425a33e118c0e80e5569ad6fa615897e49726087dd875279d7 + checksum: 10/f00a372fa547f6e21f4db1b6e521e6eb01f77f5931726897aae6f4cf29a687f615b9b77147b539e851a68bf94e4850bcfba7eb11091dd8e2bc625f6d831ce257 languageName: node linkType: hard @@ -274,15 +274,15 @@ __metadata: languageName: node linkType: hard -"@babel/generator@npm:^7.24.8, @babel/generator@npm:^7.7.2": - version: 7.24.8 - resolution: "@babel/generator@npm:7.24.8" +"@babel/generator@npm:^7.24.8, @babel/generator@npm:^7.24.9, @babel/generator@npm:^7.7.2": + version: 7.24.10 + resolution: "@babel/generator@npm:7.24.10" dependencies: - "@babel/types": "npm:^7.24.8" + "@babel/types": "npm:^7.24.9" "@jridgewell/gen-mapping": "npm:^0.3.5" "@jridgewell/trace-mapping": "npm:^0.3.25" jsesc: "npm:^2.5.1" - checksum: 10/dc1bd931120f93e7a5b35fdf66c13ca56b966b07ee9ba124f7e24b1905cbcf7d7891cc7c281961876eff9fcff67c46652cce89847665e263bc04d283d4343164 + checksum: 10/c2491fb7d985527a165546cbcf9e5f6a2518f2a968c7564409c012acce1019056b21e67a152af89b3f4d4a295ca2e75a1a16858152f750efbc4b5087f0cb7253 languageName: node linkType: hard @@ -413,9 +413,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-module-transforms@npm:7.24.8" +"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.24.9": + version: 7.24.9 + resolution: "@babel/helper-module-transforms@npm:7.24.9" dependencies: "@babel/helper-environment-visitor": "npm:^7.24.7" "@babel/helper-module-imports": "npm:^7.24.7" @@ -424,7 +424,7 @@ __metadata: "@babel/helper-validator-identifier": "npm:^7.24.7" peerDependencies: "@babel/core": ^7.0.0 - checksum: 10/912ad994da126c3150d8f8702030380849608094a7a352523ffa8e697080da9358d63af2582d38902c929839f394bbc6f1ae4921ba132ba3f65f27f0696aa2c7 + checksum: 10/eaed9cb93edb11626758f76bfb482f9c3b6583f6756813c5ef849d6d52bbe7c2cb39f61646758e860732d14c2588b60eb4e2af78d7751450649a8d3d7ca41697 languageName: node linkType: hard @@ -1636,7 +1636,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:7.24.8, @babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.7, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:7.24.8, @babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.24.8, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.24.8 resolution: "@babel/runtime@npm:7.24.8" dependencies: @@ -1674,14 +1674,14 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": - version: 7.24.8 - resolution: "@babel/types@npm:7.24.8" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.24.7, @babel/types@npm:^7.24.8, @babel/types@npm:^7.24.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": + version: 7.24.9 + resolution: "@babel/types@npm:7.24.9" dependencies: "@babel/helper-string-parser": "npm:^7.24.8" "@babel/helper-validator-identifier": "npm:^7.24.7" to-fast-properties: "npm:^2.0.0" - checksum: 10/29b080b2753c22ee5e2455ff767a971443245d945dea4d1b3130e036dcdf0949a89539a581753c68d03d2f2f2325244ee0f91fb83dabee1cbac5db5246838137 + checksum: 10/21873a08a124646824aa230de06af52149ab88206dca59849dcb3003990a6306ec2cdaa4147ec1127c0cfc5f133853cfc18f80d7f6337b6662a3c378ed565f15 languageName: node linkType: hard @@ -1692,10 +1692,10 @@ __metadata: languageName: node linkType: hard -"@braintree/sanitize-url@npm:7.0.4": - version: 7.0.4 - resolution: "@braintree/sanitize-url@npm:7.0.4" - checksum: 10/80ea0080776a0305d697d12042acac287675e88a2abd9d294464f70ec57c1b00242d8d02a110c98ef8ea1731e512d67273ff5532c4bf01a78ab8b046fabb53d9 +"@braintree/sanitize-url@npm:7.1.0": + version: 7.1.0 + resolution: "@braintree/sanitize-url@npm:7.1.0" + checksum: 10/b25cc5358bedfd97d8378d23ab43493e56a805bd82fdb092088bdd9db6aa3f6c32859d36526f570fb2c67a5a4f9ce579aacd52c3872db4285e4c34fb9947dfc0 languageName: node linkType: hard @@ -1975,7 +1975,7 @@ __metadata: languageName: node linkType: hard -"@csstools/css-parser-algorithms@npm:^2.6.3": +"@csstools/css-parser-algorithms@npm:^2.7.1": version: 2.7.1 resolution: "@csstools/css-parser-algorithms@npm:2.7.1" peerDependencies: @@ -1984,14 +1984,14 @@ __metadata: languageName: node linkType: hard -"@csstools/css-tokenizer@npm:^2.3.1": +"@csstools/css-tokenizer@npm:^2.4.1": version: 2.4.1 resolution: "@csstools/css-tokenizer@npm:2.4.1" checksum: 10/a368e5c96d3b11e147f95951e336105480acfa457cdbc6fdf97e8873ff92ab9ee6b4b6224ac1b263f08798802f6b29b8977a502d070f9ab695c9b9905b964198 languageName: node linkType: hard -"@csstools/media-query-list-parser@npm:^2.1.11": +"@csstools/media-query-list-parser@npm:^2.1.13": version: 2.1.13 resolution: "@csstools/media-query-list-parser@npm:2.1.13" peerDependencies: @@ -2024,149 +2024,149 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.11.0": - version: 11.11.0 - resolution: "@emotion/babel-plugin@npm:11.11.0" +"@emotion/babel-plugin@npm:^11.12.0": + version: 11.12.0 + resolution: "@emotion/babel-plugin@npm:11.12.0" dependencies: "@babel/helper-module-imports": "npm:^7.16.7" "@babel/runtime": "npm:^7.18.3" - "@emotion/hash": "npm:^0.9.1" - "@emotion/memoize": "npm:^0.8.1" - "@emotion/serialize": "npm:^1.1.2" + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/serialize": "npm:^1.2.0" babel-plugin-macros: "npm:^3.1.0" convert-source-map: "npm:^1.5.0" escape-string-regexp: "npm:^4.0.0" find-root: "npm:^1.1.0" source-map: "npm:^0.5.7" stylis: "npm:4.2.0" - checksum: 10/8de017666838fc06b1a961d7a49b4e6dc0c83dbb064ea33512bae056594f0811a87e3242ef90fa2aa49fc080fab1cc7af536e7aee9398eaca7a1fc020d2dd527 + checksum: 10/fe6f4522ea2b61ef4214dd0b0f3778aad9c18434b47e50ae5091af226526bf305455c313065826a090682520c9462c151d4df62ec128f14671d3125afc05b148 languageName: node linkType: hard -"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.4.0": - version: 11.11.0 - resolution: "@emotion/cache@npm:11.11.0" +"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.13.0, @emotion/cache@npm:^11.4.0": + version: 11.13.0 + resolution: "@emotion/cache@npm:11.13.0" dependencies: - "@emotion/memoize": "npm:^0.8.1" - "@emotion/sheet": "npm:^1.2.2" - "@emotion/utils": "npm:^1.2.1" - "@emotion/weak-memoize": "npm:^0.3.1" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/sheet": "npm:^1.4.0" + "@emotion/utils": "npm:^1.4.0" + "@emotion/weak-memoize": "npm:^0.4.0" stylis: "npm:4.2.0" - checksum: 10/ef29756247dafb87168b4ffb76ee60feb06b8a1016323ecb1d3ba8aed3f4300ca10049bedbfe83aa11e0d81e616c328002a9d50020ebb3af6e4f5337a785c1fe + checksum: 10/20a3207600cceb0ddc490fbf6c449c73af1cfe6bea01fcf452d2a00a73fd5d8ce2e7b04ff869289e94fa5c528571618bce48d1dd39820d56de38f1e8de314c5d languageName: node linkType: hard -"@emotion/hash@npm:^0.9.1": - version: 0.9.1 - resolution: "@emotion/hash@npm:0.9.1" - checksum: 10/716e17e48bf9047bf9383982c071de49f2615310fb4e986738931776f5a823bc1f29c84501abe0d3df91a3803c80122d24e28b57351bca9e01356ebb33d89876 +"@emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 10/379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.2.2": - version: 1.2.2 - resolution: "@emotion/is-prop-valid@npm:1.2.2" +"@emotion/is-prop-valid@npm:^1.3.0": + version: 1.3.0 + resolution: "@emotion/is-prop-valid@npm:1.3.0" dependencies: - "@emotion/memoize": "npm:^0.8.1" - checksum: 10/0fa3960abfbe845d40cc230ab8c9408e1f33d3c03b321980359911c7212133cdcb0344d249e9dab23342b304567eece7a10ec44b986f7230e0640ba00049dceb + "@emotion/memoize": "npm:^0.9.0" + checksum: 10/9b395dd9734fa88e24aa5adeef90ba86564d29c85d07a18cd39fbd06fbe597a5008a335a6147088de9f0533dbb3691786c8e10e6eaab5c7d960634833a054005 languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/memoize@npm:0.8.1" - checksum: 10/a19cc01a29fcc97514948eaab4dc34d8272e934466ed87c07f157887406bc318000c69ae6f813a9001c6a225364df04249842a50e692ef7a9873335fbcc141b0 +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 10/038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 languageName: node linkType: hard -"@emotion/react@npm:11.11.4, @emotion/react@npm:^11.1.1": - version: 11.11.4 - resolution: "@emotion/react@npm:11.11.4" +"@emotion/react@npm:11.13.0, @emotion/react@npm:^11.1.1": + version: 11.13.0 + resolution: "@emotion/react@npm:11.13.0" dependencies: "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.11.0" - "@emotion/cache": "npm:^11.11.0" - "@emotion/serialize": "npm:^1.1.3" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" - "@emotion/utils": "npm:^1.2.1" - "@emotion/weak-memoize": "npm:^0.3.1" + "@emotion/babel-plugin": "npm:^11.12.0" + "@emotion/cache": "npm:^11.13.0" + "@emotion/serialize": "npm:^1.3.0" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" + "@emotion/utils": "npm:^1.4.0" + "@emotion/weak-memoize": "npm:^0.4.0" hoist-non-react-statics: "npm:^3.3.1" peerDependencies: react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: 10/e7da3a1ddc1d72a4179010bdfd17423c13b1a77bf83a8b18271e919fd382d08c62dc2313ed5347acfd1ef85bb1bae8932597647a986e8a1ea1462552716cd495 + checksum: 10/3dd2b3ffac51f0fa67ef3cb85d4064fd7ddc1212b587e3b328a1eade47024690175518d63c4cbabf28afa07e29187136b26d646e395158f6574fa6321a0b68f9 languageName: node linkType: hard -"@emotion/serialize@npm:^1.0.0, @emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3, @emotion/serialize@npm:^1.1.4": - version: 1.1.4 - resolution: "@emotion/serialize@npm:1.1.4" +"@emotion/serialize@npm:^1.0.0, @emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.0": + version: 1.3.0 + resolution: "@emotion/serialize@npm:1.3.0" dependencies: - "@emotion/hash": "npm:^0.9.1" - "@emotion/memoize": "npm:^0.8.1" - "@emotion/unitless": "npm:^0.8.1" - "@emotion/utils": "npm:^1.2.1" + "@emotion/hash": "npm:^0.9.2" + "@emotion/memoize": "npm:^0.9.0" + "@emotion/unitless": "npm:^0.9.0" + "@emotion/utils": "npm:^1.4.0" csstype: "npm:^3.0.2" - checksum: 10/11fc4f960226778e9a5f86310b739703986d13b2de3e89a16d788126ce312b2c8c174a2947c9bfc80cb124b331c36feeac44193f81150616d94b1ba19a92d70a + checksum: 10/3ab17aa0dabdc77d5d573ef07df63e91e778c0637f4b7f690fde46ab0007496c8dfbf32d2836d3b22ac2ba2d8c58570da51092ba7ff068d4d790147de2352465 languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.2": - version: 1.2.2 - resolution: "@emotion/sheet@npm:1.2.2" - checksum: 10/cc46b20ef7273dc28de889927ae1498f854be2890905745fcc3154fbbacaa54df1e28c3d89ff3339c2022782c78933f51955bb950d105d5a219576db1eadfb7a +"@emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: 10/8ac6e9bf6b373a648f26ae7f1c24041038524f4c72f436f4f8c4761c665e58880c3229d8d89b1f7a4815dd8e5b49634d03e60187cb6f93097d7f7c1859e869d5 languageName: node linkType: hard -"@emotion/styled@npm:11.11.5": - version: 11.11.5 - resolution: "@emotion/styled@npm:11.11.5" +"@emotion/styled@npm:11.13.0": + version: 11.13.0 + resolution: "@emotion/styled@npm:11.13.0" dependencies: "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.11.0" - "@emotion/is-prop-valid": "npm:^1.2.2" - "@emotion/serialize": "npm:^1.1.4" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.1" - "@emotion/utils": "npm:^1.2.1" + "@emotion/babel-plugin": "npm:^11.12.0" + "@emotion/is-prop-valid": "npm:^1.3.0" + "@emotion/serialize": "npm:^1.3.0" + "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" + "@emotion/utils": "npm:^1.4.0" peerDependencies: "@emotion/react": ^11.0.0-rc.0 react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: 10/a936787ef80d73066840391522d88280424de0abb56bec83d17e14bdc5a515e77e343dd171f7caae1405462e3f71815b5480dcc4e1eff5e8ff4a020f5c39341e + checksum: 10/5463a0f15fc12a9e20340f52df49461e948c3ae7e2dd763db0ff937b0b96dd4e82eed85cd15e24621efb3b097a095b88b01d60f50cf6f38fe3ab7db6e77f9615 languageName: node linkType: hard -"@emotion/unitless@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/unitless@npm:0.8.1" - checksum: 10/918f73c46ac0b7161e3c341cc07d651ce87e31ab1695e74b12adb7da6bb98dfbff8c69cf68a4e40d9eb3d820ca055dc1267aeb3007927ce88f98b885bf729b63 +"@emotion/unitless@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/unitless@npm:0.9.0" + checksum: 10/242754aa2f7368b5c2a5dbe61bf0a2bb0bfb4de091fe2388282f8c014c0796d0ca166b1639cf4f5f0e57e59258b622e7946a2e976ed5a56e06a5a306ca25adca languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": - version: 1.0.1 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": + version: 1.1.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" peerDependencies: react: ">=16.8.0" - checksum: 10/7d7ead9ba3f615510f550aea67815281ec5a5487de55aafc250f820317afc1fd419bd9e9e27602a0206ec5c152f13dc6130bccad312c1036706c584c65d66ef7 + checksum: 10/33a10f44a873b3f5ccd2a1a3d13c2f34ed628f5a2be1ccf28540a86535a14d3a930afcbef209d48346a22ec60ff48f43c86ee9c846b9480d23a55a17145da66c languageName: node linkType: hard -"@emotion/utils@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/utils@npm:1.2.1" - checksum: 10/472fa529c64a13edff80aa11698092e8841c1ffb5001c739d84eb9d0fdd6d8e1cd1848669310578ccfa6383b8601132eca54f8749fca40af85d21fdfc9b776c4 +"@emotion/utils@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/utils@npm:1.4.0" + checksum: 10/e4cdb51819db01fec21c3e35a1391900c9e7f3ac1e7ecb419c8e408464830cd7ef6e1a116381cbfe3fb1039406fb7ed35f16a1575d502c92bc9f81bc13a3ee5a languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.1": - version: 0.3.1 - resolution: "@emotion/weak-memoize@npm:0.3.1" - checksum: 10/b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: 10/db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 languageName: node linkType: hard @@ -2289,18 +2289,18 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/eslint-plugin-legend-studio@workspace:packages/eslint-plugin" dependencies: - "@babel/core": "npm:7.24.8" + "@babel/core": "npm:7.24.9" "@babel/eslint-parser": "npm:7.24.8" - "@typescript-eslint/eslint-plugin": "npm:7.16.0" - "@typescript-eslint/parser": "npm:7.16.0" + "@typescript-eslint/eslint-plugin": "npm:7.16.1" + "@typescript-eslint/parser": "npm:7.16.1" cross-env: "npm:7.0.3" eslint-config-prettier: "npm:9.1.0" eslint-plugin-import: "npm:2.29.1" - eslint-plugin-prettier: "npm:5.1.3" - eslint-plugin-react: "npm:7.34.3" + eslint-plugin-prettier: "npm:5.2.1" + eslint-plugin-react: "npm:7.35.0" eslint-plugin-react-hooks: "npm:4.6.2" micromatch: "npm:4.0.7" - prettier: "npm:3.3.2" + prettier: "npm:3.3.3" rimraf: "npm:6.0.1" peerDependencies: eslint: ^8.0.0 @@ -2323,7 +2323,7 @@ __metadata: npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" typescript: "npm:5.5.3" - webpack: "npm:5.92.1" + webpack: "npm:5.93.0" webpack-bundle-analyzer: "npm:4.10.2" webpack-cli: "npm:5.1.4" webpack-dev-server: "npm:5.0.4" @@ -2347,7 +2347,7 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" monaco-editor: "npm:0.50.0" npm-run-all: "npm:4.1.5" @@ -2355,7 +2355,7 @@ __metadata: react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2388,7 +2388,7 @@ __metadata: npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" typescript: "npm:5.5.3" languageName: unknown linkType: soft @@ -2405,7 +2405,7 @@ __metadata: npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" typescript: "npm:5.5.3" - webpack: "npm:5.92.1" + webpack: "npm:5.93.0" webpack-bundle-analyzer: "npm:4.10.2" webpack-cli: "npm:5.1.4" webpack-dev-server: "npm:5.0.4" @@ -2427,20 +2427,20 @@ __metadata: "@finos/legend-shared": "workspace:*" "@finos/legend-storage": "workspace:*" "@jest/globals": "npm:29.7.0" - "@testing-library/dom": "npm:10.3.1" + "@testing-library/dom": "npm:10.3.2" "@testing-library/react": "npm:16.0.0" "@types/react": "npm:18.3.3" "@types/react-dom": "npm:18.3.0" cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2462,9 +2462,9 @@ __metadata: eslint: "npm:8.57.0" npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" - tailwindcss: "npm:3.4.4" + tailwindcss: "npm:3.4.6" typescript: "npm:5.5.3" - webpack: "npm:5.92.1" + webpack: "npm:5.93.0" webpack-bundle-analyzer: "npm:4.10.2" webpack-cli: "npm:5.1.4" webpack-dev-server: "npm:5.0.4" @@ -2475,20 +2475,20 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/legend-application-repl@workspace:packages/legend-application-repl" dependencies: - "@ag-grid-community/client-side-row-model": "npm:32.0.1" - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-community/csv-export": "npm:32.0.1" - "@ag-grid-community/react": "npm:32.0.1" - "@ag-grid-community/styles": "npm:32.0.1" - "@ag-grid-enterprise/clipboard": "npm:32.0.1" - "@ag-grid-enterprise/column-tool-panel": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - "@ag-grid-enterprise/excel-export": "npm:32.0.1" - "@ag-grid-enterprise/menu": "npm:32.0.1" - "@ag-grid-enterprise/range-selection": "npm:32.0.1" - "@ag-grid-enterprise/row-grouping": "npm:32.0.1" - "@ag-grid-enterprise/server-side-row-model": "npm:32.0.1" - "@ag-grid-enterprise/side-bar": "npm:32.0.1" + "@ag-grid-community/client-side-row-model": "npm:32.0.2" + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-community/csv-export": "npm:32.0.2" + "@ag-grid-community/react": "npm:32.0.2" + "@ag-grid-community/styles": "npm:32.0.2" + "@ag-grid-enterprise/clipboard": "npm:32.0.2" + "@ag-grid-enterprise/column-tool-panel": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + "@ag-grid-enterprise/excel-export": "npm:32.0.2" + "@ag-grid-enterprise/menu": "npm:32.0.2" + "@ag-grid-enterprise/range-selection": "npm:32.0.2" + "@ag-grid-enterprise/row-grouping": "npm:32.0.2" + "@ag-grid-enterprise/server-side-row-model": "npm:32.0.2" + "@ag-grid-enterprise/side-bar": "npm:32.0.2" "@finos/legend-application": "workspace:*" "@finos/legend-art": "workspace:*" "@finos/legend-dev-utils": "workspace:*" @@ -2498,11 +2498,10 @@ __metadata: "@jest/globals": "npm:29.7.0" "@types/react": "npm:18.3.3" "@types/react-dom": "npm:18.3.0" - antlr4: "npm:4.13.1-patch-1" cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" monaco-editor: "npm:0.50.0" npm-run-all: "npm:4.1.5" @@ -2510,7 +2509,7 @@ __metadata: react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2544,7 +2543,7 @@ __metadata: npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" typescript: "npm:5.5.3" languageName: unknown linkType: soft @@ -2561,7 +2560,7 @@ __metadata: npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" typescript: "npm:5.5.3" - webpack: "npm:5.92.1" + webpack: "npm:5.93.0" webpack-bundle-analyzer: "npm:4.10.2" webpack-cli: "npm:5.1.4" webpack-dev-server: "npm:5.0.4" @@ -2584,7 +2583,7 @@ __metadata: "@finos/legend-shared": "workspace:*" "@finos/legend-storage": "workspace:*" "@jest/globals": "npm:29.7.0" - "@testing-library/dom": "npm:10.3.1" + "@testing-library/dom": "npm:10.3.2" "@testing-library/react": "npm:16.0.0" "@types/react": "npm:18.3.3" "@types/react-dom": "npm:18.3.0" @@ -2592,7 +2591,7 @@ __metadata: eslint: "npm:8.57.0" fast-xml-parser: "npm:4.4.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" mobx-utils: "npm:6.0.8" monaco-editor: "npm:0.50.0" @@ -2602,7 +2601,7 @@ __metadata: react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" yaml: "npm:2.4.5" @@ -2626,7 +2625,7 @@ __metadata: eslint: "npm:8.57.0" history: "npm:5.3.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" @@ -2636,7 +2635,7 @@ __metadata: react-router: "npm:5.3.4" react-router-dom: "npm:5.3.4" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" xterm: "npm:5.3.0" @@ -2654,8 +2653,8 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/legend-art@workspace:packages/legend-art" dependencies: - "@emotion/react": "npm:11.11.4" - "@emotion/styled": "npm:11.11.5" + "@emotion/react": "npm:11.13.0" + "@emotion/styled": "npm:11.13.0" "@finos/legend-dev-utils": "workspace:*" "@finos/legend-shared": "workspace:*" "@fontsource/jetbrains-mono": "npm:5.0.20" @@ -2666,7 +2665,7 @@ __metadata: "@fontsource/roboto-serif": "npm:5.0.13" "@fontsource/ubuntu-mono": "npm:5.0.20" "@jest/globals": "npm:29.7.0" - "@mui/material": "npm:5.16.1" + "@mui/material": "npm:5.16.4" "@types/react": "npm:18.3.3" "@types/react-resizable": "npm:3.0.8" "@types/react-select": "npm:4.0.18" @@ -2677,7 +2676,7 @@ __metadata: eslint: "npm:8.57.0" jest: "npm:29.7.0" mermaid: "npm:10.9.1" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" @@ -2696,7 +2695,7 @@ __metadata: react-window: "npm:1.8.10" remark-gfm: "npm:4.0.0" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" tailwind-merge: "npm:2.4.0" typescript: "npm:5.5.3" peerDependencies: @@ -2708,7 +2707,7 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/legend-dev-utils@workspace:packages/legend-dev-utils" dependencies: - "@babel/core": "npm:7.24.8" + "@babel/core": "npm:7.24.9" "@changesets/assemble-release-plan": "npm:6.0.3" "@changesets/changelog-github": "npm:0.5.0" "@changesets/config": "npm:3.0.2" @@ -2749,7 +2748,7 @@ __metadata: resolve: "npm:1.22.8" rimraf: "npm:6.0.1" typescript: "npm:5.5.3" - webpack: "npm:5.92.1" + webpack: "npm:5.93.0" languageName: unknown linkType: soft @@ -2769,12 +2768,12 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2802,14 +2801,14 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2834,11 +2833,11 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" typescript: "npm:5.5.3" peerDependencies: react: ^18.0.0 @@ -2865,13 +2864,13 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2892,20 +2891,20 @@ __metadata: "@finos/legend-shared": "workspace:*" "@finos/legend-storage": "workspace:*" "@jest/globals": "npm:29.7.0" - "@testing-library/dom": "npm:10.3.1" + "@testing-library/dom": "npm:10.3.2" "@testing-library/react": "npm:16.0.0" "@types/react": "npm:18.3.3" cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2930,11 +2929,11 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2963,13 +2962,13 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -2994,12 +2993,12 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -3023,12 +3022,12 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -3052,12 +3051,12 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -3082,12 +3081,12 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" npm-run-all: "npm:4.1.5" react: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" typescript: "npm:5.5.3" peerDependencies: @@ -3144,7 +3143,7 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" serializr: "npm:3.0.2" @@ -3159,7 +3158,7 @@ __metadata: "@actions/core": "npm:1.10.1" "@actions/github": "npm:6.0.0" chalk: "npm:5.3.0" - semver: "npm:7.6.2" + semver: "npm:7.6.3" languageName: unknown linkType: soft @@ -3167,22 +3166,22 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/legend-lego@workspace:packages/legend-lego" dependencies: - "@ag-grid-community/client-side-row-model": "npm:32.0.1" - "@ag-grid-community/core": "npm:32.0.1" - "@ag-grid-community/csv-export": "npm:32.0.1" - "@ag-grid-community/react": "npm:32.0.1" - "@ag-grid-community/styles": "npm:32.0.1" - "@ag-grid-enterprise/clipboard": "npm:32.0.1" - "@ag-grid-enterprise/column-tool-panel": "npm:32.0.1" - "@ag-grid-enterprise/core": "npm:32.0.1" - "@ag-grid-enterprise/excel-export": "npm:32.0.1" - "@ag-grid-enterprise/filter-tool-panel": "npm:32.0.1" - "@ag-grid-enterprise/menu": "npm:32.0.1" - "@ag-grid-enterprise/range-selection": "npm:32.0.1" - "@ag-grid-enterprise/row-grouping": "npm:32.0.1" - "@ag-grid-enterprise/server-side-row-model": "npm:32.0.1" - "@ag-grid-enterprise/side-bar": "npm:32.0.1" - "@ag-grid-enterprise/status-bar": "npm:32.0.1" + "@ag-grid-community/client-side-row-model": "npm:32.0.2" + "@ag-grid-community/core": "npm:32.0.2" + "@ag-grid-community/csv-export": "npm:32.0.2" + "@ag-grid-community/react": "npm:32.0.2" + "@ag-grid-community/styles": "npm:32.0.2" + "@ag-grid-enterprise/clipboard": "npm:32.0.2" + "@ag-grid-enterprise/column-tool-panel": "npm:32.0.2" + "@ag-grid-enterprise/core": "npm:32.0.2" + "@ag-grid-enterprise/excel-export": "npm:32.0.2" + "@ag-grid-enterprise/filter-tool-panel": "npm:32.0.2" + "@ag-grid-enterprise/menu": "npm:32.0.2" + "@ag-grid-enterprise/range-selection": "npm:32.0.2" + "@ag-grid-enterprise/row-grouping": "npm:32.0.2" + "@ag-grid-enterprise/server-side-row-model": "npm:32.0.2" + "@ag-grid-enterprise/side-bar": "npm:32.0.2" + "@ag-grid-enterprise/status-bar": "npm:32.0.2" "@finos/legend-application": "workspace:*" "@finos/legend-art": "workspace:*" "@finos/legend-dev-utils": "workspace:*" @@ -3195,7 +3194,7 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" monaco-editor: "npm:0.50.0" npm-run-all: "npm:4.1.5" @@ -3203,7 +3202,7 @@ __metadata: react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" typescript: "npm:5.5.3" peerDependencies: react: ^18.0.0 @@ -3225,7 +3224,7 @@ __metadata: "@finos/legend-query-builder": "workspace:*" "@finos/legend-shared": "workspace:*" "@jest/globals": "npm:29.7.0" - "@testing-library/dom": "npm:10.3.1" + "@testing-library/dom": "npm:10.3.2" "@testing-library/react": "npm:16.0.0" cross-env: "npm:7.0.3" eslint: "npm:8.57.0" @@ -3251,7 +3250,7 @@ __metadata: "@finos/legend-shared": "workspace:*" "@finos/legend-storage": "workspace:*" "@jest/globals": "npm:29.7.0" - "@testing-library/dom": "npm:10.3.1" + "@testing-library/dom": "npm:10.3.2" "@testing-library/react": "npm:16.0.0" "@types/react": "npm:18.3.3" "@types/react-dom": "npm:18.3.0" @@ -3259,8 +3258,8 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mathjs: "npm:13.0.2" - mobx: "npm:6.13.0" + mathjs: "npm:13.0.3" + mobx: "npm:6.13.1" mobx-react-lite: "npm:4.0.7" monaco-editor: "npm:0.50.0" npm-run-all: "npm:4.1.5" @@ -3269,7 +3268,7 @@ __metadata: react-dnd: "npm:16.0.1" react-dom: "npm:18.3.1" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" + sass: "npm:1.77.8" serializr: "npm:3.0.2" sql-formatter: "npm:15.3.2" typescript: "npm:5.5.3" @@ -3307,7 +3306,7 @@ __metadata: cross-env: "npm:7.0.3" eslint: "npm:8.57.0" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" serializr: "npm:3.0.2" @@ -3332,7 +3331,7 @@ __metadata: npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" typescript: "npm:5.5.3" - webpack: "npm:5.92.1" + webpack: "npm:5.93.0" webpack-bundle-analyzer: "npm:4.10.2" webpack-cli: "npm:5.1.4" languageName: unknown @@ -3349,7 +3348,7 @@ __metadata: eslint: "npm:8.57.0" fastify: "npm:4.28.1" jest: "npm:29.7.0" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" serializr: "npm:3.0.2" @@ -3362,7 +3361,7 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/legend-shared@workspace:packages/legend-shared" dependencies: - "@braintree/sanitize-url": "npm:7.0.4" + "@braintree/sanitize-url": "npm:7.1.0" "@finos/legend-dev-utils": "workspace:*" "@jest/globals": "npm:29.7.0" "@types/lodash-es": "npm:4.17.12" @@ -3382,7 +3381,7 @@ __metadata: lodash: "npm:4.17.21" lodash-es: "npm:4.17.21" lossless-json: "npm:4.0.1" - mobx: "npm:6.13.0" + mobx: "npm:6.13.1" npm-run-all: "npm:4.1.5" object-hash: "npm:3.0.0" pako: "npm:2.1.0" @@ -3418,7 +3417,7 @@ __metadata: version: 0.0.0-use.local resolution: "@finos/legend-vscode-extension-dependencies@workspace:packages/legend-vscode-extension-dependencies" dependencies: - "@babel/core": "npm:7.24.8" + "@babel/core": "npm:7.24.9" "@finos/legend-application-studio": "workspace:*" "@finos/legend-dev-utils": "workspace:*" "@finos/legend-extension-dsl-diagram": "workspace:*" @@ -3434,7 +3433,7 @@ __metadata: eslint: "npm:8.57.0" npm-run-all: "npm:4.1.5" rimraf: "npm:6.0.1" - rollup: "npm:4.18.1" + rollup: "npm:4.19.0" rollup-plugin-flow: "npm:1.1.1" rollup-plugin-import-css: "npm:3.5.0" typescript: "npm:5.5.3" @@ -3457,44 +3456,6 @@ __metadata: languageName: unknown linkType: soft -"@floating-ui/core@npm:^1.6.0": - version: 1.6.4 - resolution: "@floating-ui/core@npm:1.6.4" - dependencies: - "@floating-ui/utils": "npm:^0.2.4" - checksum: 10/589430cbff4bac90b9b891e2c94c57dc113d39ac163552f547d9e4c7d21f09997b9d33e82ec717759caee678c47f845f14a3f28df6f029fcfcf3ad803ba4eb7c - languageName: node - linkType: hard - -"@floating-ui/dom@npm:^1.0.0": - version: 1.6.7 - resolution: "@floating-ui/dom@npm:1.6.7" - dependencies: - "@floating-ui/core": "npm:^1.6.0" - "@floating-ui/utils": "npm:^0.2.4" - checksum: 10/a6a42bfd243c311f6040043808a6549c1db45fa36138b81cb1e615170d61fd2daf4f37accc1df3e0189405d97e3d71b12de39879c9d58ccf181c982b69cf6cf9 - languageName: node - linkType: hard - -"@floating-ui/react-dom@npm:^2.0.8": - version: 2.1.1 - resolution: "@floating-ui/react-dom@npm:2.1.1" - dependencies: - "@floating-ui/dom": "npm:^1.0.0" - peerDependencies: - react: ">=16.8.0" - react-dom: ">=16.8.0" - checksum: 10/cafabfb5dd0b25547863520b3bcf6faee7f087d0c3187a8779910a6838d496bf494f237bf1fe883bbfae1a7fcc399611ae52377b696065d8118bd7c1b9c0d253 - languageName: node - linkType: hard - -"@floating-ui/utils@npm:^0.2.4": - version: 0.2.4 - resolution: "@floating-ui/utils@npm:0.2.4" - checksum: 10/7662d7a4ae39c0287e026f666297a3d28c80e588251c8c59ff66938a0aead47d380bbb9018629bd63a98f399c3919ec689d5448a5c48ffc176d545ddef705df1 - languageName: node - linkType: hard - "@fontsource/jetbrains-mono@npm:5.0.20": version: 5.0.20 resolution: "@fontsource/jetbrains-mono@npm:5.0.20" @@ -3569,37 +3530,37 @@ __metadata: languageName: node linkType: hard -"@inquirer/checkbox@npm:^2.3.10": - version: 2.3.10 - resolution: "@inquirer/checkbox@npm:2.3.10" +"@inquirer/checkbox@npm:^2.4.2": + version: 2.4.2 + resolution: "@inquirer/checkbox@npm:2.4.2" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/figures": "npm:^1.0.3" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/core": "npm:^9.0.5" + "@inquirer/figures": "npm:^1.0.5" + "@inquirer/type": "npm:^1.5.1" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10/6a3d4862c8c0ca0bdec7b1e4838cd63fbb1e74fe1f73f391d2805998321d479c4ec6fc31e2ded15983506d99d5fe8f73891fead306c40b986c7df6b7ccc7f513 + checksum: 10/cbf737c950ac3ff7fe96c5b5f8e567b6edfb2076cb13faa8a2c75fab5379783f0571e7348d645f42d80885ec8c70f7a27afe4888d4af0527b686452cdc17feae languageName: node linkType: hard -"@inquirer/confirm@npm:^3.1.14": - version: 3.1.14 - resolution: "@inquirer/confirm@npm:3.1.14" +"@inquirer/confirm@npm:^3.1.17": + version: 3.1.17 + resolution: "@inquirer/confirm@npm:3.1.17" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" - checksum: 10/2f0bff69ac9ea6a60ed9edeb1369849a2882d19bc2000905717bdb22fe09feab7201924ee761382ab550761aa8cd7a7e9e022e96d89a736522715481f1199fb0 + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" + checksum: 10/ab59242227295d0fd6eceb02feb2026155d33f6362c790f25acdf6258bcdff25fbe5ead1e70c4d2479007aff57e1e60cf1182fee2dea7e3a814b36328ca15497 languageName: node linkType: hard -"@inquirer/core@npm:^9.0.2": - version: 9.0.2 - resolution: "@inquirer/core@npm:9.0.2" +"@inquirer/core@npm:^9.0.5": + version: 9.0.5 + resolution: "@inquirer/core@npm:9.0.5" dependencies: - "@inquirer/figures": "npm:^1.0.3" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/figures": "npm:^1.0.5" + "@inquirer/type": "npm:^1.5.1" "@types/mute-stream": "npm:^0.0.4" - "@types/node": "npm:^20.14.9" + "@types/node": "npm:^20.14.11" "@types/wrap-ansi": "npm:^3.0.0" ansi-escapes: "npm:^4.3.2" cli-spinners: "npm:^2.9.2" @@ -3609,117 +3570,130 @@ __metadata: strip-ansi: "npm:^6.0.1" wrap-ansi: "npm:^6.2.0" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10/d947322c4d7eb331cac3dd6d977946c7ba4ea7db556ed763a59cb7ed4159ff1323b1f190ba197da889fc1114e8fad8a1fd3e38134dc48ba2c8417cb7baa4c8d7 + checksum: 10/70b7a488bfb5517f042584074306e27bacb3737df9879265939d588d6c8f12e6abbadce8068500403a897b66d71917c98a31e3c279d1c12744226eeeb5dc8d21 languageName: node linkType: hard -"@inquirer/editor@npm:^2.1.14": - version: 2.1.14 - resolution: "@inquirer/editor@npm:2.1.14" +"@inquirer/editor@npm:^2.1.17": + version: 2.1.17 + resolution: "@inquirer/editor@npm:2.1.17" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" external-editor: "npm:^3.1.0" - checksum: 10/3e0771b9e4f620f5e7ddb08b21f4d9c7190f27d4f621540a8cd4f891a83786e6f5271bface038d27f15e7eec981234f5b330adf687befeb79a956b22863d973e + checksum: 10/33b33e5f0f9c18dc1b242e8dc38debef1fec19c4e4ccbbad3d88c5e74b38ff71fcffe2815487e167d6381d5546f9eed86f2c6a4f12b7f7eb5737232664996876 languageName: node linkType: hard -"@inquirer/expand@npm:^2.1.14": - version: 2.1.14 - resolution: "@inquirer/expand@npm:2.1.14" +"@inquirer/expand@npm:^2.1.17": + version: 2.1.17 + resolution: "@inquirer/expand@npm:2.1.17" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10/6d197956f0d391ce55acf075317a69603c8d37f361cb8d7a88d7ab8b7ca2a74dbaffc28e95c149f2b18add4cb2de6d1b511bdbea89f825e48c22f883376b0055 + checksum: 10/d1f86cc953b28714e8c73bcacb402dfef3b06c574e2a5e31773fd3c489d23dedf5a509dc051dfdf4af0be93a7c35a7b7fc7e1a6b37e6d63c05cd03bb3eb725bb languageName: node linkType: hard -"@inquirer/figures@npm:^1.0.3": - version: 1.0.3 - resolution: "@inquirer/figures@npm:1.0.3" - checksum: 10/fa5c46527580c64ba151e1399f91772670f5f59e47045a3d2366188ed4cab1b63b7fb2a6d40d340f622cb174ca6dd3d5e22b962811c00548f9a9b4024b105dce +"@inquirer/figures@npm:^1.0.5": + version: 1.0.5 + resolution: "@inquirer/figures@npm:1.0.5" + checksum: 10/60a51b2cdef03c89be25071c23d8c4ae427c56d8ac1b00bf054ca7be446674adc4edd66c15465fe6a81ff0726b024bf37f8a2903a8387ef968d33058da3e7a15 languageName: node linkType: hard -"@inquirer/input@npm:^2.2.1": - version: 2.2.1 - resolution: "@inquirer/input@npm:2.2.1" +"@inquirer/input@npm:^2.2.4": + version: 2.2.4 + resolution: "@inquirer/input@npm:2.2.4" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" - checksum: 10/15d965555765b4b3998d5a5013a9e412c41a83009559773ea8ae7b2e974fcb936badceeed7b54c6ede29af8c98760d398c16ac947fc82435c12c824209fe98e2 + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" + checksum: 10/6224c0e0983667282683971f0ec814796a4ee933a4a0acf09752bc3970a52a888af8eac041d71bc10f51731951305dc328e697d459f771358942baac18769faf languageName: node linkType: hard -"@inquirer/number@npm:^1.0.2": - version: 1.0.2 - resolution: "@inquirer/number@npm:1.0.2" +"@inquirer/number@npm:^1.0.5": + version: 1.0.5 + resolution: "@inquirer/number@npm:1.0.5" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" - checksum: 10/472d67ef87325ae87fd6d23730e524e766afca518a76c3367558e966ca708609c80e47c1a2674120f0d50cb7dac6e36322514a28b0af89ee4c9336ca200a1a2d + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" + checksum: 10/88579cce89380bfac6a22dbb955d3ccd18402f22728230531481e8ff09f6931ccef19218b302d511333e5b22c51641cf8bd57c398ddf5114e8e9b358b81941ce languageName: node linkType: hard -"@inquirer/password@npm:^2.1.14": - version: 2.1.14 - resolution: "@inquirer/password@npm:2.1.14" +"@inquirer/password@npm:^2.1.17": + version: 2.1.17 + resolution: "@inquirer/password@npm:2.1.17" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" ansi-escapes: "npm:^4.3.2" - checksum: 10/c0376d986fb2136c48a57fc32a5358bc76b7e1645c8b0d6a2b1e42232de57f020f6da1bdbd550a87c7beff2633414df84f5cc7c85a1e7c833aa891762fa3195e + checksum: 10/943eb431cb3cf80dfe674957ad8fa3eda0b90db00190d477d8e065ca5fa9dc64cab04630e39fda522ddc0675dc12338b64d0ead4ad45eb0083423d0c0baa2319 languageName: node linkType: hard -"@inquirer/prompts@npm:^5.1.2": - version: 5.1.2 - resolution: "@inquirer/prompts@npm:5.1.2" +"@inquirer/prompts@npm:^5.3.0": + version: 5.3.0 + resolution: "@inquirer/prompts@npm:5.3.0" dependencies: - "@inquirer/checkbox": "npm:^2.3.10" - "@inquirer/confirm": "npm:^3.1.14" - "@inquirer/editor": "npm:^2.1.14" - "@inquirer/expand": "npm:^2.1.14" - "@inquirer/input": "npm:^2.2.1" - "@inquirer/number": "npm:^1.0.2" - "@inquirer/password": "npm:^2.1.14" - "@inquirer/rawlist": "npm:^2.1.14" - "@inquirer/select": "npm:^2.3.10" - checksum: 10/91677e0ea2b003d80db40a87ee82f23395946c925c5250644f13b143a5264d20ccd4a0c64a0d71892441f685bce12bf8f7bd5e3e458a40c06c610e5d13c01314 + "@inquirer/checkbox": "npm:^2.4.2" + "@inquirer/confirm": "npm:^3.1.17" + "@inquirer/editor": "npm:^2.1.17" + "@inquirer/expand": "npm:^2.1.17" + "@inquirer/input": "npm:^2.2.4" + "@inquirer/number": "npm:^1.0.5" + "@inquirer/password": "npm:^2.1.17" + "@inquirer/rawlist": "npm:^2.1.17" + "@inquirer/search": "npm:^1.0.0" + "@inquirer/select": "npm:^2.4.2" + checksum: 10/6d53928656952f1cf7b60b51acd55c1cdfa8773fc05e521fd61a477d86fa4492dfd79784656ba89d39945a2339d639c063678a41875bf6f98b862e68272d8985 languageName: node linkType: hard -"@inquirer/rawlist@npm:^2.1.14": - version: 2.1.14 - resolution: "@inquirer/rawlist@npm:2.1.14" +"@inquirer/rawlist@npm:^2.1.17": + version: 2.1.17 + resolution: "@inquirer/rawlist@npm:2.1.17" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/core": "npm:^9.0.5" + "@inquirer/type": "npm:^1.5.1" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10/1600a404934f2adbf265e7c4d50b1923d96696001c31b4cc1bfd967d9454c9ec617b7566cc57d40ffdc72241deb02aa4c56bdb9d1f5bcb560036270459ba676f + checksum: 10/c23b09d2ebadfedf3c72e8576b97d8cc3f395a0b16bde5cb9ee544405b48de83677ac496c0cf875ccdd5ca2198affc2f5374ce6c1a16df0eab1a06e6c5c7efc5 languageName: node linkType: hard -"@inquirer/select@npm:^2.3.10": - version: 2.3.10 - resolution: "@inquirer/select@npm:2.3.10" +"@inquirer/search@npm:^1.0.0": + version: 1.0.0 + resolution: "@inquirer/search@npm:1.0.0" dependencies: - "@inquirer/core": "npm:^9.0.2" - "@inquirer/figures": "npm:^1.0.3" - "@inquirer/type": "npm:^1.4.0" + "@inquirer/core": "npm:^9.0.5" + "@inquirer/figures": "npm:^1.0.5" + "@inquirer/type": "npm:^1.5.1" + yoctocolors-cjs: "npm:^2.1.2" + checksum: 10/a8689727b1dc32ef259c7dc0ea7b19f76485487ecefe7f7e31a5312c857e3a2eb08663755ebd621995e225db4dd048ff9cd21e7039a10d46934f7e35fe26d752 + languageName: node + linkType: hard + +"@inquirer/select@npm:^2.4.2": + version: 2.4.2 + resolution: "@inquirer/select@npm:2.4.2" + dependencies: + "@inquirer/core": "npm:^9.0.5" + "@inquirer/figures": "npm:^1.0.5" + "@inquirer/type": "npm:^1.5.1" ansi-escapes: "npm:^4.3.2" yoctocolors-cjs: "npm:^2.1.2" - checksum: 10/3bdc4d2860d454e4565263ddd35ba8943effb05e54e014f1663e9306333c151b03497050162476a6c0251a315d145c1003b9e117759fc52e8ae93e3270504f2d + checksum: 10/fee65bb21189253f83f070775a665a5292beb47ec7c5be8c1ec6adfc0c71d5e5ddcb0a1729e68153fb812c3037067a60348bf43ede258077b0bc61433c90959b languageName: node linkType: hard -"@inquirer/type@npm:^1.3.3, @inquirer/type@npm:^1.4.0": - version: 1.4.0 - resolution: "@inquirer/type@npm:1.4.0" +"@inquirer/type@npm:^1.5.1": + version: 1.5.1 + resolution: "@inquirer/type@npm:1.5.1" dependencies: mute-stream: "npm:^1.0.0" - checksum: 10/3b1be73ca418ad721d7527aea0bd83f21825484d6829fd4dbc830372b4aad68cf030486f8100d0f3883db8924fadcfaac1aa041ef6c51124f808f25825b22d85 + checksum: 10/991e029074143975a2730468edb96d45a8a56fd292e2d88584fd75fe567b15989bb8171469bb8fd14b4d84c5f0025d2d6dc520045d4b19541498ad6b52c2e36a languageName: node linkType: hard @@ -4118,45 +4092,23 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.40": - version: 5.0.0-beta.40 - resolution: "@mui/base@npm:5.0.0-beta.40" - dependencies: - "@babel/runtime": "npm:^7.23.9" - "@floating-ui/react-dom": "npm:^2.0.8" - "@mui/types": "npm:^7.2.14" - "@mui/utils": "npm:^5.15.14" - "@popperjs/core": "npm:^2.11.8" - clsx: "npm:^2.1.0" - prop-types: "npm:^15.8.1" - peerDependencies: - "@types/react": ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - react-dom: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10/ebee3d9e1136710dcb2af5828acc6bd8d54f6b124785d011585c2665a48dc66e35ccb344d5ebc7fd8bfd776cccb8ea434911f151a62bee193677ee9dc67fc7fc - languageName: node - linkType: hard - -"@mui/core-downloads-tracker@npm:^5.16.1": - version: 5.16.1 - resolution: "@mui/core-downloads-tracker@npm:5.16.1" - checksum: 10/13321ec64a9c6387b12b3cc137a0e75b4eb2259ae312a527c03aee0ec1992351454df7de44f221463b61b706e0d0714f0ccf2f16bce4becac47d18f720704141 +"@mui/core-downloads-tracker@npm:^5.16.4": + version: 5.16.4 + resolution: "@mui/core-downloads-tracker@npm:5.16.4" + checksum: 10/e1be17bfcfc5e50d42eff8ca8660469c0e20f70bd5148183e8a8d66da12c420f86e097b68d09561055c2d6e4f93f6650ba65a30522a997da9cd9a08d09a54bbc languageName: node linkType: hard -"@mui/material@npm:5.16.1": - version: 5.16.1 - resolution: "@mui/material@npm:5.16.1" +"@mui/material@npm:5.16.4": + version: 5.16.4 + resolution: "@mui/material@npm:5.16.4" dependencies: "@babel/runtime": "npm:^7.23.9" - "@mui/base": "npm:5.0.0-beta.40" - "@mui/core-downloads-tracker": "npm:^5.16.1" - "@mui/system": "npm:^5.16.1" + "@mui/core-downloads-tracker": "npm:^5.16.4" + "@mui/system": "npm:^5.16.4" "@mui/types": "npm:^7.2.15" - "@mui/utils": "npm:^5.16.1" + "@mui/utils": "npm:^5.16.4" + "@popperjs/core": "npm:^2.11.8" "@types/react-transition-group": "npm:^4.4.10" clsx: "npm:^2.1.0" csstype: "npm:^3.1.3" @@ -4176,16 +4128,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10/88bcc25113e26756063070a9cf85ab33b02a83b8ecb0e9073d43b00afecd243ad3245839ab6cc77b26ef308526a3b000e1e4a7840afcac5a90311ca8ed182d7c + checksum: 10/a7f4b9a54c89265b63afa52fd017781fc180d26bf79cf6b8091a40954485ce427a089cef79e64ed3acda35666ad09aee8423afed7674d957aa2437ac76a65d67 languageName: node linkType: hard -"@mui/private-theming@npm:^5.16.1": - version: 5.16.1 - resolution: "@mui/private-theming@npm:5.16.1" +"@mui/private-theming@npm:^5.16.4": + version: 5.16.4 + resolution: "@mui/private-theming@npm:5.16.4" dependencies: "@babel/runtime": "npm:^7.23.9" - "@mui/utils": "npm:^5.16.1" + "@mui/utils": "npm:^5.16.4" prop-types: "npm:^15.8.1" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -4193,13 +4145,13 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/fdfbc5e55bc1c980a00faab952e37280f437826788d8b1908d3eed75d053a4848b6927ea650a976b23419997113509e7ae0f21f325df6ba3a394ccdb32aa4f84 + checksum: 10/dec90e407d1f81803e1dd1c094cec99491b35617d3e83bcfa53cbf05ceef84c88106d6bc8a7cfc71b39f9b9b773124eb4bd229364ccccb9b3c8af3bc9db9c70a languageName: node linkType: hard -"@mui/styled-engine@npm:^5.16.1": - version: 5.16.1 - resolution: "@mui/styled-engine@npm:5.16.1" +"@mui/styled-engine@npm:^5.16.4": + version: 5.16.4 + resolution: "@mui/styled-engine@npm:5.16.4" dependencies: "@babel/runtime": "npm:^7.23.9" "@emotion/cache": "npm:^11.11.0" @@ -4214,19 +4166,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 10/3f1d39b48a437179e96ffe82b51f19e45aeffa51dae2644ac218e4e1700945680caa680ff009658b41cfe2a05ae4e756c9b9f59a4df0ce6ada82e727597949f6 + checksum: 10/56f4c9a2adb6e6793d37635ec095f2303c9c7d48c607a18899c2fa4d2a186fa5dc87d6ced2c9586009b147ac435a9525514fe7d09b0133a44c2d4ab026f1a841 languageName: node linkType: hard -"@mui/system@npm:^5.16.1": - version: 5.16.1 - resolution: "@mui/system@npm:5.16.1" +"@mui/system@npm:^5.16.4": + version: 5.16.4 + resolution: "@mui/system@npm:5.16.4" dependencies: "@babel/runtime": "npm:^7.23.9" - "@mui/private-theming": "npm:^5.16.1" - "@mui/styled-engine": "npm:^5.16.1" + "@mui/private-theming": "npm:^5.16.4" + "@mui/styled-engine": "npm:^5.16.4" "@mui/types": "npm:^7.2.15" - "@mui/utils": "npm:^5.16.1" + "@mui/utils": "npm:^5.16.4" clsx: "npm:^2.1.0" csstype: "npm:^3.1.3" prop-types: "npm:^15.8.1" @@ -4242,11 +4194,11 @@ __metadata: optional: true "@types/react": optional: true - checksum: 10/e49852b203b61bf4166ba4f1c1e56c846ea204219a6c9e725cbadcad264bff52cec5a10a0cd6516e1772958022b0d204bd8c7674e29d63ea212f5aef7e2814c5 + checksum: 10/f007467adf4d60d16d1b9c9d4c40f41b8871f21905eb412e306cd49fc7f6a1a9c7b74d850f95dda2a8abebb8a16916816e596897ba55793ea97426ff9dbc77b4 languageName: node linkType: hard -"@mui/types@npm:^7.2.14, @mui/types@npm:^7.2.15": +"@mui/types@npm:^7.2.15": version: 7.2.15 resolution: "@mui/types@npm:7.2.15" peerDependencies: @@ -4258,12 +4210,13 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.15.14, @mui/utils@npm:^5.16.1": - version: 5.16.1 - resolution: "@mui/utils@npm:5.16.1" +"@mui/utils@npm:^5.16.4": + version: 5.16.4 + resolution: "@mui/utils@npm:5.16.4" dependencies: "@babel/runtime": "npm:^7.23.9" "@types/prop-types": "npm:^15.7.12" + clsx: "npm:^2.1.1" prop-types: "npm:^15.8.1" react-is: "npm:^18.3.1" peerDependencies: @@ -4272,7 +4225,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/d3294dfc9953b8f1697c4837bf57a81a97b26fdfc6dd4d28747b3126a4ae8d9f4160e03326d42fbb2e1885ea4d9c56301516e13c8b50d81ea4db2455d9f18f3b + checksum: 10/d29516544dd3fa95757c658cf1b4cd4e3f16615c208ce5b45080b8ce7f993c7e6974a04a64797897c9220eb9582b0f596a13b976df404b1c34398842f4f06a2d languageName: node linkType: hard @@ -4643,124 +4596,124 @@ __metadata: languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.18.1" +"@rollup/rollup-android-arm-eabi@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.19.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-android-arm64@npm:4.18.1" +"@rollup/rollup-android-arm64@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-android-arm64@npm:4.19.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-darwin-arm64@npm:4.18.1" +"@rollup/rollup-darwin-arm64@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.19.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-darwin-x64@npm:4.18.1" +"@rollup/rollup-darwin-x64@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.19.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.18.1" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.19.0" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.18.1" +"@rollup/rollup-linux-arm-musleabihf@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.19.0" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.18.1" +"@rollup/rollup-linux-arm64-gnu@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.19.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.18.1" +"@rollup/rollup-linux-arm64-musl@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.19.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.18.1" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.19.0" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.18.1" +"@rollup/rollup-linux-riscv64-gnu@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.19.0" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.18.1" +"@rollup/rollup-linux-s390x-gnu@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.19.0" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.18.1" +"@rollup/rollup-linux-x64-gnu@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.19.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.18.1" +"@rollup/rollup-linux-x64-musl@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.19.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.18.1" +"@rollup/rollup-win32-arm64-msvc@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.19.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.18.1" +"@rollup/rollup-win32-ia32-msvc@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.19.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.18.1": - version: 4.18.1 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.18.1" +"@rollup/rollup-win32-x64-msvc@npm:4.19.0": + version: 4.19.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.19.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@shikijs/core@npm:1.10.3": - version: 1.10.3 - resolution: "@shikijs/core@npm:1.10.3" +"@shikijs/core@npm:1.11.0": + version: 1.11.0 + resolution: "@shikijs/core@npm:1.11.0" dependencies: "@types/hast": "npm:^3.0.4" - checksum: 10/4f8ef8d972f6ee5ff451d300c39db17aea673a8071b92cb3ae0546064412e75df754d24e5726fb681ed35e06438e8184963990878e54cb0582a4b6569ba70a43 + checksum: 10/c787f7e217ac2e31ebf18bc30404311db174a237aba687305220fed85c456341d42b914a9e30b3b7bffcd3e8df12c1f206a32a2f1a7d5eb128ddcd8843aceb96 languageName: node linkType: hard @@ -4796,9 +4749,9 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:10.3.1": - version: 10.3.1 - resolution: "@testing-library/dom@npm:10.3.1" +"@testing-library/dom@npm:10.3.2": + version: 10.3.2 + resolution: "@testing-library/dom@npm:10.3.2" dependencies: "@babel/code-frame": "npm:^7.10.4" "@babel/runtime": "npm:^7.12.5" @@ -4808,7 +4761,7 @@ __metadata: dom-accessibility-api: "npm:^0.5.9" lz-string: "npm:^1.5.0" pretty-format: "npm:^27.0.2" - checksum: 10/a78646e775d31b33669274e8baa9c27e6e9ea944131dcdf8d2ac2df7199516d5a9fe483e5ec49c85580399fc2f9efad395876e984b9a4ae520903dec47c773c0 + checksum: 10/ca71b9eee3d8310f7463f9b5f14eb9ad63b2175404b57055e3e73a0401bfa6568c6226c38da30be5af3e251353635a42f3e5a94de0b23c2010a6e7724c231573 languageName: node linkType: hard @@ -5149,9 +5102,9 @@ __metadata: linkType: hard "@types/lodash@npm:*": - version: 4.17.6 - resolution: "@types/lodash@npm:4.17.6" - checksum: 10/6d3a68b3e795381f4aaf946855134d24eeb348ad5d66e9a44461d30026da82b215d55b92b70486d811ca45d54d4ab956aa2dced37fd04e19d49afe160ae3da2e + version: 4.17.7 + resolution: "@types/lodash@npm:4.17.7" + checksum: 10/b8177f19cf962414a66989837481b13f546afc2e98e8d465bec59e6ac03a59c584eb7053ce511cde3a09c5f3096d22a5ae22cfb56b23f3b0da75b0743b6b1a44 languageName: node linkType: hard @@ -5212,12 +5165,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:20.14.10, @types/node@npm:^20.14.9": - version: 20.14.10 - resolution: "@types/node@npm:20.14.10" +"@types/node@npm:*, @types/node@npm:20.14.11, @types/node@npm:^20.14.11": + version: 20.14.11 + resolution: "@types/node@npm:20.14.11" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/672892cf94d0d95cf052f11271990686a0fd204cd1e5fe7a4ef240e5315e06711765dc47b9ec98627d3adac18b8c92bb7e2d8db21d18faa20bc3e3203a143e79 + checksum: 10/344e1ce1ed16c86ed1c4209ab4d1de67db83dd6b694a6fabe295c47144dde2c58dabddae9f39a0a2bdd246e95f8d141ccfe848e464884b48b8918df4f7788025 languageName: node linkType: hard @@ -5468,11 +5421,11 @@ __metadata: linkType: hard "@types/ws@npm:^8.5.10": - version: 8.5.10 - resolution: "@types/ws@npm:8.5.10" + version: 8.5.11 + resolution: "@types/ws@npm:8.5.11" dependencies: "@types/node": "npm:*" - checksum: 10/9b414dc5e0b6c6f1ea4b1635b3568c58707357f68076df9e7cd33194747b7d1716d5189c0dbdd68c8d2521b148e88184cf881bac7429eb0e5c989b001539ed31 + checksum: 10/950d13b762fc7c092a0fc1450c41229a1d41abb93cb72251068885bd46fa4bbcf461c00df2e77de3f7a547371998b650a720ed90417562af0772b14a8a009dec languageName: node linkType: hard @@ -5499,15 +5452,15 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.16.0" +"@typescript-eslint/eslint-plugin@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/eslint-plugin@npm:7.16.1" dependencies: "@eslint-community/regexpp": "npm:^4.10.0" - "@typescript-eslint/scope-manager": "npm:7.16.0" - "@typescript-eslint/type-utils": "npm:7.16.0" - "@typescript-eslint/utils": "npm:7.16.0" - "@typescript-eslint/visitor-keys": "npm:7.16.0" + "@typescript-eslint/scope-manager": "npm:7.16.1" + "@typescript-eslint/type-utils": "npm:7.16.1" + "@typescript-eslint/utils": "npm:7.16.1" + "@typescript-eslint/visitor-keys": "npm:7.16.1" graphemer: "npm:^1.4.0" ignore: "npm:^5.3.1" natural-compare: "npm:^1.4.0" @@ -5518,44 +5471,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/beda6b586bfc953843877395b09acc0525d727dcb77e6ded5fbc645a9008b7e60360ddbaf6a9b7deaf23cd42c206412b7150d8df27f1fe2da3dc24dfab1c8d71 + checksum: 10/fddbfe461f85d10ee3967b89efa3c704806074af6806833f982915b21754567a98c5a486627174cc6b0ac4cb5f1282865d64ae251a5cbf6dbbbe191d0268520a languageName: node linkType: hard -"@typescript-eslint/parser@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/parser@npm:7.16.0" +"@typescript-eslint/parser@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/parser@npm:7.16.1" dependencies: - "@typescript-eslint/scope-manager": "npm:7.16.0" - "@typescript-eslint/types": "npm:7.16.0" - "@typescript-eslint/typescript-estree": "npm:7.16.0" - "@typescript-eslint/visitor-keys": "npm:7.16.0" + "@typescript-eslint/scope-manager": "npm:7.16.1" + "@typescript-eslint/types": "npm:7.16.1" + "@typescript-eslint/typescript-estree": "npm:7.16.1" + "@typescript-eslint/visitor-keys": "npm:7.16.1" debug: "npm:^4.3.4" peerDependencies: eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 10/dc374e6c9e7dfcdd968828bb32ef59d3ebabd0a18671dee22d14dda2c713dade6eb493fd11b127df17035c7451898b42f4a88102da9a4bf3ca6a3baed8c20309 + checksum: 10/7af36bacc2c38e9fb367edf886a04fde292ff28b49adfc3f4fc0dd456364c5e18444346112ae52557f2f32fe2e5abd144b87b4db89b6960b4957d69a9d390f91 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/scope-manager@npm:7.16.0" +"@typescript-eslint/scope-manager@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/scope-manager@npm:7.16.1" dependencies: - "@typescript-eslint/types": "npm:7.16.0" - "@typescript-eslint/visitor-keys": "npm:7.16.0" - checksum: 10/bf39a3ab803503c33e6c33568e7b93793d53d18100cb2f2ec1a540121aeba74d291d19c9ad3933198ff15e53a46d2f92db0c54309259dc99c1e3e297becd5677 + "@typescript-eslint/types": "npm:7.16.1" + "@typescript-eslint/visitor-keys": "npm:7.16.1" + checksum: 10/57ce02c2624e49988b01666b3e13d1adb44ab78f2dafc47a56800d57bff624779b348928a905393fa5f2cce94a5844173ab81f32b81f0bb2897f10bbaf9cab6a languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/type-utils@npm:7.16.0" +"@typescript-eslint/type-utils@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/type-utils@npm:7.16.1" dependencies: - "@typescript-eslint/typescript-estree": "npm:7.16.0" - "@typescript-eslint/utils": "npm:7.16.0" + "@typescript-eslint/typescript-estree": "npm:7.16.1" + "@typescript-eslint/utils": "npm:7.16.1" debug: "npm:^4.3.4" ts-api-utils: "npm:^1.3.0" peerDependencies: @@ -5563,23 +5516,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/84925c851a515768317573984dc855ac93bf787ebaa6382379dea6b356adb936ebd38bf7ab2f95124c68de7ab1fd5c849fe6717929343a80b839757fb5bf3af0 + checksum: 10/38a72a3de8a2c3455d19e6d43e67ac6e1dc23e93b2d84571282b0323fadadcab33df1a89787c76fc99e45514e41a08bc9f5cb51287a7da48f56c64b512a3269b languageName: node linkType: hard -"@typescript-eslint/types@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/types@npm:7.16.0" - checksum: 10/0813d9eb158f984b9d7e9e83961533ddc1e8c8815ca9059dab820df276b1e537b183f4c83cc4fe79ab3865cde1a64f2ec3f7fffe7209872d7d404636299f630b +"@typescript-eslint/types@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/types@npm:7.16.1" + checksum: 10/cfb48821ffb5a5307e67ce05b9ec2f4775c560dc53011e313d4fa75d033e0130ce0d364ac92ad3634d325c16a889ddc3201e8a742217c73be8d34385da85620b languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/typescript-estree@npm:7.16.0" +"@typescript-eslint/typescript-estree@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/typescript-estree@npm:7.16.1" dependencies: - "@typescript-eslint/types": "npm:7.16.0" - "@typescript-eslint/visitor-keys": "npm:7.16.0" + "@typescript-eslint/types": "npm:7.16.1" + "@typescript-eslint/visitor-keys": "npm:7.16.1" debug: "npm:^4.3.4" globby: "npm:^11.1.0" is-glob: "npm:^4.0.3" @@ -5589,31 +5542,31 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 10/5719c0cb649d627a073f1c8994a6073acc211ecfce0daef61d2de4315e42a23cf79e4dacb3b3596c4792eab062fdd22080c62345e2a58d38e7268eb6103a46d4 + checksum: 10/7f88176f2d25779ec2d40df4c6bd0a26aa41494ee0302d4895b4d0cb4e284385c1e218ac2ad67ed90b5e1bf82b78b8aa4b903b5906fbf7101b08c409ce778e9c languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/utils@npm:7.16.0" +"@typescript-eslint/utils@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/utils@npm:7.16.1" dependencies: "@eslint-community/eslint-utils": "npm:^4.4.0" - "@typescript-eslint/scope-manager": "npm:7.16.0" - "@typescript-eslint/types": "npm:7.16.0" - "@typescript-eslint/typescript-estree": "npm:7.16.0" + "@typescript-eslint/scope-manager": "npm:7.16.1" + "@typescript-eslint/types": "npm:7.16.1" + "@typescript-eslint/typescript-estree": "npm:7.16.1" peerDependencies: eslint: ^8.56.0 - checksum: 10/325eab6705e70322d8df613cba4b018abc5d8ef857eb6c86f7a8376334eac789e6a585d30c041045c7eeede18083744faae66f48033e7811b2a23ebe8f6d3407 + checksum: 10/b3c279d706ff1b3a0002c8e0f0fcf559b63f4296e218199a25863054bda5b28d5a7ab6ad4ad1d0b7fa2c6cd9f2d0dcd7f784c3f75026fae7b58846695481ec45 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:7.16.0": - version: 7.16.0 - resolution: "@typescript-eslint/visitor-keys@npm:7.16.0" +"@typescript-eslint/visitor-keys@npm:7.16.1": + version: 7.16.1 + resolution: "@typescript-eslint/visitor-keys@npm:7.16.1" dependencies: - "@typescript-eslint/types": "npm:7.16.0" + "@typescript-eslint/types": "npm:7.16.1" eslint-visitor-keys: "npm:^3.4.3" - checksum: 10/aae065bdd6d5681d40df51af24933fc86c15f355f9d8f85c39a506f352ddc2a76fc72d4f8cf823ebb7550c84d543605a2fdd7d06979a0967cd48c1f542436714 + checksum: 10/f5088d72b6ca48f4e525b7b5d6c6c9254d0d039d2959fd91200691218e8ac8f3e56287ec8bc411a79609e9d85ed5fc6c4f7d2edd80fadf734aeb6f6bfc833322 languageName: node linkType: hard @@ -5908,10 +5861,10 @@ __metadata: languageName: node linkType: hard -"ag-charts-types@npm:10.0.1": - version: 10.0.1 - resolution: "ag-charts-types@npm:10.0.1" - checksum: 10/13825e4e3b51a15ed47cb91caad751bd0d1a997591db6f0617d318b806ee15207f3606d95da5f4d7fe9b63a055e782450e660758efcc981847a02809bbdcef3e +"ag-charts-types@npm:10.0.2": + version: 10.0.2 + resolution: "ag-charts-types@npm:10.0.2" + checksum: 10/4eb426e20f109d314288019eb1072742b57116e793f978998f327ee28941efbd980098acc11f9cea349adf939754bce7557abece37b4a4e1c298e23d8d96cf72 languageName: node linkType: hard @@ -6004,14 +5957,14 @@ __metadata: linkType: hard "ajv@npm:^8.0.0, ajv@npm:^8.0.1, ajv@npm:^8.10.0, ajv@npm:^8.11.0, ajv@npm:^8.9.0": - version: 8.16.0 - resolution: "ajv@npm:8.16.0" + version: 8.17.1 + resolution: "ajv@npm:8.17.1" dependencies: fast-deep-equal: "npm:^3.1.3" + fast-uri: "npm:^3.0.1" json-schema-traverse: "npm:^1.0.0" require-from-string: "npm:^2.0.2" - uri-js: "npm:^4.4.1" - checksum: 10/9b4b380efaf8be2639736d535662bd142a6972b43075b404380165c37ab6ceb72f01c7c987536747ff3e9e21eb5cd2e2a194f1e0fa8355364ea6204b1262fcd1 + checksum: 10/ee3c62162c953e91986c838f004132b6a253d700f1e51253b99791e2dbfdb39161bc950ebdc2f156f8568035bb5ed8be7bd78289cd9ecbf3381fe8f5b82e3f33 languageName: node linkType: hard @@ -6102,13 +6055,6 @@ __metadata: languageName: node linkType: hard -"antlr4@npm:4.13.1-patch-1": - version: 4.13.1-patch-1 - resolution: "antlr4@npm:4.13.1-patch-1" - checksum: 10/c8b8804be3e233d9c6321bf70a779a47c26b9216e5d9dbb7e8ef66d32038d9160549f3b2f3caf19afa4d1d0736f61237fcafc0311636a9a3a29d9b892d2804d7 - languageName: node - linkType: hard - "any-promise@npm:^1.0.0": version: 1.3.0 resolution: "any-promise@npm:1.3.0" @@ -6264,18 +6210,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.toreversed@npm:^1.1.2": - version: 1.1.2 - resolution: "array.prototype.toreversed@npm:1.1.2" - dependencies: - call-bind: "npm:^1.0.2" - define-properties: "npm:^1.2.0" - es-abstract: "npm:^1.22.1" - es-shim-unscopables: "npm:^1.0.0" - checksum: 10/b4076d687ddc22c191863ce105d320cc4b0e1435bfda9ffeeff681682fe88fa6fe30e0d2ae94fa4b2d7fad901e1954ea4f75c1cab217db4848da84a2b5889192 - languageName: node - linkType: hard - "array.prototype.tosorted@npm:^1.1.4": version: 1.1.4 resolution: "array.prototype.tosorted@npm:1.1.4" @@ -6803,9 +6737,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001599, caniuse-lite@npm:^1.0.30001640": - version: 1.0.30001641 - resolution: "caniuse-lite@npm:1.0.30001641" - checksum: 10/d60df2662fcae31efc8f36451929640e9630bb2e936f7449166dc70dcc4a757f6d86a5a089eed763b58354d684404b175e6c8790a9fd95c48abed1fcb7c26225 + version: 1.0.30001643 + resolution: "caniuse-lite@npm:1.0.30001643" + checksum: 10/dddbda29fa24fbc435873309c71070461cbfc915d9bce3216180524c20c5637b2bee1a14b45972e9ac19e1fdf63fba3f63608b9e7d68de32f5ee1953c8c69e05 languageName: node linkType: hard @@ -7040,7 +6974,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:2.1.1, clsx@npm:^2.1.0": +"clsx@npm:2.1.1, clsx@npm:^2.1.0, clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" checksum: 10/cdfb57fa6c7649bbff98d9028c2f0de2f91c86f551179541cf784b1cfdc1562dcb951955f46d54d930a3879931a980e32a46b598acaea274728dbe068deca919 @@ -7654,9 +7588,9 @@ __metadata: linkType: hard "cytoscape@npm:^3.28.1": - version: 3.30.0 - resolution: "cytoscape@npm:3.30.0" - checksum: 10/4361004b7f944b82ee26407fe834982e67e83331d1b38b97e075b6960d88eeaf3b1b8c12983e8097cf04a97e8b17a6cee64d7fdcffc8b67d4d92f931b7f66e7c + version: 3.30.1 + resolution: "cytoscape@npm:3.30.1" + checksum: 10/30ac8af19cca536abba8da193052495dd705c7fd3c8206c453e66f2837b01e20c49d7ca2f0564779fecd29864ccb59d8245d365c8ed6923f54d8fe013d25b035 languageName: node linkType: hard @@ -8082,9 +8016,9 @@ __metadata: linkType: hard "dayjs@npm:^1.11.7": - version: 1.11.11 - resolution: "dayjs@npm:1.11.11" - checksum: 10/f03948b172fbeed229837965988d1d5bac99c72a31c28731a457303259439f2f36289186489ae140adbeb10f591a926908c8de5d81eb449a2edbf5cbd6e9e30c + version: 1.11.12 + resolution: "dayjs@npm:1.11.12" + checksum: 10/8ee7c1e14961fd08d40b788d0c0e930dc6288b3d32911bb911b2fb31bb703c262788164fbe678ee9e50e2a35268d667b8c8ba43fd1806771c1f404c300a2b428 languageName: node linkType: hard @@ -8104,7 +8038,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:~4.3.4": +"debug@npm:4, debug@npm:^4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:~4.3.4": version: 4.3.5 resolution: "debug@npm:4.3.5" dependencies: @@ -8225,7 +8159,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -8578,9 +8512,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.4.820": - version: 1.4.825 - resolution: "electron-to-chromium@npm:1.4.825" - checksum: 10/8bc5afdaf44ead0f3fef98bbb3e1c21a865b78947a61b6f3c638795c2c64ba8e08c921e2add98f4f38744b63c250269ce7c18ba6aabe519bf48d8bd3b827b2a6 + version: 1.4.832 + resolution: "electron-to-chromium@npm:1.4.832" + checksum: 10/795eaae1a445283dea93ffd6e2482a794405191bcf30710b0350808e79befdd1f14fc7aed13359cf68d90e24cad93bd7c0965d011293ae183326b54915dd0319 languageName: node linkType: hard @@ -8717,7 +8651,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": version: 1.23.3 resolution: "es-abstract@npm:1.23.3" dependencies: @@ -8984,12 +8918,12 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-prettier@npm:5.1.3": - version: 5.1.3 - resolution: "eslint-plugin-prettier@npm:5.1.3" +"eslint-plugin-prettier@npm:5.2.1": + version: 5.2.1 + resolution: "eslint-plugin-prettier@npm:5.2.1" dependencies: prettier-linter-helpers: "npm:^1.0.0" - synckit: "npm:^0.8.6" + synckit: "npm:^0.9.1" peerDependencies: "@types/eslint": ">=8.0.0" eslint: ">=8.0.0" @@ -9000,7 +8934,7 @@ __metadata: optional: true eslint-config-prettier: optional: true - checksum: 10/4f26a30444adc61ed692cdb5a9f7e8d9f5794f0917151051e66755ce032a08c3cc72c8b5d56101412e90f6d77035bd8194ea8731e9c16aacdd5ae345a8dae188 + checksum: 10/10ddf68215237e327af09a47adab4c63f3885fda4fb28c4c42d1fc5f47d8a0cc45df6484799360ff1417a0aa3c77c3aaac49d7e9dfd145557b17e2d7ecc2a27c languageName: node linkType: hard @@ -9013,31 +8947,31 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react@npm:7.34.3": - version: 7.34.3 - resolution: "eslint-plugin-react@npm:7.34.3" +"eslint-plugin-react@npm:7.35.0": + version: 7.35.0 + resolution: "eslint-plugin-react@npm:7.35.0" dependencies: array-includes: "npm:^3.1.8" array.prototype.findlast: "npm:^1.2.5" array.prototype.flatmap: "npm:^1.3.2" - array.prototype.toreversed: "npm:^1.1.2" array.prototype.tosorted: "npm:^1.1.4" doctrine: "npm:^2.1.0" es-iterator-helpers: "npm:^1.0.19" estraverse: "npm:^5.3.0" + hasown: "npm:^2.0.2" jsx-ast-utils: "npm:^2.4.1 || ^3.0.0" minimatch: "npm:^3.1.2" object.entries: "npm:^1.1.8" object.fromentries: "npm:^2.0.8" - object.hasown: "npm:^1.1.4" object.values: "npm:^1.2.0" prop-types: "npm:^15.8.1" resolve: "npm:^2.0.0-next.5" semver: "npm:^6.3.1" string.prototype.matchall: "npm:^4.0.11" + string.prototype.repeat: "npm:^1.0.0" peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - checksum: 10/f160a5b0a376e520b0cd5e2b6111e91966533708842270e460e2f93a45c80f42dc79232a38a6ccb1a397b1d9deba06f6dc819333d9e1af55d392bf52b20d6c9b + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + checksum: 10/fa0a54f9ea249cf89d92bb5983bf7df741da3709a0ebd6a885a67d05413ed302fd8b64c9dc819b33df8efa6d8b06f5e56b1f6965a9be7cc3e79054da4dbae5ed languageName: node linkType: hard @@ -9457,6 +9391,13 @@ __metadata: languageName: node linkType: hard +"fast-uri@npm:^3.0.1": + version: 3.0.1 + resolution: "fast-uri@npm:3.0.1" + checksum: 10/e8ee4712270de0d29eb0fbf41ffad0ac80952e8797be760e8bb62c4707f08f50a86fe2d7829681ca133c07d6eb4b4a75389a5fc36674c5b254a3ac0891a68fc7 + languageName: node + linkType: hard + "fast-xml-parser@npm:4.4.0": version: 4.4.0 resolution: "fast-xml-parser@npm:4.4.0" @@ -10568,12 +10509,12 @@ __metadata: languageName: node linkType: hard -"husky@npm:9.0.11": - version: 9.0.11 - resolution: "husky@npm:9.0.11" +"husky@npm:9.1.1": + version: 9.1.1 + resolution: "husky@npm:9.1.1" bin: - husky: bin.mjs - checksum: 10/8a9b7cb9dc8494b470b3b47b386e65d579608c6206da80d3cc8b71d10e37947264af3dfe00092368dad9673b51d2a5ee87afb4b2291e77ba9e7ec1ac36e56cd1 + husky: bin.js + checksum: 10/c3be0392071b78c680fc6b9fd7978f52c26e18238a2840c6eabfc0db395e19fcd798da8eff0e31a9e76c479d6019a567d83a8de80f360d28552bc83bd1839b7c languageName: node linkType: hard @@ -10713,18 +10654,18 @@ __metadata: languageName: node linkType: hard -"inquirer@npm:10.0.1": - version: 10.0.1 - resolution: "inquirer@npm:10.0.1" +"inquirer@npm:10.1.0": + version: 10.1.0 + resolution: "inquirer@npm:10.1.0" dependencies: - "@inquirer/prompts": "npm:^5.1.2" - "@inquirer/type": "npm:^1.3.3" + "@inquirer/prompts": "npm:^5.3.0" + "@inquirer/type": "npm:^1.5.1" "@types/mute-stream": "npm:^0.0.4" ansi-escapes: "npm:^4.3.2" mute-stream: "npm:^1.0.0" run-async: "npm:^3.0.0" rxjs: "npm:^7.8.1" - checksum: 10/6b7203299ec610e18e27b2573a5d5ba7ab5769e4f2d4ae41c4a88d594a4573bc7d923ac5e60b45dfba3eba4d88e0d5153c9854beecefc81927ff4eb84d5b424f + checksum: 10/95aa328014debacfb552a3024d7cd11e09ada3b1727315d68b9621b1885647add9ab037d226fbb46a8a74a83476450bb3d26806584f062a0595f1bde47806965 languageName: node linkType: hard @@ -10872,11 +10813,11 @@ __metadata: linkType: hard "is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": - version: 2.14.0 - resolution: "is-core-module@npm:2.14.0" + version: 2.15.0 + resolution: "is-core-module@npm:2.15.0" dependencies: hasown: "npm:^2.0.2" - checksum: 10/1e0d1a16cb3a94746f6a28db09ccab4562860c94c74bacedb3a6729736d61cfb97001d2052f9622637aa7ea8e0643a3f0f4f16965c70ba6ce30a8ccfe8074af8 + checksum: 10/70e962543e5d3a97c07cb29144a86792d545a21f28e67da5401d85878a0193d46fbab8d97bc3ca680e2778705dca66e7b6ca840c493497a27ca0e8c5f3ac3d1d languageName: node linkType: hard @@ -12189,13 +12130,6 @@ __metadata: languageName: node linkType: hard -"known-css-properties@npm:^0.31.0": - version: 0.31.0 - resolution: "known-css-properties@npm:0.31.0" - checksum: 10/559679a98e58806c77c267aaaad56217a0d456e59d1f64e4d4ae5ee90319f888064f93e2acaed67b117badd723c22c1bec3cb38a07482c7de331b93fb2ba0c94 - languageName: node - linkType: hard - "known-css-properties@npm:^0.34.0": version: 0.34.0 resolution: "known-css-properties@npm:0.34.0" @@ -12226,32 +12160,32 @@ __metadata: dependencies: "@actions/core": "npm:1.10.1" "@actions/github": "npm:6.0.0" - "@babel/core": "npm:7.24.8" + "@babel/core": "npm:7.24.9" "@changesets/cli": "npm:2.27.7" "@finos/babel-preset-legend-studio": "workspace:*" "@finos/eslint-plugin-legend-studio": "workspace:*" "@finos/legend-dev-utils": "workspace:*" "@finos/stylelint-config-legend-studio": "workspace:*" - "@types/node": "npm:20.14.10" + "@types/node": "npm:20.14.11" chalk: "npm:5.3.0" cross-env: "npm:7.0.3" envinfo: "npm:7.13.0" eslint: "npm:8.57.0" fs-extra: "npm:11.2.0" - husky: "npm:9.0.11" - inquirer: "npm:10.0.1" + husky: "npm:9.1.1" + inquirer: "npm:10.1.0" jest: "npm:29.7.0" lint-staged: "npm:15.2.7" micromatch: "npm:4.0.7" npm-run-all: "npm:4.1.5" - prettier: "npm:3.3.2" + prettier: "npm:3.3.3" prettier-plugin-tailwindcss: "npm:0.6.5" rimraf: "npm:6.0.1" - sass: "npm:1.77.7" - semver: "npm:7.6.2" + sass: "npm:1.77.8" + semver: "npm:7.6.3" sort-package-json: "npm:2.10.0" - stylelint: "npm:16.6.1" - typedoc: "npm:0.26.4" + stylelint: "npm:16.7.0" + typedoc: "npm:0.26.5" typescript: "npm:5.5.3" yargs: "npm:17.7.2" languageName: unknown @@ -12647,11 +12581,11 @@ __metadata: languageName: node linkType: hard -"mathjs@npm:13.0.2": - version: 13.0.2 - resolution: "mathjs@npm:13.0.2" +"mathjs@npm:13.0.3": + version: 13.0.3 + resolution: "mathjs@npm:13.0.3" dependencies: - "@babel/runtime": "npm:^7.24.7" + "@babel/runtime": "npm:^7.24.8" complex.js: "npm:^2.1.1" decimal.js: "npm:^10.4.3" escape-latex: "npm:^1.2.0" @@ -12662,7 +12596,7 @@ __metadata: typed-function: "npm:^4.2.1" bin: mathjs: bin/cli.js - checksum: 10/1481dfdd969d09ee3c4f7e16aea409fcdbfa2f14e4ce9d873e7e6d1470c121c271ecaf87a7a0da3f1e6ce883dcaef63a569332199f4b6a5c169a3e67d4396750 + checksum: 10/6ef013f853be73b8efc8fab26522a6c76712ef9b73861a7cb88fee0be5b7638bcebafad10dc964f00455d1fa8715206adb300e6c2872d863e97c24ba1c9cd4d7 languageName: node linkType: hard @@ -13604,13 +13538,20 @@ __metadata: languageName: node linkType: hard -"mime-db@npm:1.52.0, mime-db@npm:>= 1.43.0 < 2": +"mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7 languageName: node linkType: hard +"mime-db@npm:>= 1.43.0 < 2": + version: 1.53.0 + resolution: "mime-db@npm:1.53.0" + checksum: 10/82409c568a20254cc67a763a25e581d2213e1ef5d070a0af805239634f8a655f5d8a15138200f5f81c5b06fc6623d27f6168c612d447642d59e37eb7f20f7412 + languageName: node + linkType: hard + "mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:^2.1.31, mime-types@npm:~2.1.17, mime-types@npm:~2.1.24, mime-types@npm:~2.1.34": version: 2.1.35 resolution: "mime-types@npm:2.1.35" @@ -13824,10 +13765,10 @@ __metadata: languageName: node linkType: hard -"mobx@npm:6.13.0": - version: 6.13.0 - resolution: "mobx@npm:6.13.0" - checksum: 10/3e32e1cb9c1a63abddc552754e7e6388362c27ad9d280f1247a6d5b6c704a1bf0a89fadaab0c6a9e2ba764e008fc9023a9f338c423be67e0858c4782a0685538 +"mobx@npm:6.13.1": + version: 6.13.1 + resolution: "mobx@npm:6.13.1" + checksum: 10/832a025f830d004f4c443b3dc2eb999f584dbda38bb7da4268de8af6de9983f7934bfefccf2f87a6dd7a3ab8151fce1460692a1d586dc90ba2705447ba10e3da languageName: node linkType: hard @@ -14051,9 +13992,9 @@ __metadata: linkType: hard "node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 10/0f7607ec7db5ef1dc616899a5f24ae90c869b6a54c2d4f36ff6d84a282ab9343c7ff3ca3670fe4669171bb1e8a9b3e286e1ef1c131f09a83d70554f855d54f24 + version: 2.0.18 + resolution: "node-releases@npm:2.0.18" + checksum: 10/241e5fa9556f1c12bafb83c6c3e94f8cf3d8f2f8f904906ecef6e10bcaa1d59aa61212d4651bec70052015fc54bd3fdcdbe7fc0f638a17e6685aa586c076ec4e languageName: node linkType: hard @@ -14250,17 +14191,6 @@ __metadata: languageName: node linkType: hard -"object.hasown@npm:^1.1.4": - version: 1.1.4 - resolution: "object.hasown@npm:1.1.4" - dependencies: - define-properties: "npm:^1.2.1" - es-abstract: "npm:^1.23.2" - es-object-atoms: "npm:^1.0.0" - checksum: 10/797385577b3ef3c0d19333e03ed34bc7987978ae1ee1245069c9922e17d1128265187f729dc610260d03f8d418af26fcd7919b423793bf0af9099d9f08367d69 - languageName: node - linkType: hard - "object.values@npm:^1.1.6, object.values@npm:^1.1.7, object.values@npm:^1.2.0": version: 1.2.0 resolution: "object.values@npm:1.2.0" @@ -14795,8 +14725,8 @@ __metadata: linkType: hard "pino@npm:^9.0.0": - version: 9.2.0 - resolution: "pino@npm:9.2.0" + version: 9.3.1 + resolution: "pino@npm:9.3.1" dependencies: atomic-sleep: "npm:^1.0.0" fast-redact: "npm:^3.1.1" @@ -14811,7 +14741,7 @@ __metadata: thread-stream: "npm:^3.0.0" bin: pino: bin.js - checksum: 10/7d8db2228a468d0f54839719d8bee12c6e16529a98df7477e0ec530359c596bf26b291dc1dbf92ede633a487df4a29b871e795f777ce091a9576409d1bd87137 + checksum: 10/ef28a1728b8a0358b9b1603b3a40e0c84b53b1368243c6ccd151fd98a90fea4da9aa9af8915896d6dabd12f43a7efa8085ba94bb521a430aa41e4fb9b9b5fef5 languageName: node linkType: hard @@ -15112,13 +15042,13 @@ __metadata: linkType: hard "postcss-nested@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-nested@npm:6.0.1" + version: 6.2.0 + resolution: "postcss-nested@npm:6.2.0" dependencies: - postcss-selector-parser: "npm:^6.0.11" + postcss-selector-parser: "npm:^6.1.1" peerDependencies: postcss: ^8.2.14 - checksum: 10/02aaac682f599879fae6aab3210aee59b8b5bde3ba242527f6fd103726955b74ffa05c2b765920be5f403e758045582534d11b1e19add01586c19743ed99e3fe + checksum: 10/d7f6ba6bfd03d42f84689a0630d4e393c421bb53723f16fe179a840f03ed17763b0fe494458577d2a015e857e0ec27c7e194909ffe209ee5f0676aec39737317 languageName: node linkType: hard @@ -15280,13 +15210,13 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0": - version: 6.1.0 - resolution: "postcss-selector-parser@npm:6.1.0" +"postcss-selector-parser@npm:^6.0.11, postcss-selector-parser@npm:^6.0.16, postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.1.0, postcss-selector-parser@npm:^6.1.1": + version: 6.1.1 + resolution: "postcss-selector-parser@npm:6.1.1" dependencies: cssesc: "npm:^3.0.0" util-deprecate: "npm:^1.0.2" - checksum: 10/2f9e5045b8bbe674fed3b79dbcd3daf21f5188cd7baf179beac513710ec3d75a8fc8184a262c3aec1c628ad3fd8bdb29c5d8530f1c9c5a61a18e1980bb000945 + checksum: 10/ce2af36b56d9333a6873498d3b6ee858466ceb3e9560f998eeaf294e5c11cafffb122d307f3c2904ee8f87d12c71c5ab0b26ca4228b97b6c70b7d1e7cd9b5737 languageName: node linkType: hard @@ -15320,7 +15250,7 @@ __metadata: languageName: node linkType: hard -"postcss@npm:8.4.39, postcss@npm:^8.4.23, postcss@npm:^8.4.33, postcss@npm:^8.4.38": +"postcss@npm:8.4.39, postcss@npm:^8.4.23, postcss@npm:^8.4.33, postcss@npm:^8.4.39": version: 8.4.39 resolution: "postcss@npm:8.4.39" dependencies: @@ -15414,12 +15344,12 @@ __metadata: languageName: node linkType: hard -"prettier@npm:3.3.2": - version: 3.3.2 - resolution: "prettier@npm:3.3.2" +"prettier@npm:3.3.3": + version: 3.3.3 + resolution: "prettier@npm:3.3.3" bin: prettier: bin/prettier.cjs - checksum: 10/83214e154afa5aa9b664c2506640212323eb1376b13379b2413dc351b7de0687629dca3f00ff2ec895ebd7e3a2adb7d7e231b6c77606e2358137f2150807405b + checksum: 10/5beac1f30b5b40162532b8e2f7c3a4eb650910a2695e9c8512a62ffdc09dae93190c29db9107fa7f26d1b6c71aad3628ecb9b5de1ecb0911191099be109434d7 languageName: node linkType: hard @@ -16502,26 +16432,26 @@ __metadata: languageName: node linkType: hard -"rollup@npm:4.18.1": - version: 4.18.1 - resolution: "rollup@npm:4.18.1" - dependencies: - "@rollup/rollup-android-arm-eabi": "npm:4.18.1" - "@rollup/rollup-android-arm64": "npm:4.18.1" - "@rollup/rollup-darwin-arm64": "npm:4.18.1" - "@rollup/rollup-darwin-x64": "npm:4.18.1" - "@rollup/rollup-linux-arm-gnueabihf": "npm:4.18.1" - "@rollup/rollup-linux-arm-musleabihf": "npm:4.18.1" - "@rollup/rollup-linux-arm64-gnu": "npm:4.18.1" - "@rollup/rollup-linux-arm64-musl": "npm:4.18.1" - "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.18.1" - "@rollup/rollup-linux-riscv64-gnu": "npm:4.18.1" - "@rollup/rollup-linux-s390x-gnu": "npm:4.18.1" - "@rollup/rollup-linux-x64-gnu": "npm:4.18.1" - "@rollup/rollup-linux-x64-musl": "npm:4.18.1" - "@rollup/rollup-win32-arm64-msvc": "npm:4.18.1" - "@rollup/rollup-win32-ia32-msvc": "npm:4.18.1" - "@rollup/rollup-win32-x64-msvc": "npm:4.18.1" +"rollup@npm:4.19.0": + version: 4.19.0 + resolution: "rollup@npm:4.19.0" + dependencies: + "@rollup/rollup-android-arm-eabi": "npm:4.19.0" + "@rollup/rollup-android-arm64": "npm:4.19.0" + "@rollup/rollup-darwin-arm64": "npm:4.19.0" + "@rollup/rollup-darwin-x64": "npm:4.19.0" + "@rollup/rollup-linux-arm-gnueabihf": "npm:4.19.0" + "@rollup/rollup-linux-arm-musleabihf": "npm:4.19.0" + "@rollup/rollup-linux-arm64-gnu": "npm:4.19.0" + "@rollup/rollup-linux-arm64-musl": "npm:4.19.0" + "@rollup/rollup-linux-powerpc64le-gnu": "npm:4.19.0" + "@rollup/rollup-linux-riscv64-gnu": "npm:4.19.0" + "@rollup/rollup-linux-s390x-gnu": "npm:4.19.0" + "@rollup/rollup-linux-x64-gnu": "npm:4.19.0" + "@rollup/rollup-linux-x64-musl": "npm:4.19.0" + "@rollup/rollup-win32-arm64-msvc": "npm:4.19.0" + "@rollup/rollup-win32-ia32-msvc": "npm:4.19.0" + "@rollup/rollup-win32-x64-msvc": "npm:4.19.0" "@types/estree": "npm:1.0.5" fsevents: "npm:~2.3.2" dependenciesMeta: @@ -16561,7 +16491,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 10/7a5f110d216e8599dc3cb11cf570316d989abae00785d99c2bcb6027287fe60d2eaed70e457d88a036622e7fc67e8db6e730d3c784aa90a258bd4c020676ad44 + checksum: 10/a5f56e60d160e727f372fb0b0adbab03c1e5b858df7af62e626459687e6510d5b9685e4badef50bb6ffd916eaf53c1684a8e12ae959dacb8e6930c77a00a0f19 languageName: node linkType: hard @@ -16673,16 +16603,16 @@ __metadata: languageName: node linkType: hard -"sass@npm:1.77.7": - version: 1.77.7 - resolution: "sass@npm:1.77.7" +"sass@npm:1.77.8": + version: 1.77.8 + resolution: "sass@npm:1.77.8" dependencies: chokidar: "npm:>=3.0.0 <4.0.0" immutable: "npm:^4.0.0" source-map-js: "npm:>=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 10/8464adbb9a4636902466e39654ac5486e40a9c92c56c69546f40d2778e15cb0c9b8f32ce0c88d86cf27d8818c7c0ca9e7d2e8b2d28c0e659a0fc15490caff565 + checksum: 10/4bf6e3007fef62dd6dfc657c89c2890872a6b5dc43e2dc4d61bcf9ae1bdc2dd95b59454a3cbd3c8363c98b673b028e1578b26135190d0f2a8a184a38ab41e99b languageName: node linkType: hard @@ -16767,12 +16697,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.6.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": - version: 7.6.2 - resolution: "semver@npm:7.6.2" +"semver@npm:7.6.3, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0": + version: 7.6.3 + resolution: "semver@npm:7.6.3" bin: semver: bin/semver.js - checksum: 10/296b17d027f57a87ef645e9c725bff4865a38dfc9caf29b26aa084b85820972fbe7372caea1ba6857162fa990702c6d9c1d82297cecb72d56c78ab29070d2ca2 + checksum: 10/36b1fbe1a2b6f873559cd57b238f1094a053dbfd997ceeb8757d79d1d2089c56d1321b9f1069ce263dc64cfa922fa1d2ad566b39426fe1ac6c723c1487589e10 languageName: node linkType: hard @@ -16945,12 +16875,12 @@ __metadata: linkType: hard "shiki@npm:^1.9.1": - version: 1.10.3 - resolution: "shiki@npm:1.10.3" + version: 1.11.0 + resolution: "shiki@npm:1.11.0" dependencies: - "@shikijs/core": "npm:1.10.3" + "@shikijs/core": "npm:1.11.0" "@types/hast": "npm:^3.0.4" - checksum: 10/3ea852e944f4eced8d1df395f9ca24cd686d4f2fe00043a2450d89b878dc86f3ad8cb5f7d71fd31213228f58b1d8c618df26741bfd19676542072d1e12c9d05e + checksum: 10/8122d2bdc18d2347d6c8f486ddad8f0bfb4b409fd137e853c98c474d5fa00bc608d1aabed28fd8ae9704db52d883cd1790686cf0b21d394e91ca8e5cda08339c languageName: node linkType: hard @@ -17437,6 +17367,16 @@ __metadata: languageName: node linkType: hard +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" + dependencies: + define-properties: "npm:^1.1.3" + es-abstract: "npm:^1.17.5" + checksum: 10/4b1bd91b75fa8fdf0541625184ebe80e445a465ce4253c19c3bccd633898005dadae0f74b85ae72662a53aafb8035bf48f8f5c0755aec09bc106a7f13959d05e + languageName: node + linkType: hard + "string.prototype.trim@npm:^1.2.9": version: 1.2.9 resolution: "string.prototype.trim@npm:1.2.9" @@ -17615,13 +17555,13 @@ __metadata: languageName: node linkType: hard -"stylelint@npm:16.6.1": - version: 16.6.1 - resolution: "stylelint@npm:16.6.1" +"stylelint@npm:16.7.0": + version: 16.7.0 + resolution: "stylelint@npm:16.7.0" dependencies: - "@csstools/css-parser-algorithms": "npm:^2.6.3" - "@csstools/css-tokenizer": "npm:^2.3.1" - "@csstools/media-query-list-parser": "npm:^2.1.11" + "@csstools/css-parser-algorithms": "npm:^2.7.1" + "@csstools/css-tokenizer": "npm:^2.4.1" + "@csstools/media-query-list-parser": "npm:^2.1.13" "@csstools/selector-specificity": "npm:^3.1.1" "@dual-bundle/import-meta-resolve": "npm:^4.1.0" balanced-match: "npm:^2.0.0" @@ -17629,7 +17569,7 @@ __metadata: cosmiconfig: "npm:^9.0.0" css-functions-list: "npm:^3.2.2" css-tree: "npm:^2.3.1" - debug: "npm:^4.3.4" + debug: "npm:^4.3.5" fast-glob: "npm:^3.3.2" fastest-levenshtein: "npm:^1.0.16" file-entry-cache: "npm:^9.0.0" @@ -17640,13 +17580,13 @@ __metadata: ignore: "npm:^5.3.1" imurmurhash: "npm:^0.1.4" is-plain-object: "npm:^5.0.0" - known-css-properties: "npm:^0.31.0" + known-css-properties: "npm:^0.34.0" mathml-tag-names: "npm:^2.1.3" meow: "npm:^13.2.0" micromatch: "npm:^4.0.7" normalize-path: "npm:^3.0.0" picocolors: "npm:^1.0.1" - postcss: "npm:^8.4.38" + postcss: "npm:^8.4.39" postcss-resolve-nested-selector: "npm:^0.1.1" postcss-safe-parser: "npm:^7.0.0" postcss-selector-parser: "npm:^6.1.0" @@ -17660,7 +17600,7 @@ __metadata: write-file-atomic: "npm:^5.0.1" bin: stylelint: bin/stylelint.mjs - checksum: 10/81c6f97f9fb2ae31a9abc9f10ddbe595cde697e42cab56f7d745dda2e5378bd9e083f2c12f9d0082745c6283974ad0537bbc0ea71a1bf910fb4de836b1407bd9 + checksum: 10/50e1c55670b02a8839e26c9d63b11820e0f1bcf108c76da17cde938bc9240377aa1622e5bfeb40e4590894d476c2e1fce6d7a6a90f3052c6ddd889797dbfd975 languageName: node linkType: hard @@ -17771,13 +17711,13 @@ __metadata: languageName: node linkType: hard -"synckit@npm:^0.8.6": - version: 0.8.8 - resolution: "synckit@npm:0.8.8" +"synckit@npm:^0.9.1": + version: 0.9.1 + resolution: "synckit@npm:0.9.1" dependencies: "@pkgr/core": "npm:^0.1.0" tslib: "npm:^2.6.2" - checksum: 10/2864a5c3e689ad5b991bebbd8a583c5682c4fa08a4f39986b510b6b5d160c08fc3672444069f8f96ed6a9d12772879c674c1f61e728573eadfa90af40a765b74 + checksum: 10/bff3903976baf8b699b5483228116d70223781a93b17c70e685c277ee960cdfd1a09cb5a741e6a9ec35e2428f14f4664baec41ccc99a598f267608b2a54f529b languageName: node linkType: hard @@ -17801,9 +17741,9 @@ __metadata: languageName: node linkType: hard -"tailwindcss@npm:3.4.4": - version: 3.4.4 - resolution: "tailwindcss@npm:3.4.4" +"tailwindcss@npm:3.4.6": + version: 3.4.6 + resolution: "tailwindcss@npm:3.4.6" dependencies: "@alloc/quick-lru": "npm:^5.2.0" arg: "npm:^5.0.2" @@ -17830,7 +17770,7 @@ __metadata: bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: 10/ab120014a68517c079fbeecba06c404ac94088a959b5b5e631214af4d87b332b6e4b28d8453f65eac9d94759a030ca581b1330f7d73cbf497883c4e2de083432 + checksum: 10/bd550628cc2a5e80b0543738320ff1e3377e1eb8b4ea6aa3774d479b4e88926eb18828416570859dbe38b12af0e4ea2f97deda5a6449d1f0985936046fcc7a47 languageName: node linkType: hard @@ -17885,8 +17825,8 @@ __metadata: linkType: hard "terser@npm:^5.10.0, terser@npm:^5.17.4, terser@npm:^5.26.0": - version: 5.31.2 - resolution: "terser@npm:5.31.2" + version: 5.31.3 + resolution: "terser@npm:5.31.3" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -17894,7 +17834,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/dab8d0a7e2845f14535433795aa8dcf1b80a33e75749f5dbd67ee97aa66c1dec37191afa46dd88dad8472c9ff0bf16a812dd4388cb30d8675a6a95a7ead0421b + checksum: 10/7f66d93a1157f66f5eda16515ed45e6eb485d3c4acbc46e78a5e62922f5b4643d9212abc586f791021fafc71563a93475a986c52f4270a5e0b3ee50a70507d9e languageName: node linkType: hard @@ -18248,9 +18188,9 @@ __metadata: languageName: node linkType: hard -"typedoc@npm:0.26.4": - version: 0.26.4 - resolution: "typedoc@npm:0.26.4" +"typedoc@npm:0.26.5": + version: 0.26.5 + resolution: "typedoc@npm:0.26.5" dependencies: lunr: "npm:^2.3.9" markdown-it: "npm:^14.1.0" @@ -18261,7 +18201,7 @@ __metadata: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x bin: typedoc: bin/typedoc - checksum: 10/c25cce210c0ac0ac5328c11cc036344a6495bb49ed2191e580d1287edca2269ffe5e69dca5a75198174830e2d3c3bb560d70a6d22a24c0df293a069dd7d26318 + checksum: 10/9965479c87d8cb97742ae2622e3c6640e1204bca4b5652c66b82e0f768184443a2b800eae1090c92130ef321e29afc948510d4d65a4a2073c4fd6101d737ba0d languageName: node linkType: hard @@ -18514,7 +18454,7 @@ __metadata: languageName: node linkType: hard -"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1": +"uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" dependencies: @@ -18650,13 +18590,13 @@ __metadata: linkType: hard "vfile@npm:^6.0.0": - version: 6.0.1 - resolution: "vfile@npm:6.0.1" + version: 6.0.2 + resolution: "vfile@npm:6.0.2" dependencies: "@types/unist": "npm:^3.0.0" unist-util-stringify-position: "npm:^4.0.0" vfile-message: "npm:^4.0.0" - checksum: 10/7f8412f9ce7709d3be4041fd68a159e2cf96f9c9a4f095bcb18d1561009757b8efb37b71d0ae087e5202fe0e3b3162aae0adf92e30e2448a45645912c23c4ab2 + checksum: 10/8c36b4887b071aa9215a16c96916e96e75f3f3516cb87fa7ba1ec79fda3a1d87b66068e56b73f01c249b8fefa897dc52e3a6c736fd1053133ad3920f33482756 languageName: node linkType: hard @@ -18780,8 +18720,8 @@ __metadata: linkType: hard "webpack-dev-middleware@npm:^7.1.0": - version: 7.2.1 - resolution: "webpack-dev-middleware@npm:7.2.1" + version: 7.3.0 + resolution: "webpack-dev-middleware@npm:7.3.0" dependencies: colorette: "npm:^2.0.10" memfs: "npm:^4.6.0" @@ -18794,7 +18734,7 @@ __metadata: peerDependenciesMeta: webpack: optional: true - checksum: 10/e1fa9b40cba7b954f901b085cdded62df6f3c10d1d4e24d4850bd35ebe3dcfb18e7159e6579d6ac854e8e3611e5895aaf45ea1f3e29da2287659d36f0cb614d1 + checksum: 10/813327ff3814569d43a6608c64503dc9c2b9f993f1ef57cb304afc9e2473c35115306e1e6b9d4f85798531441d11dea3695965bbb5d2782bfcf4a33c3212855f languageName: node linkType: hard @@ -18863,9 +18803,9 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5.92.1": - version: 5.92.1 - resolution: "webpack@npm:5.92.1" +"webpack@npm:5.93.0": + version: 5.93.0 + resolution: "webpack@npm:5.93.0" dependencies: "@types/eslint-scope": "npm:^3.7.3" "@types/estree": "npm:^1.0.5" @@ -18896,7 +18836,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/76fcfbebcc0719c4734c65a01dcef7a0f18f3f2647484e8a7e8606adbd128ac42756bb3a8b7e2d486fe97f6286ebdc7b937ccdf3cf1d21b4684134bb89bbed89 + checksum: 10/a48bef7a511d826db7f9ebee2c84317214923ac40cb2aabe6a649546c54a76a55fc3b91ff03c05fed22a13a176891c47bbff7fcc644c53bcbe5091555863641b languageName: node linkType: hard