This is an automated email from the ASF dual-hosted git repository. maximebeauchemin pushed a change to branch spinner in repository https://gitbox.apache.org/repos/asf/superset.git
omit 988361cbc5 no cache omit 5f1a311509 ref local package omit 14e92d23d7 fix environment tags omit aa88754213 cleanup: remove temporary spinner_test endpoint omit b6110689c9 improve: enhance render_app_template with entry parameter and spinner logic omit 202d366690 refactor: centralize spa.html rendering with render_spa_template method omit be80f66fa1 improve svg filtering omit 4f1b6e6ce0 fix backend omit 20bb56be8f handle svg load on the backend omit fbd63f6428 fix a test omit 4d6626acea test omit 454f33fbb5 rodent omit 4bb3a76a8f fix test omit cb2a1fcfba fix: update DatasetPanel test for removed ALT_LOADING export omit 4e4008cadd cleanup: remove brandSpinnerWidth and update tests for new component structure omit 2287b9ba3f cleanup: remove duplicate loading.svg file omit e32b13cfe6 improve: fix CRUD table loading layout and remove test delay omit 71d8d44ad6 feat: implement contextual loading spinner sizes and improved defaults omit 3cc460372a Adding Evan's SVG animation omit c5228504a0 improve: consistent spinner sizing across all contexts omit 7a4ef0121c feat: add brandSpinnerWidth for customizable spinner sizing omit 2d7dc16e9e improve: support different spinner aspect ratios omit d5b0a3b6f5 no package lock omit 03490e05e4 fix: preserve Flask-AppBuilder template context omit 68e3714ec8 refactor: add DRY helpers for spa.html rendering omit edccc4fc06 fix: add theme_tokens to SupersetModelView template omit 346a82e8f8 security: minimal SVG/URL sanitization for admin content omit 5092baf452 refactor: DRY up spa.html template spinner logic omit 734e25ff68 clean: remove unnecessary bootstrap data changes omit d1d0cb9143 feat: complete backend integration for custom spinners omit 1bae503593 feat: add SVG sanitization for theme spinner security omit e3da2177a5 feat: add customizable brand spinners via theme tokens add ff1f7b64e2 fix(dashboard): enable undo/redo buttons for layout changes (#34777) add e8e1466185 feat: refactor modals to use consistent design patterns (#34711) add 6908a733a0 fix: Misaligned global controls in Table chart (#34799) add da8c0f94e6 fix: Remove border around textarea in dashboard edit mode (#34814) add 3895b8b127 fix: Low contrast in viz creator selected tag in dark mode (#34811) add 59c01e016d fix(native-filters): Low contrast of empty state in dark mode (#34812) add 2b2cc96f11 fix(DetailsPanel): Applied filters colors (#34790) add 0a45a89786 feat(docs): Docusaurus multi-versioning, Developer Portal starter kit (#34271) add 75af53dc3d fix: customize column description limit size in db_engine_spec (#34808) add e1234b2264 fix: User-provided Jinja template parameters causing SQL parsing errors (#34802) add a8be5a5a0c chore: Extensions architecture POC (#31934) add 5c3c2599db fix(Icons): Add missing data-test and aria-label attributes to custom icons (#34809) add 547f297171 fix(echarts): Series labels hard to read in dark mode (#34815) add b225432c55 fix: Unexpected overflow ellipsis dots after status icon in Dashboard list (#34798) add c7779578f9 chore: Add instruction for LLMs to use antd theme tokens (#34800) add 1204507d68 fix: make `get_image()` always return `BytesIO` (#34801) add b381992a75 fix(theming): explore chart type style fixes, nav right menu spacing fixed (#34795) add 471d9fe737 fix: Add dataset ID to file name on exports (#34782) add 9c9588cce6 fix: Avoid dataset drill request if no perm (#34665) add 47414e18d4 feat: Use DuckDB for examples data in Docker development environment (#34831) add b89b0bdf5d fix(sqllab): Missing executed sql value in the result table (#34846) add 4701e78f1f fix(docker): configure gunicorn for DuckDB thread safety in docker-compose-light (#34848) add b8c2f7db47 build(docker): update base debian image to 13 (trixie) (#34821) add 54af1cb2c8 chore: bump FAB to 4.8.1 (#34838) add 97b35a4640 fix(dashboard): Anchor link positions (#34843) add cb24737825 feat(bigquery): show materialized views (#34766) add 659db162d6 fix(docker): remove --with-threads from remaining dev workflows for DuckDB compatibility (#34851) add ab58b0a8a3 fix: DB icon sizes in database add modal (#34854) add b74a244950 fix: Remove the underline from the right section of main menu (#34855) add ce3b93d8a0 perf: Use react-router to toggle fullscreen mode on dashboard (#34857) add 06264f07fb chore(npm): updating apache-superset/core package name and version to test releasing. (#34862) add 53ce530a46 ci: Add Python 3.12 images to Docker Hub (#34853) add d8a3d29ad9 chore: Adds a README and CHANGELOG to @apache-superset/core (#34866) add 30c72ba0a3 chore: Adds README and CHANGELOG to apache-superset-core and apache-superset-cli (#34867) add b558b34faf fix: Update apache-superset-core dependency to accept rc1 version (#34872) add 836540e8c9 fix(tests): Mock MessageChannel to prevent Jest hanging from rc-overflow (#34871) add 5566eb8dd6 fix: Undefined error when viewing query in Explore + visual fixes (#34869) add 665a11f821 fix: SelectControl default sort numeric choices by value (#34858) add 7946ec003f fix(tests): Improve MessageChannel mocking to prevent worker force exits (#34878) add ebfb14c353 fix(ConfirmStatusChange): remove deprecated event.persist() to fix headless browser crashes (#34864) add bcf156c969 fix: Rename apache-superset-cli to apache-superset-extensions-cli (#34883) add 1d9e17df14 chore(docs): update files for release 4.1.4 (#34890) add e463743fcf fix: Filter bar orientation submenu should not be highlighted (#34900) add 812374b31b feat: Integrate Superset Showtime GitHub Actions workflows (#34833) add 54f071138c fix: Chart execution for Databricks (#34906) add dc7a8844eb feat(pie): add sort legend (#34323) add c5a84c0985 fix(drilling): drill by pagination works with MSSQL data source, cont. (#34724) add 6b69dc42dc fix: add --without-threads flag to Flask dev server for DuckDB compatibility (#34907) add 077724c2d2 feat(api): dataset read API uuid support (#34836) add 175835138c fix: Improve table layout and column sizing (#34887) add c1a3606774 fix: Update @apache-superset/core reference in package-lock.json (#34924) add 4695be5cc5 fix: complete theme management system import/export (#34850) add d183969744 fix(theming): fix TimeTable chart issues (#34868) add b9cbf2e766 chore(deps-dev): bump lerna from 8.2.1 to 8.2.3 in /superset-frontend (#34954) add bc9ec6ac63 fix: revert mistake setting TALISMAN_ENABLED=False (#34909) add 6e7cb521ba chore(deps): upgrade databricks connectors (#34692) add 4d040006b6 chore(deps-dev): bump typescript from 5.8.3 to 5.9.2 in /docs (#34923) add fad3cb3162 fix: Athena quoting (#34895) add 92879e6b32 chore(deps-dev): bump eslint from 9.33.0 to 9.34.0 in /docs (#34929) add 322442d5be fix: apache-superset-core exported packages (#34977) add 9bcc62f210 fix: Skip coverage for @apache-superset/core (#34958) add 0a76f84142 chore(deps): bump caniuse-lite from 1.0.30001735 to 1.0.30001739 in /docs (#34921) add 6a4b1df3a2 fix(dashboard): table charts render correctly after tab switch and refresh (#34975) add ba838b6aeb chore(deps): bump @mdx-js/react from 3.1.0 to 3.1.1 in /docs (#34928) add f0ff972f0e chore(deps-dev): bump eslint-plugin-import from 2.31.0 to 2.32.0 in /superset-frontend (#34931) add 744fa1f54c fix(TimeTable): use type-only export for TableChartProps to resolve webpack warnings (#34989) add b2f8803486 fix: playwright feature flag evaluation (#34978) add 71242dc6dd docs(alerts & reports): update how to get headless browser (#34908) add 5dba59b6a4 fix(ChartCreation): Translate chart description (#34918) add 682cdcc3e0 fix(echarts): Display NULL values in categorical x-axis for bar charts (#34761) add b5ae402c12 fix(charts): Handle virtual dataset names without schema prefix correctly (#34760) add 0de5b28716 fix(databricks): string escaper v2 (#34991) add 0a75bac2a1 fix(error-handling): jinja2 error handling improvements (#34803) add 3c9aa5706c feat: add customizable brand spinners via theme tokens add cef50b94a9 feat: add SVG sanitization for theme spinner security add c7ddf805ca feat: complete backend integration for custom spinners add 75081ce913 clean: remove unnecessary bootstrap data changes add c2286dc972 refactor: DRY up spa.html template spinner logic add 6e2b544a80 security: minimal SVG/URL sanitization for admin content add 92202a4218 fix: add theme_tokens to SupersetModelView template add eba242fba6 refactor: add DRY helpers for spa.html rendering add 531031641e fix: preserve Flask-AppBuilder template context add b1a238ca0f no package lock add a5bbff8dde improve: support different spinner aspect ratios add 33c7efb2e1 feat: add brandSpinnerWidth for customizable spinner sizing add bf25dacffe improve: consistent spinner sizing across all contexts add a2017c7fa1 Adding Evan's SVG animation add 6a91fbb19e feat: implement contextual loading spinner sizes and improved defaults add 6206cf7ba4 improve: fix CRUD table loading layout and remove test delay add 0c0a9d40ca cleanup: remove duplicate loading.svg file add 5c64c8dfc2 cleanup: remove brandSpinnerWidth and update tests for new component structure add 0f4fe0b110 fix: update DatasetPanel test for removed ALT_LOADING export add 7dd83efdf8 fix test add 94efb55bd7 rodent add 90bc06aead test add 6588706e6d fix a test add 84a7062882 handle svg load on the backend add fc00b1f2cf fix backend add 421d87772b improve svg filtering add 3c7743929b refactor: centralize spa.html rendering with render_spa_template method add 4187029e82 improve: enhance render_app_template with entry parameter and spinner logic add 1a5385360f cleanup: remove temporary spinner_test endpoint add 52f4151d6e fix environment tags add 935441a541 ref local package add 2df8f11b15 no cache This update added new revisions after undoing existing revisions. That is to say, some revisions that were in the old version of the branch are not in the new version. This situation occurs when a user --force pushes a change and generates a repository containing something like this: * -- * -- B -- O -- O -- O (988361cbc5) \ N -- N -- N refs/heads/spinner (2df8f11b15) You should already have received notification emails for all of the O revisions, and so the following emails describe only the N revisions from the common base, B. Any revisions marked "omit" are not gone; other references still refer to them. Any revisions marked "discard" are gone forever. No new revisions were added by this update. Summary of changes: .devcontainer/Dockerfile | 2 +- .github/CODEOWNERS | 10 + .github/actions/change-detector/action.yml | 19 +- .github/workflows/docker.yml | 4 +- .github/workflows/ephemeral-env-pr-close.yml | 10 +- .github/workflows/ephemeral-env.yml | 17 +- .github/workflows/showtime-cleanup.yml | 50 + .github/workflows/showtime-trigger.yml | 179 + .../{superset-cli.yml => superset-app-cli.yml} | 2 +- .github/workflows/superset-extensions-cli.yml | 64 + .github/workflows/superset-frontend.yml | 2 +- .github/workflows/tag-release.yml | 2 +- .gitignore | 2 +- .pre-commit-config.yaml | 80 +- .rat-excludes | 2 + CHANGELOG.md | 4 + docs/README.md => CHANGELOG/4.1.4.md | 18 +- Dockerfile | 65 +- LLMS.md | 4 +- Makefile | 2 +- RELEASING/Dockerfile.from_local_tarball | 2 +- RELEASING/Dockerfile.from_svn_tarball | 2 +- RELEASING/Dockerfile.make_docs | 2 +- RELEASING/Dockerfile.make_tarball | 2 +- RELEASING/README.md | 6 + UPDATING.md | 2 + docker-compose-non-dev.yml | 2 +- docker-compose.yml | 7 +- docker/apt-install.sh | 4 +- docker/docker-bootstrap.sh | 2 +- docker/docker-init.sh | 2 + docker/pip-install.sh | 6 +- docker/pythonpath_dev/superset_config.py | 14 +- docs/README.md | 180 + docs/components/chart-components/bar-chart.md | 105 + docs/components/index.md | 59 + docs/components/layout-components/grid.md | 113 + docs/components/test.mdx | 35 + docs/components/ui-components/button.mdx | 146 + docs/components/versions.json | 1 + docs/components_versions.json | 1 + docs/developer_portal/api/frontend.md | 477 ++ docs/developer_portal/architecture/overview.md | 348 ++ docs/developer_portal/cli/overview.md | 466 ++ docs/developer_portal/examples/index.md | 464 ++ docs/developer_portal/getting-started/index.md | 248 + docs/developer_portal/index.md | 126 + .../types.ts => docs/developer_portal/sidebars.js | 66 +- docs/developer_portal/versions.json | 1 + docs/developer_portal_versions.json | 1 + docs/docs/configuration/alerts-reports.mdx | 80 +- docs/docs/contributing/development.mdx | 20 + docs/docs/installation/docker-builds.mdx | 2 - docs/docusaurus.config.ts | 141 +- docs/package.json | 44 +- docs/scripts/manage-versions.mjs | 242 + docs/sidebarComponents.js | 68 + .../Chart/types.ts => docs/sidebarTutorials.js | 53 +- .../types.d.ts => docs/src/components/Button.jsx | 6 +- docs/src/components/StorybookWrapper.jsx | 121 + docs/src/pages/index.tsx | 20 +- docs/src/styles/custom.css | 54 + docs/src/theme/DocVersionBadge/index.js | 119 + .../src/theme/DocVersionBadge/styles.module.css | 30 +- docs/src/theme/DocVersionBanner/index.js | 121 + .../src/theme/DocVersionBanner/styles.module.css | 37 +- docs/src/webpack.extend.ts | 115 + docs/static/resources/openapi.json | 7 +- docs/tutorials_versions.json | 3 + .../{docs => versioned_docs/version-6.0.0}/api.mdx | 0 .../configuration/alerts-reports.mdx | 0 .../configuration/async-queries-celery.mdx | 0 .../version-6.0.0}/configuration/cache.mdx | 0 .../configuration/configuring-superset.mdx | 0 .../configuration/country-map-tools.mdx | 40 + .../version-6.0.0}/configuration/databases.mdx | 0 .../version-6.0.0}/configuration/event-logging.mdx | 0 .../importing-exporting-datasources.mdx | 0 .../version-6.0.0}/configuration/map-tiles.mdx | 0 .../configuration/networking-settings.mdx | 0 .../configuration/sql-templating.mdx | 0 .../version-6.0.0}/configuration/theming.mdx | 0 .../version-6.0.0}/configuration/timezones.mdx | 0 .../version-6.0.0}/contributing/contributing.mdx | 0 .../version-6.0.0}/contributing/development.mdx | 0 .../version-6.0.0}/contributing/guidelines.mdx | 0 .../version-6.0.0}/contributing/howtos.mdx | 0 .../version-6.0.0}/contributing/misc.mdx | 0 .../version-6.0.0/contributing/resources.mdx | 104 + .../{docs => versioned_docs/version-6.0.0}/faq.mdx | 0 .../version-6.0.0}/installation/architecture.mdx | 0 .../version-6.0.0}/installation/docker-builds.mdx | 0 .../version-6.0.0}/installation/docker-compose.mdx | 0 .../installation/installation-methods.mdx | 0 .../version-6.0.0}/installation/kubernetes.mdx | 0 .../version-6.0.0}/installation/pypi.mdx | 0 .../installation/upgrading-superset.mdx | 0 docs/versioned_docs/version-6.0.0/intro.md | 227 + .../version-6.0.0}/quickstart.mdx | 0 .../version-6.0.0}/security/cves.mdx | 0 .../version-6.0.0}/security/security.mdx | 0 .../creating-your-first-dashboard.mdx | 0 .../using-superset/exploring-data.mdx | 0 .../version-6.0.0}/using-superset/issue-codes.mdx | 0 .../versioned_sidebars/version-6.0.0-sidebars.json | 74 + docs/versions-config.json | 53 + docs/versions.json | 3 + docs/yarn.lock | 4745 ++++++++++++-------- pyproject.toml | 22 +- requirements/base.txt | 16 +- requirements/development.in | 3 +- requirements/development.txt | 336 +- scripts/change_detector.py | 5 + scripts/uv-pip-compile.sh | 10 +- superset-core/.gitignore | 1 + docs/README.md => superset-core/CHANGELOG.md | 7 +- LICENSE.txt => superset-core/LICENSE.txt | 0 superset-core/README.md | 113 + superset-core/pyproject.toml | 63 + .../src/superset_core}/__init__.py | 0 .../src/superset_core/api/__init__.py | 11 +- .../src/superset_core/api/types}/__init__.py | 0 .../src/superset_core/api/types/models.py | 90 + .../src/superset_core/api/types/query.py | 30 +- .../src/superset_core/api/types/rest_api.py | 64 + .../src/superset_core/extensions}/__init__.py | 0 .../src/superset_core/extensions/types.py | 63 + .../CHANGELOG.md | 7 +- LICENSE.txt => superset-extensions-cli/LICENSE.txt | 0 superset-extensions-cli/README.md | 110 + superset-extensions-cli/pyproject.toml | 119 + .../src/superset_extensions_cli}/__init__.py | 0 .../src/superset_extensions_cli/cli.py | 471 ++ .../src/superset_extensions_cli/constants.py | 6 +- .../templates/backend/pyproject.toml.j2 | 4 + .../templates/extension.json.j2 | 25 + .../templates/frontend/package.json.j2 | 34 + .../src/superset_extensions_cli/utils.py | 31 +- superset-extensions-cli/tests/README.md | 206 + .../tests}/__init__.py | 0 superset-extensions-cli/tests/conftest.py | 136 + superset-extensions-cli/tests/test_cli_build.py | 552 +++ superset-extensions-cli/tests/test_cli_bundle.py | 255 ++ superset-extensions-cli/tests/test_cli_dev.py | 238 + superset-extensions-cli/tests/test_cli_init.py | 362 ++ superset-extensions-cli/tests/test_cli_validate.py | 195 + superset-extensions-cli/tests/test_templates.py | 331 ++ superset-extensions-cli/tests/test_utils.py | 271 ++ superset-extensions-cli/tests/utils.py | 211 + superset-frontend/babel.config.js | 2 + .../cypress/e2e/dashboard/drilltodetail.test.ts | 4 +- .../cypress/e2e/dashboard/editmode.test.ts | 211 +- superset-frontend/jest.config.js | 2 + superset-frontend/package.json | 8 +- .../packages/superset-core/.babelrc.json | 7 + .../packages/superset-core/CHANGELOG.md | 7 +- superset-frontend/packages/superset-core/README.md | 116 + .../packages/superset-core/package.json | 35 + .../superset-core/src/api/authentication.ts} | 50 +- .../packages/superset-core/src/api/commands.ts | 70 + .../superset-core/src/api/contributions.ts | 90 + .../packages/superset-core/src/api/core.ts | 245 + .../packages/superset-core/src/api/environment.ts | 153 + .../packages/superset-core/src/api/extensions.ts | 69 + .../packages/superset-core/src/api/index.ts | 42 + .../packages/superset-core/src/api/sqlLab.ts | 420 ++ .../superset-core/src/index.ts} | 2 +- .../packages/superset-core/tsconfig.json | 17 + .../superset-ui-chart-controls/src/index.ts | 4 +- .../components/Collapse/CollapseLabelInModal.tsx | 12 +- .../ConfirmStatusChange.test.jsx | 66 - .../ConfirmStatusChange.test.tsx | 177 + .../src/components/ConfirmStatusChange/index.tsx | 5 +- .../src/components/EditableTitle/index.tsx | 7 +- .../src/components/IconButton/index.tsx | 31 +- .../src/components/IconTooltip/index.tsx | 6 +- .../src/components/IconTooltip/types.ts | 2 + .../src/components/Icons/AntdEnhanced.tsx | 2 + .../src/components/Icons/AsyncIcon.tsx | 8 +- .../components/Label/reusable/PublishedLabel.tsx | 9 +- .../src/components/Popconfirm/index.tsx} | 9 +- .../src/components/Table/index.tsx | 4 + .../src/components/TableCollection/index.tsx | 8 +- .../src/components/TableCollection/utils.tsx | 4 +- .../superset-ui-core/src/components/index.ts | 1 + .../src/connection/SupersetClient.ts | 1 + .../src/connection/SupersetClientClass.ts | 8 +- .../superset-ui-core/src/connection/types.ts | 1 + .../superset-ui-core/src/utils/featureFlags.ts | 1 + .../Icons/AsyncIcon.integration.test.tsx | 122 + .../test/connection/SupersetClient.test.ts | 2 +- .../legacy-preset-chart-nvd3/src/ReactNVD3.jsx | 6 + .../src/MixedTimeseries/transformProps.ts | 12 +- .../plugin-chart-echarts/src/Pie/controlPanel.tsx | 3 +- .../plugin-chart-echarts/src/Pie/transformProps.ts | 8 +- .../plugins/plugin-chart-echarts/src/Pie/types.ts | 1 + .../src/Timeseries/transformProps.ts | 7 +- .../src/Timeseries/transformers.ts | 4 + .../plugins/plugin-chart-echarts/src/controls.tsx | 18 + .../plugin-chart-echarts/src/utils/series.ts | 7 +- .../test/Pie/transformProps.test.ts | 100 + .../plugin-chart-echarts/test/utils/series.test.ts | 37 + .../plugin-chart-table/src/DataTable/DataTable.tsx | 47 +- .../plugins/plugin-chart-table/src/TableChart.tsx | 1 - .../spec/helpers/jsDomWithFetchAPI.ts | 7 + superset-frontend/spec/helpers/shim.tsx | 27 +- superset-frontend/spec/helpers/testing-library.tsx | 5 +- .../src/SqlLab/components/ResultSet/index.tsx | 2 + .../src/SqlLab/components/SouthPane/index.tsx | 12 + .../src/SqlLab/components/SqlEditor/index.tsx | 45 + superset-frontend/src/SqlLab/reducers/sqlLab.js | 1 + .../Chart/ChartContextMenu/ChartContextMenu.tsx | 1 + .../Chart/ChartContextMenu/useContextMenu.test.tsx | 58 + superset-frontend/src/components/Chart/types.ts | 10 +- .../src/components/CopyToClipboard/index.tsx | 11 +- .../Modal/CollapsibleModalSection.test.tsx | 119 + .../components/Modal/CollapsibleModalSection.tsx | 87 + .../src/components/Modal/ModalFormField.test.tsx | 136 + .../src/components/Modal/ModalFormField.tsx | 143 + .../src/components/Modal/StandardModal.test.tsx | 127 + .../src/components/Modal/StandardModal.tsx | 145 + .../types.ts => src/components/Modal/index.ts} | 39 +- .../components/Modal/useModalValidation.test.ts | 184 + .../src/components/Modal/useModalValidation.tsx | 181 + .../TableSelector/TableSelector.test.tsx | 33 +- .../src/components/TableSelector/index.tsx | 6 +- .../types.d.ts => core/authentication.ts} | 10 +- superset-frontend/src/core/commands.ts | 64 + superset-frontend/src/core/core.ts | 195 + superset-frontend/src/core/environment.ts | 57 + .../FormattedNumber.tsx => core/extensions.ts} | 24 +- .../TimeTable/types.d.ts => core/index.ts} | 7 +- superset-frontend/src/core/sqlLab.ts | 203 + .../{components/Chart/types.ts => core/utils.ts} | 50 +- .../src/dashboard/actions/dashboardInfo.ts | 48 +- .../src/dashboard/actions/dashboardState.js | 6 +- .../src/dashboard/components/ColorSchemeSelect.tsx | 213 + .../components/CssEditor/CssEditor.test.tsx | 144 - .../src/dashboard/components/CssEditor/index.tsx | 291 -- .../components/FiltersBadge/DetailsPanel/index.tsx | 23 +- .../dashboard/components/FiltersBadge/Styles.tsx | 3 +- .../dashboard/components/Header/Header.test.tsx | 190 +- .../src/dashboard/components/Header/index.jsx | 72 +- .../src/dashboard/components/Header/types.ts | 13 +- .../Header/useHeaderActionsDropdownMenu.tsx | 110 +- .../PropertiesModal/PropertiesModal.test.tsx | 293 +- .../PropertiesModal/hooks/useAccessOptions.ts | 52 + .../dashboard/components/PropertiesModal/index.tsx | 730 ++- .../sections/AccessSection.test.tsx | 133 + .../PropertiesModal/sections/AccessSection.tsx | 163 + .../sections/AdvancedSection.test.tsx | 82 + .../PropertiesModal/sections/AdvancedSection.tsx | 71 + .../sections/BasicInfoSection.test.tsx | 124 + .../PropertiesModal/sections/BasicInfoSection.tsx | 84 + .../sections/CertificationSection.tsx | 51 + .../PropertiesModal/sections/RefreshSection.tsx} | 36 +- .../sections/StylingSection.test.tsx | 122 + .../PropertiesModal/sections/StylingSection.tsx | 116 + .../components/PropertiesModal/sections/index.ts} | 8 +- .../RefreshFrequency/RefreshFrequencySelect.tsx | 178 + .../components/RefreshFrequency/index.ts} | 8 +- .../components/RefreshIntervalModal.test.tsx | 245 - .../dashboard/components/RefreshIntervalModal.tsx | 390 +- .../SliceHeaderControls.test.tsx | 53 + .../components/SliceHeaderControls/index.tsx | 1 + .../components/gridComponents/Chart.test.jsx | 5 + .../dashboard/components/gridComponents/Header.jsx | 12 + .../dashboard/components/gridComponents/Row.jsx | 6 + .../components/gridComponents/Row.test.jsx | 90 + .../dashboard/components/gridComponents/Tab.jsx | 19 +- .../FilterBar/ActionButtons/index.tsx | 2 +- .../useCrossFiltersScopingModal.test.ts | 17 +- .../FilterBar/FilterBarSettings/index.tsx | 16 +- .../FilterBar/HorizontalFilterBar.test.tsx | 5 + .../nativeFilters/FilterBar/Vertical.tsx | 1 - .../FiltersConfigModal/FiltersConfigModal.test.tsx | 5 + .../FiltersConfigModal/NativeFiltersModal.test.tsx | 7 + .../src/dashboard/containers/DashboardPage.tsx | 4 +- .../src/dashboard/reducers/dashboardInfo.js | 28 +- .../src/dashboard/reducers/dashboardState.js | 4 - .../dashboard/reducers/undoableDashboardLayout.js | 75 +- superset-frontend/src/dashboard/types.ts | 1 + .../src/explore/components/ControlHeader.tsx | 11 +- .../components/ControlPanelsContainer.test.tsx | 126 +- .../explore/components/ControlPanelsContainer.tsx | 4 +- .../PropertiesModal/PropertiesModal.test.tsx | 128 +- .../explore/components/PropertiesModal/index.tsx | 440 +- .../CollectionControl/CollectionControl.test.tsx | 9 +- .../controls/CollectionControl/index.jsx | 42 +- .../components/controls/OptionControls/index.tsx | 1 + .../explore/components/controls/SelectControl.jsx | 45 +- .../components/controls/SelectControl.test.jsx | 208 + .../TimeSeriesColumnControl.test.tsx | 36 +- .../controls/TimeSeriesColumnControl/index.jsx | 21 +- .../explore/components/controls/ViewQuery.test.tsx | 74 + .../src/explore/components/controls/ViewQuery.tsx | 61 +- .../components/controls/ViewQueryModalFooter.tsx | 7 +- .../components/controls/VizTypeControl/VizTile.tsx | 2 +- .../VizTypeControl/VizTypeControl.test.tsx | 2 +- .../controls/VizTypeControl/VizTypeGallery.tsx | 13 +- .../controls/VizTypeControl/constants.tsx | 14 +- .../src/extensions/ExtensionPlaceholder.test.tsx | 43 + .../extensions/ExtensionPlaceholder.tsx} | 34 +- .../src/extensions/ExtensionsContext.test.tsx | 150 + .../src/extensions/ExtensionsContext.tsx | 93 + .../src/extensions/ExtensionsContextUtils.test.ts | 74 + .../extensions/ExtensionsContextUtils.ts} | 34 +- .../src/extensions/ExtensionsList.test.tsx | 99 + .../src/extensions/ExtensionsList.tsx | 123 + .../src/extensions/ExtensionsManager.test.ts | 568 +++ .../src/extensions/ExtensionsManager.ts | 329 ++ .../src/extensions/ExtensionsStartup.test.tsx | 205 + .../src/extensions/ExtensionsStartup.tsx | 91 + .../src/features/alerts/AlertReportModal.test.tsx | 22 +- .../src/features/alerts/AlertReportModal.tsx | 987 ++-- .../alerts/components/RecipientIcon.test.tsx | 19 + .../annotationLayers/AnnotationLayerModal.tsx | 4 +- .../src/features/annotations/AnnotationModal.tsx | 2 +- .../src/features/cssTemplates/CssTemplateModal.tsx | 4 +- .../DatabaseConnectionForm/EncryptedField.test.tsx | 5 + .../datasets/AddDataset/Footer/Footer.test.tsx | 4 + .../datasets/metadataBar/useDatasetMetadataBar.tsx | 8 +- superset-frontend/src/features/home/RightMenu.tsx | 11 +- .../src/features/queries/QueryPreviewModal.tsx | 8 +- .../features/queries/SavedQueryPreviewModal.tsx | 5 +- .../src/features/queries/SyntaxHighlighterCopy.tsx | 1 - .../src/hooks/apiResources/datasets.ts | 12 +- .../src/hooks/apiResources/queries.test.ts | 28 +- .../pages/ChartList/ChartList.cardview.test.tsx | 2 +- .../pages/ChartList/ChartList.listview.test.tsx | 78 + superset-frontend/src/pages/ChartList/index.tsx | 29 +- .../src/pages/DashboardList/index.tsx | 5 +- superset-frontend/src/pages/DatasetList/index.tsx | 1 - .../src/pages/QueryHistoryList/index.tsx | 11 +- superset-frontend/src/views/App.tsx | 2 + .../src/views/RootContextProviders.tsx | 17 +- superset-frontend/src/views/routes.tsx | 11 + superset-frontend/src/views/store.ts | 7 +- .../src/visualizations/TimeTable/SparklineCell.tsx | 243 - .../src/visualizations/TimeTable/TimeTable.jsx | 344 -- .../visualizations/TimeTable/TimeTable.test.tsx | 172 + .../src/visualizations/TimeTable/TimeTable.tsx | 144 + .../FormattedNumber/FormattedNumber.test.tsx | 96 + .../FormattedNumber}/FormattedNumber.tsx | 21 +- .../FormattedNumber/index.ts} | 2 +- .../components/LeftCell/LeftCell.test.tsx | 142 + .../TimeTable/components/LeftCell/LeftCell.tsx | 67 + .../{types.d.ts => components/LeftCell/index.ts} | 3 +- .../LeftCell/mustache.d.ts} | 9 +- .../components/Sparkline/Sparkline.test.tsx | 118 + .../TimeTable/components/Sparkline/Sparkline.tsx | 62 + .../{types.d.ts => components/Sparkline/index.ts} | 3 +- .../SparklineCell/SparklineCell.test.tsx | 145 + .../components/SparklineCell/SparklineCell.tsx | 240 + .../SparklineCell/index.ts} | 2 +- .../components/ValueCell/ValueCell.test.tsx | 219 + .../TimeTable/components/ValueCell/ValueCell.tsx | 66 + .../{types.d.ts => components/ValueCell/index.ts} | 3 +- .../TimeTable/{types.d.ts => components/index.ts} | 6 +- .../config/controlPanel/controlPanel.test.ts | 93 + .../controlPanel/controlPanel.ts} | 8 +- .../{types.d.ts => config/controlPanel/index.ts} | 3 +- .../TimeTable/{types.d.ts => config/index.ts} | 5 +- .../{types.d.ts => config/transformProps/index.ts} | 4 +- .../config/transformProps/transformProps.test.ts | 284 ++ .../{ => config/transformProps}/transformProps.ts | 17 +- .../TimeTable/{types.d.ts => constants.ts} | 3 +- .../src/visualizations/TimeTable/index.ts | 3 +- .../src/visualizations/TimeTable/types.ts | 83 + .../TimeTable/utils/colorUtils/colorUtils.test.ts | 93 + .../TimeTable/utils/colorUtils/colorUtils.ts | 59 + .../{types.d.ts => utils/colorUtils/index.ts} | 3 +- .../TimeTable/{types.d.ts => utils/index.ts} | 9 +- .../{types.d.ts => utils/numberUtils/index.ts} | 3 +- .../utils/numberUtils/numberUtils.test.ts} | 37 +- .../TimeTable/utils/numberUtils/numberUtils.ts} | 31 +- .../{types.d.ts => utils/rowProcessing/index.ts} | 3 +- .../utils/rowProcessing/rowProcessing.test.ts | 109 + .../rowProcessing/rowProcessing.ts} | 27 +- .../{types.d.ts => utils/sortUtils/index.ts} | 3 +- .../TimeTable/utils/sortUtils/sortUtils.test.ts | 117 + .../TimeTable/utils/sortUtils/sortUtils.ts | 64 + .../sparklineDataUtils/index.ts} | 10 +- .../sparklineDataUtils/sparklineDataUtils.test.ts | 123 + .../utils/sparklineDataUtils/sparklineDataUtils.ts | 96 + .../sparklineHelpers/index.ts} | 9 +- .../sparklineHelpers/sparklineHelpers.test.ts | 190 + .../utils/sparklineHelpers/sparklineHelpers.ts | 102 + .../valueCalculations/index.ts} | 9 +- .../valueCalculations/valueCalculations.test.ts | 274 ++ .../utils/valueCalculations/valueCalculations.ts | 139 + superset-frontend/tsconfig.json | 7 +- superset-frontend/webpack.config.js | 28 +- superset/__init__.py | 4 +- superset/app.py | 8 +- superset/charts/api.py | 13 +- superset/charts/schemas.py | 10 +- superset/commands/dashboard/export.py | 9 + .../commands/dashboard/importers/v1/__init__.py | 28 +- superset/commands/dashboard/importers/v1/utils.py | 2 + superset/commands/database/tables.py | 31 +- superset/commands/dataset/export.py | 2 +- superset/commands/importers/v1/__init__.py | 14 +- superset/commands/importers/v1/utils.py | 7 + superset/commands/sql_lab/execute.py | 14 +- superset/commands/theme/import_themes.py | 11 +- superset/common/query_actions.py | 2 +- superset/common/query_context_factory.py | 2 +- superset/common/query_object_factory.py | 2 +- superset/config.py | 23 +- superset/connectors/sqla/models.py | 44 +- superset/connectors/sqla/utils.py | 17 +- superset/{advanced_data_type => core}/__init__.py | 0 .../{advanced_data_type => core/api}/__init__.py | 0 .../api/types}/__init__.py | 0 superset/core/api/types/models.py | 72 + .../core/api/types/query.py | 16 +- .../validators.py => core/api/types/rest_api.py} | 24 +- superset/daos/base.py | 55 + superset/daos/datasource.py | 31 +- superset/daos/exceptions.py | 5 + superset/dashboards/api.py | 12 +- superset/dashboards/schemas.py | 2 + superset/datasets/api.py | 52 +- superset/db_engine_specs/base.py | 24 + superset/db_engine_specs/bigquery.py | 94 + superset/db_engine_specs/databricks.py | 31 +- superset/db_engine_specs/duckdb.py | 35 +- superset/db_engine_specs/postgres.py | 9 +- superset/exceptions.py | 6 +- superset/extensions/api.py | 215 + superset/extensions/discovery.py | 69 + superset/extensions/exceptions.py | 48 + superset/extensions/local_extensions_watcher.py | 112 + .../development.in => superset/extensions/types.py | 23 +- superset/extensions/utils.py | 219 + .../{sqllab/validators.py => extensions/view.py} | 25 +- superset/initialization/__init__.py | 62 + superset/jinja_context.py | 77 +- superset/models/core.py | 65 +- superset/models/dashboard.py | 3 +- superset/models/helpers.py | 13 +- superset/models/sql_lab.py | 10 +- superset/result_set.py | 30 +- superset/security/manager.py | 13 +- superset/sql/parse.py | 27 +- superset/sqllab/validators.py | 8 +- superset/superset_typing.py | 2 +- superset/utils/core.py | 2 +- superset/utils/jinja_template_validator.py | 133 + superset/utils/screenshots.py | 9 +- superset/utils/webdriver.py | 15 +- superset/views/datasource/utils.py | 2 +- tests/integration_tests/celery_tests.py | 3 +- tests/integration_tests/charts/api_tests.py | 57 +- tests/integration_tests/charts/commands_tests.py | 6 +- tests/integration_tests/dashboards/api_tests.py | 60 +- .../integration_tests/dashboards/commands_tests.py | 21 +- .../dashboards/test_theme_integration.py | 142 +- tests/integration_tests/databases/api_tests.py | 190 +- .../databases/commands/upload_test.py | 11 +- .../integration_tests/databases/commands_tests.py | 22 +- tests/integration_tests/datasets/api_tests.py | 123 +- tests/integration_tests/datasets/commands_tests.py | 16 +- .../datasource/test_validate_expression_api.py | 37 +- tests/integration_tests/datasource_tests.py | 9 +- .../db_engine_specs/base_engine_spec_tests.py | 4 + .../queries/saved_queries/commands_tests.py | 4 +- tests/integration_tests/query_context_tests.py | 2 +- tests/integration_tests/result_set_tests.py | 2 +- tests/unit_tests/commands/databases/tables_test.py | 16 + tests/unit_tests/datasets/commands/export_test.py | 6 +- tests/unit_tests/datasource/dao_tests.py | 10 +- tests/unit_tests/db_engine_specs/test_bigquery.py | 90 +- tests/unit_tests/jinja_context_test.py | 131 + tests/unit_tests/models/sql_lab_test.py | 4 +- tests/unit_tests/result_set_test.py | 21 + tests/unit_tests/sql/parse_tests.py | 71 +- tests/unit_tests/utils/screenshot_test.py | 47 + .../utils/test_jinja_template_validator.py | 91 + .../utils/test_screenshot_exception_handling.py | 126 + 481 files changed, 28114 insertions(+), 6611 deletions(-) create mode 100644 .github/workflows/showtime-cleanup.yml create mode 100644 .github/workflows/showtime-trigger.yml rename .github/workflows/{superset-cli.yml => superset-app-cli.yml} (98%) create mode 100644 .github/workflows/superset-extensions-cli.yml copy docs/README.md => CHANGELOG/4.1.4.md (59%) create mode 100644 docs/components/chart-components/bar-chart.md create mode 100644 docs/components/index.md create mode 100644 docs/components/layout-components/grid.md create mode 100644 docs/components/test.mdx create mode 100644 docs/components/ui-components/button.mdx create mode 100644 docs/components/versions.json create mode 100644 docs/components_versions.json create mode 100644 docs/developer_portal/api/frontend.md create mode 100644 docs/developer_portal/architecture/overview.md create mode 100644 docs/developer_portal/cli/overview.md create mode 100644 docs/developer_portal/examples/index.md create mode 100644 docs/developer_portal/getting-started/index.md create mode 100644 docs/developer_portal/index.md copy superset-frontend/src/components/Chart/types.ts => docs/developer_portal/sidebars.js (55%) create mode 100644 docs/developer_portal/versions.json create mode 100644 docs/developer_portal_versions.json create mode 100644 docs/scripts/manage-versions.mjs create mode 100644 docs/sidebarComponents.js copy superset-frontend/src/components/Chart/types.ts => docs/sidebarTutorials.js (56%) copy superset-frontend/src/visualizations/TimeTable/types.d.ts => docs/src/components/Button.jsx (81%) create mode 100644 docs/src/components/StorybookWrapper.jsx create mode 100644 docs/src/theme/DocVersionBadge/index.js copy superset-frontend/src/visualizations/TimeTable/FormattedNumber.tsx => docs/src/theme/DocVersionBadge/styles.module.css (62%) create mode 100644 docs/src/theme/DocVersionBanner/index.js copy superset-frontend/src/visualizations/TimeTable/FormattedNumber.tsx => docs/src/theme/DocVersionBanner/styles.module.css (58%) create mode 100644 docs/src/webpack.extend.ts create mode 100644 docs/tutorials_versions.json copy docs/{docs => versioned_docs/version-6.0.0}/api.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/alerts-reports.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/async-queries-celery.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/cache.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/configuring-superset.mdx (100%) create mode 100644 docs/versioned_docs/version-6.0.0/configuration/country-map-tools.mdx copy docs/{docs => versioned_docs/version-6.0.0}/configuration/databases.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/event-logging.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/importing-exporting-datasources.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/map-tiles.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/networking-settings.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/sql-templating.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/theming.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/configuration/timezones.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/contributing.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/development.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/guidelines.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/howtos.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/contributing/misc.mdx (100%) create mode 100644 docs/versioned_docs/version-6.0.0/contributing/resources.mdx copy docs/{docs => versioned_docs/version-6.0.0}/faq.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/architecture.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/docker-builds.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/docker-compose.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/installation-methods.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/kubernetes.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/pypi.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/installation/upgrading-superset.mdx (100%) create mode 100644 docs/versioned_docs/version-6.0.0/intro.md copy docs/{docs => versioned_docs/version-6.0.0}/quickstart.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/security/cves.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/security/security.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/using-superset/creating-your-first-dashboard.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/using-superset/exploring-data.mdx (100%) copy docs/{docs => versioned_docs/version-6.0.0}/using-superset/issue-codes.mdx (100%) create mode 100644 docs/versioned_sidebars/version-6.0.0-sidebars.json create mode 100644 docs/versions-config.json create mode 100644 docs/versions.json create mode 100644 superset-core/.gitignore copy docs/README.md => superset-core/CHANGELOG.md (78%) copy LICENSE.txt => superset-core/LICENSE.txt (100%) create mode 100644 superset-core/README.md create mode 100644 superset-core/pyproject.toml copy {superset/advanced_data_type => superset-core/src/superset_core}/__init__.py (100%) copy requirements/development.in => superset-core/src/superset_core/api/__init__.py (81%) copy {superset/advanced_data_type => superset-core/src/superset_core/api/types}/__init__.py (100%) create mode 100644 superset-core/src/superset_core/api/types/models.py copy superset/sqllab/validators.py => superset-core/src/superset_core/api/types/query.py (55%) create mode 100644 superset-core/src/superset_core/api/types/rest_api.py copy {superset/advanced_data_type => superset-core/src/superset_core/extensions}/__init__.py (100%) create mode 100644 superset-core/src/superset_core/extensions/types.py copy docs/README.md => superset-extensions-cli/CHANGELOG.md (78%) copy LICENSE.txt => superset-extensions-cli/LICENSE.txt (100%) create mode 100644 superset-extensions-cli/README.md create mode 100644 superset-extensions-cli/pyproject.toml copy {superset/advanced_data_type => superset-extensions-cli/src/superset_extensions_cli}/__init__.py (100%) create mode 100644 superset-extensions-cli/src/superset_extensions_cli/cli.py copy requirements/development.in => superset-extensions-cli/src/superset_extensions_cli/constants.py (88%) create mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/backend/pyproject.toml.j2 create mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/extension.json.j2 create mode 100644 superset-extensions-cli/src/superset_extensions_cli/templates/frontend/package.json.j2 copy superset/sqllab/validators.py => superset-extensions-cli/src/superset_extensions_cli/utils.py (61%) create mode 100644 superset-extensions-cli/tests/README.md copy {superset/advanced_data_type => superset-extensions-cli/tests}/__init__.py (100%) create mode 100644 superset-extensions-cli/tests/conftest.py create mode 100644 superset-extensions-cli/tests/test_cli_build.py create mode 100644 superset-extensions-cli/tests/test_cli_bundle.py create mode 100644 superset-extensions-cli/tests/test_cli_dev.py create mode 100644 superset-extensions-cli/tests/test_cli_init.py create mode 100644 superset-extensions-cli/tests/test_cli_validate.py create mode 100644 superset-extensions-cli/tests/test_templates.py create mode 100644 superset-extensions-cli/tests/test_utils.py create mode 100644 superset-extensions-cli/tests/utils.py create mode 100644 superset-frontend/packages/superset-core/.babelrc.json copy docs/README.md => superset-frontend/packages/superset-core/CHANGELOG.md (78%) create mode 100644 superset-frontend/packages/superset-core/README.md create mode 100644 superset-frontend/packages/superset-core/package.json copy superset-frontend/{src/components/Chart/types.ts => packages/superset-core/src/api/authentication.ts} (50%) create mode 100644 superset-frontend/packages/superset-core/src/api/commands.ts create mode 100644 superset-frontend/packages/superset-core/src/api/contributions.ts create mode 100644 superset-frontend/packages/superset-core/src/api/core.ts create mode 100644 superset-frontend/packages/superset-core/src/api/environment.ts create mode 100644 superset-frontend/packages/superset-core/src/api/extensions.ts create mode 100644 superset-frontend/packages/superset-core/src/api/index.ts create mode 100644 superset-frontend/packages/superset-core/src/api/sqlLab.ts copy superset-frontend/{src/visualizations/TimeTable/types.d.ts => packages/superset-core/src/index.ts} (95%) create mode 100644 superset-frontend/packages/superset-core/tsconfig.json delete mode 100644 superset-frontend/packages/superset-ui-core/src/components/ConfirmStatusChange/ConfirmStatusChange.test.jsx create mode 100644 superset-frontend/packages/superset-ui-core/src/components/ConfirmStatusChange/ConfirmStatusChange.test.tsx copy superset-frontend/{src/visualizations/TimeTable/types.d.ts => packages/superset-ui-core/src/components/Popconfirm/index.tsx} (73%) create mode 100644 superset-frontend/packages/superset-ui-core/test/components/Icons/AsyncIcon.integration.test.tsx create mode 100644 superset-frontend/src/components/Modal/CollapsibleModalSection.test.tsx create mode 100644 superset-frontend/src/components/Modal/CollapsibleModalSection.tsx create mode 100644 superset-frontend/src/components/Modal/ModalFormField.test.tsx create mode 100644 superset-frontend/src/components/Modal/ModalFormField.tsx create mode 100644 superset-frontend/src/components/Modal/StandardModal.test.tsx create mode 100644 superset-frontend/src/components/Modal/StandardModal.tsx copy superset-frontend/{packages/superset-ui-core/src/components/IconTooltip/types.ts => src/components/Modal/index.ts} (64%) create mode 100644 superset-frontend/src/components/Modal/useModalValidation.test.ts create mode 100644 superset-frontend/src/components/Modal/useModalValidation.tsx copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => core/authentication.ts} (71%) create mode 100644 superset-frontend/src/core/commands.ts create mode 100644 superset-frontend/src/core/core.ts create mode 100644 superset-frontend/src/core/environment.ts copy superset-frontend/src/{visualizations/TimeTable/FormattedNumber.tsx => core/extensions.ts} (63%) copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => core/index.ts} (82%) create mode 100644 superset-frontend/src/core/sqlLab.ts copy superset-frontend/src/{components/Chart/types.ts => core/utils.ts} (54%) create mode 100644 superset-frontend/src/dashboard/components/ColorSchemeSelect.tsx delete mode 100644 superset-frontend/src/dashboard/components/CssEditor/CssEditor.test.tsx delete mode 100644 superset-frontend/src/dashboard/components/CssEditor/index.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/hooks/useAccessOptions.ts create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AccessSection.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AdvancedSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/AdvancedSection.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/BasicInfoSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/BasicInfoSection.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/CertificationSection.tsx copy superset-frontend/src/{visualizations/TimeTable/FormattedNumber.tsx => dashboard/components/PropertiesModal/sections/RefreshSection.tsx} (50%) create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.test.tsx create mode 100644 superset-frontend/src/dashboard/components/PropertiesModal/sections/StylingSection.tsx copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/PropertiesModal/sections/index.ts} (67%) create mode 100644 superset-frontend/src/dashboard/components/RefreshFrequency/RefreshFrequencySelect.tsx copy superset-frontend/src/{visualizations/TimeTable/types.d.ts => dashboard/components/RefreshFrequency/index.ts} (83%) delete mode 100644 superset-frontend/src/dashboard/components/RefreshIntervalModal.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionPlaceholder.test.tsx copy superset-frontend/{packages/superset-ui-core/src/components/IconTooltip/types.ts => src/extensions/ExtensionPlaceholder.tsx} (65%) create mode 100644 superset-frontend/src/extensions/ExtensionsContext.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsContext.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsContextUtils.test.ts copy superset-frontend/{packages/superset-ui-core/src/components/IconTooltip/types.ts => src/extensions/ExtensionsContextUtils.ts} (65%) create mode 100644 superset-frontend/src/extensions/ExtensionsList.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsList.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsManager.test.ts create mode 100644 superset-frontend/src/extensions/ExtensionsManager.ts create mode 100644 superset-frontend/src/extensions/ExtensionsStartup.test.tsx create mode 100644 superset-frontend/src/extensions/ExtensionsStartup.tsx delete mode 100644 superset-frontend/src/visualizations/TimeTable/SparklineCell.tsx delete mode 100644 superset-frontend/src/visualizations/TimeTable/TimeTable.jsx create mode 100644 superset-frontend/src/visualizations/TimeTable/TimeTable.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/TimeTable.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/FormattedNumber/FormattedNumber.test.tsx copy superset-frontend/src/visualizations/TimeTable/{ => components/FormattedNumber}/FormattedNumber.tsx (71%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/FormattedNumber/index.ts} (94%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/LeftCell/LeftCell.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/LeftCell/LeftCell.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/LeftCell/index.ts} (95%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/LeftCell/mustache.d.ts} (80%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/Sparkline/Sparkline.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/Sparkline/Sparkline.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/Sparkline/index.ts} (95%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/SparklineCell/SparklineCell.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/SparklineCell/SparklineCell.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/SparklineCell/index.ts} (94%) create mode 100644 superset-frontend/src/visualizations/TimeTable/components/ValueCell/ValueCell.test.tsx create mode 100644 superset-frontend/src/visualizations/TimeTable/components/ValueCell/ValueCell.tsx copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/ValueCell/index.ts} (95%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => components/index.ts} (74%) create mode 100644 superset-frontend/src/visualizations/TimeTable/config/controlPanel/controlPanel.test.ts rename superset-frontend/src/visualizations/TimeTable/{controlPanel.js => config/controlPanel/controlPanel.ts} (93%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => config/controlPanel/index.ts} (94%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => config/index.ts} (83%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => config/transformProps/index.ts} (88%) create mode 100644 superset-frontend/src/visualizations/TimeTable/config/transformProps/transformProps.test.ts rename superset-frontend/src/visualizations/TimeTable/{ => config/transformProps}/transformProps.ts (84%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => constants.ts} (92%) create mode 100644 superset-frontend/src/visualizations/TimeTable/types.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/colorUtils/colorUtils.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/colorUtils/colorUtils.ts copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/colorUtils/index.ts} (94%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/index.ts} (77%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/numberUtils/index.ts} (94%) copy superset-frontend/src/{dashboard/components/nativeFilters/FilterBar/CrossFilters/ScopingModal/useCrossFiltersScopingModal.test.ts => visualizations/TimeTable/utils/numberUtils/numberUtils.test.ts} (50%) copy superset-frontend/{packages/superset-ui-core/src/components/IconTooltip/types.ts => src/visualizations/TimeTable/utils/numberUtils/numberUtils.ts} (65%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/rowProcessing/index.ts} (93%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/rowProcessing/rowProcessing.test.ts rename superset-frontend/src/visualizations/TimeTable/{FormattedNumber.tsx => utils/rowProcessing/rowProcessing.ts} (63%) copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/sortUtils/index.ts} (93%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sortUtils/sortUtils.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sortUtils/sortUtils.ts copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/sparklineDataUtils/index.ts} (81%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineDataUtils/sparklineDataUtils.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineDataUtils/sparklineDataUtils.ts copy superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/sparklineHelpers/index.ts} (84%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineHelpers/sparklineHelpers.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/sparklineHelpers/sparklineHelpers.ts rename superset-frontend/src/visualizations/TimeTable/{types.d.ts => utils/valueCalculations/index.ts} (83%) create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/valueCalculations/valueCalculations.test.ts create mode 100644 superset-frontend/src/visualizations/TimeTable/utils/valueCalculations/valueCalculations.ts copy superset/{advanced_data_type => core}/__init__.py (100%) copy superset/{advanced_data_type => core/api}/__init__.py (100%) copy superset/{advanced_data_type => core/api/types}/__init__.py (100%) create mode 100644 superset/core/api/types/models.py copy requirements/development.in => superset/core/api/types/query.py (67%) copy superset/{sqllab/validators.py => core/api/types/rest_api.py} (59%) create mode 100644 superset/extensions/api.py create mode 100644 superset/extensions/discovery.py create mode 100644 superset/extensions/exceptions.py create mode 100644 superset/extensions/local_extensions_watcher.py copy requirements/development.in => superset/extensions/types.py (71%) create mode 100644 superset/extensions/utils.py copy superset/{sqllab/validators.py => extensions/view.py} (56%) create mode 100644 superset/utils/jinja_template_validator.py create mode 100644 tests/unit_tests/utils/test_jinja_template_validator.py create mode 100644 tests/unit_tests/utils/test_screenshot_exception_handling.py