This is an automated email from the ASF dual-hosted git repository.
hugh pushed a change to branch hughhhh/granular-export-ctrl
in repository https://gitbox.apache.org/repos/asf/superset.git
from d591c1b5632 style(security): apply ruff-format to granular export
changes
add 00c62cf8203 chore(deps-dev): bump yeoman-test from 11.2.0 to 11.3.1 in
/superset-frontend (#38326)
add d738431e73e chore(deps): bump swagger-ui-react from 5.31.2 to 5.32.0
in /docs (#38324)
add 23200e8ce97 chore(deps): bump caniuse-lite from 1.0.30001774 to
1.0.30001775 in /docs (#38322)
add adc5a2cbdb6 chore(deps-dev): bump globals from 17.3.0 to 17.4.0 in
/superset-websocket (#38321)
add 00a14877059 chore(deps): bump hot-shots from 14.0.0 to 14.1.1 in
/superset-websocket (#38320)
add 01d5245cd2d fix: silence deprecation warnings causing noisy production
logs (#38128)
add a74d32ab44f feat(extensions): code-first frontend contributions
(#38346)
add 3e10ab7dd00 refactor(Filter components): migrate from react-dnd to
dnd-kit (#37445)
add fc5fda3d1a6 fix(db-modal): update doc refs for DB connection modal
(#38091)
add 6e84d297076 fix(build): disable `moby` in dev container based on
Debian 13 Trixie distro for usability (#37227)
add 0681df3d029 feat(theme): enable generalized ECharts theme overrides
for array properties (#37965)
add 1bd054684ed chore(lint): remove unused ESLint plugins after migrating
rules to Oxlint (#38110)
add f2f55591ecc chore: remove redundant service-worker.js placeholder
(#38348)
add 016417f7939 fix(explore): prevent TypeError when chart dimension
returns empty string (#38276)
add c35bf344a96 chore(extensions): clean up backend entrypoints and file
globs (#38360)
add 2ab9d37a001 fix(templates): restore css_bundle calls in spa.html for
production builds (#38350)
add fa346099523 feat: Support OAuth2 single-use refresh tokens (#38364)
add 1136e86cf70 chore(deps): bump ioredis from 5.9.3 to 5.10.0 in
/superset-websocket (#38318)
add f10cb14d92b chore(deps-dev): bump @types/node from 25.3.2 to 25.3.3 in
/superset-websocket (#38319)
add 983b633972f feat(bar-chart): add option to color bars by primary axis
when no dimensions are set (#37531)
add ef4b1d674be feat(docs): add filterable UI Components table and improve
build performance (#38253)
add 7815afb24d2 fix(charts): improve minor gridline visibility in dark
themes (#38371)
add 51ac758b801 fix(tags): expire tag relationship after deleting all
tagged objects (#38163)
add 80a29cd6fed chore(deps-dev): bump terser-webpack-plugin from 5.3.16 to
5.3.17 in /superset-frontend (#38386)
add 35d0aad854a feat(explore): Add Echarts option editor (#37868)
add 69732d9dca6 fix(superset-ui-core): achieve 100% coverage for npm run
core:cover (#38397)
add 832fee3ff8c refactor(mcp): move superset_core MCP module from mcp to
api/mcp (#38394)
add 19f949276ce refactor(config): SIGNAL_CACHE_CONFIG →
DISTRIBUTED_COORDINATION_CONFIG (#38395)
add aff6e260891 build(deps): replace monolithic `googleapis` with
lightweight `@googleapis/sheet` sub-package (#38124)
add 3d5694ee0f1 chore: regular `npm audit fix` (#38248)
add 3b656f9cc2f fix(dashboard): restore filterState prop for cross-filter
functionality (#38349)
add c25adbc3953 test(DashboardList): migrate Cypress E2E tests to RTL
(#38368)
add e2ebc135e4a test(playwright): add dashboard list E2E tests (#38377)
add 27d54f84213 fix(build/backend): migrate to deps-free `pygeohash` with
pre-built wheels at runtime (#37524)
add 796c206ee7b fix(charts): apply resample before rolling window in
post-processing pipeline (#37987)
add 63e7ee70bff fix(echarts): adaptive formatting labels (#38017)
add 8c9efe5659f feat: support for import/export masked_encrypted_extra
(backend) (#38077)
add dc995328a86 chore(deps): bump cryptography from 44.0.3 to 46.0.5
(#37912)
add 8f28a8734a1 chore(deps): bump flask from 2.3.3 to 3.1.3 (#38168)
add 1bfd41df0ca chore(deps): bump aquasecurity/trivy-action from 0.34.1 to
0.34.2 (#38352)
add 88241d3e710 chore(deps-dev): bump oxlint from 1.50.0 to 1.51.0 in
/superset-frontend (#38353)
add a79dcbbb66d chore(deps): update d3-cloud requirement from ^1.2.8 to
^1.2.9 in /superset-frontend/plugins/plugin-chart-word-cloud (#38381)
add 939e4194c61 fix(alerts): fix error toast when editing report with
saved tab selection (#38198)
add 0d5827ac428 chore(extensions): unified contribution api and automatic
prefixing (#38412)
add 5a2a72cf31a chore(deps): bump svgo from 3.3.2 to 3.3.3 in /docs
(#38422)
add fdf19db5e6a chore(deps): bump svgo from 3.3.2 to 3.3.3 in
/superset-frontend (#38421)
add 4dfb0e66cb6 chore(deps-dev): bump webpack from 5.105.3 to 5.105.4 in
/superset-frontend (#38385)
add 880cab58c33 fix(bug): Error when adding a filter using custom sql
(#38246)
add 20cc3345d89 chore(playwright): Using warning for timeouts (#38441)
add a2c23a2a58f chore(deps-dev): bump css-minimizer-webpack-plugin from
7.0.4 to 8.0.0 in /superset-frontend (#38434)
add f6f734f0d16 chore(deps): bump google-auth-library from 10.5.0 to
10.6.1 in /superset-frontend (#38436)
add a513406239f feat!: upgrade project's Node version to v22 (#37223)
add f0416eff78e fix(dashboard): fix multiple drag-and-drop and edit mode
issues (#37891)
add 0dbd4c5b909 docs(mcp): add MCP server deployment and authentication
guide (#38415)
add 5f0efd2be9d test: fix CI OOM crashes in DatasourceControl test and
flaky FileHandleer test (#38430)
add ee7bde5c3be Merge branch 'master' of
https://github.com/apache/superset into hughhhh/granular-export-ctrl
No new revisions were added by this update.
Summary of changes:
.devcontainer/devcontainer.json | 2 +-
.github/workflows/docker.yml | 2 +-
.gitignore | 2 +-
UPDATING.md | 8 +-
docs/.gitignore | 8 +-
docs/.nvmrc | 2 +-
docs/admin_docs/configuration/cache.mdx | 16 +-
docs/babel.config.js | 32 -
docs/developer_docs/api.mdx | 36 +-
docs/developer_docs/extensions/architecture.md | 5 +-
.../extensions/contribution-types.md | 192 +-
docs/developer_docs/extensions/development.md | 174 +-
docs/developer_docs/extensions/mcp-server.md | 679 ++++++
docs/developer_docs/extensions/mcp.md | 6 +-
docs/developer_docs/extensions/overview.md | 6 +-
docs/developer_docs/extensions/quick-start.md | 107 +-
docs/developer_docs/extensions/tasks.md | 4 +-
docs/developer_docs/sidebars.js | 1 +
docs/docusaurus.config.ts | 28 +
docs/package.json | 15 +-
docs/scripts/generate-database-docs.mjs | 8 +-
docs/scripts/generate-extension-components.mjs | 676 ------
docs/scripts/generate-if-changed.mjs | 307 +++
docs/scripts/generate-superset-components.mjs | 241 ++-
docs/sidebarTutorials.js | 11 -
docs/src/components/databases/DatabaseIndex.tsx | 1 +
.../components/ui-components/ComponentIndex.tsx | 262 +++
.../src/components/ui-components/index.ts | 3 +-
.../src/components/ui-components}/types.ts | 43 +-
docs/src/data/databases.json | 12 +-
docs/src/shims/superset-ui-core.ts | 57 +
docs/src/types/apache-superset-core/index.d.ts | 4 +-
docs/src/webpack.extend.ts | 15 +-
docs/tsconfig.json | 5 +-
docs/yarn.lock | 1280 +++++++++---
pyproject.toml | 8 +-
requirements/base.txt | 4 +-
requirements/development.txt | 8 +-
.../superset_core/{mcp/__init__.py => api/mcp.py} | 2 +-
superset-core/src/superset_core/api/rest_api.py | 97 +-
.../src/superset_core/extensions/types.py | 109 +-
superset-embedded-sdk/.nvmrc | 2 +-
.../src/superset_extensions_cli/cli.py | 131 +-
.../templates/backend/pyproject.toml.j2 | 7 +
.../templates/extension.json.j2 | 20 -
.../templates/frontend/src/index.tsx.j2 | 17 +-
.../templates/frontend/webpack.config.js.j2 | 3 +-
superset-extensions-cli/tests/test_cli_build.py | 306 ++-
superset-extensions-cli/tests/test_cli_init.py | 32 +-
superset-extensions-cli/tests/test_cli_validate.py | 14 +-
superset-extensions-cli/tests/test_templates.py | 39 +-
superset-frontend/.eslintrc.js | 41 -
superset-frontend/.nvmrc | 2 +-
.../e2e/dashboard/_skip.nativeFilters.test.ts | 4 +-
.../cypress/e2e/dashboard_list/filter.test.ts | 47 -
.../cypress/e2e/dashboard_list/list.test.ts | 279 ---
superset-frontend/oxlint.json | 4 +-
superset-frontend/package-lock.json | 2186 ++++++++------------
superset-frontend/package.json | 20 +-
.../packages/generator-superset/package.json | 2 +-
.../packages/superset-core/src/api/commands.ts | 49 +-
.../superset-core/src/api/contributions.ts | 92 +-
.../packages/superset-core/src/api/core.ts | 74 +-
.../packages/superset-core/src/api/editors.ts | 75 +-
.../packages/superset-core/src/api/index.ts | 2 +
.../packages/superset-core/src/api/menus.ts | 102 +
.../packages/superset-core/src/api/views.ts | 88 +
.../superset-core/src/ui/theme/Theme.test.tsx | 73 +
.../packages/superset-core/src/ui/theme/Theme.tsx | 14 +
.../src/shared-controls/sharedControls.tsx | 15 +
.../superset-ui-chart-controls/src/types.ts | 1 +
.../src/utils/metricColumnFilter.test.ts | 8 +
.../test/utils/getColorFormatters.test.ts | 41 +
.../Matrixify/MatrixifyGridGenerator.test.ts | 120 ++
.../components/Matrixify/MatrixifyGridGenerator.ts | 8 +-
.../src/chart/types/matrixify.mocks.test.ts | 11 +-
.../src/chart/types/matrixify.test.ts | 82 +
.../superset-ui-core/src/chart/types/matrixify.ts | 36 +-
.../src/components/AsyncAceEditor/index.tsx | 6 +
.../AsyncAceEditor/useJsonValidation.test.ts | 25 +
.../src/components/List/List.test.tsx | 10 +
.../src/components/Select/constants.test.ts | 49 +
.../Table/utils/InteractiveTableUtils.test.ts | 574 +++++
.../superset-ui-core/src/components/index.ts | 1 +
.../src/types/react-syntax-highlighter.d.ts | 7 -
.../src/utils/rankedSearchCompare.test.ts | 20 +
.../index.ts => utils/withLabel.test.ts} | 24 +-
.../test/connection/SupersetClient.test.ts | 6 +
.../test/connection/SupersetClientClass.test.ts | 33 +
.../test/currency-format/CurrencyFormatter.test.ts | 78 +
.../test/currency-format/utils.test.ts | 193 ++
.../test/query/types/Column.test.ts | 14 +
.../test/query/types/Dashboard.test.ts | 33 +
.../playwright/helpers/api/dashboard.ts | 170 ++
.../playwright/helpers/fixtures/testAssets.ts | 24 +-
.../{ChartListPage.ts => DashboardListPage.ts} | 67 +-
.../experimental/dashboard/dashboard-list.spec.ts | 403 ++++
.../dashboard-test-helpers.ts} | 47 +-
.../plugins/plugin-chart-echarts/package.json | 4 +-
.../BigNumberWithTrendline/buildQuery.test.ts | 4 +-
.../BigNumber/BigNumberWithTrendline/buildQuery.ts | 2 +-
.../src/MixedTimeseries/buildQuery.ts | 2 +-
.../src/MixedTimeseries/controlPanel.tsx | 1 +
.../src/MixedTimeseries/transformProps.ts | 20 +-
.../src/Timeseries/Area/controlPanel.tsx | 1 +
.../src/Timeseries/Regular/Bar/controlPanel.tsx | 3 +
.../src/Timeseries/Regular/Line/controlPanel.tsx | 1 +
.../Timeseries/Regular/SmoothLine/controlPanel.tsx | 1 +
.../src/Timeseries/buildQuery.ts | 6 +-
.../src/Timeseries/transformProps.ts | 148 +-
.../src/Timeseries/transformers.ts | 49 +-
.../plugin-chart-echarts/src/Timeseries/types.ts | 1 +
.../plugin-chart-echarts/src/components/Echart.tsx | 10 +-
.../plugins/plugin-chart-echarts/src/controls.tsx | 28 +
.../plugins/plugin-chart-echarts/src/index.ts | 3 +
.../src/utils/eChartOptionsSchema.ts | 827 ++++++++
.../plugin-chart-echarts/src/utils/formatters.ts | 91 +-
.../src/utils/mergeCustomEChartOptions.test.ts | 163 ++
.../src/utils/mergeCustomEChartOptions.ts | 79 +
.../src/utils/safeEChartOptionsParser.test.ts | 525 +++++
.../src/utils/safeEChartOptionsParser.ts | 477 +++++
.../src/utils/themeOverrides.test.ts | 623 ++++--
.../src/utils/themeOverrides.ts | 89 +
.../test/MixedTimeseries/transformProps.test.ts | 2 +-
.../test/Timeseries/Bar/transformProps.test.ts | 283 +++
.../test/Timeseries/Scatter/transformProps.test.ts | 8 +-
.../test/Timeseries/transformProps.test.ts | 6 +-
.../test/utils/formatters.test.ts | 174 +-
.../plugins/plugin-chart-word-cloud/package.json | 2 +-
.../scripts/eslint-metrics-uploader.js | 144 --
.../scripts/oxlint-metrics-uploader.js | 7 +-
superset-frontend/spec/helpers/testing-library.tsx | 5 +-
.../SqlLab/components/AppLayout/AppLayout.test.tsx | 79 +-
.../src/SqlLab/components/AppLayout/index.tsx | 9 +-
.../src/SqlLab/components/SouthPane/index.tsx | 20 +-
.../SqlLab/components/StatusBar/StatusBar.test.tsx | 14 +-
.../src/SqlLab/components/StatusBar/index.tsx | 9 +-
superset-frontend/src/components/Chart/Chart.tsx | 2 +
.../src/components/PanelToolbar/index.tsx | 40 +-
.../ViewListExtension/ViewListExtension.test.tsx | 228 +-
.../src/components/ViewListExtension/index.tsx | 24 +-
superset-frontend/src/core/commands/index.ts | 42 +-
.../src/core/editors/AceEditorProvider.tsx | 7 +
superset-frontend/src/core/editors/EditorHost.tsx | 8 +-
.../src/core/editors/EditorProviders.test.ts | 85 +-
.../src/core/editors/EditorProviders.ts | 20 +-
superset-frontend/src/core/editors/index.ts | 36 +-
superset-frontend/src/core/extensions/index.ts | 6 +-
superset-frontend/src/core/index.ts | 14 +-
superset-frontend/src/core/menus/index.test.ts | 124 ++
superset-frontend/src/core/menus/index.ts | 83 +
superset-frontend/src/core/models.ts | 4 -
superset-frontend/src/core/views/index.test.ts | 112 +
superset-frontend/src/core/views/index.ts | 83 +
.../DashboardBuilder/DashboardBuilder.tsx | 18 +-
.../src/dashboard/components/dnd/DragDroppable.tsx | 9 +
.../components/gridComponents/Chart/Chart.test.tsx | 30 +
.../components/gridComponents/Chart/Chart.tsx | 1 +
.../components/gridComponents/Column/Column.tsx | 2 +
.../gridComponents/Markdown/Markdown.test.tsx | 24 +-
.../components/gridComponents/Row/Row.tsx | 25 +-
.../dashboard/components/menu/WithPopoverMenu.tsx | 15 +
.../ConfigModalSidebar/ConfigModalSidebar.tsx | 236 ++-
.../FiltersConfigModal/DraggableFilter.test.tsx | 109 +-
.../FiltersConfigModal/DraggableFilter.tsx | 120 +-
.../FiltersConfigModal/FilterConfigPane.test.tsx | 26 +-
.../FiltersConfigModal/FilterTitleContainer.tsx | 102 +-
.../FiltersConfigModal/FiltersConfigModal.test.tsx | 180 +-
.../FiltersConfigModal/FiltersConfigModal.tsx | 13 +-
.../FiltersConfigModal/ItemTitleContainer.tsx | 67 +-
.../explore/components/DataTableControl/index.tsx | 2 +-
.../DatasourceControl/DatasourceControl.test.tsx | 268 +--
.../AdhocFilterEditPopoverSqlTabContent.test.tsx | 84 +-
.../AdhocFilterEditPopoverSqlTabContent/index.tsx | 8 +-
.../components/controls/JSEditorControl.test.tsx | 125 ++
.../components/controls/JSEditorControl.tsx | 105 +
.../MetricControl/AdhocMetricEditPopover/index.tsx | 21 +-
.../src/explore/components/controls/index.ts | 2 +
.../src/extensions/ExtensionsContext.test.tsx | 150 --
.../src/extensions/ExtensionsContext.tsx | 93 -
.../src/extensions/ExtensionsContextUtils.test.ts | 74 -
.../src/extensions/ExtensionsContextUtils.ts | 32 -
.../src/extensions/ExtensionsList.test.tsx | 17 -
.../src/extensions/ExtensionsList.tsx | 29 -
.../src/extensions/ExtensionsLoader.test.ts | 113 +
.../src/extensions/ExtensionsLoader.ts | 161 ++
.../src/extensions/ExtensionsManager.test.ts | 572 -----
.../src/extensions/ExtensionsManager.ts | 355 ----
.../src/extensions/ExtensionsStartup.test.tsx | 72 +-
.../src/extensions/ExtensionsStartup.tsx | 51 +-
.../src/features/alerts/AlertReportModal.test.tsx | 467 ++++-
.../src/features/alerts/AlertReportModal.tsx | 40 +-
superset-frontend/src/features/alerts/types.ts | 7 +
.../databases/DatabaseModal/ModalHeader.tsx | 8 +-
.../DashboardList/DashboardList.behavior.test.tsx | 394 ++++
.../DashboardList/DashboardList.cardview.test.tsx | 417 ++++
.../DashboardList/DashboardList.listview.test.tsx | 402 ++++
.../DashboardList.permissions.test.tsx | 340 +++
.../src/pages/DashboardList/DashboardList.test.tsx | 391 ++--
.../DashboardList/DashboardList.testHelpers.tsx | 360 ++++
.../src/pages/FileHandler/index.test.tsx | 22 +-
superset-frontend/src/views/App.tsx | 45 +-
.../src/views/RootContextProviders.tsx | 17 +-
superset-frontend/webpack.config.js | 7 +-
superset-websocket/package-lock.json | 72 +-
superset-websocket/package.json | 8 +-
superset-websocket/utils/client-ws-app/.nvmrc | 2 +-
superset/charts/schemas.py | 12 +-
superset/commands/database/export.py | 9 +
superset/commands/database/importers/v1/utils.py | 26 +-
superset/commands/distributed_lock/acquire.py | 2 +-
superset/commands/distributed_lock/base.py | 6 +-
superset/commands/distributed_lock/release.py | 2 +-
superset/commands/importers/v1/__init__.py | 4 +
superset/commands/importers/v1/assets.py | 4 +
superset/commands/importers/v1/utils.py | 19 +
superset/config.py | 20 +-
superset/core/api/core_api_injection.py | 64 +-
superset/core/mcp/core_mcp_injection.py | 74 +-
superset/daos/tag.py | 7 +
superset/databases/api.py | 14 +
superset/databases/schemas.py | 62 +
superset/db_engine_specs/base.py | 6 +
superset/db_engine_specs/databend.py | 21 +-
superset/distributed_lock/__init__.py | 2 +-
superset/extensions/context.py | 90 +
superset/extensions/contributions.py | 94 +
superset/extensions/utils.py | 5 +-
superset/importexport/api.py | 13 +
superset/initialization/__init__.py | 16 +-
superset/mcp_service/CLAUDE.md | 16 +-
superset/mcp_service/app.py | 2 +-
.../chart/prompts/create_chart_guided.py | 2 +-
superset/mcp_service/chart/tool/generate_chart.py | 2 +-
superset/mcp_service/chart/tool/get_chart_data.py | 2 +-
superset/mcp_service/chart/tool/get_chart_info.py | 2 +-
.../mcp_service/chart/tool/get_chart_preview.py | 2 +-
superset/mcp_service/chart/tool/list_charts.py | 2 +-
superset/mcp_service/chart/tool/update_chart.py | 2 +-
.../mcp_service/chart/tool/update_chart_preview.py | 2 +-
.../tool/add_chart_to_existing_dashboard.py | 2 +-
.../dashboard/tool/generate_dashboard.py | 2 +-
.../dashboard/tool/get_dashboard_info.py | 2 +-
.../mcp_service/dashboard/tool/list_dashboards.py | 2 +-
.../mcp_service/dataset/tool/get_dataset_info.py | 2 +-
superset/mcp_service/dataset/tool/list_datasets.py | 2 +-
.../explore/tool/generate_explore_link.py | 2 +-
superset/mcp_service/sql_lab/tool/execute_sql.py | 2 +-
.../sql_lab/tool/open_sql_lab_with_context.py | 2 +-
superset/mcp_service/system/prompts/quickstart.py | 2 +-
.../mcp_service/system/tool/get_instance_info.py | 2 +-
superset/mcp_service/system/tool/get_schema.py | 2 +-
superset/mcp_service/system/tool/health_check.py | 2 +-
superset/models/core.py | 5 +-
superset/models/helpers.py | 2 +-
superset/tasks/decorators.py | 15 +-
superset/tasks/locks.py | 4 +-
superset/tasks/manager.py | 8 +-
superset/templates/superset/spa.html | 5 +
superset/utils/cache_manager.py | 34 +-
superset/utils/json.py | 43 +
superset/utils/logging_configurator.py | 7 +
superset/utils/oauth2.py | 4 +
superset/utils/pandas_postprocessing/geography.py | 6 +-
superset/utils/pandas_postprocessing/resample.py | 2 +-
superset/utils/webdriver.py | 2 +-
superset/viz.py | 36 +-
tests/integration_tests/databases/api_tests.py | 91 +
tests/integration_tests/fixtures/importexport.py | 26 +
.../integration_tests/tasks/test_sync_join_wait.py | 4 +-
tests/unit_tests/databases/api_test.py | 70 +
.../databases/commands/importers/v1/import_test.py | 123 ++
tests/unit_tests/databases/schema_tests.py | 106 +
tests/unit_tests/db_engine_specs/test_base.py | 91 +
tests/unit_tests/extension_tests.py | 21 +-
tests/unit_tests/extensions/test_types.py | 93 +-
tests/unit_tests/importexport/api_test.py | 52 +
tests/unit_tests/tags/commands/update_test.py | 60 +
tests/unit_tests/tasks/test_handlers.py | 4 +-
tests/unit_tests/tasks/test_manager.py | 34 +-
tests/unit_tests/tasks/test_timeout.py | 32 +-
tests/unit_tests/utils/json_tests.py | 139 ++
tests/unit_tests/utils/oauth2_tests.py | 56 +
283 files changed, 16226 insertions(+), 7038 deletions(-)
delete mode 100644 docs/babel.config.js
create mode 100644 docs/developer_docs/extensions/mcp-server.md
delete mode 100644 docs/scripts/generate-extension-components.mjs
create mode 100644 docs/scripts/generate-if-changed.mjs
create mode 100644 docs/src/components/ui-components/ComponentIndex.tsx
copy superset-frontend/packages/superset-ui-core/src/ui-overrides/index.tsx =>
docs/src/components/ui-components/index.ts (92%)
copy {superset-frontend/src/explore/components/controls/VizTypeControl =>
docs/src/components/ui-components}/types.ts (57%)
create mode 100644 docs/src/shims/superset-ui-core.ts
rename superset-core/src/superset_core/{mcp/__init__.py => api/mcp.py} (99%)
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard_list/filter.test.ts
delete mode 100644
superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts
create mode 100644 superset-frontend/packages/superset-core/src/api/menus.ts
create mode 100644 superset-frontend/packages/superset-core/src/api/views.ts
rename superset/static/service-worker.js =>
superset-frontend/packages/superset-ui-core/src/chart/types/matrixify.mocks.test.ts
(73%)
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Select/constants.test.ts
create mode 100644
superset-frontend/packages/superset-ui-core/src/components/Table/utils/InteractiveTableUtils.test.ts
copy
superset-frontend/packages/superset-ui-core/src/{color/colorSchemes/index.ts =>
utils/withLabel.test.ts} (53%)
create mode 100644 superset-frontend/playwright/helpers/api/dashboard.ts
copy superset-frontend/playwright/pages/{ChartListPage.ts =>
DashboardListPage.ts} (56%)
create mode 100644
superset-frontend/playwright/tests/experimental/dashboard/dashboard-list.spec.ts
copy
superset-frontend/playwright/tests/experimental/{dataset/dataset-test-helpers.ts
=> dashboard/dashboard-test-helpers.ts} (53%)
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/eChartOptionsSchema.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/mergeCustomEChartOptions.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.test.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/safeEChartOptionsParser.ts
create mode 100644
superset-frontend/plugins/plugin-chart-echarts/src/utils/themeOverrides.ts
delete mode 100644 superset-frontend/scripts/eslint-metrics-uploader.js
create mode 100644 superset-frontend/src/core/menus/index.test.ts
create mode 100644 superset-frontend/src/core/menus/index.ts
create mode 100644 superset-frontend/src/core/views/index.test.ts
create mode 100644 superset-frontend/src/core/views/index.ts
create mode 100644
superset-frontend/src/explore/components/controls/JSEditorControl.test.tsx
create mode 100644
superset-frontend/src/explore/components/controls/JSEditorControl.tsx
delete mode 100644 superset-frontend/src/extensions/ExtensionsContext.test.tsx
delete mode 100644 superset-frontend/src/extensions/ExtensionsContext.tsx
delete mode 100644
superset-frontend/src/extensions/ExtensionsContextUtils.test.ts
delete mode 100644 superset-frontend/src/extensions/ExtensionsContextUtils.ts
create mode 100644 superset-frontend/src/extensions/ExtensionsLoader.test.ts
create mode 100644 superset-frontend/src/extensions/ExtensionsLoader.ts
delete mode 100644 superset-frontend/src/extensions/ExtensionsManager.test.ts
delete mode 100644 superset-frontend/src/extensions/ExtensionsManager.ts
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.behavior.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.cardview.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.listview.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.permissions.test.tsx
create mode 100644
superset-frontend/src/pages/DashboardList/DashboardList.testHelpers.tsx
create mode 100644 superset/extensions/context.py
create mode 100644 superset/extensions/contributions.py