diff --git a/.gitattributes b/.gitattributes index 5e7ce3d7279..a1918ad4c2a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,4 @@ docker/**/*.sh text eol=lf *.svg binary *.ipynb binary +*.geojson binary diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index f3a91a9cb0c..2bb567e2a60 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -111,6 +111,9 @@ jobs: docker compose up superset-init --exit-code-from superset-init docker-compose-image-tag: + # Run this job only on pushes to master (not for PRs) + # goal is to check that building the latest image works, not required for all PR pushes + if: github.event_name == 'push' && github.ref == 'refs/heads/master' runs-on: ubuntu-24.04 steps: - name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )" diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index 9c3ed206289..da2ced8d5b8 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -53,6 +53,14 @@ jobs: cd docs yarn install --immutable + - name: Cache pre-commit environments + uses: actions/cache@v3 + with: + path: ~/.cache/pre-commit + key: pre-commit-v2-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('.pre-commit-config.yaml') }} + restore-keys: | + pre-commit-v2-${{ runner.os }}-py${{ matrix.python-version }}- + - name: pre-commit run: | set +e # Don't exit immediately on failure diff --git a/.github/workflows/superset-e2e.yml b/.github/workflows/superset-e2e.yml index 6997abf408a..7c77f323df6 100644 --- a/.github/workflows/superset-e2e.yml +++ b/.github/workflows/superset-e2e.yml @@ -73,6 +73,7 @@ jobs: with: persist-credentials: false submodules: recursive + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - name: Checkout using ref (workflow_dispatch) if: github.event_name == 'workflow_dispatch' && github.event.inputs.ref != '' uses: actions/checkout@v4 @@ -137,9 +138,16 @@ jobs: NODE_OPTIONS: "--max-old-space-size=4096" with: run: cypress-run-all ${{ env.USE_DASHBOARD }} ${{ matrix.app_root }} + - name: Set safe app root + if: failure() + id: set-safe-app-root + run: | + APP_ROOT="${{ matrix.app_root }}" + SAFE_APP_ROOT=${APP_ROOT//\//_} + echo "safe_app_root=$SAFE_APP_ROOT" >> $GITHUB_OUTPUT - name: Upload Artifacts uses: actions/upload-artifact@v4 if: failure() with: path: ${{ github.workspace }}/superset-frontend/cypress-base/cypress/screenshots - name: cypress-artifact-${{ github.run_id }}-${{ github.job }}-${{ matrix.browser }}-${{ matrix.parallel_id }} + name: cypress-artifact-${{ github.run_id }}-${{ github.job }}-${{ matrix.browser }}-${{ matrix.parallel_id }}--${{ steps.set-safe-app-root.outputs.safe_app_root }} diff --git a/.github/workflows/superset-frontend.yml b/.github/workflows/superset-frontend.yml index 6e1c494a045..3665c6f0591 100644 --- a/.github/workflows/superset-frontend.yml +++ b/.github/workflows/superset-frontend.yml @@ -26,6 +26,8 @@ jobs: uses: actions/checkout@v4 with: persist-credentials: false + fetch-depth: 0 + ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }} - name: Check for File Changes id: check @@ -39,6 +41,10 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | + echo "git rev-parse --short HEAD" + git rev-parse --short HEAD + echo "git show -s --format=raw HEAD" + git show -s --format=raw HEAD docker buildx build \ -t $TAG \ --cache-from=type=registry,ref=apache/superset-cache:3.10-slim-bookworm \ @@ -115,24 +121,6 @@ jobs: files: merged-output/coverage-summary.json slug: apache/superset - core-cover: - needs: frontend-build - if: needs.frontend-build.outputs.should-run == 'true' - runs-on: ubuntu-24.04 - steps: - - name: Download Docker Image Artifact - uses: actions/download-artifact@v4 - with: - name: docker-image - - - name: Load Docker Image - run: docker load < docker-image.tar.gz - - - name: superset-ui/core coverage - run: | - docker run --rm $TAG bash -c \ - "npm run core:cover" - lint-frontend: needs: frontend-build if: needs.frontend-build.outputs.should-run == 'true' @@ -144,7 +132,8 @@ jobs: name: docker-image - name: Load Docker Image - run: docker load < docker-image.tar.gz + run: | + docker load < docker-image.tar.gz - name: eslint run: | diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index fce578c1eb7..0b93b4f96f6 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -58,7 +58,7 @@ repos: - id: prettier additional_dependencies: - prettier@3.5.3 - args: ["--ignore-path=./superset-frontend/.prettierignore"] + args: ["--ignore-path=./superset-frontend/.prettierignore", "--exclude", "site-packages"] files: "superset-frontend" - repo: local hooks: diff --git a/UPDATING.md b/UPDATING.md index 41f6e7d6784..fd56ee5a9a6 100644 --- a/UPDATING.md +++ b/UPDATING.md @@ -26,6 +26,7 @@ assists people when migrating to a new version. - [33116](https://github.com/apache/superset/pull/33116) In Echarts Series charts (e.g. Line, Area, Bar, etc.) charts, the `x_axis_sort_series` and `x_axis_sort_series_ascending` form data items have been renamed with `x_axis_sort` and `x_axis_sort_asc`. There's a migration added that can potentially affect a significant number of existing charts. - [32317](https://github.com/apache/superset/pull/32317) The horizontal filter bar feature is now out of testing/beta development and its feature flag `HORIZONTAL_FILTER_BAR` has been removed. +- [31590](https://github.com/apache/superset/pull/31590) Marks the begining of intricate work around supporting dynamic Theming, and breaks support for [THEME_OVERRIDES](https://github.com/apache/superset/blob/732de4ac7fae88e29b7f123b6cbb2d7cd411b0e4/superset/config.py#L671) in favor of a new theming system based on AntD V5. Likely this will be in disrepair until settling over the 5.x lifecycle. - [31976](https://github.com/apache/superset/pull/31976) Removed the `DISABLE_LEGACY_DATASOURCE_EDITOR` feature flag. The previous value of the feature flag was `True` and now the feature is permanently removed. - [31959](https://github.com/apache/superset/pull/32000) Removes CSV_UPLOAD_MAX_SIZE config, use your web server to control file upload size. - [31959](https://github.com/apache/superset/pull/31959) Removes the following endpoints from data uploads: `/api/v1/database//_upload` and `/api/v1/database/_metadata`, in favour of new one (Details on the PR). And simplifies permissions. diff --git a/superset-embedded-sdk/src/index.ts b/superset-embedded-sdk/src/index.ts index f0ae1cab42e..9332e876e82 100644 --- a/superset-embedded-sdk/src/index.ts +++ b/superset-embedded-sdk/src/index.ts @@ -89,6 +89,7 @@ export type EmbeddedDashboard = { callbackFn: ObserveDataMaskCallbackFn, ) => void; getDataMask: () => Record; + setThemeConfig: (themeConfig: Record) => void; }; /** @@ -245,6 +246,18 @@ export async function embedDashboard({ ourPort.start(); ourPort.defineMethod('observeDataMask', callbackFn); }; + // TODO: Add proper types once theming branch is merged + const setThemeConfig = async (themeConfig: Record): Promise => { + try { + ourPort.emit('setThemeConfig', { themeConfig }); + log('Theme config sent successfully (or at least message dispatched)'); + } catch (error) { + log( + 'Error sending theme config. Ensure the iframe side implements the "setThemeConfig" method.', + ); + throw error; + } + }; return { getScrollSize, @@ -253,5 +266,6 @@ export async function embedDashboard({ getActiveTabs, observeDataMask, getDataMask, + setThemeConfig }; } diff --git a/superset-frontend/.eslintignore b/superset-frontend/.eslintignore index 0ef97d6e3b0..794f3b68c1e 100644 --- a/superset-frontend/.eslintignore +++ b/superset-frontend/.eslintignore @@ -19,7 +19,6 @@ coverage/** dist/* src/assets/images/* -src/assets/stylesheets/* node_modules/* node_modules*/* vendor/* diff --git a/superset-frontend/.eslintrc.js b/superset-frontend/.eslintrc.js index 65cdd18a2c7..59f003c2936 100644 --- a/superset-frontend/.eslintrc.js +++ b/superset-frontend/.eslintrc.js @@ -52,7 +52,7 @@ const restrictedImportsRules = { message: 'Lodash Memoize is unsafe! Please use memoize-one instead', }, 'no-testing-library-react': { - name: '@testing-library/react', + name: '@superset-ui/core/spec', message: 'Please use spec/helpers/testing-library instead', }, 'no-testing-library-react-dom-utils': { @@ -63,10 +63,6 @@ const restrictedImportsRules = { name: 'antd', message: 'Please import Ant components from the index of src/components', }, - 'no-antd-v5': { - name: 'antd-v5', - message: 'Please import Ant v5 components from the index of src/components', - }, 'no-superset-theme': { name: '@superset-ui/core', importNames: ['supersetTheme'], @@ -101,6 +97,15 @@ module.exports = { // resolve modules from `/superset_frontend/node_modules` and `/superset_frontend` moduleDirectory: ['node_modules', '.'], }, + typescript: { + alwaysTryTypes: true, + project: [ + './tsconfig.json', + './packages/superset-ui-core/tsconfig.json', + './packages/superset-ui-chart-controls/', + './plugins/*/tsconfig.json', + ], + }, }, // only allow import from top level of module 'import/core-modules': importCoreModules, @@ -295,9 +300,9 @@ module.exports = { 'error', { paths: Object.values(restrictedImportsRules).filter( - r => r.name !== 'antd-v5', + r => r.name !== 'antd', ), - patterns: ['antd/*'], + patterns: [], }, ], }, @@ -330,7 +335,9 @@ module.exports = { rules: { 'import/no-extraneous-dependencies': [ 'error', - { devDependencies: true }, + { + devDependencies: true, + }, ], 'no-only-tests/no-only-tests': 'error', 'max-classes-per-file': 0, @@ -373,7 +380,7 @@ module.exports = { 'fixtures.*', 'cypress-base/cypress/**/*', 'Stories.tsx', - 'packages/superset-ui-core/src/style/index.tsx', + 'packages/superset-ui-core/src/theme/index.tsx', ], rules: { 'theme-colors/no-literal-colors': 0, diff --git a/superset-frontend/.storybook/main.js b/superset-frontend/.storybook/main.js index 884c73ef94b..0a5181d0393 100644 --- a/superset-frontend/.storybook/main.js +++ b/superset-frontend/.storybook/main.js @@ -24,6 +24,7 @@ module.exports = { stories: [ '../src/@(components|common|filters|explore|views|dashboard|features)/**/*.stories.@(tsx|jsx)', '../packages/superset-ui-demo/storybook/stories/**/*.*.@(tsx|jsx)', + '../packages/superset-ui-core/src/components/**/*.stories.@(tsx|jsx)', ], addons: [ diff --git a/superset-frontend/.storybook/preview.jsx b/superset-frontend/.storybook/preview.jsx index ef27f3591e8..3d407191c72 100644 --- a/superset-frontend/.storybook/preview.jsx +++ b/superset-frontend/.storybook/preview.jsx @@ -17,31 +17,75 @@ * under the License. */ import { withJsx } from '@mihkeleidast/storybook-addon-source'; -import { supersetTheme, ThemeProvider } from '@superset-ui/core'; -import { AntdThemeProvider } from '../src/components/AntdThemeProvider'; +import { themeObject, css, exampleThemes } from '@superset-ui/core'; import { combineReducers, createStore, applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; import { Provider } from 'react-redux'; import reducerIndex from 'spec/helpers/reducerIndex'; -import { GlobalStyles } from '../src/GlobalStyles'; +import { Global } from '@emotion/react'; +import { App, Layout, Space, Content } from 'antd'; import 'src/theme.ts'; import './storybook.css'; +export const GlobalStylesOverrides = () => ( + +); + const store = createStore( combineReducers(reducerIndex), {}, compose(applyMiddleware(thunk)), ); -const themeDecorator = Story => ( - - - - - - -); +export const globalTypes = { + theme: { + name: 'Theme', + description: 'Global theme for components', + defaultValue: 'superset', + toolbar: { + icon: 'paintbrush', + items: Object.keys(exampleThemes), + }, + }, +}; + +const themeDecorator = (Story, context) => { + const themeKey = context.globals.theme || 'superset'; + themeObject.setConfig(exampleThemes[themeKey]); + + return ( + + + + + + + + + ); +}; const providerDecorator = Story => ( @@ -81,5 +125,5 @@ export const parameters = { ], }, }, - controls: { expanded: true, sort: 'alpha' }, + controls: { expanded: true, sort: 'alpha', disableSaveFromUI: true }, }; diff --git a/superset-frontend/.storybook/storybook.css b/superset-frontend/.storybook/storybook.css index b4e2fce55b7..25fa51c5a8b 100644 --- a/superset-frontend/.storybook/storybook.css +++ b/superset-frontend/.storybook/storybook.css @@ -1,3 +1,2 @@ body { - background: transparent; } diff --git a/superset-frontend/cypress-base/cypress/e2e/auth/login.test.ts b/superset-frontend/cypress-base/cypress/e2e/auth/login.test.ts new file mode 100644 index 00000000000..2f14145cd70 --- /dev/null +++ b/superset-frontend/cypress-base/cypress/e2e/auth/login.test.ts @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 { LOGIN } from 'cypress/utils/urls'; + +function interceptLogin() { + cy.intercept('POST', '/login/').as('login'); +} + +describe('Login view', () => { + beforeEach(() => { + cy.visit(LOGIN); + }); + + it('should load login page', () => { + cy.getBySel('login-form').should('be.visible'); + cy.getBySel('username-input').should('be.visible'); + cy.getBySel('password-input').should('be.visible'); + cy.getBySel('login-button').should('be.visible'); + }); + + it('should redirect to login with incorrect username and password', () => { + interceptLogin(); + cy.getBySel('login-form').should('be.visible'); + cy.getBySel('username-input').type('admin'); + cy.getBySel('password-input').type('wrongpassword'); + cy.getBySel('login-button').click(); + cy.wait('@login'); + cy.url().should('include', LOGIN); + }); + + it('should login with correct username and password', () => { + interceptLogin(); + cy.getBySel('login-form').should('be.visible'); + cy.getBySel('username-input').type('admin'); + cy.getBySel('password-input').type('general'); + cy.getBySel('login-button').click(); + cy.wait('@login'); + cy.getCookies().should('have.length', 1); + }); +}); diff --git a/superset-frontend/src/components/Table/cell-renderers/NullCell/NullCell.test.tsx b/superset-frontend/cypress-base/cypress/e2e/auth/register.test.ts similarity index 56% rename from superset-frontend/src/components/Table/cell-renderers/NullCell/NullCell.test.tsx rename to superset-frontend/cypress-base/cypress/e2e/auth/register.test.ts index f2a2bcbf83c..3b036aba010 100644 --- a/superset-frontend/src/components/Table/cell-renderers/NullCell/NullCell.test.tsx +++ b/superset-frontend/cypress-base/cypress/e2e/auth/register.test.ts @@ -16,19 +16,22 @@ * specific language governing permissions and limitations * under the License. */ -import { render, screen } from 'spec/helpers/testing-library'; -import { supersetTheme } from '@superset-ui/core'; -import { NULL_DISPLAY } from 'src/constants'; -import NullCell from '.'; -test('renders null value', async () => { - render(); - expect(screen.getByText(NULL_DISPLAY)).toBeInTheDocument(); -}); +import { REGISTER } from 'cypress/utils/urls'; -test('renders with gray font', async () => { - render(); - expect(screen.getByText(NULL_DISPLAY)).toHaveStyle( - `color: ${supersetTheme.colors.grayscale.light1}`, - ); +describe('Register view', () => { + beforeEach(() => { + cy.visit(REGISTER); + }); + + it('should load register page', () => { + cy.getBySel('register-form').should('be.visible'); + cy.getBySel('username-input').should('be.visible'); + cy.getBySel('first-name-input').should('be.visible'); + cy.getBySel('last-name-input').should('be.visible'); + cy.getBySel('email-input').should('be.visible'); + cy.getBySel('password-input').should('be.visible'); + cy.getBySel('confirm-password-input').should('be.visible'); + cy.getBySel('register-button').should('be.visible'); + }); }); diff --git a/superset-frontend/cypress-base/cypress/e2e/chart_list/list.test.ts b/superset-frontend/cypress-base/cypress/e2e/chart_list/list.test.ts index cd99250a9e5..80832f40580 100644 --- a/superset-frontend/cypress-base/cypress/e2e/chart_list/list.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/chart_list/list.test.ts @@ -35,12 +35,12 @@ function orderAlphabetical() { } function openProperties() { - cy.get('[aria-label="more"]').eq(1).click(); + cy.get('[aria-label="more"]').eq(0).click(); cy.getBySel('chart-list-edit-option').click(); } function openMenu() { - cy.get('[aria-label="more"]').eq(1).click(); + cy.get('[aria-label="more"]').eq(0).click(); } function confirmDelete() { @@ -81,12 +81,13 @@ describe('Charts list', () => { cy.wait('@get'); }); - it.only('should show the newly added dashboards in a tooltip', () => { + it('should show the newly added dashboards in a tooltip', () => { interceptDashboardGet(); visitSampleChartFromList('1 - Sample chart'); - saveChartToDashboard('1 - Sample dashboard'); - saveChartToDashboard('2 - Sample dashboard'); - saveChartToDashboard('3 - Sample dashboard'); + saveChartToDashboard('1 - Sample chart', '1 - Sample dashboard'); + saveChartToDashboard('1 - Sample chart', '2 - Sample dashboard'); + saveChartToDashboard('1 - Sample chart', '3 - Sample dashboard'); + saveChartToDashboard('1 - Sample chart', '4 - Sample dashboard'); visitChartList(); cy.getBySel('count-crosslinks').should('be.visible'); @@ -95,8 +96,6 @@ describe('Charts list', () => { describe('list mode', () => { before(() => { - cy.createSampleDashboards([0, 1, 2, 3]); - cy.createSampleCharts([0]); visitChartList(); setGridMode('list'); }); @@ -112,18 +111,10 @@ describe('Charts list', () => { cy.getBySel('sort-header').eq(7).contains('Actions'); }); - it('should sort correctly in list mode', () => { - cy.getBySel('sort-header').eq(1).click(); - cy.getBySel('table-row').first().contains('Area Chart'); - cy.getBySel('sort-header').eq(1).click(); - cy.getBySel('table-row').first().contains("World's Population"); - cy.getBySel('sort-header').eq(1).click(); - }); - it('should bulk select in list mode', () => { toggleBulkSelect(); - cy.get('#header-toggle-all').click(); - cy.get('[aria-label="checkbox-on"]').should('have.length', 26); + cy.get('[aria-label="Select all"]').click(); + cy.get('input[type="checkbox"]:checked').should('have.length', 26); cy.getBySel('bulk-select-copy').contains('25 Selected'); cy.getBySel('bulk-select-action') .should('have.length', 2) @@ -132,7 +123,7 @@ describe('Charts list', () => { expect($btns).to.contain('Export'); }); cy.getBySel('bulk-select-deselect-all').click(); - cy.get('[aria-label="checkbox-on"]').should('have.length', 0); + cy.get('input[type="checkbox"]:checked').should('have.length', 0); cy.getBySel('bulk-select-copy').contains('0 Selected'); cy.getBySel('bulk-select-action').should('not.exist'); }); @@ -164,11 +155,6 @@ describe('Charts list', () => { cy.getBySel('bulk-select-action').should('not.exist'); }); - it('should sort in card mode', () => { - orderAlphabetical(); - cy.getBySel('styled-card').first().contains('% Rural'); - }); - it('should preserve other filters when sorting', () => { cy.getBySel('styled-card').should('have.length', 25); setFilter('Type', 'Big Number'); @@ -179,40 +165,12 @@ describe('Charts list', () => { describe('common actions', () => { beforeEach(() => { - cy.createSampleCharts([0, 1, 2, 3]); visitChartList(); }); - it('should allow to favorite/unfavorite', () => { - cy.intercept({ url: `**/api/v1/chart/*/favorites/`, method: 'POST' }).as( - 'select', - ); - cy.intercept({ - url: `**/api/v1/chart/*/favorites/`, - method: 'DELETE', - }).as('unselect'); - - setGridMode('card'); - orderAlphabetical(); - - cy.getBySel('styled-card').first().contains('% Rural'); - cy.getBySel('styled-card') - .first() - .find("[aria-label='favorite-unselected']") - .click(); - cy.wait('@select'); - cy.getBySel('styled-card') - .first() - .find("[aria-label='favorite-selected']") - .click(); - cy.wait('@unselect'); - cy.getBySel('styled-card') - .first() - .find("[aria-label='favorite-selected']") - .should('not.exist'); - }); - it('should bulk delete correctly', () => { + cy.createSampleCharts([0, 1, 2, 3]); + interceptBulkDelete(); toggleBulkSelect(); @@ -220,9 +178,10 @@ describe('Charts list', () => { setGridMode('card'); orderAlphabetical(); - cy.getBySel('styled-card').eq(1).contains('1 - Sample chart').click(); - cy.getBySel('styled-card').eq(2).contains('2 - Sample chart').click(); - cy.getBySel('bulk-select-action').eq(0).contains('Delete').click(); + cy.getBySel('skeleton-card').should('not.exist'); + cy.getBySel('styled-card').contains('1 - Sample chart').click(); + cy.getBySel('styled-card').contains('2 - Sample chart').click(); + cy.getBySel('bulk-select-action').contains('Delete').click(); confirmDelete(); cy.wait('@bulkDelete'); cy.getBySel('styled-card') @@ -234,56 +193,71 @@ describe('Charts list', () => { // bulk deletes in list-view setGridMode('list'); - cy.getBySel('table-row').eq(1).contains('3 - Sample chart'); - cy.getBySel('table-row').eq(2).contains('4 - Sample chart'); + cy.get('.loading').should('not.exist'); + cy.getBySel('table-row').contains('3 - Sample chart').should('exist'); + cy.getBySel('table-row').contains('4 - Sample chart').should('exist'); + cy.get('[data-test="table-row"] input[type="checkbox"]').eq(0).click(); cy.get('[data-test="table-row"] input[type="checkbox"]').eq(1).click(); - cy.get('[data-test="table-row"] input[type="checkbox"]').eq(2).click(); cy.getBySel('bulk-select-action').eq(0).contains('Delete').click(); confirmDelete(); cy.wait('@bulkDelete'); - cy.getBySel('table-row').eq(1).should('not.contain', '3 - Sample chart'); - cy.getBySel('table-row').eq(2).should('not.contain', '4 - Sample chart'); + cy.get('.loading').should('exist'); + cy.get('.loading').should('not.exist'); + cy.getBySel('table-row').eq(0).should('not.contain', '3 - Sample chart'); + cy.getBySel('table-row').eq(1).should('not.contain', '4 - Sample chart'); }); - it('should delete correctly', () => { + it('should delete correctly in card mode', () => { + cy.createSampleCharts([0, 1]); interceptDelete(); // deletes in card-view setGridMode('card'); orderAlphabetical(); - cy.getBySel('styled-card').eq(1).contains('1 - Sample chart'); + cy.getBySel('styled-card').contains('1 - Sample chart'); openMenu(); cy.getBySel('chart-list-delete-option').click(); confirmDelete(); cy.wait('@delete'); cy.getBySel('styled-card') - .eq(1) - .should('not.contain', '1 - Sample chart'); + .contains('1 - Sample chart') + .should('not.exist'); + }); - // deletes in list-view - setGridMode('list'); - cy.getBySel('table-row').eq(1).contains('2 - Sample chart'); - cy.getBySel('delete').eq(1).click(); + it('should delete correctly in list mode', () => { + cy.createSampleCharts([2, 3]); + interceptDelete(); + cy.getBySel('sort-header').contains('Name').click(); + + // Modal closes immediatly without this + cy.wait(2000); + + cy.getBySel('table-row').eq(0).contains('3 - Sample chart'); + cy.getBySel('delete').eq(0).click(); confirmDelete(); cy.wait('@delete'); - cy.getBySel('table-row').eq(1).should('not.contain', '2 - Sample chart'); + cy.get('.loading').should('exist'); + cy.get('.loading').should('not.exist'); + cy.getBySel('table-row').eq(0).should('not.contain', '3 - Sample chart'); }); it('should edit correctly', () => { + cy.createSampleCharts([0]); interceptUpdate(); // edits in card-view setGridMode('card'); orderAlphabetical(); - cy.getBySel('styled-card').eq(1).contains('1 - Sample chart'); + cy.getBySel('skeleton-card').should('not.exist'); + cy.getBySel('styled-card').eq(0).contains('1 - Sample chart'); // change title openProperties(); cy.getBySel('properties-modal-name-input').type(' | EDITED'); cy.get('button:contains("Save")').click(); cy.wait('@update'); - cy.getBySel('styled-card').eq(1).contains('1 - Sample chart | EDITED'); + cy.getBySel('styled-card').eq(0).contains('1 - Sample chart | EDITED'); // edits in list-view setGridMode('list'); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.controls.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.controls.test.ts index e527fcda759..3f5bf3188a7 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.controls.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/_skip.controls.test.ts @@ -47,12 +47,12 @@ describe.skip('Dashboard top-level controls', () => { // Solution: pause the network before clicking, assert, then unpause network. cy.get('[data-test="refresh-chart-menu-item"]').should( 'have.class', - 'antd5-dropdown-menu-item-disabled', + 'ant-dropdown-menu-item-disabled', ); waitForChartLoad(mapSpec); cy.get('[data-test="refresh-chart-menu-item"]').should( 'not.have.class', - 'antd5-dropdown-menu-item-disabled', + 'ant-dropdown-menu-item-disabled', ); }); }); @@ -65,7 +65,7 @@ describe.skip('Dashboard top-level controls', () => { cy.get('[aria-label="ellipsis"]').click(); cy.get('[data-test="refresh-dashboard-menu-item"]').should( 'not.have.class', - 'antd5-dropdown-menu-item-disabled', + 'ant-dropdown-menu-item-disabled', ); cy.get('[data-test="refresh-dashboard-menu-item"]').click({ @@ -73,7 +73,7 @@ describe.skip('Dashboard top-level controls', () => { }); cy.get('[data-test="refresh-dashboard-menu-item"]').should( 'have.class', - 'antd5-dropdown-menu-item-disabled', + 'ant-dropdown-menu-item-disabled', ); // wait all charts force refreshed. @@ -94,7 +94,7 @@ describe.skip('Dashboard top-level controls', () => { cy.get('[aria-label="ellipsis"]').click(); cy.get('[data-test="refresh-dashboard-menu-item"]').and( 'not.have.class', - 'antd5-dropdown-menu-item-disabled', + 'ant-dropdown-menu-item-disabled', ); }); }); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/actions.test.js b/superset-frontend/cypress-base/cypress/e2e/dashboard/actions.test.js index 7da3cc84ee8..13c925ede52 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/actions.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/actions.test.js @@ -62,6 +62,6 @@ describe('Dashboard actions', () => { // Verify the color of the outlined star (gray) cy.get('@starIconOutlinedAfter') .should('have.css', 'color') - .and('eq', 'rgb(178, 178, 178)'); + .and('eq', 'rgb(133, 133, 133)'); }); }); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts index 2f8254310ca..f6e29bb0fa7 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/drillby.test.ts @@ -54,14 +54,14 @@ const drillBy = (targetDrillByColumn: string, isLegacy = false) => { interceptV1ChartData(); } - cy.get('.antd5-dropdown:not(.antd5-dropdown-hidden)') + cy.get('.ant-dropdown:not(.ant-dropdown-hidden)') .should('be.visible') .find("[role='menu'] [role='menuitem']") .contains(/^Drill by$/) .trigger('mouseover', { force: true }); cy.get( - '.antd5-dropdown-menu-submenu:not(.antd5-dropdown-menu-submenu-hidden) [data-test="drill-by-submenu"]', + '.ant-dropdown-menu-submenu:not(.ant-dropdown-menu-submenu-hidden) [data-test="drill-by-submenu"]', ) .should('be.visible') .find('[role="menuitem"]') diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/drilltodetail.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/drilltodetail.test.ts index e3250506bc0..e6f882beb09 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/drilltodetail.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/drilltodetail.test.ts @@ -34,8 +34,8 @@ function openModalFromMenu(chartType: string) { cy.get( `[data-test-viz-type='${chartType}'] [aria-label='More Options']`, ).click(); - cy.get('.antd5-dropdown') - .not('.antd5-dropdown-hidden') + cy.get('.ant-dropdown') + .not('.ant-dropdown-hidden') .find("[role='menu'] [role='menuitem']") .eq(5) .should('contain', 'Drill to detail') @@ -46,8 +46,8 @@ function openModalFromMenu(chartType: string) { function drillToDetail(targetMenuItem: string) { interceptSamples(); - cy.get('.antd5-dropdown') - .not('.antd5-dropdown-hidden') + cy.get('.ant-dropdown') + .not('.ant-dropdown-hidden') .first() .find("[role='menu'] [role='menuitem']") .contains(new RegExp(`^${targetMenuItem}$`)) @@ -61,14 +61,14 @@ function drillToDetail(targetMenuItem: string) { const drillToDetailBy = (targetDrill: string) => { interceptSamples(); - cy.get('.antd5-dropdown:not(.antd5-dropdown-hidden)') + cy.get('.ant-dropdown:not(.ant-dropdown-hidden)') .should('be.visible') .find("[role='menu'] [role='menuitem']") .contains(/^Drill to detail by$/) .trigger('mouseover', { force: true }); cy.get( - '.antd5-dropdown-menu-submenu:not(.antd5-dropdown-menu-submenu-hidden) [data-test="drill-to-detail-by-submenu"]', + '.ant-dropdown-menu-submenu:not(.ant-dropdown-menu-submenu-hidden) [data-test="drill-to-detail-by-submenu"]', ) .should('be.visible') .find('[role="menuitem"]') @@ -121,7 +121,10 @@ function testTimeChart(vizType: string) { }); } -describe('Drill to detail modal', () => { +// TODO fix this test, it has issues with autoscrolling and the locked title +// flakes intricately when the righClick is obstructed by the title. +// Tried many option around scrollIntoView, force, etc. but no luck. +describe.skip('Drill to detail modal', () => { beforeEach(() => { closeModal(); }); @@ -463,7 +466,7 @@ describe('Drill to detail modal', () => { }); // close the filter and test that data was reloaded - cy.getBySel('filter-col').find("[aria-label='close']").click(); + cy.getBySel('filter-col').find("[aria-label='Close']").click(); cy.wait('@samples'); cy.getBySel('row-count-label').should('contain', '75.7k rows'); cy.get('.ant-pagination-item-active').should('contain', '1'); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts index aaa047f601b..af3bba92c2f 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/editmode.test.ts @@ -17,7 +17,12 @@ * under the License. */ import { SAMPLE_DASHBOARD_1, TABBED_DASHBOARD } from 'cypress/utils/urls'; -import { drag, resize, waitForChartLoad } from 'cypress/utils'; +import { + drag, + resize, + setSelectSearchInput, + waitForChartLoad, +} from 'cypress/utils'; import { edit } from 'brace'; import { interceptExploreUpdate, @@ -34,21 +39,12 @@ function editDashboard() { cy.getBySel('edit-dashboard-button').click(); } -function closeModal() { - cy.getBySel('properties-modal-cancel-button').click({ force: true }); -} - function openProperties() { - cy.get('body').then($body => { - if ($body.find('[data-test="properties-modal-cancel-button"]').length) { - closeModal(); - } - cy.getBySel('actions-trigger').click({ force: true }); - cy.getBySel('header-actions-menu') - .contains('Edit properties') - .click({ force: true }); - cy.get('.antd5-modal-body').should('be.visible'); - }); + cy.getBySel('actions-trigger').click({ force: true }); + cy.getBySel('header-actions-menu') + .contains('Edit properties') + .click({ force: true }); + cy.get('.ant-modal-body').should('be.visible'); } function assertMetadata(text: string) { @@ -65,7 +61,7 @@ function assertMetadata(text: string) { } function openAdvancedProperties() { - cy.get('.antd5-modal-body') + cy.get('.ant-modal-body') .contains('Advanced') .should('be.visible') .click({ force: true }); @@ -150,12 +146,10 @@ function selectColorScheme( target = 'dashboard-edit-properties-form', ) { cy.get(`[data-test="${target}"] input[aria-label="Select color scheme"]`) - .first() + .should('exist') .then($input => { - cy.wrap($input).click({ force: true }); - cy.wrap($input).type(color.slice(0, 5), { force: true }); + setSelectSearchInput($input, color.slice(0, 5)); }); - cy.getBySel(color).click({ force: true }); } function saveAndGo(dashboard = 'Tabbed Dashboard') { @@ -1095,7 +1089,7 @@ describe('Dashboard edit', () => { cy.allowConsoleErrors(['Error: A valid color scheme is required']); writeMetadata('{"color_scheme":"wrongcolorscheme"}'); applyChanges(); - cy.get('.antd5-modal-body') + cy.get('.ant-modal-body') .contains('A valid color scheme is required') .should('be.visible'); }); @@ -1130,7 +1124,7 @@ describe('Dashboard edit', () => { it('should filter charts', () => { interceptCharts(); - cy.get('[role="checkbox"]').click(); + cy.get('input[type="checkbox"]').click(); cy.getBySel('dashboard-charts-filter-search-input').type('Unicode'); cy.wait('@filtering'); cy.getBySel('chart-card') @@ -1140,8 +1134,8 @@ describe('Dashboard edit', () => { }); // TODO fix this test! This was the #1 flaky test as of 4/21/23 according to cypress dashboard. - xit('should disable the Save button when undoing', () => { - cy.get('[role="checkbox"]').click(); + it.skip('should disable the Save button when undoing', () => { + cy.get('input[type="checkbox"]').click(); dragComponent('Unicode Cloud', 'card-title', false); cy.getBySel('header-save-button').should('be.enabled'); discardChanges(); @@ -1155,13 +1149,13 @@ describe('Dashboard edit', () => { }); it('should add charts', () => { - cy.get('[role="checkbox"]').click(); + cy.get('input[type="checkbox"]').click(); dragComponent(); cy.getBySel('dashboard-component-chart-holder').should('have.length', 1); }); it.skip('should remove added charts', () => { - cy.get('[role="checkbox"]').click(); + cy.get('input[type="checkbox"]').click(); dragComponent('Unicode Cloud'); cy.getBySel('dashboard-component-chart-holder').should('have.length', 1); cy.getBySel('dashboard-delete-component-button').click(); @@ -1204,7 +1198,7 @@ describe('Dashboard edit', () => { }); it('should save', () => { - cy.get('[role="checkbox"]').click(); + cy.get('input[type="checkbox"]').click(); dragComponent(); cy.getBySel('header-save-button').should('be.enabled'); saveChanges(); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/horizontalFilterBar.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/horizontalFilterBar.test.ts index e55c6ac18d3..a5513645390 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/horizontalFilterBar.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/horizontalFilterBar.test.ts @@ -57,16 +57,16 @@ function setFilterBarOrientation(orientation: 'vertical' | 'horizontal') { .trigger('mouseover'); if (orientation === 'vertical') { - cy.get('.antd5-dropdown-menu-item-selected') + cy.get('.ant-dropdown-menu-item-selected') .contains('Horizontal (Top)') .should('exist'); - cy.get('.antd5-dropdown-menu-item').contains('Vertical (Left)').click(); + cy.get('.ant-dropdown-menu-item').contains('Vertical (Left)').click(); cy.getBySel('dashboard-filters-panel').should('exist'); } else { - cy.get('.antd5-dropdown-menu-item-selected') + cy.get('.ant-dropdown-menu-item-selected') .contains('Vertical (Left)') .should('exist'); - cy.get('.antd5-dropdown-menu-item').contains('Horizontal (Top)').click(); + cy.get('.ant-dropdown-menu-item').contains('Horizontal (Top)').click(); cy.getBySel('loading-indicator').should('exist'); cy.getBySel('filter-bar').should('exist'); cy.getBySel('dashboard-filters-panel').should('not.exist'); @@ -138,7 +138,7 @@ describe('Horizontal FilterBar', () => { cy.getBySel('dropdown-container-btn').should('not.exist'); }); - it('should show "more filters" and scroll', () => { + it.only('should show "more filters" and scroll', () => { prepareDashboardFilters([ { name: 'test_1', column: 'country_name', datasetId: 2 }, { name: 'test_2', column: 'country_code', datasetId: 2 }, @@ -157,11 +157,11 @@ describe('Horizontal FilterBar', () => { cy.get('.filter-item-wrapper').should('have.length', 3); openMoreFilters(); cy.getBySel('form-item-value').should('have.length', 12); - cy.getBySel('filter-control-name').contains('test_10').should('be.visible'); + cy.getBySel('filter-control-name').contains('test_3').should('be.visible'); cy.getBySel('filter-control-name') .contains('test_12') .should('not.be.visible'); - cy.get('.antd5-popover-inner').scrollTo('bottom'); + cy.getBySel('filter-control-name').contains('test_12').scrollIntoView(); cy.getBySel('filter-control-name').contains('test_12').should('be.visible'); }); @@ -197,7 +197,7 @@ describe('Horizontal FilterBar', () => { applyNativeFilterValueWithIndex(8, testItems.filterDefaultValue); cy.get(nativeFilters.applyFilter).click({ force: true }); cy.wait('@chart'); - cy.get('.antd5-scroll-number.antd5-badge-count').should( + cy.get('.ant-scroll-number.ant-badge-count').should( 'have.attr', 'title', '1', diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.noInitState.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.noInitState.test.ts index 8f3c5b024ff..30936dcf365 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.noInitState.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.noInitState.test.ts @@ -199,14 +199,16 @@ describe('Native filters', () => { .should('be.visible') .click(); - cy.get('[data-test="range-filter-from-input"]').type('{selectall}5'); + cy.get('[data-test="range-filter-from-input"]').type('{selectall}40'); cy.get('[data-test="range-filter-to-input"]') .should('be.visible') .click(); cy.get('[data-test="range-filter-to-input"]').type('{selectall}50'); - cy.get(nativeFilters.applyFilter).click(); + cy.get(nativeFilters.applyFilter).click({ + force: true, + }); // Assert that the URL contains 'native_filters' cy.url().then(u => { @@ -215,7 +217,7 @@ describe('Native filters', () => { cy.get('[data-test="range-filter-from-input"]') .invoke('val') - .should('equal', '5'); + .should('equal', '40'); // Assert that the "To" input has the correct value cy.get('[data-test="range-filter-to-input"]') diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.test.ts index 67578c79d6a..3705db0bf8b 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/nativeFilters.test.ts @@ -293,7 +293,11 @@ describe('Native filters', () => { it('Verify setting options and tooltips for value filter', () => { enterNativeFilterEditModal(false); - cy.contains('Filter value is required').should('be.visible').click(); + cy.contains('Filter value is required').scrollIntoView(); + + cy.contains('Filter value is required').should('be.visible').click({ + force: true, + }); checkNativeFilterTooltip(0, nativeFilterTooltips.preFilter); checkNativeFilterTooltip(1, nativeFilterTooltips.defaultValue); cy.get(nativeFilters.modal.container).should('be.visible'); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts index 778abd8b098..83326f965af 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard/utils.ts @@ -18,7 +18,11 @@ */ import { dashboardView, nativeFilters } from 'cypress/support/directories'; -import { ChartSpec, waitForChartLoad } from 'cypress/utils'; +import { + ChartSpec, + setSelectSearchInput, + waitForChartLoad, +} from 'cypress/utils'; export const WORLD_HEALTH_CHARTS = [ { name: '% Rural', viz: 'world_map' }, @@ -266,10 +270,11 @@ export function fillNativeFilterForm( dataset?: string, filterColumn?: string, ) { - cy.get(nativeFilters.filtersPanel.filterTypeInput) - .find(nativeFilters.filtersPanel.filterTypeItem) - .click({ multiple: true, force: true }); - cy.get(`[label="${type}"]`).click({ multiple: true, force: true }); + cy.get(nativeFilters.filtersPanel.filterTypeInput).within(() => { + cy.get('input').then($input => { + setSelectSearchInput($input, type); + }); + }); cy.get(nativeFilters.modal.container) .find(nativeFilters.filtersPanel.filterName) .last() @@ -282,31 +287,23 @@ export function fillNativeFilterForm( .find(nativeFilters.filtersPanel.filterName) .last() .type(name, { scrollBehavior: false, force: true }); + if (dataset) { - cy.get(nativeFilters.modal.container) - .find(nativeFilters.filtersPanel.datasetName) - .last() - .click({ force: true, scrollBehavior: false }); - cy.get(nativeFilters.modal.container) - .find(nativeFilters.filtersPanel.datasetName) - .type(`${dataset}`, { scrollBehavior: false }); + cy.get('div[aria-label="Dataset"]').within(() => { + cy.get('input').then($input => { + setSelectSearchInput($input, dataset, true); + }); + }); cy.get(nativeFilters.silentLoading).should('not.exist'); - cy.get(`[label="${dataset}"]`).click({ multiple: true, force: true }); } - cy.get(nativeFilters.silentLoading).should('not.exist'); + if (filterColumn) { - cy.get(nativeFilters.filtersPanel.filterInfoInput) - .last() - .click({ force: true }); - cy.get(nativeFilters.filtersPanel.filterInfoInput) - .last() - .type(filterColumn); - cy.get(nativeFilters.filtersPanel.inputDropdown) - .should('be.visible', { timeout: 20000 }) - .last() - .click(); + cy.get('div[aria-label="Column select"]').within(() => { + cy.get('input').then($input => { + setSelectSearchInput($input, filterColumn, true); + }); + }); } - cy.get(nativeFilters.silentLoading).should('not.exist'); } /** ************************************************************************ @@ -446,6 +443,9 @@ export function checkNativeFilterTooltip(index: number, value: string) { .eq(index) .trigger('mouseover'); cy.contains(`${value}`); + cy.get(nativeFilters.filterConfigurationSections.infoTooltip) + .eq(index) + .trigger('mouseout'); } /** ************************************************************************ @@ -459,20 +459,20 @@ export function applyAdvancedTimeRangeFilterOnDashboard( startRange?: string, endRange?: string, ) { - cy.get('.control-label').contains('RANGE TYPE').should('be.visible'); - cy.get('.antd5-popover-content .ant-select-selector') + cy.get('.control-label').contains('Range type').should('be.visible'); + cy.get('.ant-popover-content .ant-select-selector') .should('be.visible') .click(); cy.get(`[label="Advanced"]`).should('be.visible').click(); cy.get('.section-title').contains('Advanced Time Range').should('be.visible'); if (startRange) { - cy.get('.antd5-popover-inner-content') + cy.get('.ant-popover-inner-content') .find('[class^=ant-input]') .first() .type(`${startRange}`); } if (endRange) { - cy.get('.antd5-popover-inner-content') + cy.get('.ant-popover-inner-content') .find('[class^=ant-input]') .last() .type(`${endRange}`); diff --git a/superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts b/superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts index 322306a4c64..859cd5de355 100644 --- a/superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/dashboard_list/list.test.ts @@ -79,16 +79,20 @@ describe('Dashboards list', () => { it('should sort correctly in list mode', () => { cy.getBySel('sort-header').eq(1).click(); + cy.getBySel('loading-indicator').should('not.exist'); cy.getBySel('table-row').first().contains('Supported Charts Dashboard'); cy.getBySel('sort-header').eq(1).click(); + cy.getBySel('loading-indicator').should('not.exist'); cy.getBySel('table-row').first().contains("World Bank's Data"); cy.getBySel('sort-header').eq(1).click(); }); it('should bulk select in list mode', () => { toggleBulkSelect(); - cy.get('#header-toggle-all').click(); - cy.get('[aria-label="checkbox-on"]').should('have.length', 6); + cy.get('[aria-label="Select all"]').click(); + cy.get('.ant-checkbox-input') + .should('be.checked') + .should('have.length', 6); cy.getBySel('bulk-select-copy').contains('5 Selected'); cy.getBySel('bulk-select-action') .should('have.length', 2) @@ -97,7 +101,7 @@ describe('Dashboards list', () => { expect($btns).to.contain('Export'); }); cy.getBySel('bulk-select-deselect-all').click(); - cy.get('[aria-label="checkbox-on"]').should('have.length', 0); + cy.get('input[type="checkbox"]:checked').should('have.length', 0); cy.getBySel('bulk-select-copy').contains('0 Selected'); cy.getBySel('bulk-select-action').should('not.exist'); }); @@ -195,6 +199,8 @@ describe('Dashboards list', () => { cy.get('[data-test="table-row"] input[type="checkbox"]').eq(1).click(); cy.getBySel('bulk-select-action').eq(0).contains('Delete').click(); confirmDelete(true); + cy.getBySel('loading-indicator').should('exist'); + cy.getBySel('loading-indicator').should('not.exist'); cy.getBySel('table-row') .eq(0) .should('not.contain', '3 - Sample dashboard'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/chart.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/chart.test.js index abe5a0c51d7..b4cc177deff 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/chart.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/chart.test.js @@ -30,36 +30,36 @@ import { const SAMPLE_DASHBOARDS_INDEXES = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; function openDashboardsAddedTo() { - cy.getBySel('actions-trigger').click(); - cy.get('.antd5-dropdown-menu-submenu-title') + cy.getBySel('actions-trigger').should('be.visible').click(); + cy.get('.ant-dropdown-menu-submenu-title') .contains('On dashboards') .trigger('mouseover', { force: true }); } function closeDashboardsAddedTo() { - cy.get('.antd5-dropdown-menu-submenu-title') + cy.get('.ant-dropdown-menu-submenu-title') .contains('On dashboards') .trigger('mouseout', { force: true }); cy.getBySel('actions-trigger').click(); } function verifyDashboardsSubmenuItem(dashboardName) { - cy.get('.antd5-dropdown-menu-submenu-popup').contains(dashboardName); + cy.get('.ant-dropdown-menu-submenu-popup').contains(dashboardName); closeDashboardsAddedTo(); } function verifyDashboardSearch() { openDashboardsAddedTo(); - cy.get('.antd5-dropdown-menu-submenu-popup').trigger('mouseover'); - cy.get('.antd5-dropdown-menu-submenu-popup') + cy.get('.ant-dropdown-menu-submenu-popup').trigger('mouseover'); + cy.get('.ant-dropdown-menu-submenu-popup') .find('input[placeholder="Search"]') .type('1'); - cy.get('.antd5-dropdown-menu-submenu-popup').contains('1 - Sample dashboard'); - cy.get('.antd5-dropdown-menu-submenu-popup') + cy.get('.ant-dropdown-menu-submenu-popup').contains('1 - Sample dashboard'); + cy.get('.ant-dropdown-menu-submenu-popup') .find('input[placeholder="Search"]') .type('Blahblah'); - cy.get('.antd5-dropdown-menu-submenu-popup').contains('No results found'); - cy.get('.antd5-dropdown-menu-submenu-popup') + cy.get('.ant-dropdown-menu-submenu-popup').contains('No results found'); + cy.get('.ant-dropdown-menu-submenu-popup') .find('[aria-label="close-circle"]') .click(); closeDashboardsAddedTo(); @@ -68,8 +68,8 @@ function verifyDashboardSearch() { function verifyDashboardLink() { interceptDashboardGet(); openDashboardsAddedTo(); - cy.get('.antd5-dropdown-menu-submenu-popup').trigger('mouseover'); - cy.get('.antd5-dropdown-menu-submenu-popup a') + cy.get('.ant-dropdown-menu-submenu-popup').trigger('mouseover'); + cy.get('.ant-dropdown-menu-submenu-popup a') .first() .invoke('removeAttr', 'target') .click(); @@ -80,8 +80,8 @@ function verifyMetabar(text) { cy.getBySel('metadata-bar').contains(text); } -function saveAndVerifyDashboard(number) { - saveChartToDashboard(`${number} - Sample dashboard`); +function saveAndVerifyDashboard(chartName, number) { + saveChartToDashboard(chartName, `${number} - Sample dashboard`); verifyMetabar( number > 1 ? `Added to ${number} dashboards` : 'Added to 1 dashboard', ); @@ -106,17 +106,17 @@ describe('Cross-referenced dashboards', () => { openDashboardsAddedTo(); verifyDashboardsSubmenuItem('None'); - saveAndVerifyDashboard('1'); - saveAndVerifyDashboard('2'); - saveAndVerifyDashboard('3'); - saveAndVerifyDashboard('4'); - saveAndVerifyDashboard('5'); - saveAndVerifyDashboard('6'); - saveAndVerifyDashboard('7'); - saveAndVerifyDashboard('8'); - saveAndVerifyDashboard('9'); - saveAndVerifyDashboard('10'); - saveAndVerifyDashboard('11'); + saveAndVerifyDashboard('1 - Sample chart', '1'); + saveAndVerifyDashboard('1 - Sample chart', '2'); + saveAndVerifyDashboard('1 - Sample chart', '3'); + saveAndVerifyDashboard('1 - Sample chart', '4'); + saveAndVerifyDashboard('1 - Sample chart', '5'); + saveAndVerifyDashboard('1 - Sample chart', '6'); + saveAndVerifyDashboard('1 - Sample chart', '7'); + saveAndVerifyDashboard('1 - Sample chart', '8'); + saveAndVerifyDashboard('1 - Sample chart', '9'); + saveAndVerifyDashboard('1 - Sample chart', '10'); + saveAndVerifyDashboard('1 - Sample chart', '11'); verifyDashboardSearch(); verifyDashboardLink(); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/control.test.ts b/superset-frontend/cypress-base/cypress/e2e/explore/control.test.ts index bd56b6f76e7..c6a308393e8 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/control.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/explore/control.test.ts @@ -19,7 +19,7 @@ // *********************************************** // Tests for setting controls in the UI // *********************************************** -import { interceptChart } from 'cypress/utils'; +import { interceptChart, setSelectSearchInput } from 'cypress/utils'; describe('Datasource control', () => { const newMetricName = `abc${Date.now()}`; @@ -40,44 +40,44 @@ describe('Datasource control', () => { // create new metric cy.get('[data-test="crud-add-table-item"]', { timeout: 10000 }).click(); cy.wait(1000); - cy.get( - '[data-test="table-content-rows"] [data-test="editable-title-input"]', - ) + cy.get('.ant-table-body [data-test="textarea-editable-title-input"]') .first() .click(); - cy.get( - '[data-test="table-content-rows"] [data-test="editable-title-input"]', - ) + cy.get('.ant-table-body [data-test="textarea-editable-title-input"]') .first() .focus(); cy.focused().clear({ force: true }); cy.focused().type(`${newMetricName}{enter}`, { force: true }); cy.get('[data-test="datasource-modal-save"]').click(); - cy.get('.antd5-modal-confirm-btns button').contains('OK').click(); + cy.get('.ant-modal-confirm-btns button').contains('OK').click(); // select new metric cy.get('[data-test=metrics]') .contains('Drop columns/metrics here or click') .click(); - cy.get('input[aria-label="Select saved metrics"]').type( - `${newMetricName}{enter}`, - ); + cy.get('input[aria-label="Select saved metrics"]') + .should('exist') + .then($input => { + setSelectSearchInput($input, newMetricName); + }); + // delete metric cy.get('[data-test="datasource-menu-trigger"]').click(); cy.get('[data-test="edit-dataset"]').click(); - cy.get('.antd5-modal-content').within(() => { + cy.get('.ant-modal-content').within(() => { cy.get('[data-test="collection-tab-Metrics"]') .contains('Metrics') .click(); }); - cy.get(`input[value="${newMetricName}"]`) + cy.get(`[data-test="textarea-editable-title-input"]`) + .contains(newMetricName) .closest('tr') .find('[data-test="crud-delete-icon"]') .click(); cy.get('[data-test="datasource-modal-save"]').click(); - cy.get('.antd5-modal-confirm-btns button').contains('OK').click(); + cy.get('.ant-modal-confirm-btns button').contains('OK').click(); cy.get('[data-test="metrics"]').contains(newMetricName).should('not.exist'); }); }); @@ -91,7 +91,7 @@ describe('Color scheme control', () => { }); it('should show color options with and without tooltips', () => { - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.ant-select-selection-item .color-scheme-label').contains( 'Superset Colors', ); @@ -102,10 +102,19 @@ describe('Color scheme control', () => { cy.get('.color-scheme-tooltip').contains('Superset Colors'); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); + + cy.get('.color-scheme-label') + .contains('Superset Colors') + .trigger('mouseover'); + + cy.get('.color-scheme-label') + .contains('Superset Colors') + .trigger('mouseout'); + cy.focused().type('lyftColors'); cy.getBySel('lyftColors').should('exist'); - cy.getBySel('lyftColors').trigger('mouseover'); - cy.get('.color-scheme-tooltip').should('not.exist'); + cy.getBySel('lyftColors').trigger('mouseover', { force: true }); + cy.get('.color-scheme-tooltip').should('not.be.visible'); }); }); describe('VizType control', () => { @@ -120,7 +129,7 @@ describe('VizType control', () => { cy.contains('View all charts').click(); - cy.get('.antd5-modal-content').within(() => { + cy.get('.ant-modal-content').within(() => { cy.get('button').contains('KPI').click(); // change categories cy.get('[role="button"]').contains('Big Number').click(); cy.get('button').contains('Select').click(); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/link.test.ts b/superset-frontend/cypress-base/cypress/e2e/explore/link.test.ts index a984969a9bc..9a5f1ee5789 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/link.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/explore/link.test.ts @@ -42,8 +42,8 @@ describe('Test explore links', () => { cy.wait('@chartData').then(() => { cy.get('code'); }); - cy.get('.antd5-modal-content').within(() => { - cy.get('button.antd5-modal-close').first().click({ force: true }); + cy.get('.ant-modal-content').within(() => { + cy.get('button.ant-modal-close').first().click({ force: true }); }); }); @@ -124,7 +124,7 @@ describe('Test explore links', () => { .find('input[aria-label="Select a dashboard"]') .type(`${dashboardTitle}`, { force: true }); - cy.get(`.ant-select-item[label="${dashboardTitle}"]`).click({ + cy.get(`.ant-select-item[title="${dashboardTitle}"]`).click({ force: true, }); @@ -157,7 +157,7 @@ describe('Test explore links', () => { .find('input[aria-label^="Select a dashboard"]') .type(`${dashboardTitle}{enter}`, { force: true }); - cy.get(`.ant-select-item[label="${dashboardTitle}"]`).click({ + cy.get(`.ant-select-item[title="${dashboardTitle}"]`).click({ force: true, }); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/utils.ts b/superset-frontend/cypress-base/cypress/e2e/explore/utils.ts index 8eeb097794c..93dbe99baa2 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/utils.ts +++ b/superset-frontend/cypress-base/cypress/e2e/explore/utils.ts @@ -69,7 +69,7 @@ export function setFilter(filter: string, option: string) { cy.wait('@filtering'); } -export function saveChartToDashboard(dashboardName: string) { +export function saveChartToDashboard(chartName: string, dashboardName: string) { interceptDashboardGet(); interceptUpdate(); interceptExploreGet(); @@ -77,24 +77,30 @@ export function saveChartToDashboard(dashboardName: string) { cy.getBySel('query-save-button') .should('be.enabled') .should('not.be.disabled') - .click(); - cy.getBySelLike('chart-modal') - .should('be.visible') - .within(() => { - cy.get('[data-test="save-chart-modal-select-dashboard-form"]') - .first() - .click(); - cy.get('.ant-select-selection-search-input').type(dashboardName, { - force: true, - }); - cy.get(`.ant-select-item-option[title="${dashboardName}"]`).click(); - cy.getBySel('btn-modal-save').click(); - }); + .click({ force: true }); - cy.wait('@update'); + cy.getBySel('save-modal-body') + .should('be.visible') + .then($modal => { + cy.wait(500); + cy.wrap($modal) + .find( + '.ant-select-selection-search-input[aria-label*="Select a dashboard"]', + ) + .type(dashboardName, { force: true }); + cy.wrap($modal) + .find(`.ant-select-item-option[title="${dashboardName}"]`) + .click(); + cy.getBySel('btn-modal-save').click(); + cy.wait('@update'); + }); + cy.getBySel('save-modal-body').should('not.exist'); + cy.getBySel('query-save-button').should('be.disabled'); cy.wait('@get'); cy.wait('@getExplore'); cy.contains(`was added to dashboard [${dashboardName}]`); + cy.contains(`Chart [${chartName}] has been overwritten`); + cy.getBySel('query-save-button').should('be.enabled'); } export function visitSampleChartFromList(chartName: string) { diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/box_plot.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/box_plot.test.js index be52c08d8bc..71232ca6dd4 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/box_plot.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/box_plot.test.js @@ -49,7 +49,7 @@ describe('Visualization > Box Plot', () => { it('should allow type to search color schemes', () => { verify(BOX_PLOT_FORM_DATA); - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); cy.focused().type('supersetColors{enter}'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/compare.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/compare.test.js index 347b54502d2..c177adaefdd 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/compare.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/compare.test.js @@ -89,7 +89,7 @@ describe('Visualization > Compare', () => { it('should allow type to search color schemes and apply the scheme', () => { verify(COMPARE_FORM_DATA); - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); cy.focused().type('supersetColors{enter}'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/download_chart.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/download_chart.test.js index 804f35ca7b0..fdede555bde 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/download_chart.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/download_chart.test.js @@ -36,10 +36,10 @@ describe('Download Chart > Bar chart', () => { }; cy.visitChartByParams(formData); - cy.get('.header-with-actions .antd5-dropdown-trigger').click(); - cy.get(':nth-child(3) > .antd5-dropdown-menu-submenu-title').click(); + cy.get('.header-with-actions .ant-dropdown-trigger').click(); + cy.get(':nth-child(3) > .ant-dropdown-menu-submenu-title').click(); cy.get( - '.antd5-dropdown-menu-submenu > .antd5-dropdown-menu li:nth-child(3)', + '.ant-dropdown-menu-submenu > .ant-dropdown-menu li:nth-child(3)', ).click(); cy.verifyDownload('.jpg', { contains: true, diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/gauge.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/gauge.test.js index e9e6ba39558..6b4df5a590a 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/gauge.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/gauge.test.js @@ -64,7 +64,7 @@ describe('Visualization > Gauge', () => { it('should allow type to search color schemes', () => { verify(GAUGE_FORM_DATA); - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); cy.focused().type('bnbColors{enter}'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/graph.test.ts b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/graph.test.ts index eb038f1d3f5..1ae7f5648af 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/graph.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/graph.test.ts @@ -80,7 +80,7 @@ describe('Visualization > Graph', () => { it('should allow type to search color schemes', () => { verify(GRAPH_FORM_DATA); - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); cy.focused().type('bnbColors{enter}'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/pie.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/pie.test.js index 5b8af481f66..0d06ada4aac 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/pie.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/pie.test.js @@ -71,7 +71,7 @@ describe('Visualization > Pie', () => { it('should allow type to search color schemes', () => { verify(PIE_FORM_DATA); - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); cy.focused().type('supersetColors{enter}'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js index ddadae15c21..ad06cd3c84f 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/sunburst.test.js @@ -86,7 +86,7 @@ describe('Visualization > Sunburst', () => { it('should allow type to search color schemes', () => { verify(SUNBURST_FORM_DATA); - cy.get('#controlSections-tab-display').click(); + cy.get('#controlSections-tab-CUSTOMIZE').click(); cy.get('.Control[data-test="color_scheme"]').scrollIntoView(); cy.get('.Control[data-test="color_scheme"] input[type="search"]').focus(); cy.focused().type('supersetColors{enter}'); diff --git a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/table.test.ts b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/table.test.ts index 319938b95e7..fc7e2243fad 100644 --- a/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/table.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/explore/visualizations/table.test.ts @@ -193,7 +193,9 @@ describe('Visualization > Table', () => { }); // should display in raw records mode - cy.get('div[data-test="query_mode"] .btn.active').contains('Raw records'); + cy.get( + 'div[data-test="query_mode"] .ant-radio-button-wrapper-checked', + ).contains('Raw records'); cy.get('div[data-test="all_columns"]').should('be.visible'); cy.get('div[data-test="groupby"]').should('not.exist'); @@ -201,8 +203,12 @@ describe('Visualization > Table', () => { cy.get('[data-test="row-count-label"]').contains('100 rows'); // should allow switch back to aggregate mode - cy.get('div[data-test="query_mode"] .btn').contains('Aggregate').click(); - cy.get('div[data-test="query_mode"] .btn.active').contains('Aggregate'); + cy.get('div[data-test="query_mode"] .ant-radio-button-wrapper') + .contains('Aggregate') + .click(); + cy.get( + 'div[data-test="query_mode"] .ant-radio-button-wrapper-checked', + ).contains('Aggregate'); cy.get('div[data-test="all_columns"]').should('not.exist'); cy.get('div[data-test="groupby"]').should('be.visible'); }); @@ -254,6 +260,8 @@ describe('Visualization > Table', () => { }); it('Test row limit with server pagination toggle', () => { + const serverPaginationSelector = + '[data-test="server_pagination-header"] div.pull-left [type="checkbox"]'; cy.visitChartByParams({ ...VIZ_DEFAULTS, metrics: ['count'], @@ -261,7 +269,7 @@ describe('Visualization > Table', () => { }); // Enable server pagination - cy.get('[data-test="server_pagination-header"] div.pull-left').click(); + cy.get(serverPaginationSelector).click(); // Click row limit control and select high value (200k) cy.get('div[aria-label="Row limit"]').click(); @@ -275,7 +283,7 @@ describe('Visualization > Table', () => { cy.get('[data-test="error-tooltip"]').should('not.exist'); // Disable server pagination - cy.get('[data-test="server_pagination-header"] div.pull-left').click(); + cy.get(serverPaginationSelector).click(); // Verify error tooltip appears cy.get('[data-test="error-tooltip"]').should('be.visible'); @@ -284,17 +292,17 @@ describe('Visualization > Table', () => { cy.get('[data-test="error-tooltip"]').trigger('mouseover'); // Verify tooltip content - cy.get('.antd5-tooltip-inner').should('be.visible'); - cy.get('.antd5-tooltip-inner').should( + cy.get('.ant-tooltip-inner').should('be.visible'); + cy.get('.ant-tooltip-inner').should( 'contain', 'Server pagination needs to be enabled for values over', ); // Hide the tooltip by adding display:none style - cy.get('.antd5-tooltip').invoke('attr', 'style', 'display: none'); + cy.get('.ant-tooltip').invoke('attr', 'style', 'display: none'); // Enable server pagination again - cy.get('[data-test="server_pagination-header"] div.pull-left').click(); + cy.get(serverPaginationSelector).click(); cy.get('[data-test="error-tooltip"]').should('not.exist'); @@ -319,11 +327,11 @@ describe('Visualization > Table', () => { .trigger('mouseover'); // Wait for tooltip content and verify - cy.get('.antd5-tooltip-inner').should('exist'); - cy.get('.antd5-tooltip-inner').should('be.visible'); + cy.get('.ant-tooltip-inner').should('exist'); + cy.get('.ant-tooltip-inner').should('be.visible'); // Verify tooltip content separately - cy.get('.antd5-tooltip-inner').should('contain', 'Value cannot exceed'); + cy.get('.ant-tooltip-inner').should('contain', 'Value cannot exceed'); }); it('Test sorting with server pagination enabled', () => { @@ -393,12 +401,12 @@ describe('Visualization > Table', () => { cy.wait('@chartData'); - // Basic search test - cy.get('span.dt-global-filter input.form-control.input-sm').should( - 'be.visible', - ); + const searchInputSelector = '.dt-global-filter input'; - cy.get('span.dt-global-filter input.form-control.input-sm').type('John'); + // Basic search test + cy.get(searchInputSelector).should('be.visible'); + + cy.get(searchInputSelector).type('John'); cy.wait('@chartData'); @@ -407,11 +415,11 @@ describe('Visualization > Table', () => { }); // Clear and test case-insensitive search - cy.get('span.dt-global-filter input.form-control.input-sm').clear(); + cy.get(searchInputSelector).clear(); cy.wait('@chartData'); - cy.get('span.dt-global-filter input.form-control.input-sm').type('mary'); + cy.get(searchInputSelector).type('mary'); cy.wait('@chartData'); @@ -420,9 +428,9 @@ describe('Visualization > Table', () => { }); // Test special characters - cy.get('span.dt-global-filter input.form-control.input-sm').clear(); + cy.get(searchInputSelector).clear(); - cy.get('span.dt-global-filter input.form-control.input-sm').type('Nicole'); + cy.get(searchInputSelector).type('Nicole'); cy.wait('@chartData'); @@ -431,9 +439,9 @@ describe('Visualization > Table', () => { }); // Test no results - cy.get('span.dt-global-filter input.form-control.input-sm').clear(); + cy.get(searchInputSelector).clear(); - cy.get('span.dt-global-filter input.form-control.input-sm').type('XYZ123'); + cy.get(searchInputSelector).type('XYZ123'); cy.wait('@chartData'); @@ -450,9 +458,9 @@ describe('Visualization > Table', () => { cy.get('.ant-select-item-option').contains('state').click(); - cy.get('span.dt-global-filter input.form-control.input-sm').clear(); + cy.get(searchInputSelector).clear(); - cy.get('span.dt-global-filter input.form-control.input-sm').type('CA'); + cy.get(searchInputSelector).type('CA'); cy.wait('@chartData'); cy.wait(1000); diff --git a/superset-frontend/cypress-base/cypress/e2e/sqllab/tabs.test.ts b/superset-frontend/cypress-base/cypress/e2e/sqllab/tabs.test.ts index ef97eb1c19f..56724e6e9ed 100644 --- a/superset-frontend/cypress-base/cypress/e2e/sqllab/tabs.test.ts +++ b/superset-frontend/cypress-base/cypress/e2e/sqllab/tabs.test.ts @@ -22,7 +22,7 @@ describe('SqlLab query tabs', () => { }); const tablistSelector = '[data-test="sql-editor-tabs"] > [role="tablist"]'; - const tabSelector = `${tablistSelector} [role="tab"]`; + const tabSelector = `${tablistSelector} [role="tab"]:not([type="button"])`; it('allows you to create and close a tab', () => { cy.get(tabSelector).then(tabs => { @@ -80,9 +80,9 @@ describe('SqlLab query tabs', () => { // configure some editor settings cy.get(editorInput).type('some random query string', { force: true }); cy.get(queryLimitSelector).parent().click({ force: true }); - cy.get('.antd5-dropdown-menu') + cy.get('.ant-dropdown-menu') .last() - .find('.antd5-dropdown-menu-item') + .find('.ant-dropdown-menu-item') .first() .click({ force: true }); diff --git a/superset-frontend/cypress-base/cypress/support/directories.ts b/superset-frontend/cypress-base/cypress/support/directories.ts index 3c8e8eb3671..cf62240caf8 100644 --- a/superset-frontend/cypress-base/cypress/support/directories.ts +++ b/superset-frontend/cypress-base/cypress/support/directories.ts @@ -25,16 +25,16 @@ export function dataTestChartName(chartName: string): string { export const pageHeader = { logo: '.navbar-brand > img', - headerNavigationItem: '.antd5-menu-submenu-title', + headerNavigationItem: '.ant-menu-submenu-title', headerNavigationDropdown: "[aria-label='triangle-down']", - headerNavigationItemMenu: '.antd5-menu-item-group-list', - plusIcon: ':nth-child(2) > .antd5-menu-submenu-title', + headerNavigationItemMenu: '.ant-menu-item-group-list', + plusIcon: ':nth-child(2) > .ant-menu-submenu-title', plusIconMenuOptions: { sqlQueryOption: dataTestLocator('menu-item-SQL query'), chartOption: dataTestLocator('menu-item-Chart'), dashboardOption: dataTestLocator('menu-item-Dashboard'), }, - plusMenu: '.antd5-menu-submenu-popup', + plusMenu: '.ant-menu-submenu-popup', barButtons: '[role="presentation"]', sqlLabMenu: '[id="item_3$Menu"]', dataMenu: '[id="item_4$Menu"]', @@ -48,12 +48,12 @@ export const profile = { favoritesSpace: '#rc-tabs-0-panel-2', }; export const securityAccess = { - rolesBubble: '.antd5-badge-count', + rolesBubble: '.ant-badge-count', }; export const homePage = { homeSection: { sectionArea: '.ant-collapse-content-box', - sectionElement: '.antd5-card-meta-title', + sectionElement: '.ant-card-meta-title', }, sections: { expandedSection: '.ant-collapse-item-active', @@ -94,19 +94,19 @@ export const databasesPage = { dbDropdown: '[class="ant-select-selection-search-input"]', dbDropdownMenu: '.rc-virtual-list-holder-inner', dbDropdownMenuItem: '[class="ant-select-item-option-content"]', - infoAlert: '.antd5-alert', + infoAlert: '.ant-alert', serviceAccountInput: '[name="credentials_info"]', connectionStep: { - modal: '.antd5-modal-content', - modalBody: '.antd5-modal-body', + modal: '.ant-modal-content', + modalBody: '.ant-modal-body', stepTitle: '.css-7x6kk > h4', helperBottom: '.helper-bottom', postgresDatabase: '[name="database"]', dbInput: '[name="database_name"]', - alertMessage: '.antd5-alert-message', + alertMessage: '.ant-alert-message', errorField: '[role="alert"]', uploadJson: '[title="Upload JSON file"]', - chooseFile: '[class="antd5-btn input-upload-btn"]', + chooseFile: '[class="ant-btn input-upload-btn"]', additionalParameters: '[name="query_input"]', sqlAlchemyUriInput: dataTestLocator('sqlalchemy-uri-input'), advancedTab: '#rc-tabs-0-tab-2', @@ -140,7 +140,7 @@ export const sqlLabView = { tabsNavList: "[class='ant-tabs-nav-list']", tab: "[class='ant-tabs-tab-btn']", addTabButton: dataTestLocator('add-tab-icon'), - tooltip: '.antd5-tooltip-content', + tooltip: '.ant-tooltip-content', tabName: '.css-1suejie', schemaInput: '[data-test=DatabaseSelector] > :nth-child(2)', loadingIndicator: '.Select__loading-indicator', @@ -148,9 +148,9 @@ export const sqlLabView = { examplesMenuItem: '[title="examples"]', tableInput: ':nth-child(4) > .select > :nth-child(1)', sqlEditor: '#brace-editor textarea', - saveAsButton: '.SaveQuery > .antd5-btn', + saveAsButton: '.SaveQuery > .ant-btn', saveAsModal: { - footer: '.antd5-modal-footer', + footer: '.ant-modal-footer', queryNameInput: 'input[class^="ant-input"]', }, sqlToolbar: { @@ -158,15 +158,15 @@ export const sqlLabView = { runButton: '.css-d3dxop', }, rowsLimit: { - dropdown: '.antd5-dropdown-menu', - limitButton: '.antd5-dropdown-menu-item', + dropdown: '.ant-dropdown-menu', + limitButton: '.ant-dropdown-menu-item', limitButtonText: '.css-151uxnz', - limitTextWithValue: '[class="antd5-dropdown-trigger"]', + limitTextWithValue: '[class="ant-dropdown-trigger"]', }, renderedTableHeader: '.ReactVirtualized__Table__headerRow', renderedTableRow: '.ReactVirtualized__Table__row', errorBody: '.error-body', - alertMessage: '.antd5-alert-message', + alertMessage: '.ant-alert-message', historyTable: { header: '[role=columnheader]', table: '.QueryTable', @@ -195,16 +195,16 @@ export const savedQuery = { export const annotationLayersView = { emptyDescription: { description: '.ant-empty-description', - addAnnotationLayerButton: '.ant-empty-footer > .antd5-btn', + addAnnotationLayerButton: '.ant-empty-footer > .ant-btn', }, modal: { content: { - content: '.antd5-modal-body', - title: '.antd5-modal-body > :nth-child(2) > input', + content: '.ant-modal-body', + title: '.ant-modal-body > :nth-child(2) > input', description: "[name='descr']", }, footer: { - footer: '.antd5-modal-footer', + footer: '.ant-modal-footer', addButton: dataTestLocator('modal-confirm-button'), cancelButton: dataTestLocator('modal-cancel-button'), }, @@ -216,7 +216,7 @@ export const datasetsList = { newDatasetModal: { inputField: '[class="section"]', addButton: dataTestLocator('modal-confirm-button'), - body: '.antd5-modal-body', + body: '.ant-modal-body', }, table: { tableRow: { @@ -261,7 +261,7 @@ export const datasetsList = { }, }, deleteDatasetModal: { - modal: '.antd5-modal-content', + modal: '.ant-modal-content', deleteInput: dataTestLocator('delete-modal-input'), deleteButton: dataTestLocator('modal-confirm-button'), text: '.css-kxmt87', @@ -275,8 +275,8 @@ export const chartListView = { bulkSelect: dataTestLocator('bulk-select'), }, header: { - cardView: '[aria-label="appstore"]', - listView: '[aria-label="unordered-list"]', + cardView: '[aria-label="card-view"]', + listView: '[aria-label="list-view"]', sort: '[class="ant-select-selection-search-input"][aria-label="Sort"]', sortRecentlyModifiedMenuOption: '[label="Recently modified"]', sortAlphabeticalMenuOption: '[label="Alphabetical"]', @@ -284,7 +284,7 @@ export const chartListView = { }, card: { card: dataTestLocator('styled-card'), - cardCover: '[class="antd5-card-cover"]', + cardCover: '[class="ant-card-cover"]', cardImage: '[class="gradient-container"]', starIcon: dataTestLocator('fave-unfave-icon'), }, @@ -294,8 +294,8 @@ export const chartListView = { }, table: { bulkSelect: { - checkboxOff: '[aria-label="checkbox-off"]', - checkboxOn: '[aria-label="checkbox-on"]', + checkboxOff: 'input[type="checkbox"]:checked', + checkboxOn: 'input[type="checkbox"]:not(:checked)', action: dataTestLocator('bulk-select-action'), }, tableList: dataTestLocator('listview-table'), @@ -316,14 +316,14 @@ export const chartListView = { }; export const nativeFilters = { modal: { - container: '.antd5-modal', - footer: '.antd5-modal-footer', + container: '.ant-modal', + footer: '.ant-modal-footer', saveButton: dataTestLocator('native-filter-modal-save-button'), cancelButton: dataTestLocator('native-filter-modal-cancel-button'), confirmCancelButton: dataTestLocator( 'native-filter-modal-confirm-cancel-button', ), - alertXUnsavedFilters: '.antd5-alert-message', + alertXUnsavedFilters: '.ant-alert-message', tabsList: { filterItemsContainer: dataTestLocator('filter-title-container'), tabsContainer: '[class="ant-tabs-nav-list"]', @@ -398,7 +398,7 @@ export const dashboardListView = { }, card: { card: dataTestLocator('styled-card'), - cardCover: '[class="antd5-card-cover"]', + cardCover: '[class="ant-card-cover"]', cardImage: '[class="gradient-container"]', selectedStarIcon: "[aria-label='star']", unselectedStarIcon: "[aria-label='star']", @@ -432,7 +432,7 @@ export const dashboardListView = { newDashboardButton: '.css-yff34v', }, importModal: { - selectFileButton: '.ant-upload > .antd5-btn > span', + selectFileButton: '.ant-upload > .ant-btn > span', importButton: dataTestLocator('modal-confirm-button'), }, header: { @@ -474,15 +474,15 @@ export const exploreView = { }, chartAreaItem: '.nv-legend-text', viewQueryModal: { - container: '.antd5-modal-content', - closeButton: 'button.antd5-modal-close', + container: '.ant-modal-content', + closeButton: 'button.ant-modal-close', }, embedCodeModal: { container: dataTestLocator('embed-code-popover'), textfield: dataTestLocator('embed-code-textarea'), }, saveModal: { - modal: '.antd5-modal-content', + modal: '.ant-modal-content', chartNameInput: dataTestLocator('new-chart-name'), dashboardNameInput: '.ant-select-selection-search-input', addToDashboardInput: dataTestLocator( @@ -553,7 +553,7 @@ export const exploreView = { timeSection: { timeRangeFilter: dataTestLocator('time-range-trigger'), timeRangeFilterModal: { - container: '.antd5-popover-content', + container: '.ant-popover-content', footer: '.footer', cancelButton: dataTestLocator('cancel-button'), configureLastTimeRange: { @@ -578,15 +578,15 @@ export const exploreView = { }, }, editDatasetModal: { - container: '.antd5-modal-content', + container: '.ant-modal-content', datasetTabsContainer: dataTestLocator('edit-dataset-tabs'), saveButton: dataTestLocator('datasource-modal-save'), metricsTab: { addItem: dataTestLocator('crud-add-table-item'), - rowsContainer: dataTestLocator('table-content-rows'), + rowsContainer: '.ant-table-body', }, confirmModal: { - okButton: '.antd5-modal-confirm-btns .antd5-btn-primary', + okButton: '.ant-modal-confirm-btns .ant-btn-primary', }, }, visualizationTypeModal: { @@ -617,12 +617,12 @@ export const dashboardView = { closeButton: dataTestLocator('close-button'), }, saveModal: { - modal: '.antd5-modal-content', + modal: '.ant-modal-content', dashboardNameInput: '.ant-input', saveButton: dataTestLocator('modal-save-dashboard-button'), }, dashboardProperties: { - modal: '.antd5-modal-content', + modal: '.ant-modal-content', dashboardTitleInput: dataTestLocator('dashboard-title-input'), modalButton: '[type="button"]', }, @@ -631,7 +631,7 @@ export const dashboardView = { refreshChart: dataTestLocator('refresh-chart-menu-item'), }, threeDotsMenuIcon: - '.header-with-actions .right-button-panel .antd5-dropdown-trigger', + '.header-with-actions .right-button-panel .ant-dropdown-trigger', threeDotsMenuDropdown: dataTestLocator('header-actions-menu'), refreshDashboard: dataTestLocator('refresh-dashboard-menu-item'), saveAsMenuOption: dataTestLocator('save-as-menu-item'), diff --git a/superset-frontend/cypress-base/cypress/support/e2e.ts b/superset-frontend/cypress-base/cypress/support/e2e.ts index 18572b6ab2e..d155970dc70 100644 --- a/superset-frontend/cypress-base/cypress/support/e2e.ts +++ b/superset-frontend/cypress-base/cypress/support/e2e.ts @@ -69,7 +69,21 @@ Cypress.Commands.add('loadDashboardFixtures', () => }), ); +const PATHS_TO_SKIP_LOGIN = ['login', 'register']; + +const skipLogin = () => { + for (const path of PATHS_TO_SKIP_LOGIN) { + if (Cypress.currentTest.title.toLowerCase().includes(path)) { + return true; + } + } + return false; +}; + before(() => { + if (skipLogin()) { + return; + } cy.login(); Cypress.Cookies.defaults({ preserve: 'session' }); cy.loadChartFixtures(); @@ -77,6 +91,9 @@ before(() => { }); beforeEach(() => { + if (skipLogin()) { + return; + } cy.cleanDashboards(); cy.cleanCharts(); }); diff --git a/superset-frontend/cypress-base/cypress/utils/index.ts b/superset-frontend/cypress-base/cypress/utils/index.ts index 2c8255ee6e2..00ff58ab9aa 100644 --- a/superset-frontend/cypress-base/cypress/utils/index.ts +++ b/superset-frontend/cypress-base/cypress/utils/index.ts @@ -143,3 +143,29 @@ export function resize(selector: string) { }, }; } + +export const setSelectSearchInput = ( + $input: any, + value: string, + async = false, +) => { + // Ant Design 5 Select crashes Chromium with type/click events when showSearch is true. + // This copies the value directly to the input element as a workaround. + const nativeInputValueSetter = Object.getOwnPropertyDescriptor( + window.HTMLInputElement.prototype, + 'value', + )?.set; + nativeInputValueSetter?.call($input[0], value); + + // Trigger the input and change events + if (async) { + $input[0].dispatchEvent(new Event('mousedown', { bubbles: true })); + } + + $input[0].dispatchEvent(new Event('input', { bubbles: true })); + $input[0].dispatchEvent(new Event('change', { bubbles: true })); + + cy.get('.ant-select-item-option-content').should('exist').first().click({ + force: true, + }); +}; diff --git a/superset-frontend/cypress-base/cypress/utils/urls.ts b/superset-frontend/cypress-base/cypress/utils/urls.ts index ee35c3088c0..1a585f40479 100644 --- a/superset-frontend/cypress-base/cypress/utils/urls.ts +++ b/superset-frontend/cypress-base/cypress/utils/urls.ts @@ -28,3 +28,5 @@ export const DATABASE_LIST = '/databaseview/list'; export const DATASET_LIST_PATH = 'tablemodelview/list'; export const ALERT_LIST = '/alert/list/'; export const REPORT_LIST = '/report/list/'; +export const LOGIN = '/login/'; +export const REGISTER = '/register/'; diff --git a/superset-frontend/jest.config.js b/superset-frontend/jest.config.js index 634221c2423..517c91767fd 100644 --- a/superset-frontend/jest.config.js +++ b/superset-frontend/jest.config.js @@ -16,10 +16,8 @@ * specific language governing permissions and limitations * under the License. */ - // timezone for unit tests process.env.TZ = 'America/New_York'; - module.exports = { testRegex: '\\/superset-frontend\\/(spec|src|plugins|packages|tools)\\/.*(_spec|\\.test)\\.[jt]sx?$', @@ -30,7 +28,9 @@ module.exports = { '^src/(.*)$': '/src/$1', '^spec/(.*)$': '/spec/$1', // mapping plugins of superset-ui to source code - '@superset-ui/(.*)$': '/node_modules/@superset-ui/$1/src', + '^@superset-ui/([^/]+)/(.*)$': + '/node_modules/@superset-ui/$1/src/$2', + '^@superset-ui/([^/]+)$': '/node_modules/@superset-ui/$1/src', }, testEnvironment: 'jsdom', modulePathIgnorePatterns: ['/packages/generator-superset'], @@ -55,7 +55,7 @@ module.exports = { ], coverageReporters: ['lcov', 'json-summary', 'html', 'text'], transformIgnorePatterns: [ - 'node_modules/(?!d3-(interpolate|color|time)|remark-gfm|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|@rjsf/*.|sinon|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol|@babel/runtime|@emotion|cheerio|cheerio/lib|parse5|dom-serializer|entities|htmlparser2|rehype-sanitize|hast-util-sanitize|unified|unist-.*|hast-.*|rehype-.*|remark-.*|mdast-.*|micromark-.*|parse-entities|property-information|space-separated-tokens|comma-separated-tokens|bail|devlop|zwitch|longest-streak|jest-enzyme)', + 'node_modules/(?!d3-(interpolate|color|time)|remark-gfm|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|@rjsf/*.|sinon|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol|@babel/runtime|@emotion|cheerio|cheerio/lib|parse5|dom-serializer|entities|htmlparser2|rehype-sanitize|hast-util-sanitize|unified|unist-.*|hast-.*|rehype-.*|remark-.*|mdast-.*|micromark-.*|parse-entities|property-information|space-separated-tokens|comma-separated-tokens|bail|devlop|zwitch|longest-streak|jest-enzyme|geostyler|geostyler-.*)', ], preset: 'ts-jest', transform: { diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json index 8162677e484..f109b4549d7 100644 --- a/superset-frontend/package-lock.json +++ b/superset-frontend/package-lock.json @@ -14,12 +14,9 @@ "src/setup/*" ], "dependencies": { - "@ant-design/icons": "^5.2.6", "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.13.3", + "@emotion/react": "^11.14.0", "@emotion/styled": "^11.3.0", - "@fontsource/fira-code": "^5.0.18", - "@fontsource/inter": "^5.0.20", "@reduxjs/toolkit": "^1.9.3", "@rjsf/core": "^5.21.1", "@rjsf/utils": "^5.24.3", @@ -48,6 +45,7 @@ "@superset-ui/switchboard": "file:./packages/superset-ui-switchboard", "@types/d3-format": "^3.0.1", "@types/d3-time-format": "^4.0.3", + "@types/react-google-recaptcha": "^2.1.9", "@visx/axis": "^3.8.0", "@visx/grid": "^3.5.0", "@visx/responsive": "^3.0.0", @@ -55,22 +53,16 @@ "@visx/tooltip": "^3.0.0", "@visx/xychart": "^3.5.1", "abortcontroller-polyfill": "^1.7.8", - "ace-builds": "^1.41.0", "ag-grid-community": "33.1.1", "ag-grid-react": "33.1.1", - "antd": "4.10.3", - "antd-v5": "npm:antd@^5.18.0", - "bootstrap": "^3.4.1", - "brace": "^0.11.1", + "antd": "^5.24.6", "chrono-node": "^2.7.8", "classnames": "^2.2.5", - "core-js": "^3.38.1", "d3-color": "^3.1.0", "d3-scale": "^2.1.2", "dayjs": "^1.11.13", "dom-to-image-more": "^3.2.0", "dom-to-pdf": "^0.3.2", - "dompurify": "^3.2.4", "echarts": "^5.6.0", "emotion-rgba": "0.0.12", "eslint-plugin-i18n-strings": "file:eslint-rules/eslint-plugin-i18n-strings", @@ -78,12 +70,14 @@ "fs-extra": "^11.2.0", "fuse.js": "^7.0.0", "geolib": "^2.0.24", - "geostyler": "^12.0.2", + "geostyler": "^14.1.3", "geostyler-data": "^1.0.0", "geostyler-openlayers-parser": "^4.3.0", - "geostyler-style": "^7.5.0", + "geostyler-qgis-parser": "2.0.1", + "geostyler-style": "7.5.0", "geostyler-wfs-parser": "^2.0.3", "googleapis": "^130.0.0", + "html-webpack-plugin": "^5.6.3", "immer": "^10.1.1", "interweave": "^13.1.0", "jquery": "^3.7.1", @@ -107,17 +101,15 @@ "rc-trigger": "^5.3.4", "re-resizable": "^6.10.1", "react": "^17.0.2", - "react-ace": "^10.1.0", "react-checkbox-tree": "^1.8.0", "react-color": "^2.13.8", "react-diff-viewer-continued": "^3.4.0", "react-dnd": "^11.1.3", "react-dnd-html5-backend": "^11.1.3", "react-dom": "^17.0.2", - "react-draggable": "^4.4.6", + "react-google-recaptcha": "^3.1.0", "react-hot-loader": "^4.13.1", "react-intersection-observer": "^9.16.0", - "react-js-cron": "^2.1.2", "react-json-tree": "^0.17.0", "react-lines-ellipsis": "^0.15.4", "react-loadable": "^5.5.0", @@ -131,18 +123,17 @@ "react-syntax-highlighter": "^15.4.5", "react-table": "^7.8.0", "react-transition-group": "^4.4.5", - "react-ultimate-pagination": "^1.3.2", "react-virtualized-auto-sizer": "^1.0.25", "react-window": "^1.8.10", "redux": "^4.2.1", "redux-localstorage": "^0.4.1", "redux-thunk": "^2.1.0", "redux-undo": "^1.0.0-beta9-9-7", - "regenerator-runtime": "^0.14.1", "rimraf": "^6.0.1", "rison": "^0.1.1", "scroll-into-view-if-needed": "^3.1.0", "simple-zstd": "^1.4.2", + "stream-browserify": "^3.0.0", "tinycolor2": "^1.4.2", "urijs": "^1.19.8", "use-event-callback": "^0.1.0", @@ -195,12 +186,12 @@ "@types/classnames": "^2.2.10", "@types/dom-to-image": "^2.6.7", "@types/fetch-mock": "^7.3.2", - "@types/jest": "^29.5.12", - "@types/jquery": "^3.5.8", + "@types/jest": "^29.5.14", "@types/js-levenshtein": "^1.1.3", "@types/json-bigint": "^1.0.4", "@types/math-expression-evaluator": "^1.3.3", "@types/mousetrap": "^1.6.15", + "@types/node": "^22.12.0", "@types/react": "^17.0.83", "@types/react-dom": "^17.0.26", "@types/react-gravatar": "^2.6.14", @@ -210,7 +201,6 @@ "@types/react-resizable": "^3.0.8", "@types/react-router-dom": "^5.3.3", "@types/react-syntax-highlighter": "^15.5.13", - "@types/react-table": "^7.7.20", "@types/react-transition-group": "^4.4.12", "@types/react-ultimate-pagination": "^1.2.4", "@types/react-virtualized-auto-sizer": "^1.0.4", @@ -219,6 +209,7 @@ "@types/redux-mock-store": "^1.0.6", "@types/rison": "0.1.0", "@types/sinon": "^17.0.3", + "@types/testing-library__jest-dom": "^5.14.9", "@types/tinycolor2": "^1.4.3", "@types/yargs": "12 - 18", "@typescript-eslint/eslint-plugin": "^5.62.0", @@ -237,6 +228,7 @@ "eslint": "^8.56.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^7.2.0", + "eslint-import-resolver-alias": "^1.1.2", "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-cypress": "^3.6.0", "eslint-plugin-file-progress": "^1.5.0", @@ -265,8 +257,6 @@ "jest-websocket-mock": "^2.5.0", "jsdom": "^26.0.0", "lerna": "^8.2.1", - "less": "^4.2.0", - "less-loader": "^12.2.0", "mini-css-extract-plugin": "^2.9.0", "open-cli": "^8.0.0", "po2json": "^0.4.5", @@ -285,6 +275,7 @@ "ts-jest": "^29.2.5", "ts-loader": "^9.5.1", "tscw-config": "^1.1.2", + "tsx": "^4.19.2", "typescript": "5.1.6", "vm-browserify": "^1.1.2", "webpack": "^5.98.0", @@ -298,6 +289,12 @@ "engines": { "node": "^20.16.0", "npm": "^10.8.1" + }, + "peerDependencies": { + "ace-builds": "^1.41.0", + "core-js": "^3.38.1", + "react-ace": "^10.1.0", + "regenerator-runtime": "^0.14.1" } }, "eslint-rules/eslint-i18n-strings": { @@ -349,9 +346,9 @@ } }, "node_modules/@ant-design/colors": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.2.0.tgz", - "integrity": "sha512-bjTObSnZ9C/O8MB/B4OUtd/q9COomuJAR2SYfhxLyHvCKn4EKwCN3e+fWGMo7H5InAyV0wL17jdE9ALrdOW/6A==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-7.2.1.tgz", + "integrity": "sha512-lCHDcEzieu4GA3n8ELeZ5VQ8pKQAWcGGLRTQ50aQM2iqPpq2evTxER84jfdPvsPAtEcZ7m44NI45edFMo8oOYQ==", "license": "MIT", "dependencies": { "@ant-design/fast-color": "^2.0.6" @@ -422,9 +419,9 @@ } }, "node_modules/@ant-design/icons": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.0.tgz", - "integrity": "sha512-Mb6QkQmPLZsmIHJ6oBsoyKrrT8/kAUdQ6+8q38e2bQSclROi69SiDlI4zZroaIPseae1w110RJH0zGrphAvlSQ==", + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-5.6.1.tgz", + "integrity": "sha512-0/xS39c91WjPAZOWsvi1//zjx6kAp4kxWwctR6kuU6p133w8RU0D2dSCvZC19uQyharg/sAvYxGYWl01BbZZfg==", "license": "MIT", "dependencies": { "@ant-design/colors": "^7.0.0", @@ -448,16 +445,16 @@ "license": "MIT" }, "node_modules/@ant-design/react-slick": { - "version": "0.28.4", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-0.28.4.tgz", - "integrity": "sha512-j9eAHTn7GxbXUFNknJoHS2ceAsqrQi2j8XykjZE1IXCD8kJF+t28EvhBLniDpbOsBk/3kjalnhriTfZcjBHNqg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz", + "integrity": "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.4", "classnames": "^2.2.5", "json2mq": "^0.2.0", - "lodash": "^4.17.21", - "resize-observer-polyfill": "^1.5.0" + "resize-observer-polyfill": "^1.5.1", + "throttle-debounce": "^5.0.0" }, "peerDependencies": { "react": ">=16.9.0" @@ -3337,13 +3334,545 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, "license": "MIT", "optional": true, "engines": { "node": ">=0.1.90" } }, + "node_modules/@commitlint/cli": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", + "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", + "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/ensure": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", + "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", + "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", + "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", + "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", + "license": "MIT", + "dependencies": { + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^6.1.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", + "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", + "license": "MIT", + "dependencies": { + "jiti": "^2.4.1" + }, + "engines": { + "node": ">=v18" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=9", + "typescript": ">=5" + } + }, + "node_modules/@commitlint/load/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@commitlint/message": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", + "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", + "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", + "license": "MIT", + "dependencies": { + "@commitlint/types": "^19.8.1", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "license": "MIT", + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@commitlint/parse/node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "license": "MIT", + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/parse/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/parse/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/@commitlint/parse/node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", + "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", + "license": "MIT", + "dependencies": { + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8", + "tinyexec": "^1.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read/node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "license": "MIT", + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@commitlint/read/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "license": "MIT", + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "license": "ISC", + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", + "license": "MIT", + "dependencies": { + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", + "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", + "license": "MIT", + "dependencies": { + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", + "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", + "license": "MIT", + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", + "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", + "license": "MIT", + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/top-level/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@commitlint/top-level/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/types": { + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", + "license": "MIT", + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -3481,15 +4010,6 @@ "node": ">=18" } }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/@cypress/react": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@cypress/react/-/react-8.0.2.tgz", @@ -3718,16 +4238,16 @@ } }, "node_modules/@dnd-kit/sortable": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", - "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-8.0.0.tgz", + "integrity": "sha512-U3jk5ebVXe1Lr7c2wU7SBZjcWdQP+j7peHJfCspnA81enlu88Mgd7CC8Q+pub9ubP7eKVETzJW+IBAhsqbSu/g==", "license": "MIT", "dependencies": { - "@dnd-kit/utilities": "^3.2.0", + "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { - "@dnd-kit/core": "^6.0.7", + "@dnd-kit/core": "^6.1.0", "react": ">=16.8.0" } }, @@ -4425,6 +4945,23 @@ "node": ">=12" } }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/netbsd-x64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz", @@ -4441,6 +4978,23 @@ "node": ">=12" } }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/openbsd-x64": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz", @@ -8526,6 +9080,962 @@ "hasInstallScript": true, "license": "Apache-2.0" }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, + "node_modules/@semantic-release/changelog": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", + "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "fs-extra": "^11.0.0", + "lodash": "^4.17.4" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/commit-analyzer": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-13.0.1.tgz", + "integrity": "sha512-wdnBPHKkr9HhNhXOhZD5a2LNl91+hs8CC2vsAVYxtZH3y0dV3wKn+uZSN61rdJQZ8EGxzWB3inWocBHV9+u/CQ==", + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "import-from-esm": "^2.0.0", + "lodash-es": "^4.17.21", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-writer": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.1.0.tgz", + "integrity": "sha512-dpC440QnORNCO81XYuRRFOLCsjKj4W7tMkUIn3lR6F/FAaJcWLi7iCj6IcEvSQY2zw6VUgwUKd5DEHKEWrpmEQ==", + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^5.0.0", + "handlebars": "^4.7.7", + "meow": "^13.0.0", + "semver": "^7.5.2" + }, + "bin": { + "conventional-changelog-writer": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-filter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz", + "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==", + "license": "MIT", + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/error": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", + "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", + "license": "MIT", + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@semantic-release/git": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", + "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.0.0", + "debug": "^4.0.0", + "dir-glob": "^3.0.0", + "execa": "^5.0.0", + "lodash": "^4.17.4", + "micromatch": "^4.0.0", + "p-reduce": "^2.0.0" + }, + "engines": { + "node": ">=14.17" + }, + "peerDependencies": { + "semantic-release": ">=18.0.0" + } + }, + "node_modules/@semantic-release/github": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-11.0.3.tgz", + "integrity": "sha512-T2fKUyFkHHkUNa5XNmcsEcDPuG23hwBKptfUVcFXDVG2cSjXXZYDOfVYwfouqbWo/8UefotLaoGfQeK+k3ep6A==", + "license": "MIT", + "dependencies": { + "@octokit/core": "^7.0.0", + "@octokit/plugin-paginate-rest": "^13.0.0", + "@octokit/plugin-retry": "^8.0.0", + "@octokit/plugin-throttling": "^11.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "issue-parser": "^7.0.0", + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=24.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/auth-token": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz", + "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==", + "license": "MIT", + "engines": { + "node": ">= 20" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/core": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.2.tgz", + "integrity": "sha512-ODsoD39Lq6vR6aBgvjTnA3nZGliknKboc9Gtxr7E4WDNqY24MxANKcuDQSF0jzapvGb3KWOEDrKfve4HoWGK+g==", + "license": "MIT", + "dependencies": { + "@octokit/auth-token": "^6.0.0", + "@octokit/graphql": "^9.0.1", + "@octokit/request": "^10.0.2", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "before-after-hook": "^4.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/endpoint": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.0.tgz", + "integrity": "sha512-hoYicJZaqISMAI3JfaDr1qMNi48OctWuOih1m80bkYow/ayPw6Jj52tqWJ6GEoFTk1gBqfanSoI1iY99Z5+ekQ==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/graphql": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.1.tgz", + "integrity": "sha512-j1nQNU1ZxNFx2ZtKmL4sMrs4egy5h65OMDmSbVyuCzjOcwsHq6EaYjOTGXPQxgfiN8dJ4CriYHk6zF050WEULg==", + "license": "MIT", + "dependencies": { + "@octokit/request": "^10.0.2", + "@octokit/types": "^14.0.0", + "universal-user-agent": "^7.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/openapi-types": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", + "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", + "license": "MIT" + }, + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-paginate-rest": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-13.0.1.tgz", + "integrity": "sha512-m1KvHlueScy4mQJWvFDCxFBTIdXS0K1SgFGLmqHyX90mZdCIv6gWBbKRhatxRjhGlONuTK/hztYdaqrTXcFZdQ==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.1.0" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=6" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-retry": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-8.0.1.tgz", + "integrity": "sha512-KUoYR77BjF5O3zcwDQHRRZsUvJwepobeqiSSdCJ8lWt27FZExzb0GgVxrhhfuyF6z2B2zpO0hN5pteni1sqWiw==", + "license": "MIT", + "dependencies": { + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": ">=7" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/plugin-throttling": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-11.0.1.tgz", + "integrity": "sha512-S+EVhy52D/272L7up58dr3FNSMXWuNZolkL4zMJBNIfIxyZuUcczsQAU4b5w6dewJXnKYVgSHSV5wxitMSW1kw==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0", + "bottleneck": "^2.15.3" + }, + "engines": { + "node": ">= 20" + }, + "peerDependencies": { + "@octokit/core": "^7.0.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/request": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.2.tgz", + "integrity": "sha512-iYj4SJG/2bbhh+iIpFmG5u49DtJ4lipQ+aPakjL9OKpsGY93wM8w06gvFbEQxcMsZcCvk5th5KkIm2m8o14aWA==", + "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^11.0.0", + "@octokit/request-error": "^7.0.0", + "@octokit/types": "^14.0.0", + "fast-content-type-parse": "^3.0.0", + "universal-user-agent": "^7.0.2" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/request-error": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.0.0.tgz", + "integrity": "sha512-KRA7VTGdVyJlh0cP5Tf94hTiYVVqmt2f3I6mnimmaVz4UG3gQV/k4mDJlJv3X67iX6rmN7gSHCF8ssqeMnmhZg==", + "license": "MIT", + "dependencies": { + "@octokit/types": "^14.0.0" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/@semantic-release/github/node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/github/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/before-after-hook": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz", + "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==", + "license": "Apache-2.0" + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/fast-content-type-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-3.0.0.tgz", + "integrity": "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@semantic-release/github/node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@semantic-release/github/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@semantic-release/github/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/mime": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.7.tgz", + "integrity": "sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/github/node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/universal-user-agent": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz", + "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==", + "license": "ISC" + }, + "node_modules/@semantic-release/npm": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-12.0.1.tgz", + "integrity": "sha512-/6nntGSUGK2aTOI0rHPwY3ZjgY9FkXmEHbW9Kr+62NVOsyqpKKeP0lrCH+tphv+EsNdJNmqqwijTEnVWUMQ2Nw==", + "license": "MIT", + "dependencies": { + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^9.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^10.5.0", + "rc": "^1.2.8", + "read-pkg": "^9.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/npm/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@semantic-release/npm/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@semantic-release/npm/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/index-to-position": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.1.0.tgz", + "integrity": "sha512-XPdx9Dq4t9Qk1mTMbWONJqU7boCoumEH7fRET37HX5+khDUl3J2W6PdALxhILYlIYx2amlwYcRPp28p0tSiojg==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/npm-run-path/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/read-pkg": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-9.0.1.tgz", + "integrity": "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==", + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.3", + "normalize-package-data": "^6.0.0", + "parse-json": "^8.0.0", + "type-fest": "^4.6.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/npm/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-14.0.3.tgz", + "integrity": "sha512-XxAZRPWGwO5JwJtS83bRdoIhCiYIx8Vhr+u231pQAsdFIAbm19rSVJLdnBN+Avvk7CKvNQE/nJ4y7uqKH6WTiw==", + "license": "MIT", + "dependencies": { + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from-esm": "^2.0.0", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-package-up": "^11.0.0" + }, + "engines": { + "node": ">=20.8.1" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.1.0.tgz", + "integrity": "sha512-dpC440QnORNCO81XYuRRFOLCsjKj4W7tMkUIn3lR6F/FAaJcWLi7iCj6IcEvSQY2zw6VUgwUKd5DEHKEWrpmEQ==", + "license": "MIT", + "dependencies": { + "conventional-commits-filter": "^5.0.0", + "handlebars": "^4.7.7", + "meow": "^13.0.0", + "semver": "^7.5.2" + }, + "bin": { + "conventional-changelog-writer": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-filter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.1.0.tgz", + "integrity": "sha512-5nxDo7TwKB5InYBl4ZC//1g9GRwB/F3TXOGR9hgUjMGfvSP4Vu5NkpNro2+1+TIEy1vwxApl5ircECr2ri5JIw==", + "license": "MIT", + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sigstore/bundle": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", @@ -8617,7 +10127,6 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -11819,6 +13328,15 @@ "@types/node": "*" } }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", + "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/cross-spawn": { "version": "6.0.6", "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", @@ -12404,12 +13922,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.9.tgz", - "integrity": "sha512-Ir6hwgsKyNESl/gLOcEz3krR4CBGgliDqBQ2ma4wIhEx0w+xnoeTq3tdrNw15kU3SxogDjOgv9sqdtLW8mIHaw==", + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/node-forge": { @@ -12483,18 +14001,6 @@ "csstype": "^3.0.2" } }, - "node_modules/@types/react-color": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/@types/react-color/-/react-color-3.0.13.tgz", - "integrity": "sha512-2c/9FZ4ixC5T3JzN0LP5Cke2Mf0MKOP2Eh0NPDPWmuVH3NjPyhEjqNMQpN1Phr5m74egAy+p2lYNAFrX1z9Yrg==", - "license": "MIT", - "dependencies": { - "@types/reactcss": "*" - }, - "peerDependencies": { - "@types/react": "*" - } - }, "node_modules/@types/react-dom": { "version": "17.0.26", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.26.tgz", @@ -12504,6 +14010,15 @@ "@types/react": "^17.0.0" } }, + "node_modules/@types/react-google-recaptcha": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/@types/react-google-recaptcha/-/react-google-recaptcha-2.1.9.tgz", + "integrity": "sha512-nT31LrBDuoSZJN4QuwtQSF3O89FVHC4jLhM+NtKEmVF5R1e8OY0Jo4//x2Yapn2aNHguwgX5doAq8Zo+Ehd0ug==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@types/react-gravatar": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/@types/react-gravatar/-/react-gravatar-2.6.14.tgz", @@ -12630,21 +14145,11 @@ "version": "1.8.8", "resolved": "https://registry.npmjs.org/@types/react-window/-/react-window-1.8.8.tgz", "integrity": "sha512-8Ls660bHR1AUA2kuRvVG9D/4XpRC6wjAaPT9dil7Ckc76eP9TKWZwwmgfq8Q1LANX3QNDnoU4Zp48A3w+zK69Q==", - "dev": true, "license": "MIT", "dependencies": { "@types/react": "*" } }, - "node_modules/@types/reactcss": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/@types/reactcss/-/reactcss-1.2.13.tgz", - "integrity": "sha512-gi3S+aUi6kpkF5vdhUsnkwbiSEIU/BEJyD7kBy2SudWBUuKmJk8AQKE0OVcQQeEy40Azh0lV6uynxlikYIJuwg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*" - } - }, "node_modules/@types/redux-localstorage": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/@types/redux-localstorage/-/redux-localstorage-1.0.12.tgz", @@ -12813,6 +14318,16 @@ "integrity": "sha512-bTHG8fcxEqv1M9+TD14P8ok8hjxoOCkfKc8XXLaaD05kI7ohpeI956jtDOD3XHKBQrlyPughUtzm1jtVhHpA5Q==", "license": "MIT" }, + "node_modules/@types/testing-library__jest-dom": { + "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jest": "*" + } + }, "node_modules/@types/through": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/@types/through/-/through-0.0.33.tgz", @@ -12940,6 +14455,15 @@ "@types/node": "*" } }, + "node_modules/@types/xml2js": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/@types/xml2js/-/xml2js-0.4.14.tgz", + "integrity": "sha512-4YnrRemBShWRO2QjvUin8ESA41rH+9nQGLUGZV/1IDhi3SL9OhdpNC/MrulTWuptXKwhx/aDxE7toV0f/ypIXQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.33", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", @@ -14035,7 +15559,6 @@ "version": "0.8.10", "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10.0.0" @@ -14561,7 +16084,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", @@ -14702,74 +16224,16 @@ } }, "node_modules/antd": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/antd/-/antd-4.10.3.tgz", - "integrity": "sha512-J/IZvW15MwTmUxK/AWFkSU51T1Hyn4e0GchJWlIe7+FrPpLoTgLf9/Cx3mgxiooHfE9OfvnYvvRli1VxHH6H0Q==", + "version": "5.25.4", + "resolved": "https://registry.npmjs.org/antd/-/antd-5.25.4.tgz", + "integrity": "sha512-yXdWqq1NJSZnD1HoPZWnWuQJGVYYnB3h0Ufsz4sbt3T0N9SdJ4G9GPpLMk8Gn9zWtwBekfR4THPVZ9uzAyhBHQ==", "license": "MIT", "dependencies": { - "@ant-design/colors": "^5.0.0", - "@ant-design/icons": "^4.3.0", - "@ant-design/react-slick": "~0.28.1", - "@babel/runtime": "^7.11.2", - "array-tree-filter": "^2.1.0", - "classnames": "^2.2.6", - "copy-to-clipboard": "^3.2.0", - "lodash": "^4.17.20", - "moment": "^2.25.3", - "rc-cascader": "~1.4.0", - "rc-checkbox": "~2.3.0", - "rc-collapse": "~3.1.0", - "rc-dialog": "~8.5.1", - "rc-drawer": "~4.2.0", - "rc-dropdown": "~3.2.0", - "rc-field-form": "~1.17.3", - "rc-image": "~5.0.2", - "rc-input-number": "~6.1.0", - "rc-mentions": "~1.5.0", - "rc-menu": "~8.10.0", - "rc-motion": "^2.4.0", - "rc-notification": "~4.5.2", - "rc-pagination": "~3.1.2", - "rc-picker": "~2.5.1", - "rc-progress": "~3.1.0", - "rc-rate": "~2.9.0", - "rc-resize-observer": "^1.0.0", - "rc-select": "~12.1.0", - "rc-slider": "~9.7.1", - "rc-steps": "~4.1.0", - "rc-switch": "~3.2.0", - "rc-table": "~7.12.0", - "rc-tabs": "~11.7.0", - "rc-textarea": "~0.3.0", - "rc-tooltip": "~5.0.0", - "rc-tree": "~4.1.0", - "rc-tree-select": "~4.3.0", - "rc-upload": "~3.3.4", - "rc-util": "^5.7.0", - "scroll-into-view-if-needed": "^2.2.25", - "warning": "^4.0.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ant-design" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5": { - "name": "antd", - "version": "5.23.2", - "resolved": "https://registry.npmjs.org/antd/-/antd-5.23.2.tgz", - "integrity": "sha512-h39z/uSeNvF3FtSMytle58s68zQFXJ+XuLm31l6mPBBq99tUSxO9b1Wfnw7b8Q5Mfl4hsXjoz85+/jIRGfYJ5Q==", - "license": "MIT", - "dependencies": { - "@ant-design/colors": "^7.2.0", - "@ant-design/cssinjs": "^1.22.0", + "@ant-design/colors": "^7.2.1", + "@ant-design/cssinjs": "^1.23.0", "@ant-design/cssinjs-utils": "^1.1.3", "@ant-design/fast-color": "^2.0.6", - "@ant-design/icons": "^5.5.2", + "@ant-design/icons": "^5.6.1", "@ant-design/react-slick": "~1.1.2", "@babel/runtime": "^7.26.0", "@rc-component/color-picker": "~2.0.1", @@ -14780,38 +16244,38 @@ "classnames": "^2.5.1", "copy-to-clipboard": "^3.3.3", "dayjs": "^1.11.11", - "rc-cascader": "~3.33.0", + "rc-cascader": "~3.34.0", "rc-checkbox": "~3.5.0", "rc-collapse": "~3.9.0", "rc-dialog": "~9.6.0", - "rc-drawer": "~7.2.0", + "rc-drawer": "~7.3.0", "rc-dropdown": "~4.2.1", "rc-field-form": "~2.7.0", - "rc-image": "~7.11.0", - "rc-input": "~1.7.2", - "rc-input-number": "~9.4.0", - "rc-mentions": "~2.19.1", - "rc-menu": "~9.16.0", + "rc-image": "~7.12.0", + "rc-input": "~1.8.0", + "rc-input-number": "~9.5.0", + "rc-mentions": "~2.20.0", + "rc-menu": "~9.16.1", "rc-motion": "^2.9.5", - "rc-notification": "~5.6.2", - "rc-pagination": "~5.0.0", - "rc-picker": "~4.9.2", + "rc-notification": "~5.6.4", + "rc-pagination": "~5.1.0", + "rc-picker": "~4.11.3", "rc-progress": "~4.0.0", - "rc-rate": "~2.13.0", + "rc-rate": "~2.13.1", "rc-resize-observer": "^1.4.3", "rc-segmented": "~2.7.0", - "rc-select": "~14.16.6", + "rc-select": "~14.16.8", "rc-slider": "~11.1.8", "rc-steps": "~6.0.1", "rc-switch": "~4.1.0", - "rc-table": "~7.50.2", - "rc-tabs": "~15.5.0", - "rc-textarea": "~1.9.0", - "rc-tooltip": "~6.3.2", - "rc-tree": "~5.13.0", + "rc-table": "~7.50.5", + "rc-tabs": "~15.6.1", + "rc-textarea": "~1.10.0", + "rc-tooltip": "~6.4.0", + "rc-tree": "~5.13.1", "rc-tree-select": "~5.27.0", - "rc-upload": "~4.8.1", - "rc-util": "^5.44.3", + "rc-upload": "~4.9.2", + "rc-util": "^5.44.4", "scroll-into-view-if-needed": "^3.1.0", "throttle-debounce": "^5.0.2" }, @@ -14824,570 +16288,27 @@ "react-dom": ">=16.9.0" } }, - "node_modules/antd-v5/node_modules/@ant-design/react-slick": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ant-design/react-slick/-/react-slick-1.1.2.tgz", - "integrity": "sha512-EzlvzE6xQUBrZuuhSAFTdsr4P2bBBHGZwKFemEfq8gIGyIQCxalYfZW/T2ORbtQx5rU69o+WycP3exY/7T1hGA==", + "node_modules/antd/node_modules/rc-input": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz", + "integrity": "sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.4", - "classnames": "^2.2.5", - "json2mq": "^0.2.0", - "resize-observer-polyfill": "^1.5.1", - "throttle-debounce": "^5.0.0" - }, - "peerDependencies": { - "react": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-cascader": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.33.0.tgz", - "integrity": "sha512-JvZrMbKBXIbEDmpIORxqvedY/bck6hGbs3hxdWT8eS9wSQ1P7//lGxbyKjOSyQiVBbgzNWriSe6HoMcZO/+0rQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.7", - "classnames": "^2.3.1", - "rc-select": "~14.16.2", - "rc-tree": "~5.13.0", - "rc-util": "^5.43.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-checkbox": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.5.0.tgz", - "integrity": "sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.3.2", - "rc-util": "^5.25.2" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-collapse": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.9.0.tgz", - "integrity": "sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.3.4", - "rc-util": "^5.27.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-dialog": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.6.0.tgz", - "integrity": "sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/portal": "^1.0.0-8", - "classnames": "^2.2.6", - "rc-motion": "^2.3.0", - "rc-util": "^5.21.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-drawer": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.2.0.tgz", - "integrity": "sha512-9lOQ7kBekEJRdEpScHvtmEtXnAsy+NGDXiRWc2ZVC7QXAazNVbeT4EraQKYwCME8BJLa8Bxqxvs5swwyOepRwg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.23.9", - "@rc-component/portal": "^1.1.1", - "classnames": "^2.2.6", - "rc-motion": "^2.6.1", - "rc-util": "^5.38.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-dropdown": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.1.tgz", - "integrity": "sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@rc-component/trigger": "^2.0.0", - "classnames": "^2.2.6", - "rc-util": "^5.44.1" - }, - "peerDependencies": { - "react": ">=16.11.0", - "react-dom": ">=16.11.0" - } - }, - "node_modules/antd-v5/node_modules/rc-field-form": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.7.0.tgz", - "integrity": "sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.0", - "@rc-component/async-validator": "^5.0.3", - "rc-util": "^5.32.2" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-image": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.11.0.tgz", - "integrity": "sha512-aZkTEZXqeqfPZtnSdNUnKQA0N/3MbgR7nUnZ+/4MfSFWPFHZau4p5r5ShaI0KPEMnNjv4kijSCFq/9wtJpwykw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.11.2", - "@rc-component/portal": "^1.0.2", - "classnames": "^2.2.6", - "rc-dialog": "~9.6.0", - "rc-motion": "^2.6.2", - "rc-util": "^5.34.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-input-number": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.4.0.tgz", - "integrity": "sha512-Tiy4DcXcFXAf9wDhN8aUAyMeCLHJUHA/VA/t7Hj8ZEx5ETvxG7MArDOSE6psbiSCo+vJPm4E3fGN710ITVn6GA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/mini-decimal": "^1.0.1", - "classnames": "^2.2.5", - "rc-input": "~1.7.1", - "rc-util": "^5.40.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-mentions": { - "version": "2.19.1", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.19.1.tgz", - "integrity": "sha512-KK3bAc/bPFI993J3necmaMXD2reZTzytZdlTvkeBbp50IGH1BDPDvxLdHDUrpQx2b2TGaVJsn+86BvYa03kGqA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.22.5", - "@rc-component/trigger": "^2.0.0", - "classnames": "^2.2.6", - "rc-input": "~1.7.1", - "rc-menu": "~9.16.0", - "rc-textarea": "~1.9.0", - "rc-util": "^5.34.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-menu": { - "version": "9.16.0", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.16.0.tgz", - "integrity": "sha512-vAL0yqPkmXWk3+YKRkmIR8TYj3RVdEt3ptG2jCJXWNAvQbT0VJJdRyHZ7kG/l1JsZlB+VJq/VcYOo69VR4oD+w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^2.0.0", - "classnames": "2.x", - "rc-motion": "^2.4.3", - "rc-overflow": "^1.3.1", - "rc-util": "^5.27.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-notification": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.2.tgz", - "integrity": "sha512-Id4IYMoii3zzrG0lB0gD6dPgJx4Iu95Xu0BQrhHIbp7ZnAZbLqdqQ73aIWH0d0UFcElxwaKjnzNovTjo7kXz7g==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.9.0", - "rc-util": "^5.20.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-pagination": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-5.0.0.tgz", - "integrity": "sha512-QjrPvbAQwps93iluvFM62AEYglGYhWW2q/nliQqmvkTi4PXP4HHoh00iC1Sa5LLVmtWQHmG73fBi2x6H6vFHRg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.3.2", - "rc-util": "^5.38.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-picker": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.9.2.tgz", - "integrity": "sha512-SLW4PRudODOomipKI0dvykxW4P8LOqtMr17MOaLU6NQJhkh9SZeh44a/8BMxwv5T6e3kiIeYc9k5jFg2Mv35Pg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.24.7", - "@rc-component/trigger": "^2.0.0", + "@babel/runtime": "^7.11.1", "classnames": "^2.2.1", - "rc-overflow": "^1.3.2", - "rc-resize-observer": "^1.4.0", - "rc-util": "^5.43.0" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "date-fns": ">= 2.x", - "dayjs": ">= 1.x", - "luxon": ">= 3.x", - "moment": ">= 2.x", - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - }, - "peerDependenciesMeta": { - "date-fns": { - "optional": true - }, - "dayjs": { - "optional": true - }, - "luxon": { - "optional": true - }, - "moment": { - "optional": true - } - } - }, - "node_modules/antd-v5/node_modules/rc-progress": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz", - "integrity": "sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-util": "^5.16.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-rate": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.0.tgz", - "integrity": "sha512-oxvx1Q5k5wD30sjN5tqAyWTvJfLNNJn7Oq3IeS4HxWfAiC4BOXMITNAsw7u/fzdtO4MS8Ki8uRLOzcnEuoQiAw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.0.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-select": { - "version": "14.16.6", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.16.6.tgz", - "integrity": "sha512-YPMtRPqfZWOm2XGTbx5/YVr1HT0vn//8QS77At0Gjb3Lv+Lbut0IORJPKLWu1hQ3u4GsA0SrDzs7nI8JG7Zmyg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/trigger": "^2.1.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-overflow": "^1.3.1", - "rc-util": "^5.16.1", - "rc-virtual-list": "^3.5.2" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/antd-v5/node_modules/rc-slider": { - "version": "11.1.8", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.8.tgz", - "integrity": "sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.36.0" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-steps": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", - "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.16.7", - "classnames": "^2.2.3", - "rc-util": "^5.16.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-switch": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", - "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0", - "classnames": "^2.2.1", - "rc-util": "^5.30.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-table": { - "version": "7.50.2", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.2.tgz", - "integrity": "sha512-+nJbzxzstBriLb5sr9U7Vjs7+4dO8cWlouQbMwBVYghk2vr508bBdkHJeP/z9HVjAIKmAgMQKxmtbgDd3gc5wA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "@rc-component/context": "^1.4.0", - "classnames": "^2.2.5", - "rc-resize-observer": "^1.1.0", - "rc-util": "^5.44.3", - "rc-virtual-list": "^3.14.2" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-tabs": { - "version": "15.5.0", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.5.0.tgz", - "integrity": "sha512-NrDcTaUJLh9UuDdMBkjKTn97U9iXG44s9D03V5NHkhEDWO5/nC6PwC3RhkCWFMKB9hh+ryqgZ+TIr1b9Jd/hnQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.11.2", - "classnames": "2.x", - "rc-dropdown": "~4.2.0", - "rc-menu": "~9.16.0", - "rc-motion": "^2.6.2", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.34.1" - }, - "engines": { - "node": ">=8.x" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-textarea": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.9.0.tgz", - "integrity": "sha512-dQW/Bc/MriPBTugj2Kx9PMS5eXCCGn2cxoIaichjbNvOiARlaHdI99j4DTxLl/V8+PIfW06uFy7kjfUIDDKyxQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1", - "rc-input": "~1.7.1", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.27.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-tooltip": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.3.2.tgz", - "integrity": "sha512-oA4HZIiZJbUQ5ojigM0y4XtWxaH/aQlJSzknjICRWNpqyemy1sL3X3iEQV2eSPBWEq+bqU3+aSs81z+28j9luA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.11.2", - "@rc-component/trigger": "^2.0.0", - "classnames": "^2.3.1" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd-v5/node_modules/rc-tree": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.13.0.tgz", - "integrity": "sha512-2+lFvoVRnvHQ1trlpXMOWtF8BUgF+3TiipG72uOfhpL5CUdXCk931kvDdUkTL/IZVtNEDQKwEEmJbAYJSA5NnA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "2.x", - "rc-motion": "^2.0.1", - "rc-util": "^5.16.1", - "rc-virtual-list": "^3.5.1" - }, - "engines": { - "node": ">=10.x" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/antd-v5/node_modules/rc-tree-select": { - "version": "5.27.0", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.27.0.tgz", - "integrity": "sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.25.7", - "classnames": "2.x", - "rc-select": "~14.16.2", - "rc-tree": "~5.13.0", - "rc-util": "^5.43.0" - }, - "peerDependencies": { - "react": "*", - "react-dom": "*" - } - }, - "node_modules/antd-v5/node_modules/rc-upload": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.8.1.tgz", - "integrity": "sha512-toEAhwl4hjLAI1u8/CgKWt30BR06ulPa4iGQSMvSXoHzO88gPCslxqV/mnn4gJU7PDoltGIC9Eh+wkeudqgHyw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "classnames": "^2.2.5", - "rc-util": "^5.2.0" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, - "node_modules/antd/node_modules/@ant-design/colors": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-5.1.1.tgz", - "integrity": "sha512-Txy4KpHrp3q4XZdfgOBqLl+lkQIc3tEvHXOimRN1giX1AEC7mGtyrO9p8iRGJ3FLuVMGa2gNEzQyghVymLttKQ==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.3.1" - } - }, - "node_modules/antd/node_modules/@ant-design/icons": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/@ant-design/icons/-/icons-4.8.3.tgz", - "integrity": "sha512-HGlIQZzrEbAhpJR6+IGdzfbPym94Owr6JZkJ2QCCnOkPVIWMO2xgIVcOKnl8YcpijIo39V7l2qQL5fmtw56cMw==", - "license": "MIT", - "dependencies": { - "@ant-design/colors": "^6.0.0", - "@ant-design/icons-svg": "^4.3.0", - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "lodash": "^4.17.15", - "rc-util": "^5.9.4" - }, - "engines": { - "node": ">=8" + "rc-util": "^5.18.1" }, "peerDependencies": { "react": ">=16.0.0", "react-dom": ">=16.0.0" } }, - "node_modules/antd/node_modules/@ant-design/icons/node_modules/@ant-design/colors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-6.0.0.tgz", - "integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==", - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.4.0" - } - }, - "node_modules/antd/node_modules/compute-scroll-into-view": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz", - "integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==", + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", "license": "MIT" }, - "node_modules/antd/node_modules/scroll-into-view-if-needed": { - "version": "2.2.31", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz", - "integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==", - "license": "MIT", - "dependencies": { - "compute-scroll-into-view": "^1.0.20" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -15473,6 +16394,12 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/argv-formatter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", + "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", + "license": "MIT" + }, "node_modules/aria-hidden": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", @@ -15531,7 +16458,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true, "license": "MIT" }, "node_modules/array-includes": { @@ -15555,12 +16481,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-tree-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-tree-filter/-/array-tree-filter-2.1.0.tgz", - "integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==", - "license": "MIT" - }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -15824,12 +16744,6 @@ "node": ">= 0.4" } }, - "node_modules/async-validator": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-3.5.2.tgz", - "integrity": "sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==", - "license": "MIT" - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -16669,21 +17583,18 @@ "dev": true, "license": "ISC" }, - "node_modules/bootstrap": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-3.4.1.tgz", - "integrity": "sha512-yN5oZVmRCwe5aKwzRj6736nSmKDX7pLYwsXiCj/EYmo16hODaBiT4En5btW/jhBF/seV+XMx3aYwukYC3A49DA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/bootstrap-slider": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/bootstrap-slider/-/bootstrap-slider-11.0.2.tgz", "integrity": "sha512-CdwS+Z6X79OkLes9RfDgPB9UIY/+81wTkm6ktdSB6hdyiRbjJLFQIjZdnEr55tDyXZfgC7U6yeSXkNN9ZdGqjA==", "license": "MIT" }, + "node_modules/bottleneck": { + "version": "2.19.5", + "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", + "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", + "license": "MIT" + }, "node_modules/boxen": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", @@ -17409,7 +18320,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -17773,7 +18683,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -17804,6 +18713,104 @@ "node": ">=8" } }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "license": "MIT" + }, + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/cli-spinners": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", @@ -17820,7 +18827,6 @@ "version": "0.6.5", "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "dev": true, "license": "MIT", "dependencies": { "string-width": "^4.2.0" @@ -18135,7 +19141,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, "license": "MIT", "dependencies": { "array-ify": "^1.0.0", @@ -18341,7 +19346,18 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dev": true, + "license": "ISC", + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", "license": "ISC", "dependencies": { "compare-func": "^2.0.0" @@ -18529,6 +19545,18 @@ "node": ">=14" } }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -18553,19 +19581,6 @@ "dev": true, "license": "MIT" }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" - } - }, "node_modules/copy-to-clipboard": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", @@ -19663,6 +20678,13 @@ "integrity": "sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==", "license": "BSD-3-Clause" }, + "node_modules/d3v3": { + "name": "d3", + "version": "3.5.17", + "resolved": "https://registry.npmjs.org/d3/-/d3-3.5.17.tgz", + "integrity": "sha512-yFk/2idb8OHPKkbAL8QaOaqENNoMhIaSHZerk3oQsECwkObkCpJyjYwCe+OHiq6UEdhe1m8ZGARRRO3ljFjlKg==", + "license": "BSD-3-Clause" + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -19828,6 +20850,8 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -20607,7 +21631,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, "license": "MIT", "dependencies": { "is-obj": "^2.0.0" @@ -20864,6 +21887,14 @@ "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", "license": "MIT" }, + "node_modules/emitter-component": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.2.tgz", + "integrity": "sha512-QdXO3nXOzZB4pAjM0n6ZE+R9/+kPpECA/XSELIcc54NeYVnBqIk+4DFiBgK+8QbV3mdvTG6nedl7dTYgO+5wDw==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/emittery": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", @@ -20883,6 +21914,12 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "license": "MIT" + }, "node_modules/emojis-list": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", @@ -21079,11 +22116,157 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-ci": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-11.1.1.tgz", + "integrity": "sha512-mT3ks8F0kwpo7SYNds6nWj0PaRh+qJxIeBVBXAKTN9hphAzZv7s0QAZQbqnB1fAv/r4pJUGE15BV9UrS31FP2w==", + "license": "MIT", + "dependencies": { + "execa": "^8.0.0", + "java-properties": "^1.0.2" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/env-ci/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/env-ci/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -21102,6 +22285,18 @@ "node": ">=4" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/enzyme": { "version": "3.11.0", "resolved": "https://registry.npmjs.org/enzyme/-/enzyme-3.11.0.tgz", @@ -21190,20 +22385,6 @@ "dev": true, "license": "MIT" }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -21656,6 +22837,19 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-resolver-alias": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-alias/-/eslint-import-resolver-alias-1.1.2.tgz", + "integrity": "sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + }, + "peerDependencies": { + "eslint-plugin-import": ">=1.4.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -23540,6 +24734,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/find-versions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-6.0.0.tgz", + "integrity": "sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==", + "license": "MIT", + "dependencies": { + "semver-regex": "^4.0.5", + "super-regex": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/first-chunk-stream": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-5.0.0.tgz", @@ -23847,6 +25057,52 @@ "node": ">= 0.6" } }, + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "node_modules/from2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/from2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/from2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/from2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", @@ -23957,6 +25213,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/function-timeout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-1.0.2.tgz", + "integrity": "sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/function.prototype.name": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", @@ -24098,6 +25366,12 @@ "node": ">=6.9.0" } }, + "node_modules/geographiclib-geodesic": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/geographiclib-geodesic/-/geographiclib-geodesic-2.1.1.tgz", + "integrity": "sha512-lkd8EUkPSByobWu9BPMHTdYA5AUZxOa8McmUNtBE9KrvUJEvSADnN6gTDmhXbi6NzdA16LtWLpSxLE/lIIRhyA==", + "license": "MIT" + }, "node_modules/geojson": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", @@ -24125,50 +25399,52 @@ "integrity": "sha512-NR0AyYyEnGrFS9JvSFmmotQDxVCORJgDHdvBwSatxl5aHarOLMh3KuGI83bCvCfObjfoEiDe8Ung8GGLGAtthw==" }, "node_modules/geostyler": { - "version": "12.0.2", - "resolved": "https://registry.npmjs.org/geostyler/-/geostyler-12.0.2.tgz", - "integrity": "sha512-H5Jgszl+UU6/mrMznRTh815ZQpv4zkPwv4Nomi3jS68I6Afmx01s+403UGPTufiT/j7g/ZOSyOH3avBhAYvbaw==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/geostyler/-/geostyler-14.2.0.tgz", + "integrity": "sha512-mcHNeds2OBvyCs+VdLHkq4vX1PrR/HKN7hnmySUVpNiZCZ4b0kDnPKe3gUOsh2wEs9pOC1soS9AbNlVC6XpH7w==", "license": "BSD-2-Clause", "dependencies": { + "@ant-design/icons": "^5.3.7", "@babel/polyfill": "^7.12.1", - "@dnd-kit/core": "^6.0.6", - "@dnd-kit/sortable": "^7.0.1", - "@dnd-kit/utilities": "^3.2.1", - "@monaco-editor/react": "^4.4.6", - "@types/chroma-js": "^2.1.4", - "@types/color": "^3.0.3", - "@types/file-saver": "^2.0.5", - "@types/geojson": "^7946.0.10", - "@types/lodash": "^4.14.188", - "@types/react-color": "^3.0.6", + "@dnd-kit/core": "^6.1.0", + "@dnd-kit/sortable": "^8.0.0", + "@dnd-kit/utilities": "^3.2.2", + "@monaco-editor/react": "^4.6.0", + "@types/chroma-js": "^2.4.4", + "@types/color": "^3.0.6", + "@types/file-saver": "^2.0.7", + "@types/geojson": "^7946.0.14", + "@types/lodash": "^4.17.4", "@ungap/url-search-params": "^0.2.2", + "antd": "^5.17.3", "blob": "^0.1.0", "chroma-js": "^2.4.2", "color": "^4.2.3", - "csstype": "^3.1.1", + "csstype": "^3.1.3", "file-saver": "^2.0.5", - "geostyler-cql-parser": "^3.0.1", + "geostyler-cql-parser": "^3.0.2", "geostyler-data": "^1.0.0", "geostyler-geojson-parser": "^1.0.1", - "geostyler-openlayers-parser": "^4.1.0", - "geostyler-sld-parser": "^5.0.0", - "geostyler-style": "^7.2.0", + "geostyler-mapbox-parser": "^5.0.1", + "geostyler-openlayers-parser": "^4.3.0", + "geostyler-qgis-parser": "^2.0.0", + "geostyler-sld-parser": "^5.3.1", + "geostyler-style": "^8.1.0", "geostyler-wfs-parser": "^2.0.0", "lodash": "^4.17.21", - "moment": "^2.29.4", - "monaco-editor": "^0.34.1", - "react-color": "^2.19.3", - "react-rnd": "^10.3.7", - "typescript-json-schema": "^0.55.0" + "monaco-editor": "^0.49.0", + "proj4": "^2.11.0", + "typescript-json-schema": "^0.64.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" }, "peerDependencies": { - "@ant-design/icons": ">=4.x", "@types/react": ">=16.x", "@types/react-dom": ">=16.x", - "antd": "4.x", "ol": ">=6.x", "react": ">=16.x", "react-dom": ">=16.x" @@ -24402,6 +25678,40 @@ "node": ">=4" } }, + "node_modules/geostyler-mapbox-parser": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/geostyler-mapbox-parser/-/geostyler-mapbox-parser-5.0.1.tgz", + "integrity": "sha512-uL79jfXuULPcg/Yxj9EGDU5IX0xIQmhawUL239aCwbFv4FiM9KTuTdXG1M7P5r3RV6EZsbE21ETahx4ZzojVkw==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/mapbox-gl": "^2.7.18", + "geostyler-style": "^8.0.0" + }, + "engines": { + "node": ">=18", + "npm": ">=9" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler-mapbox-parser/node_modules/geostyler-style": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-8.1.0.tgz", + "integrity": "sha512-8NgtzRc63bxC+1Vgqj/mMj77GX38CXXXWQ93PeZBdoMTkY9C/H0Anz38OrrlKdUgNVFZ/GJTNYwnX4wdaO5j6A==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=6.0.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, "node_modules/geostyler-openlayers-parser": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/geostyler-openlayers-parser/-/geostyler-openlayers-parser-4.3.0.tgz", @@ -24438,6 +25748,59 @@ "url": "https://opencollective.com/geostyler" } }, + "node_modules/geostyler-qgis-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/geostyler-qgis-parser/-/geostyler-qgis-parser-2.0.1.tgz", + "integrity": "sha512-R7Bl/u0EwFEqB4YaGOyIHTUAg8cuXh/SnaVekabEdJyJfjVdiTsOkpZfWbw0qLXw4ImXMr0XgKUTY74peb0Azw==", + "license": "BSD-2-Clause", + "dependencies": { + "@commitlint/cli": "^19.3.0", + "@commitlint/config-conventional": "^19.2.2", + "@semantic-release/changelog": "^6.0.3", + "@semantic-release/git": "^10.0.1", + "@types/lodash": "^4.14.190", + "@types/xml2js": "^0.4.11", + "@xmldom/xmldom": "^0.8.6", + "buffer": "^6.0.3", + "color": "^4.2.3", + "core-js": "^3.26.1", + "geostyler-cql-parser": "^3.0.1", + "geostyler-style": "^7.2.0", + "lodash": "^4.17.21", + "semantic-release": "^24.0.0", + "stream": "^0.0.2", + "string_decoder": "^1.3.0", + "timers": "^0.1.1", + "xml2js": "^0.6.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, + "node_modules/geostyler-qgis-parser/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/geostyler-sld-parser": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/geostyler-sld-parser/-/geostyler-sld-parser-5.4.0.tgz", @@ -24504,6 +25867,23 @@ "url": "https://opencollective.com/geostyler" } }, + "node_modules/geostyler/node_modules/geostyler-style": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/geostyler-style/-/geostyler-style-8.1.0.tgz", + "integrity": "sha512-8NgtzRc63bxC+1Vgqj/mMj77GX38CXXXWQ93PeZBdoMTkY9C/H0Anz38OrrlKdUgNVFZ/GJTNYwnX4wdaO5j6A==", + "license": "BSD-2-Clause", + "dependencies": { + "@types/lodash": "^4.14.201", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=16.0.0", + "npm": ">=6.0.0" + }, + "funding": { + "url": "https://opencollective.com/geostyler" + } + }, "node_modules/geotiff": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/geotiff/-/geotiff-2.1.3.tgz", @@ -25020,6 +26400,41 @@ "url": "https://github.com/fisker/git-hooks-list?sponsor=1" } }, + "node_modules/git-log-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", + "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "license": "MIT", + "dependencies": { + "argv-formatter": "~1.0.0", + "spawn-error-forwarder": "~1.0.0", + "split2": "~1.0.0", + "stream-combiner2": "~1.1.1", + "through2": "~2.0.0", + "traverse": "0.6.8" + } + }, + "node_modules/git-log-parser/node_modules/split2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", + "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", + "license": "ISC", + "dependencies": { + "through2": "~2.0.0" + } + }, + "node_modules/git-log-parser/node_modules/traverse": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", + "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/git-raw-commits": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-3.0.0.tgz", @@ -25207,6 +26622,30 @@ "license": "Apache-2.0", "peer": true }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "license": "MIT", + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-directory/node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -26079,6 +27518,18 @@ "node": ">=0.10.0" } }, + "node_modules/hook-std": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hosted-git-info": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", @@ -26676,20 +28127,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", - "dev": true, - "license": "MIT", - "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/immer": { "version": "10.1.1", "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", @@ -26725,6 +28162,19 @@ "node": ">=4" } }, + "node_modules/import-from-esm": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-from-esm/-/import-from-esm-2.0.0.tgz", + "integrity": "sha512-YVt14UZCgsX1vZQ3gKjkWVdBdHQ6eu3MPU1TBgL1H5orXe2+jWD006WCPPtOuwlQm10NuzOW5WawiF1Q9veW8g==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "import-meta-resolve": "^4.0.0" + }, + "engines": { + "node": ">=18.20" + } + }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -26814,6 +28264,16 @@ "node": ">=8" } }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/imports-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-5.0.0.tgz", @@ -27078,6 +28538,22 @@ "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "license": "MIT", + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -27653,7 +29129,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -27902,13 +29377,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true, - "license": "MIT" - }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -27980,6 +29448,22 @@ "license": "MIT", "peer": true }, + "node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", + "license": "MIT", + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -28230,6 +29714,15 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/java-properties": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", + "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/jed": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/jed/-/jed-1.1.1.tgz", @@ -29759,6 +31252,15 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/jiti": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", + "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, "node_modules/jpeg-js": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", @@ -30092,7 +31594,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true, "license": "MIT" }, "node_modules/json-parse-even-better-errors": { @@ -30223,7 +31724,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "dev": true, "engines": [ "node >= 0.2.0" ], @@ -30242,7 +31742,6 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", @@ -31145,71 +32644,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/less": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.2.tgz", - "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" - } - }, - "node_modules/less-loader": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-12.2.0.tgz", - "integrity": "sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 18.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } - } - }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -31427,6 +32861,18 @@ "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", "license": "MIT" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "license": "MIT" + }, "node_modules/lodash.curry": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", @@ -31449,6 +32895,12 @@ "optional": true, "peer": true }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, "node_modules/lodash.flattendeep": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", @@ -31480,7 +32932,18 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", "license": "MIT" }, "node_modules/lodash.memoize": { @@ -31496,6 +32959,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "license": "MIT" }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "license": "MIT" + }, "node_modules/lodash.once": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", @@ -31504,6 +32973,12 @@ "license": "MIT", "peer": true }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "license": "MIT" + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -31511,11 +32986,28 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "license": "MIT" + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, + "license": "MIT" + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "license": "MIT" + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", "license": "MIT" }, "node_modules/log-symbols": { @@ -31845,6 +33337,78 @@ "react": ">= 0.14.0" } }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/marked-terminal": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-7.3.0.tgz", + "integrity": "sha512-t4rBvPsHc57uE/2nJOLmMbZCQ4tgAccAED3ngXQqW6g+TxA488JzJ+FK3lQkzBQOI1mRV/r/Kq+1ZlJ4D0owQw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "ansi-regex": "^6.1.0", + "chalk": "^5.4.1", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.2.0", + "supports-hyperlinks": "^3.1.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <16" + } + }, + "node_modules/marked-terminal/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/marked-terminal/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/marked-terminal/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/match-sorter": { "version": "6.3.4", "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.4.tgz", @@ -32712,6 +34276,12 @@ "node": ">= 0.6" } }, + "node_modules/mgrs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mgrs/-/mgrs-1.0.0.tgz", + "integrity": "sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==", + "license": "MIT" + }, "node_modules/micromark": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", @@ -33416,20 +34986,6 @@ "webpack": "^5.0.0" } }, - "node_modules/mini-store": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/mini-store/-/mini-store-3.0.6.tgz", - "integrity": "sha512-YzffKHbYsMQGUWQRKdsearR79QsMzzJcDDmZKlJBqt5JNkqpyJHYlK6gP61O36X+sLf76sO9G6mhKBe83gIZIQ==", - "license": "MIT", - "dependencies": { - "hoist-non-react-statics": "^3.3.2", - "shallowequal": "^1.0.2" - }, - "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -33736,14 +35292,15 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "license": "MIT", + "peer": true, "engines": { "node": "*" } }, "node_modules/monaco-editor": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.34.1.tgz", - "integrity": "sha512-FKc80TyiMaruhJKKPz5SpJPIjL+dflGvz4CpuThaPMc94AyN7SeC9HQ8hrvaxX7EyHdJcUY5i4D0gNyJj1vSZQ==", + "version": "0.49.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.49.0.tgz", + "integrity": "sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ==", "license": "MIT" }, "node_modules/moo": { @@ -33854,6 +35411,17 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "node_modules/nanoid": { "version": "5.0.9", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", @@ -33929,24 +35497,6 @@ "optional": true, "peer": true }, - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -33963,6 +35513,12 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "license": "MIT" }, + "node_modules/nerf-dart": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", + "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "license": "MIT" + }, "node_modules/netmask": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", @@ -34065,6 +35621,21 @@ "node": ">=10.5.0" } }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/node-environment-flags": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", @@ -34379,6 +35950,166 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.2.tgz", + "integrity": "sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^8.0.0", + "@npmcli/config": "^9.0.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/map-workspaces": "^4.0.2", + "@npmcli/package-json": "^6.1.0", + "@npmcli/promise-spawn": "^8.0.2", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^9.0.1", + "@sigstore/tuf": "^3.0.0", + "abbrev": "^3.0.0", + "archy": "~1.0.0", + "cacache": "^19.0.1", + "chalk": "^5.3.0", + "ci-info": "^4.1.0", + "cli-columns": "^4.0.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.4.5", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^8.0.2", + "ini": "^5.0.0", + "init-package-json": "^7.0.2", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^4.0.0", + "libnpmaccess": "^9.0.0", + "libnpmdiff": "^7.0.0", + "libnpmexec": "^9.0.0", + "libnpmfund": "^6.0.0", + "libnpmhook": "^11.0.0", + "libnpmorg": "^7.0.0", + "libnpmpack": "^8.0.0", + "libnpmpublish": "^10.0.1", + "libnpmsearch": "^8.0.0", + "libnpmteam": "^7.0.0", + "libnpmversion": "^7.0.0", + "make-fetch-happen": "^14.0.3", + "minimatch": "^9.0.5", + "minipass": "^7.1.1", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^11.0.0", + "nopt": "^8.0.0", + "normalize-package-data": "^7.0.0", + "npm-audit-report": "^6.0.0", + "npm-install-checks": "^7.1.1", + "npm-package-arg": "^12.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-profile": "^11.0.1", + "npm-registry-fetch": "^18.0.2", + "npm-user-validate": "^3.0.0", + "p-map": "^4.0.0", + "pacote": "^19.0.1", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^4.0.0", + "semver": "^7.6.3", + "spdx-expression-parse": "^4.0.0", + "ssri": "^12.0.0", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^6.0.0", + "which": "^5.0.0", + "write-file-atomic": "^6.0.0" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, "node_modules/npm-bundled": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", @@ -34492,6 +36223,2391 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "8.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/metavuln-calculator": "^8.0.0", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.1", + "@npmcli/query": "^4.0.0", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^9.0.1", + "bin-links": "^5.0.0", + "cacache": "^19.0.1", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "json-stringify-nice": "^1.1.4", + "lru-cache": "^10.2.2", + "minimatch": "^9.0.4", + "nopt": "^8.0.0", + "npm-install-checks": "^7.1.0", + "npm-package-arg": "^12.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.1", + "pacote": "^19.0.0", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "proggy": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^4.0.0", + "semver": "^7.3.7", + "ssri": "^12.0.0", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/package-json": "^6.0.1", + "ci-info": "^4.0.0", + "ini": "^5.0.0", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "6.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^19.0.0", + "json-parse-even-better-errors": "^4.0.0", + "pacote": "^20.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { + "version": "20.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "6.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "normalize-package-data": "^7.0.0", + "proc-log": "^5.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.1.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "9.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^7.0.0", + "npm-normalize-package-bin": "^4.0.0", + "proc-log": "^5.0.0", + "read-cmd-shim": "^5.0.0", + "write-file-atomic": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "19.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/minizlib": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/p-map": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/tar": { + "version": "7.4.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.1.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.4.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "7.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/package-json": "^6.0.0", + "npm-package-arg": "^12.0.0", + "promzard": "^2.0.0", + "read": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.1.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^4.1.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "3.4.3", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "tar": "^6.2.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0", + "@npmcli/run-script": "^9.0.1", + "ci-info": "^4.0.0", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "proc-log": "^5.0.0", + "read": "^4.0.0", + "read-package-json-fast": "^4.0.0", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "11.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "8.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^8.0.0", + "@npmcli/run-script": "^9.0.1", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "10.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^7.0.0", + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1", + "proc-log": "^5.0.0", + "semver": "^7.3.7", + "sigstore": "^3.0.0", + "ssri": "^12.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "8.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^18.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "7.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.1", + "@npmcli/run-script": "^9.0.1", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.4.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "14.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", + "http-cache-semantics": "^4.1.1", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "ssri": "^12.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.1.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^3.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "11.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "tar": "^7.4.3", + "which": "^5.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minizlib": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "8.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/nopt/node_modules/abbrev": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "7.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^8.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "7.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "12.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^7.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "10.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "11.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "18.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "3.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.1", + "inBundle": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/npm/node_modules/pacote": { + "version": "19.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^4.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.11.1", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "^2.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "5.0.10", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.3", + "inBundle": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^3.0.0", + "@sigstore/tuf": "^3.0.0", + "@sigstore/verify": "^2.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { + "version": "2.0.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { + "version": "3.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^14.0.1", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { + "version": "2.0.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.20", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "12.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "3.0.1", + "debug": "^4.3.6", + "make-fetch-happen": "^14.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^5.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/which": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -35830,6 +39946,45 @@ "node": ">=8" } }, + "node_modules/p-each-series": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", + "license": "MIT", + "dependencies": { + "p-map": "^7.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-filter/node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -35840,6 +39995,15 @@ "node": ">=4" } }, + "node_modules/p-is-promise": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", + "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/p-iteration": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/p-iteration/-/p-iteration-1.1.8.tgz", @@ -35939,7 +40103,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -36269,16 +40432,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", @@ -36325,7 +40478,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, "license": "MIT", "dependencies": { "parse5": "^6.0.1" @@ -36335,7 +40487,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true, "license": "MIT" }, "node_modules/parseurl": { @@ -36607,6 +40758,132 @@ "node": ">= 6" } }, + "node_modules/pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "license": "MIT", + "dependencies": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "license": "MIT", + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "license": "MIT", + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "license": "MIT", + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "license": "MIT", + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "license": "MIT", + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/pkg-conf/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/pkg-dir": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", @@ -37563,6 +41840,17 @@ "node": ">=0.4.0" } }, + "node_modules/proj4": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/proj4/-/proj4-2.17.0.tgz", + "integrity": "sha512-BqVoruVAOUgkw5U9Ns76+E2nHZG0Y42tbkC+0BpyqjhwPIai29hoivyQoyelEKFSfaV3zkR3NqPRD0EwPM4Wug==", + "license": "MIT", + "dependencies": { + "geographiclib-geodesic": "^2.1.1", + "mgrs": "1.0.0", + "wkt-parser": "^1.5.1" + } + }, "node_modules/promise-all-reject-late": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/promise-all-reject-late/-/promise-all-reject-late-1.0.1.tgz", @@ -37784,14 +42072,6 @@ "license": "MIT", "peer": true }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", @@ -38254,16 +42534,16 @@ } }, "node_modules/rc-cascader": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-1.4.3.tgz", - "integrity": "sha512-Q4l9Mv8aaISJ+giVnM9IaXxDeMqHUGLvi4F+LksS6pHlaKlN4awop/L+IMjIXpL+ug/ojaCyv/ixcVopJYYCVA==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/rc-cascader/-/rc-cascader-3.34.0.tgz", + "integrity": "sha512-KpXypcvju9ptjW9FaN2NFcA2QH9E9LHKq169Y0eWtH4e/wHQ5Wh5qZakAgvb8EKZ736WZ3B0zLLOBsrsja5Dag==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "array-tree-filter": "^2.1.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1", - "warning": "^4.0.1" + "@babel/runtime": "^7.25.7", + "classnames": "^2.3.1", + "rc-select": "~14.16.2", + "rc-tree": "~5.13.0", + "rc-util": "^5.43.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -38271,13 +42551,14 @@ } }, "node_modules/rc-checkbox": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-2.3.2.tgz", - "integrity": "sha512-afVi1FYiGv1U0JlpNH/UaEXdh6WUJjcWokj/nUN2TgG80bfG+MDdbfHKlLcNNba94mbjy2/SXJ1HDgrOkXGAjg==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rc-checkbox/-/rc-checkbox-3.5.0.tgz", + "integrity": "sha512-aOAQc3E98HteIIsSqm6Xk2FPKIER6+5vyEFMZfo73TqM+VVAIqOkHoPjgKLqSNtVLWScoaM7vY2ZrGEheI79yg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1" + "classnames": "^2.3.2", + "rc-util": "^5.25.2" }, "peerDependencies": { "react": ">=16.9.0", @@ -38285,16 +42566,15 @@ } }, "node_modules/rc-collapse": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.1.4.tgz", - "integrity": "sha512-WayrhswKMwuJab9xbqFxXTgV0m6X8uOPEO6zm/GJ5YJiJ/wIh/Dd2VtWeI06HYUEnTFv0HNcYv+zWbB+p6OD2A==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/rc-collapse/-/rc-collapse-3.9.0.tgz", + "integrity": "sha512-swDdz4QZ4dFTo4RAUMLL50qP0EY62N2kvmk2We5xYdRwcRn8WcYtuetCJpwpaCbUfUt5+huLpVxhvmnK+PHrkA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", "rc-motion": "^2.3.4", - "rc-util": "^5.2.1", - "shallowequal": "^1.1.0" + "rc-util": "^5.27.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -38302,15 +42582,16 @@ } }, "node_modules/rc-dialog": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-8.5.3.tgz", - "integrity": "sha512-zoamT8L6+rBwnwjPlrZRxiHCHQXrTcWZD3a6ruoqEdUKP1KgO0eSjMDH9WlF3WEPYMVnb2G5SrjHrhnwgPDu5w==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/rc-dialog/-/rc-dialog-9.6.0.tgz", + "integrity": "sha512-ApoVi9Z8PaCQg6FsUzS8yvBEQy0ZL2PkuvAgrmohPkN3okps5WZ5WQWPc1RNuiOKaAYv8B97ACdsFU5LizzCqg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", + "@rc-component/portal": "^1.0.0-8", "classnames": "^2.2.6", "rc-motion": "^2.3.0", - "rc-util": "^5.6.1" + "rc-util": "^5.21.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -38318,13 +42599,16 @@ } }, "node_modules/rc-drawer": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-4.2.2.tgz", - "integrity": "sha512-zw48FATkAmJrEnfeRWiMqvKAzqGzUDLN1UXlluB7q7GgbR6mJFvc+QsmNrgxsFuMz86Lh9mKSIi7rXlPINmuzw==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/rc-drawer/-/rc-drawer-7.3.0.tgz", + "integrity": "sha512-DX6CIgiBWNpJIMGFO8BAISFkxiuKitoizooj4BDyee8/SnBn0zwO2FHrNDpqqepj0E/TFTDpmEBCyFuTgC7MOg==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.23.9", + "@rc-component/portal": "^1.1.1", "classnames": "^2.2.6", - "rc-util": "^5.7.0" + "rc-motion": "^2.6.1", + "rc-util": "^5.38.1" }, "peerDependencies": { "react": ">=16.9.0", @@ -38332,58 +42616,78 @@ } }, "node_modules/rc-dropdown": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.2.5.tgz", - "integrity": "sha512-dVO2eulOSbEf+F4OyhCY5iGiMVhUYY/qeXxL7Ex2jDBt/xc89jU07mNoowV6aWxwVOc70pxEINff0oM2ogjluA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-4.2.1.tgz", + "integrity": "sha512-YDAlXsPv3I1n42dv1JpdM7wJ+gSUBfeyPK59ZpBD9jQhK9jVuxpjj3NmWQHOBceA1zEPVX84T2wbdb2SD0UjmA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.18.3", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.2.6", - "rc-trigger": "^5.0.4" + "rc-util": "^5.44.1" }, "peerDependencies": { - "react": "*", - "react-dom": "*" + "react": ">=16.11.0", + "react-dom": ">=16.11.0" } }, "node_modules/rc-field-form": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-1.17.4.tgz", - "integrity": "sha512-QI9fe0F9YAmEX946lQpxTs6Qc/FwaLeakWquiBNEmhtqurj/qDdrv+eLb4TfnHTjkdyxU3G7p901WEuuBrrdkA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/rc-field-form/-/rc-field-form-2.7.0.tgz", + "integrity": "sha512-hgKsCay2taxzVnBPZl+1n4ZondsV78G++XVsMIJCAoioMjlMQR9YwAp7JZDIECzIu2Z66R+f4SFIRrO2DjDNAA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.8.4", - "async-validator": "^3.0.3", - "rc-util": "^5.0.0" + "@babel/runtime": "^7.18.0", + "@rc-component/async-validator": "^5.0.3", + "rc-util": "^5.32.2" }, "engines": { "node": ">=8.x" }, - "peerDependencies": { - "react": ">= 16.9.0", - "react-dom": ">= 16.9.0" - } - }, - "node_modules/rc-image": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-5.0.2.tgz", - "integrity": "sha512-bNCOGxo9ICe2S+MuVQtxVjk2esL0QJX4YcUB10S98z8CWO1sswySH6inH69YU778aCXs8/nKhtZMUmiU1To0bQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.11.2", - "classnames": "^2.2.6", - "rc-dialog": "~8.5.1", - "rc-util": "^5.0.6" - }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, - "node_modules/rc-input": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.7.2.tgz", - "integrity": "sha512-g3nYONnl4edWj2FfVoxsU3Ec4XTE+Hb39Kfh2MFxMZjp/0gGyPUgy/v7ZhS27ZxUFNkuIDYXm9PJsLyJbtg86A==", + "node_modules/rc-image": { + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/rc-image/-/rc-image-7.12.0.tgz", + "integrity": "sha512-cZ3HTyyckPnNnUb9/DRqduqzLfrQRyi+CdHjdqgsyDpI3Ln5UX1kXnAhPBSJj9pVRzwRFgqkN7p9b6HBDjmu/Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.2", + "@rc-component/portal": "^1.0.2", + "classnames": "^2.2.6", + "rc-dialog": "~9.6.0", + "rc-motion": "^2.6.2", + "rc-util": "^5.34.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-input-number": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-9.5.0.tgz", + "integrity": "sha512-bKaEvB5tHebUURAEXw35LDcnRZLq3x1k7GxfAqBMzmpHkDGzjAtnUL8y4y5N15rIFIg5IJgwr211jInl3cipag==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.10.1", + "@rc-component/mini-decimal": "^1.0.1", + "classnames": "^2.2.5", + "rc-input": "~1.8.0", + "rc-util": "^5.40.1" + }, + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" + } + }, + "node_modules/rc-input-number/node_modules/rc-input": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz", + "integrity": "sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.1", @@ -38395,53 +42699,52 @@ "react-dom": ">=16.0.0" } }, - "node_modules/rc-input-number": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/rc-input-number/-/rc-input-number-6.1.3.tgz", - "integrity": "sha512-qCLWK9NuuKGTsPXjRU/XvSOX7EKdnHlOpg59nPjYSDdH/czsAHZyYq50O6b6RF2TMPOjVpmsZQoMjNJYcnn6JA==", + "node_modules/rc-mentions": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-2.20.0.tgz", + "integrity": "sha512-w8HCMZEh3f0nR8ZEd466ATqmXFCMGMN5UFCzEUL0bM/nGw/wOS2GgRzKBcm19K++jDyuWCOJOdgcKGXU3fXfbQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.5", - "rc-util": "^5.0.1" + "@babel/runtime": "^7.22.5", + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.2.6", + "rc-input": "~1.8.0", + "rc-menu": "~9.16.0", + "rc-textarea": "~1.10.0", + "rc-util": "^5.34.1" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, - "node_modules/rc-mentions": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/rc-mentions/-/rc-mentions-1.5.3.tgz", - "integrity": "sha512-NG/KB8YiKBCJPHHvr/QapAb4f9YzLJn7kDHtmI1K6t7ZMM5YgrjIxNNhoRKKP9zJvb9PdPts69Hbg4ZMvLVIFQ==", + "node_modules/rc-mentions/node_modules/rc-input": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz", + "integrity": "sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6", - "rc-menu": "^8.0.1", - "rc-textarea": "^0.3.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.0.1" + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.18.1" }, "peerDependencies": { - "react": ">=16.9.0", - "react-dom": ">=16.9.0" + "react": ">=16.0.0", + "react-dom": ">=16.0.0" } }, "node_modules/rc-menu": { - "version": "8.10.8", - "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-8.10.8.tgz", - "integrity": "sha512-0gnSR0nmR/60NnK+72EGd+QheHyPSQ3wYg1TwX1zl0JJ9Gm0purFFykCXVv/G0Jynpt0QySPAos+bpHpjMZdoQ==", + "version": "9.16.1", + "resolved": "https://registry.npmjs.org/rc-menu/-/rc-menu-9.16.1.tgz", + "integrity": "sha512-ghHx6/6Dvp+fw8CJhDUHFHDJ84hJE3BXNCzSgLdmNiFErWSOaZNsihDAsKq9ByTALo/xkNIwtDFGIl6r+RPXBg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^2.0.0", "classnames": "2.x", - "mini-store": "^3.0.1", - "rc-motion": "^2.0.1", - "rc-trigger": "^5.1.2", - "rc-util": "^5.7.0", - "resize-observer-polyfill": "^1.5.0", - "shallowequal": "^1.1.0" + "rc-motion": "^2.4.3", + "rc-overflow": "^1.3.1", + "rc-util": "^5.27.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -38464,15 +42767,15 @@ } }, "node_modules/rc-notification": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-4.5.7.tgz", - "integrity": "sha512-zhTGUjBIItbx96SiRu3KVURcLOydLUHZCPpYEn1zvh+re//Tnq/wSxN4FKgp38n4HOgHSVxcLEeSxBMTeBBDdw==", + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-5.6.4.tgz", + "integrity": "sha512-KcS4O6B4qzM3KH7lkwOB7ooLPZ4b6J+VMmQgT51VZCeEcmghdeR4IrMcFq0LG+RPdnbe/ArT086tGM8Snimgiw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", - "rc-motion": "^2.2.0", - "rc-util": "^5.0.1" + "rc-motion": "^2.9.0", + "rc-util": "^5.20.1" }, "engines": { "node": ">=8.x" @@ -38499,13 +42802,14 @@ } }, "node_modules/rc-pagination": { - "version": "3.1.17", - "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-3.1.17.tgz", - "integrity": "sha512-/BQ5UxcBnW28vFAcP2hfh+Xg15W0QZn8TWYwdCApchMH1H0CxiaUUcULP8uXcFM1TygcdKWdt3JqsL9cTAfdkQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/rc-pagination/-/rc-pagination-5.1.0.tgz", + "integrity": "sha512-8416Yip/+eclTFdHXLKTxZvn70duYVGTvUUWbckCCZoIl3jagqke3GLsFrMs0bsQBikiYpZLD9206Ej4SOdOXQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", - "classnames": "^2.2.1" + "classnames": "^2.3.2", + "rc-util": "^5.38.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -38513,36 +42817,53 @@ } }, "node_modules/rc-picker": { - "version": "2.5.19", - "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-2.5.19.tgz", - "integrity": "sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA==", + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/rc-picker/-/rc-picker-4.11.3.tgz", + "integrity": "sha512-MJ5teb7FlNE0NFHTncxXQ62Y5lytq6sh5nUw0iH8OkHL/TjARSEvSHpr940pWgjGANpjCwyMdvsEV55l5tYNSg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.24.7", + "@rc-component/trigger": "^2.0.0", "classnames": "^2.2.1", - "date-fns": "2.x", - "dayjs": "1.x", - "moment": "^2.24.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.4.0", - "shallowequal": "^1.1.0" + "rc-overflow": "^1.3.2", + "rc-resize-observer": "^1.4.0", + "rc-util": "^5.43.0" }, "engines": { "node": ">=8.x" }, "peerDependencies": { + "date-fns": ">= 2.x", + "dayjs": ">= 1.x", + "luxon": ">= 3.x", + "moment": ">= 2.x", "react": ">=16.9.0", "react-dom": ">=16.9.0" + }, + "peerDependenciesMeta": { + "date-fns": { + "optional": true + }, + "dayjs": { + "optional": true + }, + "luxon": { + "optional": true + }, + "moment": { + "optional": true + } } }, "node_modules/rc-progress": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-3.1.4.tgz", - "integrity": "sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/rc-progress/-/rc-progress-4.0.0.tgz", + "integrity": "sha512-oofVMMafOCokIUIBnZLNcOZFsABaUw8PPrf1/y0ZBvKZNpOiu5h4AO9vv11Sw0p4Hb3D0yGWuEattcQGtNJ/aw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", - "classnames": "^2.2.6" + "classnames": "^2.2.6", + "rc-util": "^5.16.1" }, "peerDependencies": { "react": ">=16.9.0", @@ -38550,9 +42871,9 @@ } }, "node_modules/rc-rate": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.9.3.tgz", - "integrity": "sha512-2THssUSnRhtqIouQIIXqsZGzRczvp4WsH4WvGuhiwm+LG2fVpDUJliP9O1zeDOZvYfBE/Bup4SgHun/eCkbjgQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/rc-rate/-/rc-rate-2.13.1.tgz", + "integrity": "sha512-QUhQ9ivQ8Gy7mtMZPAjLbxBt5y9GRp65VcUyGUMF3N3fhiftivPHdpuDIaWIMOTEprAjZPC08bls1dQB+I1F2Q==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", @@ -38600,18 +42921,18 @@ } }, "node_modules/rc-select": { - "version": "12.1.13", - "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-12.1.13.tgz", - "integrity": "sha512-cPI+aesP6dgCAaey4t4upDbEukJe+XN0DK6oO/6flcCX5o28o7KNZD7JAiVtC/6fCwqwI/kSs7S/43dvHmBl+A==", + "version": "14.16.8", + "resolved": "https://registry.npmjs.org/rc-select/-/rc-select-14.16.8.tgz", + "integrity": "sha512-NOV5BZa1wZrsdkKaiK7LHRuo5ZjZYMDxPP6/1+09+FB4KoNi8jcG1ZqLE3AVCxEsYMBe65OBx71wFoHRTP3LRg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", + "@rc-component/trigger": "^2.1.1", "classnames": "2.x", "rc-motion": "^2.0.1", - "rc-overflow": "^1.0.0", - "rc-trigger": "^5.0.4", - "rc-util": "^5.9.8", - "rc-virtual-list": "^3.2.0" + "rc-overflow": "^1.3.1", + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.2" }, "engines": { "node": ">=8.x" @@ -38622,16 +42943,14 @@ } }, "node_modules/rc-slider": { - "version": "9.7.5", - "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-9.7.5.tgz", - "integrity": "sha512-LV/MWcXFjco1epPbdw1JlLXlTgmWpB9/Y/P2yinf8Pg3wElHxA9uajN21lJiWtZjf5SCUekfSP6QMJfDo4t1hg==", + "version": "11.1.8", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-11.1.8.tgz", + "integrity": "sha512-2gg/72YFSpKP+Ja5AjC5DPL1YnV8DEITDQrcc1eASrUYjl0esptaBVJBh5nLTXCCp15eD8EuGjwezVGSHhs9tQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.5", - "rc-tooltip": "^5.0.1", - "rc-util": "^5.16.1", - "shallowequal": "^1.1.0" + "rc-util": "^5.36.0" }, "engines": { "node": ">=8.x" @@ -38642,14 +42961,14 @@ } }, "node_modules/rc-steps": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-4.1.4.tgz", - "integrity": "sha512-qoCqKZWSpkh/b03ASGx1WhpKnuZcRWmvuW+ZUu4mvMdfvFzVxblTwUM+9aBd0mlEUFmt6GW8FXhMpHkK3Uzp3w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rc-steps/-/rc-steps-6.0.1.tgz", + "integrity": "sha512-lKHL+Sny0SeHkQKKDJlAjV5oZ8DwCdS2hFhAkIjuQt1/pB81M0cA0ErVFdHq9+jmPmFw1vJB2F5NBzFXLJxV+g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.2", + "@babel/runtime": "^7.16.7", "classnames": "^2.2.3", - "rc-util": "^5.0.1" + "rc-util": "^5.16.1" }, "engines": { "node": ">=8.x" @@ -38660,14 +42979,14 @@ } }, "node_modules/rc-switch": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-3.2.2.tgz", - "integrity": "sha512-+gUJClsZZzvAHGy1vZfnwySxj+MjLlGRyXKXScrtCTcmiYNPzxDFOxdQ/3pK1Kt/0POvwJ/6ALOR8gwdXGhs+A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rc-switch/-/rc-switch-4.1.0.tgz", + "integrity": "sha512-TI8ufP2Az9oEbvyCeVE4+90PDSljGyuwix3fV58p7HV2o4wBnVToEyomJRVyTaZeqNPAp+vqeo4Wnj5u0ZZQBg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.21.0", "classnames": "^2.2.1", - "rc-util": "^5.0.1" + "rc-util": "^5.30.0" }, "peerDependencies": { "react": ">=16.9.0", @@ -38675,16 +42994,17 @@ } }, "node_modules/rc-table": { - "version": "7.12.5", - "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.12.5.tgz", - "integrity": "sha512-XV4m5h0W+NjGkNzvp5ahOhYHyNG8oPNV9pTLre2EsfmyStXUJBICyfkNID7WZulMdCehv/Wa3MdqXwZ4EsJchw==", + "version": "7.50.5", + "resolved": "https://registry.npmjs.org/rc-table/-/rc-table-7.50.5.tgz", + "integrity": "sha512-FDZu8aolhSYd3v9KOc3lZOVAU77wmRRu44R0Wfb8Oj1dXRUsloFaXMSl6f7yuWZUxArJTli7k8TEOX2mvhDl4A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", + "@rc-component/context": "^1.4.0", "classnames": "^2.2.5", - "rc-resize-observer": "^1.0.0", - "rc-util": "^5.4.0", - "shallowequal": "^1.1.0" + "rc-resize-observer": "^1.1.0", + "rc-util": "^5.44.3", + "rc-virtual-list": "^3.14.2" }, "engines": { "node": ">=8.x" @@ -38695,17 +43015,18 @@ } }, "node_modules/rc-tabs": { - "version": "11.7.3", - "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-11.7.3.tgz", - "integrity": "sha512-5nd2NVss9TprPRV9r8N05SjQyAE7zDrLejxFLcbJ+BdLxSwnGnk3ws/Iq0smqKZUnPQC0XEvnpF3+zlllUUT2w==", + "version": "15.6.1", + "resolved": "https://registry.npmjs.org/rc-tabs/-/rc-tabs-15.6.1.tgz", + "integrity": "sha512-/HzDV1VqOsUWyuC0c6AkxVYFjvx9+rFPKZ32ejxX0Uc7QCzcEjTA9/xMgv4HemPKwzBNX8KhGVbbumDjnj92aA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", "classnames": "2.x", - "rc-dropdown": "^3.1.3", - "rc-menu": "^8.6.1", + "rc-dropdown": "~4.2.0", + "rc-menu": "~9.16.0", + "rc-motion": "^2.6.2", "rc-resize-observer": "^1.0.0", - "rc-util": "^5.5.0" + "rc-util": "^5.34.1" }, "engines": { "node": ">=8.x" @@ -38716,30 +43037,47 @@ } }, "node_modules/rc-textarea": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-0.3.7.tgz", - "integrity": "sha512-yCdZ6binKmAQB13hc/oehh0E/QRwoPP1pjF21aHBxlgXO3RzPF6dUu4LG2R4FZ1zx/fQd2L1faktulrXOM/2rw==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/rc-textarea/-/rc-textarea-1.10.0.tgz", + "integrity": "sha512-ai9IkanNuyBS4x6sOL8qu/Ld40e6cEs6pgk93R+XLYg0mDSjNBGey6/ZpDs5+gNLD7urQ14po3V6Ck2dJLt9SA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.1", + "rc-input": "~1.8.0", "rc-resize-observer": "^1.0.0", - "rc-util": "^5.7.0", - "shallowequal": "^1.1.0" + "rc-util": "^5.27.0" }, "peerDependencies": { "react": ">=16.9.0", "react-dom": ">=16.9.0" } }, + "node_modules/rc-textarea/node_modules/rc-input": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/rc-input/-/rc-input-1.8.0.tgz", + "integrity": "sha512-KXvaTbX+7ha8a/k+eg6SYRVERK0NddX8QX7a7AnRvUa/rEH0CNMlpcBzBkhI0wp2C8C4HlMoYl8TImSN+fuHKA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.18.1" + }, + "peerDependencies": { + "react": ">=16.0.0", + "react-dom": ">=16.0.0" + } + }, "node_modules/rc-tooltip": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-5.0.2.tgz", - "integrity": "sha512-A4FejSG56PzYtSNUU4H1pVzfhtkV/+qMT2clK0CsSj+9mbc4USEtpWeX6A/jjVL+goBOMKj8qlH7BCZmZWh/Nw==", + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/rc-tooltip/-/rc-tooltip-6.4.0.tgz", + "integrity": "sha512-kqyivim5cp8I5RkHmpsp1Nn/Wk+1oeloMv9c7LXNgDxUpGm+RbXJGL+OPvDlcRnx9DBeOe4wyOIl4OKUERyH1g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.11.2", - "rc-trigger": "^5.0.0" + "@rc-component/trigger": "^2.0.0", + "classnames": "^2.3.1", + "rc-util": "^5.44.3" }, "peerDependencies": { "react": ">=16.9.0", @@ -38747,19 +43085,19 @@ } }, "node_modules/rc-tree": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-4.1.5.tgz", - "integrity": "sha512-q2vjcmnBDylGZ9/ZW4F9oZMKMJdbFWC7um+DAQhZG1nqyg1iwoowbBggUDUaUOEryJP+08bpliEAYnzJXbI5xQ==", + "version": "5.13.1", + "resolved": "https://registry.npmjs.org/rc-tree/-/rc-tree-5.13.1.tgz", + "integrity": "sha512-FNhIefhftobCdUJshO7M8uZTA9F4OPGVXqGfZkkD/5soDeOhwO06T/aKTrg0WD8gRg/pyfq+ql3aMymLHCTC4A==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "2.x", "rc-motion": "^2.0.1", - "rc-util": "^5.0.0", - "rc-virtual-list": "^3.0.1" + "rc-util": "^5.16.1", + "rc-virtual-list": "^3.5.1" }, "engines": { - "node": ">=8.x" + "node": ">=10.x" }, "peerDependencies": { "react": "*", @@ -38767,16 +43105,16 @@ } }, "node_modules/rc-tree-select": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-4.3.3.tgz", - "integrity": "sha512-0tilOHLJA6p+TNg4kD559XnDX3PTEYuoSF7m7ryzFLAYvdEEPtjn0QZc5z6L0sMKBiBlj8a2kf0auw8XyHU3lA==", + "version": "5.27.0", + "resolved": "https://registry.npmjs.org/rc-tree-select/-/rc-tree-select-5.27.0.tgz", + "integrity": "sha512-2qTBTzwIT7LRI1o7zLyrCzmo5tQanmyGbSaGTIf7sYimCklAToVVfpMC6OAldSKolcnjorBYPNSKQqJmN3TCww==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.25.7", "classnames": "2.x", - "rc-select": "^12.0.0", - "rc-tree": "^4.0.0", - "rc-util": "^5.0.5" + "rc-select": "~14.16.2", + "rc-tree": "~5.13.0", + "rc-util": "^5.43.0" }, "peerDependencies": { "react": "*", @@ -38804,12 +43142,12 @@ } }, "node_modules/rc-upload": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-3.3.4.tgz", - "integrity": "sha512-v2sirR4JL31UTHD/f0LGUdd+tpFaOVUTPeIEjAXRP9kRN8TFhqOgcXl5ixtyqj90FmtRUmKmafCv0EmhBQUHqQ==", + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/rc-upload/-/rc-upload-4.9.2.tgz", + "integrity": "sha512-nHx+9rbd1FKMiMRYsqQ3NkXUv7COHPBo3X1Obwq9SWS6/diF/A0aJ5OHubvwUAIDs+4RMleljV0pcrNUc823GQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.10.1", + "@babel/runtime": "^7.18.3", "classnames": "^2.2.5", "rc-util": "^5.2.0" }, @@ -38819,9 +43157,9 @@ } }, "node_modules/rc-util": { - "version": "5.44.3", - "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.44.3.tgz", - "integrity": "sha512-q6KCcOFk3rv/zD3MckhJteZxb0VjAIFuf622B7ElK4vfrZdAzs16XR5p3VTdy3+U5jfJU5ACz4QnhLSuAGe5dA==", + "version": "5.44.4", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.44.4.tgz", + "integrity": "sha512-resueRJzmHG9Q6rI/DfK6Kdv9/Lfls05vzMs1Sk3M2P+3cJa+MakaZyWY8IPfehVuhPJFKrIY1IK4GqbiaiY5w==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", @@ -38906,6 +43244,19 @@ "react-dom": "^0.13.0 || ^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-async-script": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.2.0.tgz", + "integrity": "sha512-bCpkbm9JiAuMGhkqoAiC0lLkb40DJ0HOEJIku+9JDjxX3Rcs+ztEOG13wbrOskt3n2DTrjshhaQ/iay+SnGg5Q==", + "license": "MIT", + "dependencies": { + "hoist-non-react-statics": "^3.3.0", + "prop-types": "^15.5.0" + }, + "peerDependencies": { + "react": ">=16.4.1" + } + }, "node_modules/react-base16-styling": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.9.1.tgz", @@ -39167,6 +43518,19 @@ "react": ">=16.13.1" } }, + "node_modules/react-google-recaptcha": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/react-google-recaptcha/-/react-google-recaptcha-3.1.0.tgz", + "integrity": "sha512-cYW2/DWas8nEKZGD7SCu9BSuVz8iOcOLHChHyi7upUuVhkpkhYG/6N3KDiTQ3XAiZ2UAZkfvYKMfAHOzBOcGEg==", + "license": "MIT", + "dependencies": { + "prop-types": "^15.5.0", + "react-async-script": "^1.2.0" + }, + "peerDependencies": { + "react": ">=16.4.1" + } + }, "node_modules/react-hot-loader": { "version": "4.13.1", "resolved": "https://registry.npmjs.org/react-hot-loader/-/react-hot-loader-4.13.1.tgz", @@ -39217,17 +43581,6 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, - "node_modules/react-js-cron": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/react-js-cron/-/react-js-cron-2.1.2.tgz", - "integrity": "sha512-749P2P+6ezWbYrNxjzEejLfep+c9TLeY2+QSVcTwTV5awkgozs8ZYtjUB6jJ6XCBKt0jAdlFN0l3yNoQF5cGsQ==", - "license": "MIT", - "peerDependencies": { - "antd": ">=4.6.0", - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/react-json-tree": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.17.0.tgz", @@ -39455,27 +43808,6 @@ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, - "node_modules/react-rnd": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.14.tgz", - "integrity": "sha512-NLGc3IymymumPfHy3DXiHNIMOiTlj6xBNb2boHqrtwCgYDasNarpg8tdUY36JlJbrs0E4BvjYBkfEGqUPBsukg==", - "license": "MIT", - "dependencies": { - "re-resizable": "6.10.3", - "react-draggable": "4.4.6", - "tslib": "2.6.2" - }, - "peerDependencies": { - "react": ">=16.3.0", - "react-dom": ">=16.3.0" - } - }, - "node_modules/react-rnd/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "license": "0BSD" - }, "node_modules/react-router": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", @@ -42201,9 +46533,7 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", - "dev": true, - "license": "ISC", - "optional": true + "license": "ISC" }, "node_modules/saxes": { "version": "6.0.0", @@ -42291,6 +46621,353 @@ "node": ">=10" } }, + "node_modules/semantic-release": { + "version": "24.2.5", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-24.2.5.tgz", + "integrity": "sha512-9xV49HNY8C0/WmPWxTlaNleiXhWb//qfMzG2c5X8/k7tuWcu8RssbuS+sujb/h7PiWSXv53mrQvV9hrO9b7vuQ==", + "license": "MIT", + "dependencies": { + "@semantic-release/commit-analyzer": "^13.0.0-beta.1", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^11.0.0", + "@semantic-release/npm": "^12.0.0", + "@semantic-release/release-notes-generator": "^14.0.0-beta.1", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^9.0.0", + "debug": "^4.0.0", + "env-ci": "^11.0.0", + "execa": "^9.0.0", + "figures": "^6.0.0", + "find-versions": "^6.0.0", + "get-stream": "^6.0.0", + "git-log-parser": "^1.2.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^8.0.0", + "import-from-esm": "^2.0.0", + "lodash-es": "^4.17.21", + "marked": "^15.0.0", + "marked-terminal": "^7.3.0", + "micromatch": "^4.0.2", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-package-up": "^11.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.3.2", + "semver-diff": "^4.0.0", + "signale": "^1.2.1", + "yargs": "^17.5.1" + }, + "bin": { + "semantic-release": "bin/semantic-release.js" + }, + "engines": { + "node": ">=20.8.1" + } + }, + "node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/semantic-release/node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "license": "MIT", + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz", + "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", + "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/semver": { "version": "7.6.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", @@ -42303,6 +46980,33 @@ "node": ">=10" } }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -42718,6 +47422,103 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, + "node_modules/signale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", + "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", + "license": "MIT", + "dependencies": { + "chalk": "^2.3.2", + "figures": "^2.0.0", + "pkg-conf": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/signale/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/signale/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/signale/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/signale/node_modules/figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/signale/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/sigstore": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", @@ -42861,6 +47662,18 @@ "dev": true, "license": "MIT" }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", @@ -43132,6 +47945,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/spawn-error-forwarder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", + "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", + "license": "MIT" + }, "node_modules/spawn-wrap": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", @@ -43723,6 +48542,71 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/stream": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", + "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", + "license": "MIT", + "dependencies": { + "emitter-component": "^1.1.1" + } + }, + "node_modules/stream-browserify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", + "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", + "license": "MIT", + "dependencies": { + "inherits": "~2.0.4", + "readable-stream": "^3.5.0" + } + }, + "node_modules/stream-combiner2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", + "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", + "license": "MIT", + "dependencies": { + "duplexer2": "~0.1.0", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-combiner2/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/stream-combiner2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-combiner2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/stream-combiner2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -44181,6 +49065,22 @@ "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", "license": "MIT" }, + "node_modules/super-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/super-regex/-/super-regex-1.0.0.tgz", + "integrity": "sha512-CY8u7DtbvucKuquCmOFEKhr9Besln7n9uN8eFbwcoGYWXOMW07u2o8njWaiXt11ylS3qoGF55pILjRmPlbodyg==", + "license": "MIT", + "dependencies": { + "function-timeout": "^1.0.1", + "time-span": "^5.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/supercluster": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", @@ -44202,6 +49102,22 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -44711,6 +49627,27 @@ "url": "https://bevry.me/fund" } }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/thread-loader": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/thread-loader/-/thread-loader-4.0.4.tgz", @@ -44775,7 +49712,6 @@ "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true, "license": "MIT" }, "node_modules/through2": { @@ -44831,6 +49767,27 @@ "dev": true, "license": "MIT" }, + "node_modules/time-span": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/time-span/-/time-span-5.1.0.tgz", + "integrity": "sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==", + "license": "MIT", + "dependencies": { + "convert-hrtime": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/timers": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/timers/-/timers-0.1.1.tgz", + "integrity": "sha512-pkJC8uIP/gxDHxNQUBUbjHyl6oZfT+ofn7tbaHW+CFIUjI+Q2MBbHcx1JSBQfhDaTcO9bNg328q0i7Vk5PismQ==", + "license": "MIT" + }, "node_modules/timezone-mock": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/timezone-mock/-/timezone-mock-1.3.6.tgz", @@ -44856,6 +49813,12 @@ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", "license": "MIT" }, + "node_modules/tinyexec": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "license": "MIT" + }, "node_modules/tinyglobby": { "version": "0.2.10", "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", @@ -45431,6 +50394,458 @@ "dev": true, "license": "0BSD" }, + "node_modules/tsx": { + "version": "4.19.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", + "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tsx/node_modules/@esbuild/aix-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/android-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/darwin-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/freebsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-loong64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-mips64el": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-ppc64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-riscv64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-s390x": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/linux-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/netbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/openbsd-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/sunos-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-ia32": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/@esbuild/win32-x64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/tsx/node_modules/esbuild": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" + } + }, "node_modules/tuf-js": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", @@ -45643,18 +51058,18 @@ } }, "node_modules/typescript-json-schema": { - "version": "0.55.0", - "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.55.0.tgz", - "integrity": "sha512-BXaivYecUdiXWWNiUqXgY6A9cMWerwmhtO+lQE7tDZGs7Mf38sORDeQZugfYOZOHPZ9ulsD+w0LWjFDOQoXcwg==", + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/typescript-json-schema/-/typescript-json-schema-0.64.0.tgz", + "integrity": "sha512-Sew8llkYSzpxaMoGjpjD6NMFCr6DoWFHLs7Bz1LU48pzzi8ok8W+GZs9cG87IMBpC0UI7qwBMUI2um0LGxxLOg==", "license": "BSD-3-Clause", "dependencies": { "@types/json-schema": "^7.0.9", "@types/node": "^16.9.2", "glob": "^7.1.7", - "path-equal": "^1.1.2", + "path-equal": "^1.2.5", "safe-stable-stringify": "^2.2.0", "ts-node": "^10.9.1", - "typescript": "~4.8.2", + "typescript": "~5.1.0", "yargs": "^17.1.1" }, "bin": { @@ -45662,24 +51077,11 @@ } }, "node_modules/typescript-json-schema/node_modules/@types/node": { - "version": "16.18.125", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.125.tgz", - "integrity": "sha512-w7U5ojboSPfZP4zD98d+/cjcN2BDW6lKH2M0ubipt8L8vUC7qUAC6ENKGSJL4tEktH2Saw2K4y1uwSjyRGKMhw==", + "version": "16.18.126", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.126.tgz", + "integrity": "sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==", "license": "MIT" }, - "node_modules/typescript-json-schema/node_modules/typescript": { - "version": "4.8.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.4.tgz", - "integrity": "sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/ufo": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", @@ -45748,9 +51150,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -45763,6 +51165,15 @@ "node": ">=4" } }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", @@ -46159,6 +51570,15 @@ "node": ">= 0.4" } }, + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", @@ -46688,15 +52108,6 @@ "makeerror": "1.0.12" } }, - "node_modules/warning": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", - "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/watchpack": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", @@ -47530,6 +52941,12 @@ "dev": true, "license": "MIT" }, + "node_modules/wkt-parser": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/wkt-parser/-/wkt-parser-1.5.2.tgz", + "integrity": "sha512-1ZUiV1FTwSiSrgWzV9KXJuOF2BVW91KY/mau04BhnmgOdroRQea7Q0s5TVqwGLm0D2tZwObd/tBYXW49sSxp3Q==", + "license": "MIT" + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -47709,6 +53126,28 @@ "integrity": "sha512-Dn6vJ1Z9v1tepSjvnCpwk5QqwIPcEFKdgnjqfYOABv1ngSofuAhtlugcUC3ehS1OHdgDWSG6C5mvj+Qm15udTQ==", "license": "CC0-1.0" }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, "node_modules/xmlbuilder": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.0.0.tgz", @@ -48622,7 +54061,6 @@ "@testing-library/react-hooks": "*", "@testing-library/user-event": "*", "ace-builds": "^1.4.14", - "antd": "4.10.3", "brace": "^0.11.1", "memoize-one": "^5.1.1", "react": "^17.0.2", @@ -48635,22 +54073,38 @@ "version": "0.20.4", "license": "Apache-2.0", "dependencies": { + "@ant-design/icons": "^5.2.6", "@babel/runtime": "^7.25.6", + "@fontsource/fira-code": "^5.0.18", + "@fontsource/inter": "^5.0.20", "@types/json-bigint": "^1.0.4", "@visx/responsive": "^3.12.0", + "ace-builds": "^1.41.0", + "brace": "^0.11.1", + "classnames": "^2.2.5", + "core-js": "^3.38.1", "csstype": "^3.1.3", "d3-format": "^1.3.2", "d3-interpolate": "^3.0.1", "d3-scale": "^3.0.0", "d3-time": "^3.1.0", "d3-time-format": "^4.1.0", + "dayjs": "^1.11.13", + "dompurify": "^3.2.4", "fetch-retry": "^6.0.0", "jed": "^1.1.1", "lodash": "^4.17.21", "math-expression-evaluator": "^2.0.6", "pretty-ms": "^9.2.0", + "re-resizable": "^6.10.1", + "react-ace": "^10.1.0", + "react-draggable": "^4.4.6", "react-error-boundary": "^5.0.0", + "react-js-cron": "^5.2.0", "react-markdown": "^8.0.7", + "react-resize-detector": "^7.1.2", + "react-ultimate-pagination": "^1.3.2", + "regenerator-runtime": "^0.14.1", "rehype-raw": "^7.0.0", "rehype-sanitize": "^6.0.0", "remark-gfm": "^3.0.1", @@ -48668,10 +54122,12 @@ "@types/d3-time": "^3.0.4", "@types/d3-time-format": "^4.0.3", "@types/fetch-mock": "^7.3.8", + "@types/jquery": "^3.5.8", "@types/lodash": "^4.17.16", "@types/math-expression-evaluator": "^1.3.3", "@types/node": "^22.10.3", "@types/prop-types": "^15.7.2", + "@types/react-table": "^7.7.20", "@types/rison": "0.1.0", "@types/seedrandom": "^3.0.8", "fetch-mock": "^11.1.4", @@ -48690,9 +54146,12 @@ "@testing-library/user-event": "*", "@types/react": "*", "@types/react-loadable": "*", + "@types/react-window": "^1.8.8", "@types/tinycolor2": "*", + "antd": "^5.24.6", "nanoid": "^5.0.9", "react": "^17.0.2", + "react-dom": "^17.0.2", "react-loadable": "^5.5.0", "tinycolor2": "*" } @@ -49536,6 +54995,17 @@ ], "license": "MIT" }, + "packages/superset-ui-core/node_modules/react-js-cron": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/react-js-cron/-/react-js-cron-5.2.0.tgz", + "integrity": "sha512-+Mxm3cS7qmIoAIz7NVY27jvsJKNZ4tx+H/nNtMUJW4DcKR7jUIL1GP0jOD79K5j86Dq8jvShKJMh30+c8bmVtA==", + "license": "MIT", + "peerDependencies": { + "antd": ">=5.8.0", + "react": ">=17.0.0", + "react-dom": ">=17.0.0" + } + }, "packages/superset-ui-core/node_modules/remark-gfm": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz", @@ -49608,7 +55078,6 @@ "@storybook/react": "8.1.11", "@storybook/types": "8.4.7", "@types/react-loadable": "^5.5.11", - "antd": "4.10.3", "core-js": "3.40.0", "gh-pages": "^6.2.0", "jquery": "^3.7.1", @@ -50346,7 +55815,7 @@ "version": "0.20.3", "license": "Apache-2.0", "dependencies": { - "d3": "^3.5.17", + "d3v3": "npm:d3@3.5.17", "prop-types": "^15.8.1" }, "peerDependencies": { @@ -50563,8 +56032,7 @@ "@ant-design/icons": "^5.2.6", "@superset-ui/chart-controls": "*", "@superset-ui/core": "*", - "antd": "^4.10.3", - "geostyler": "^12.0.0", + "geostyler": "^14.1.3", "geostyler-data": "^1.0.0", "geostyler-openlayers-parser": "^4.0.0", "geostyler-style": "^7.2.0", diff --git a/superset-frontend/package.json b/superset-frontend/package.json index ad8a68d444d..f35cbee13c4 100644 --- a/superset-frontend/package.json +++ b/superset-frontend/package.json @@ -37,7 +37,7 @@ "src/setup/*" ], "scripts": { - "_prettier": "prettier './({src,spec,cypress-base,plugins,packages,.storybook}/**/*{.js,.jsx,.ts,.tsx,.css,.less,.scss,.sass}|package.json)'", + "_prettier": "prettier './({src,spec,cypress-base,plugins,packages,.storybook}/**/*{.js,.jsx,.ts,.tsx,.css,.scss,.sass}|package.json)'", "build": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=production BABEL_ENV=\"${BABEL_ENV:=production}\" webpack --color --mode production", "build-dev": "cross-env NODE_OPTIONS=--max_old_space_size=8192 NODE_ENV=development webpack --mode=development --color", "build-instrumented": "cross-env NODE_ENV=production BABEL_ENV=instrumented webpack --mode=production --color", @@ -70,6 +70,7 @@ "storybook": "cross-env NODE_ENV=development BABEL_ENV=development storybook dev -p 6006", "tdd": "cross-env NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=8192\" jest --watch", "test": "cross-env NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=8192\" jest --max-workers=80% --silent", + "test-loud": "cross-env NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=8192\" jest --max-workers=80%", "type": "tsc --noEmit", "update-maps": "jupyter nbconvert --to notebook --execute --inplace 'plugins/legacy-plugin-chart-country-map/scripts/Country Map GeoJSON Generator.ipynb' -Xfrozen_modules=off", "validate-release": "../RELEASING/validate_this_release.sh" @@ -81,12 +82,9 @@ "last 3 edge versions" ], "dependencies": { - "@ant-design/icons": "^5.2.6", "@emotion/cache": "^11.4.0", - "@emotion/react": "^11.13.3", + "@emotion/react": "^11.14.0", "@emotion/styled": "^11.3.0", - "@fontsource/fira-code": "^5.0.18", - "@fontsource/inter": "^5.0.20", "@reduxjs/toolkit": "^1.9.3", "@rjsf/core": "^5.21.1", "@rjsf/utils": "^5.24.3", @@ -115,6 +113,7 @@ "@superset-ui/switchboard": "file:./packages/superset-ui-switchboard", "@types/d3-format": "^3.0.1", "@types/d3-time-format": "^4.0.3", + "@types/react-google-recaptcha": "^2.1.9", "@visx/axis": "^3.8.0", "@visx/grid": "^3.5.0", "@visx/responsive": "^3.0.0", @@ -122,22 +121,16 @@ "@visx/tooltip": "^3.0.0", "@visx/xychart": "^3.5.1", "abortcontroller-polyfill": "^1.7.8", - "ace-builds": "^1.41.0", "ag-grid-community": "33.1.1", "ag-grid-react": "33.1.1", - "antd": "4.10.3", - "antd-v5": "npm:antd@^5.18.0", - "bootstrap": "^3.4.1", - "brace": "^0.11.1", + "antd": "^5.24.6", "chrono-node": "^2.7.8", "classnames": "^2.2.5", - "core-js": "^3.38.1", "d3-color": "^3.1.0", "d3-scale": "^2.1.2", "dayjs": "^1.11.13", "dom-to-image-more": "^3.2.0", "dom-to-pdf": "^0.3.2", - "dompurify": "^3.2.4", "echarts": "^5.6.0", "emotion-rgba": "0.0.12", "eslint-plugin-i18n-strings": "file:eslint-rules/eslint-plugin-i18n-strings", @@ -145,12 +138,14 @@ "fs-extra": "^11.2.0", "fuse.js": "^7.0.0", "geolib": "^2.0.24", - "geostyler": "^12.0.2", + "geostyler": "^14.1.3", "geostyler-data": "^1.0.0", "geostyler-openlayers-parser": "^4.3.0", - "geostyler-style": "^7.5.0", + "geostyler-qgis-parser": "2.0.1", + "geostyler-style": "7.5.0", "geostyler-wfs-parser": "^2.0.3", "googleapis": "^130.0.0", + "html-webpack-plugin": "^5.6.3", "immer": "^10.1.1", "interweave": "^13.1.0", "jquery": "^3.7.1", @@ -174,17 +169,15 @@ "rc-trigger": "^5.3.4", "re-resizable": "^6.10.1", "react": "^17.0.2", - "react-ace": "^10.1.0", "react-checkbox-tree": "^1.8.0", "react-color": "^2.13.8", "react-diff-viewer-continued": "^3.4.0", "react-dnd": "^11.1.3", "react-dnd-html5-backend": "^11.1.3", "react-dom": "^17.0.2", - "react-draggable": "^4.4.6", + "react-google-recaptcha": "^3.1.0", "react-hot-loader": "^4.13.1", "react-intersection-observer": "^9.16.0", - "react-js-cron": "^2.1.2", "react-json-tree": "^0.17.0", "react-lines-ellipsis": "^0.15.4", "react-loadable": "^5.5.0", @@ -198,18 +191,17 @@ "react-syntax-highlighter": "^15.4.5", "react-table": "^7.8.0", "react-transition-group": "^4.4.5", - "react-ultimate-pagination": "^1.3.2", "react-virtualized-auto-sizer": "^1.0.25", "react-window": "^1.8.10", "redux": "^4.2.1", "redux-localstorage": "^0.4.1", "redux-thunk": "^2.1.0", "redux-undo": "^1.0.0-beta9-9-7", - "regenerator-runtime": "^0.14.1", "rimraf": "^6.0.1", "rison": "^0.1.1", "scroll-into-view-if-needed": "^3.1.0", "simple-zstd": "^1.4.2", + "stream-browserify": "^3.0.0", "tinycolor2": "^1.4.2", "urijs": "^1.19.8", "use-event-callback": "^0.1.0", @@ -262,12 +254,12 @@ "@types/classnames": "^2.2.10", "@types/dom-to-image": "^2.6.7", "@types/fetch-mock": "^7.3.2", - "@types/jest": "^29.5.12", - "@types/jquery": "^3.5.8", + "@types/jest": "^29.5.14", "@types/js-levenshtein": "^1.1.3", "@types/json-bigint": "^1.0.4", "@types/math-expression-evaluator": "^1.3.3", "@types/mousetrap": "^1.6.15", + "@types/node": "^22.12.0", "@types/react": "^17.0.83", "@types/react-dom": "^17.0.26", "@types/react-gravatar": "^2.6.14", @@ -277,7 +269,6 @@ "@types/react-resizable": "^3.0.8", "@types/react-router-dom": "^5.3.3", "@types/react-syntax-highlighter": "^15.5.13", - "@types/react-table": "^7.7.20", "@types/react-transition-group": "^4.4.12", "@types/react-ultimate-pagination": "^1.2.4", "@types/react-virtualized-auto-sizer": "^1.0.4", @@ -286,6 +277,7 @@ "@types/redux-mock-store": "^1.0.6", "@types/rison": "0.1.0", "@types/sinon": "^17.0.3", + "@types/testing-library__jest-dom": "^5.14.9", "@types/tinycolor2": "^1.4.3", "@types/yargs": "12 - 18", "@typescript-eslint/eslint-plugin": "^5.62.0", @@ -304,6 +296,7 @@ "eslint": "^8.56.0", "eslint-config-airbnb": "^19.0.4", "eslint-config-prettier": "^7.2.0", + "eslint-import-resolver-alias": "^1.1.2", "eslint-import-resolver-typescript": "^3.7.0", "eslint-plugin-cypress": "^3.6.0", "eslint-plugin-file-progress": "^1.5.0", @@ -332,8 +325,6 @@ "jest-websocket-mock": "^2.5.0", "jsdom": "^26.0.0", "lerna": "^8.2.1", - "less": "^4.2.0", - "less-loader": "^12.2.0", "mini-css-extract-plugin": "^2.9.0", "open-cli": "^8.0.0", "po2json": "^0.4.5", @@ -352,6 +343,7 @@ "ts-jest": "^29.2.5", "ts-loader": "^9.5.1", "tscw-config": "^1.1.2", + "tsx": "^4.19.2", "typescript": "5.1.6", "vm-browserify": "^1.1.2", "webpack": "^5.98.0", @@ -362,6 +354,12 @@ "webpack-sources": "^3.2.3", "webpack-visualizer-plugin2": "^1.1.0" }, + "peerDependencies": { + "ace-builds": "^1.41.0", + "core-js": "^3.38.1", + "react-ace": "^10.1.0", + "regenerator-runtime": "^0.14.1" + }, "engines": { "node": "^20.16.0", "npm": "^10.8.1" @@ -371,7 +369,8 @@ "d3-color": "^3.1.0", "puppeteer": "^22.4.1", "underscore": "^1.13.7", - "jspdf": "^3.0.1" + "jspdf": "^3.0.1", + "nwsapi": "^2.2.13" }, "readme": "ERROR: No README data found!", "scarfSettings": { diff --git a/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb b/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb index 2a36b32b840..56df41714ad 100644 --- a/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb +++ b/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/package-lock.erb @@ -4194,7 +4194,7 @@ "peerDependencies": { "@emotion/react": "^11.4.1", "@types/react": "*", - "antd": "^4.9.4", + "antd": "^5.24.6", "react": "^16.13.1", "react-dom": "^16.13.1" } diff --git a/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/src/MyChart.erb b/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/src/MyChart.erb index c5b8583de13..5fd08d655b1 100644 --- a/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/src/MyChart.erb +++ b/superset-frontend/packages/generator-superset/generators/plugin-chart/templates/src/MyChart.erb @@ -25,29 +25,14 @@ import { <%= packageLabel %>Props, <%= packageLabel %>StylesProps } from './type // Theming variables are provided for your use via a ThemeProvider // imported from @superset-ui/core. For variables available, please visit -// https://github.com/apache-superset/superset-ui/blob/master/packages/superset-ui-core/src/style/index.ts +// https://github.com/apache-superset/superset-ui/blob/master/packages/superset-ui-core/src/theme/index.ts const Styles = styled.div<<%= packageLabel %>StylesProps>` - background-color: ${({ theme }) => theme.colors.secondary.light2}; - padding: ${({ theme }) => theme.gridUnit * 4}px; - border-radius: ${({ theme }) => theme.gridUnit * 2}px; + background-color: ${({ theme }) => theme.colors.primary.light2}; + padding: ${({ theme }) => theme.sizeUnit * 4}px; + border-radius: ${({ theme }) => theme.borderRadius}px; height: ${({ height }) => height}px; width: ${({ width }) => width}px; - - h3 { - /* You can use your props to control CSS! */ - margin-top: 0; - margin-bottom: ${({ theme }) => theme.gridUnit * 3}px; - font-size: ${({ theme, headerFontSize }) => - theme.typography.sizes[headerFontSize]}px; - font-weight: ${({ theme, boldText }) => - theme.typography.weights[boldText ? 'bold' : 'normal']}; - } - - pre { - height: ${({ theme, headerFontSize, height }) => - height - theme.gridUnit * 12 - theme.typography.sizes[headerFontSize]}px; - } `; /** diff --git a/superset-frontend/packages/superset-ui-chart-controls/package.json b/superset-frontend/packages/superset-ui-chart-controls/package.json index c487d3449d4..1ba1d2a35f0 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/package.json +++ b/superset-frontend/packages/superset-ui-chart-controls/package.json @@ -39,7 +39,6 @@ "@testing-library/react-hooks": "*", "@testing-library/user-event": "*", "ace-builds": "^1.4.14", - "antd": "4.10.3", "brace": "^0.11.1", "memoize-one": "^5.1.1", "react": "^17.0.2", diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx index 5468d66139c..18cedfbca9a 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/CertifiedIconWithTooltip.tsx @@ -18,7 +18,7 @@ */ import { kebabCase } from 'lodash'; import { t, useTheme, styled } from '@superset-ui/core'; -import Tooltip from './Tooltip'; +import { Tooltip } from '@superset-ui/core/components'; interface CertifiedIconWithTooltipProps { certifiedBy?: string | null; @@ -27,7 +27,7 @@ interface CertifiedIconWithTooltipProps { } const StyledDiv = styled.div` - margin-bottom: ${({ theme }) => theme.gridUnit * 2}px; + margin-bottom: ${({ theme }) => theme.sizeUnit * 2}px; `; function CertifiedIconWithTooltip({ @@ -58,7 +58,7 @@ function CertifiedIconWithTooltip({ > diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnOption.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnOption.tsx index db449b3450e..763bf0a7d11 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnOption.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnOption.tsx @@ -17,8 +17,12 @@ * under the License. */ import { useState, ReactNode, useLayoutEffect, RefObject } from 'react'; -import { css, SafeMarkdown, styled, SupersetTheme } from '@superset-ui/core'; -import { Tooltip } from './Tooltip'; +import { css, styled, SupersetTheme } from '@superset-ui/core'; +import { + SafeMarkdown, + Tooltip, + InfoTooltip, +} from '@superset-ui/core/components'; import { ColumnTypeLabel } from './ColumnTypeLabel/ColumnTypeLabel'; import CertifiedIconWithTooltip from './CertifiedIconWithTooltip'; import { ColumnMeta } from '../types'; @@ -28,7 +32,6 @@ import { getColumnTypeTooltipNode, } from './labelUtils'; import { SQLPopover } from './SQLPopover'; -import InfoTooltipWithTrigger from './InfoTooltipWithTrigger'; export type ColumnOptionProps = { column: ColumnMeta; @@ -40,7 +43,7 @@ const StyleOverrides = styled.span` display: flex; align-items: center; svg { - margin-right: ${({ theme }) => theme.gridUnit}px; + margin-right: ${({ theme }) => theme.sizeUnit}px; } `; @@ -82,7 +85,7 @@ export function ColumnOption({ css` - margin-right: ${theme.gridUnit}px; + margin-right: ${theme.sizeUnit}px; `} ref={labelRef} > @@ -98,15 +101,13 @@ export function ColumnOption({ /> )} {warningMarkdown && ( - } label={`warn-${column.column_name}`} - iconsStyle={{ marginLeft: 0 }} + iconStyle={{ marginLeft: 0 }} {...(column.error_text && { - className: 'text-danger', - icon: 'exclamation-circle', + type: 'error', })} /> )} diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx index 129449912a8..e9879a4f276 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ColumnTypeLabel/ColumnTypeLabel.tsx @@ -39,9 +39,9 @@ const TypeIconWrapper = styled.div` display: flex; justify-content: center; align-items: center; - width: ${theme.gridUnit * 6}px; - height: ${theme.gridUnit * 6}px; - margin-right: ${theme.gridUnit}px; + width: ${theme.sizeUnit * 6}px; + height: ${theme.sizeUnit * 6}px; + margin-right: ${theme.sizeUnit}px; && svg { margin-right: 0; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlHeader.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlHeader.tsx index 36d3182ab2e..f4311530674 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlHeader.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlHeader.tsx @@ -17,9 +17,9 @@ * under the License. */ import { ReactNode } from 'react'; -import { t } from '@superset-ui/core'; -import { InfoTooltipWithTrigger } from './InfoTooltipWithTrigger'; -import { Tooltip } from './Tooltip'; +import { t, css } from '@superset-ui/core'; +import { InfoCircleOutlined } from '@ant-design/icons'; +import { InfoTooltip, Tooltip } from '@superset-ui/core/components'; type ValidationError = string; @@ -60,7 +60,7 @@ export function ControlHeader({ {description && ( - - {' '} )} @@ -88,6 +88,7 @@ export function ControlHeader({ return null; } const labelClass = validationErrors.length > 0 ? 'text-danger' : ''; + return (
@@ -97,25 +98,30 @@ export function ControlHeader({ role={onClick ? 'button' : undefined} {...(onClick ? { onClick, tabIndex: 0 } : {})} className={labelClass} - style={{ cursor: onClick ? 'pointer' : '' }} > {label} {' '} {warning && ( - {/* TODO: Remove fa-icon */} - {/* eslint-disable-next-line icons/no-fa-icons-usage */} - + css` + font-size: ${theme.sizeUnit * 3}px; + color: ${theme.colorError}; + `} + /> {' '} )} {danger && ( - {/* TODO: Remove fa-icon */} - {/* eslint-disable-next-line icons/no-fa-icons-usage */} - + css` + font-size: ${theme.sizeUnit * 3}px; + color: ${theme.colorError}; + `} + />{' '} {' '} )} @@ -126,18 +132,17 @@ export function ControlHeader({ placement="top" title={validationErrors.join(' ')} > - {/* TODO: Remove fa-icon */} - {/* eslint-disable-next-line icons/no-fa-icons-usage */} - + css` + font-size: ${theme.sizeUnit * 3}px; + color: ${theme.colorError}; + `} + />{' '} {' '} )} {renderOptionalIcons()} - {required && ( - - * - - )} + {required && *}
{rightNode &&
{rightNode}
} diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlSubSectionHeader.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlSubSectionHeader.tsx index 676028b4530..39d6a3b6a5d 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlSubSectionHeader.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/ControlSubSectionHeader.tsx @@ -20,9 +20,8 @@ import { styled, css } from '@superset-ui/core'; export const ControlSubSectionHeader = styled.div` ${({ theme }) => css` - font-weight: ${theme.typography.weights.bold}; - font-size: ${theme.typography.sizes.s}; - margin-bottom: ${theme.gridUnit}px; + font-weight: ${theme.fontWeightStrong}; + margin-bottom: ${theme.sizeUnit}px; + font-size: ${theme.fontSizeSM}px; `} `; -export default ControlSubSectionHeader; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/Dropdown.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/Dropdown.tsx index 032365ebd5d..4e82e62cc03 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/Dropdown.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/Dropdown.tsx @@ -17,5 +17,4 @@ * under the License. */ -export { Dropdown } from 'antd'; -export type { DropDownProps } from 'antd/lib/dropdown'; +export { Dropdown, type DropdownProps } from '@superset-ui/core/components'; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx deleted file mode 100644 index 5551e94a809..00000000000 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/InfoTooltipWithTrigger.tsx +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 { CSSProperties } from 'react'; -import { kebabCase } from 'lodash'; -import { t } from '@superset-ui/core'; -import { Tooltip, TooltipProps, TooltipPlacement } from './Tooltip'; - -export interface InfoTooltipWithTriggerProps { - label?: string; - tooltip?: TooltipProps['title']; - icon?: string; - onClick?: () => void; - placement?: TooltipPlacement; - bsStyle?: string; - className?: string; - iconsStyle?: CSSProperties; -} - -export function InfoTooltipWithTrigger({ - label, - tooltip, - bsStyle, - onClick, - icon = 'info-circle', - className = 'text-muted', - placement = 'right', - iconsStyle = {}, -}: InfoTooltipWithTriggerProps) { - const iconClass = `fa fa-${icon} ${className} ${ - bsStyle ? `text-${bsStyle}` : '' - }`; - const iconEl = ( - { - if (event.key === 'Enter' || event.key === ' ') { - onClick(); - } - }) - } - /> - ); - if (!tooltip) { - return iconEl; - } - return ( - - {iconEl} - - ); -} - -export default InfoTooltipWithTrigger; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/Menu.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/Menu.tsx index 89a7405cde5..d19f596de18 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/Menu.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/Menu.tsx @@ -17,5 +17,4 @@ * under the License. */ -export { Menu } from 'antd'; -export type { MenuProps } from 'antd/lib/menu'; +export { Menu, type MenuProps } from '@superset-ui/core/components'; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx index 59beeee4c56..e33c3b73e0e 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/MetricOption.tsx @@ -18,17 +18,16 @@ */ import { useState, ReactNode, useLayoutEffect, RefObject } from 'react'; +import { css, styled, Metric, SupersetTheme } from '@superset-ui/core'; import { - css, - styled, - Metric, SafeMarkdown, - SupersetTheme, -} from '@superset-ui/core'; -import InfoTooltipWithTrigger from './InfoTooltipWithTrigger'; + Typography, + // TODO: somehow doesn't work with our main Tooltip (?) + RawAntdTooltip as Tooltip, + InfoTooltip, +} from '@superset-ui/core/components'; import { ColumnTypeLabel } from './ColumnTypeLabel/ColumnTypeLabel'; import CertifiedIconWithTooltip from './CertifiedIconWithTooltip'; -import Tooltip from './Tooltip'; import { getMetricTooltipNode } from './labelUtils'; import { SQLPopover } from './SQLPopover'; @@ -37,7 +36,7 @@ const FlexRowContainer = styled.div` display: flex; > svg { - margin-right: ${({ theme }) => theme.gridUnit}px; + margin-right: ${({ theme }) => theme.sizeUnit}px; } `; @@ -61,23 +60,26 @@ export function MetricOption({ url = '', }: MetricOptionProps) { const verbose = metric.verbose_name || metric.metric_name || metric.label; - const link = url ? ( - - {verbose} - - ) : ( - verbose - ); const label = ( css` - margin-right: ${theme.gridUnit}px; + margin-right: ${theme.sizeUnit}px; `} ref={labelRef} > - {link} + {url ? ( + + {verbose} + + ) : ( + verbose + )} ); @@ -111,15 +113,13 @@ export function MetricOption({ /> )} {warningMarkdown && ( - } label={`warn-${metric.metric_name}`} - iconsStyle={{ marginLeft: 0 }} + iconStyle={{ marginLeft: 0 }} {...(metric.error_text && { - className: 'text-danger', - icon: 'exclamation-circle', + type: 'error', })} /> )} diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/SQLPopover.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/SQLPopover.tsx index 3a29c4885cf..af0ff77db9e 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/SQLPopover.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/SQLPopover.tsx @@ -17,19 +17,18 @@ * under the License. */ import { useEffect, useState } from 'react'; -import { Popover } from 'antd-v5'; +import { Popover, type PopoverProps } from '@superset-ui/core/components'; import type ReactAce from 'react-ace'; -import type { PopoverProps } from 'antd-v5/lib/popover'; import { CalculatorOutlined } from '@ant-design/icons'; import { css, styled, useTheme, t } from '@superset-ui/core'; const StyledCalculatorIcon = styled(CalculatorOutlined)` ${({ theme }) => css` color: ${theme.colors.grayscale.base}; - font-size: ${theme.typography.sizes.s}px; + font-size: ${theme.fontSizeSM}px; & svg { - margin-left: ${theme.gridUnit}px; - margin-right: ${theme.gridUnit}px; + margin-left: ${theme.sizeUnit}px; + margin-right: ${theme.sizeUnit}px; } `} `; @@ -65,9 +64,9 @@ export const SQLPopover = (props: PopoverProps & { sqlExpression: string }) => { readOnly wrapEnabled style={{ - border: `1px solid ${theme.colors.grayscale.light2}`, - background: theme.colors.secondary.light5, - maxWidth: theme.gridUnit * 100, + border: `1px solid ${theme.colorBorder}`, + background: theme.colorPrimaryBg, + maxWidth: theme.sizeUnit * 100, }} /> } diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/Select.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/Select.tsx index 01fb74d2e8e..4831dcba107 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/Select.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/Select.tsx @@ -17,7 +17,10 @@ * under the License. */ import { useState, ReactNode } from 'react'; -import AntdSelect, { SelectProps as AntdSelectProps } from 'antd/lib/select'; +import { + RawAntdSelect as AntdSelect, + type RawAntdSelectProps as AntdSelectProps, +} from '@superset-ui/core/components'; export const { Option }: any = AntdSelect; @@ -35,7 +38,7 @@ export type SelectProps = Omit, 'options'> & { export default function Select({ creatable, onSearch, - dropdownMatchSelectWidth = false, + popupMatchSelectWidth = false, minWidth = '100%', showSearch: showSearch_ = true, onChange, @@ -73,7 +76,7 @@ export default function Select({ return ( - dropdownMatchSelectWidth={dropdownMatchSelectWidth} + popupMatchSelectWidth={popupMatchSelectWidth} showSearch={showSearch} onSearch={handleSearch} onChange={handleChange} diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx deleted file mode 100644 index 1fc482211b6..00000000000 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/Tooltip.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 { useTheme } from '@superset-ui/core'; -import { Tooltip as BaseTooltip } from 'antd-v5'; -import { - TooltipProps as BaseTooltipProps, - TooltipPlacement as BaseTooltipPlacement, -} from 'antd-v5/lib/tooltip'; - -export type TooltipProps = BaseTooltipProps; -export type TooltipPlacement = BaseTooltipPlacement; - -export const Tooltip = ({ - overlayStyle = {}, - color, - ...props -}: BaseTooltipProps) => { - const theme = useTheme(); - const defaultColor = `${theme.colors.grayscale.dark2}e6`; - return ( - - ); -}; - -export default Tooltip; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx index 4102fb2b9f3..6d371afcc4e 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx @@ -29,18 +29,18 @@ const TooltipSectionWrapper = styled.div` overflow: hidden; text-overflow: ellipsis; - font-size: ${theme.typography.sizes.s}px; + font-size: ${theme.fontSizeSM}px; line-height: 1.2; &:not(:last-of-type) { - margin-bottom: ${theme.gridUnit * 2}px; + margin-bottom: ${theme.sizeUnit * 2}px; } `} `; const TooltipSectionLabel = styled.span` ${({ theme }) => css` - font-weight: ${theme.typography.weights.bold}; + font-weight: ${theme.fontWeightStrong}; `} `; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/index.ts b/superset-frontend/packages/superset-ui-chart-controls/src/index.ts index e58bc940385..2a598267fb8 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/index.ts +++ b/superset-frontend/packages/superset-ui-chart-controls/src/index.ts @@ -25,14 +25,12 @@ export * from './operators'; // can't do `export * as sections from './sections'`, babel-transformer will fail export const sections = sectionsModule; -export * from './components/InfoTooltipWithTrigger'; export * from './components/ColumnOption'; export * from './components/ColumnTypeLabel/ColumnTypeLabel'; export * from './components/ControlSubSectionHeader'; export * from './components/Dropdown'; export * from './components/Menu'; export * from './components/MetricOption'; -export * from './components/Tooltip'; export * from './components/ControlHeader'; export * from './shared-controls'; diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/RadioButtonControl.tsx b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/RadioButtonControl.tsx index e9b7a9dd3dc..dadc5285233 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/RadioButtonControl.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/src/shared-controls/components/RadioButtonControl.tsx @@ -17,7 +17,8 @@ * under the License. */ import { ReactNode } from 'react'; -import { JsonValue, t, useTheme } from '@superset-ui/core'; +import { JsonValue, t } from '@superset-ui/core'; +import { Radio } from '@superset-ui/core/components'; import { ControlHeader } from '../../components/ControlHeader'; // [value, label] @@ -42,57 +43,38 @@ export default function RadioButtonControl({ ...props }: RadioButtonControlProps) { const currentValue = initialValue || options[0][0]; - const theme = useTheme(); return ( -
- -
- {options.map(([val, label]) => ( - - ))} +
+
+ + onChange(e.target.value)} + > + {options.map(([val, label]) => ( + { + e.currentTarget?.focus(); + onChange(val); + }} + > + {label} + + ))} +
{/* accessibility begin */}
{ data: T; } -// Ref: superset-frontend/src/components/Select/SupersetStyledSelect.tsx +// Ref: superset-frontend/@superset-ui/core/components/Select/SupersetStyledSelect.tsx export interface SelectControlConfig< O extends SelectOption = SelectOption, T extends SelectControlType = SelectControlType, diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx index c5b369aa2db..33d2a35cffd 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnOption.test.tsx @@ -17,26 +17,26 @@ * under the License. */ import '@testing-library/jest-dom'; -import { render } from '@testing-library/react'; -import { - ThemeProvider, - supersetTheme, - GenericDataType, -} from '@superset-ui/core'; +import { render } from '@superset-ui/core/spec'; +import { GenericDataType } from '@superset-ui/core'; import { ColumnOption, ColumnOptionProps } from '../../src'; -jest.mock('../../src/components/SQLPopover', () => ({ +jest.mock('@superset-ui/chart-controls/components/SQLPopover', () => ({ SQLPopover: () =>
, })); -jest.mock('../../src/components/ColumnTypeLabel/ColumnTypeLabel', () => ({ - ColumnTypeLabel: ({ type }: { type: string }) => ( -
{type}
- ), +jest.mock( + '@superset-ui/chart-controls/components/ColumnTypeLabel/ColumnTypeLabel', + () => ({ + ColumnTypeLabel: ({ type }: { type: string }) => ( +
{type}
+ ), + }), +); + +jest.mock('@superset-ui/core/components/InfoTooltip', () => ({ + InfoTooltip: () =>
, })); -jest.mock('../../src/components/InfoTooltipWithTrigger', () => () => ( -
-)); const defaultProps: ColumnOptionProps = { column: { @@ -49,11 +49,7 @@ const defaultProps: ColumnOptionProps = { }; const setup = (props: Partial = {}) => - render( - - - , - ); + render(); test('shows a label with verbose_name', () => { const { container } = setup(); const lbl = container.getElementsByClassName('option-label'); @@ -114,11 +110,11 @@ test('dttm column has correct column label if showType is true', () => { String(GenericDataType.Temporal), ); }); -test('doesnt show InfoTooltipWithTrigger when no warning', () => { +test('doesnt show InfoTooltip when no warning', () => { const { queryByText } = setup(); - expect(queryByText('mock-info-tooltip-with-trigger')).not.toBeInTheDocument(); + expect(queryByText('mock-tooltip')).not.toBeInTheDocument(); }); -test('shows a warning with InfoTooltipWithTrigger when it contains warning', () => { +test('shows a warning with InfoTooltip when it contains warning', () => { const { getByTestId } = setup({ ...defaultProps, column: { @@ -126,5 +122,5 @@ test('shows a warning with InfoTooltipWithTrigger when it contains warning', () warning_text: 'This is a warning', }, }); - expect(getByTestId('mock-info-tooltip-with-trigger')).toBeInTheDocument(); + expect(getByTestId('mock-tooltip')).toBeInTheDocument(); }); diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx index 603ac9172eb..350820207eb 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/ColumnTypeLabel.test.tsx @@ -17,7 +17,7 @@ * under the License. */ import { isValidElement } from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@superset-ui/core/spec'; import '@testing-library/jest-dom'; import { GenericDataType } from '@superset-ui/core'; diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx index 0011f862b29..f9f78af8ab1 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/InfoTooltipWithTrigger.test.tsx @@ -17,11 +17,10 @@ * under the License. */ import '@testing-library/jest-dom'; -import { fireEvent, render } from '@testing-library/react'; -import { ThemeProvider, supersetTheme } from '@superset-ui/core'; -import { InfoTooltipWithTrigger, InfoTooltipWithTriggerProps } from '../../src'; +import { fireEvent, render } from '@superset-ui/core/spec'; +import { InfoTooltip, InfoTooltipProps } from '@superset-ui/core/components'; -jest.mock('../../src/components/Tooltip', () => ({ +jest.mock('@superset-ui/core/components/Tooltip', () => ({ Tooltip: ({ children }: { children: React.ReactNode }) => (
{children}
), @@ -29,12 +28,8 @@ jest.mock('../../src/components/Tooltip', () => ({ const defaultProps = {}; -const setup = (props: Partial = {}) => - render( - - - , - ); +const setup = (props: Partial = {}) => + render(); test('renders a tooltip', () => { const { getAllByTestId } = setup({ @@ -44,31 +39,29 @@ test('renders a tooltip', () => { expect(getAllByTestId('mock-tooltip').length).toEqual(1); }); -test('renders an info icon', () => { - const { container } = setup(); - expect(container.getElementsByClassName('fa-info-circle')).toHaveLength(1); -}); - -test('responds to keypresses', () => { +test('responds to keydown events', () => { const clickHandler = jest.fn(); const { getByRole } = setup({ label: 'test', tooltip: 'this is a test', onClick: clickHandler, }); - fireEvent.keyPress(getByRole('button'), { + + fireEvent.keyDown(getByRole('button'), { key: 'Tab', code: 9, charCode: 9, }); expect(clickHandler).toHaveBeenCalledTimes(0); - fireEvent.keyPress(getByRole('button'), { + + fireEvent.keyDown(getByRole('button'), { key: 'Enter', code: 13, charCode: 13, }); expect(clickHandler).toHaveBeenCalledTimes(1); - fireEvent.keyPress(getByRole('button'), { + + fireEvent.keyDown(getByRole('button'), { key: ' ', code: 32, charCode: 32, @@ -76,9 +69,47 @@ test('responds to keypresses', () => { expect(clickHandler).toHaveBeenCalledTimes(2); }); -test('has a bsStyle', () => { +test('finds the info circle icon inside info variant', () => { const { container } = setup({ - bsStyle: 'something', + type: 'info', }); - expect(container.getElementsByClassName('text-something')).toHaveLength(1); + + const iconSpan = container.querySelector('svg[data-icon="info-circle"]'); + expect(iconSpan).toBeInTheDocument(); +}); + +test('finds the warning icon inside warning variant', () => { + const { container } = setup({ + type: 'warning', + }); + + const iconSpan = container.querySelector('svg[data-icon="warning"]'); + expect(iconSpan).toBeInTheDocument(); +}); + +test('finds the close circle icon inside error variant', () => { + const { container } = setup({ + type: 'error', + }); + + const iconSpan = container.querySelector('svg[data-icon="close-circle"]'); + expect(iconSpan).toBeInTheDocument(); +}); + +test('finds the question circle icon inside question variant', () => { + const { container } = setup({ + type: 'question', + }); + + const iconSpan = container.querySelector('svg[data-icon="question-circle"]'); + expect(iconSpan).toBeInTheDocument(); +}); + +test('finds the thunderbolt icon inside notice variant', () => { + const { container } = setup({ + type: 'notice', + }); + + const iconSpan = container.querySelector('svg[data-icon="thunderbolt"]'); + expect(iconSpan).toBeInTheDocument(); }); diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx index 49b78159f37..254a8401c82 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/MetricOption.test.tsx @@ -17,24 +17,30 @@ * under the License. */ import '@testing-library/jest-dom'; -import { render } from '@testing-library/react'; -import { ThemeProvider, supersetTheme } from '@superset-ui/core'; -import { MetricOption, MetricOptionProps } from '../../src'; +import { render } from '@superset-ui/core/spec'; +import { + MetricOption, + MetricOptionProps, +} from '../../src/components/MetricOption'; -jest.mock('../../src/components/InfoTooltipWithTrigger', () => () => ( -
-)); -jest.mock('../../src/components/ColumnTypeLabel/ColumnTypeLabel', () => ({ - ColumnTypeLabel: () =>
, +jest.mock('@superset-ui/core/components/InfoTooltip', () => ({ + InfoTooltip: () =>
, })); + jest.mock( - '../../src/components/Tooltip', + '@superset-ui/chart-controls/components/ColumnTypeLabel/ColumnTypeLabel', + () => ({ + ColumnTypeLabel: () =>
, + }), +); +jest.mock( + '@superset-ui/core/components/Tooltip', () => ({ children }: { children: React.ReactNode }) => (
{children}
), ); -jest.mock('../../src/components/SQLPopover', () => ({ +jest.mock('@superset-ui/chart-controls/components/SQLPopover', () => ({ SQLPopover: () =>
, })); @@ -54,20 +60,16 @@ const defaultProps = { }; const setup = (props: Partial = {}) => - render( - - - , - ); + render(); test('shows a label with verbose_name', () => { const { container } = setup(); const lbl = container.getElementsByClassName('option-label'); expect(lbl).toHaveLength(1); expect(`${lbl[0].textContent}`).toEqual(defaultProps.metric.verbose_name); }); -test('shows a InfoTooltipWithTrigger', () => { +test('shows a InfoTooltip', () => { const { getByTestId } = setup(); - expect(getByTestId('mock-info-tooltip-with-trigger')).toBeInTheDocument(); + expect(getByTestId('mock-tooltip')).toBeInTheDocument(); }); test('shows SQL Popover trigger', () => { const { getByTestId } = setup(); @@ -82,14 +84,14 @@ test('shows a label with metric_name when no verbose_name', () => { }); expect(getByText(defaultProps.metric.metric_name)).toBeInTheDocument(); }); -test('doesnt show InfoTooltipWithTrigger when no warning', () => { +test('doesnt show InfoTooltip when no warning', () => { const { queryByText } = setup({ metric: { ...defaultProps.metric, warning_text: '', }, }); - expect(queryByText('mock-info-tooltip-with-trigger')).not.toBeInTheDocument(); + expect(queryByText('mock-tooltip')).not.toBeInTheDocument(); }); test('sets target="_blank" when openInNewWindow is true', () => { const { getByRole } = setup({ diff --git a/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx b/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx index 9b5b760f791..64e75887abd 100644 --- a/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx +++ b/superset-frontend/packages/superset-ui-chart-controls/test/components/labelUtils.test.tsx @@ -16,10 +16,8 @@ * specific language governing permissions and limitations * under the License. */ -import { ReactElement } from 'react'; -import { render, screen } from '@testing-library/react'; +import { render, screen } from '@superset-ui/core/spec'; import '@testing-library/jest-dom'; -import { ThemeProvider, supersetTheme } from '@superset-ui/core'; import { getColumnLabelText, getColumnTooltipNode, @@ -27,9 +25,6 @@ import { getColumnTypeTooltipNode, } from '../../src/components/labelUtils'; -const renderWithTheme = (ui: ReactElement) => - render({ui}); - test("should get column name when column doesn't have verbose_name", () => { expect( getColumnLabelText({ @@ -78,7 +73,7 @@ test('should get null for column datatype tooltip when type is blank', () => { }); test('should get column datatype rendered as tooltip when column has a type', () => { - renderWithTheme( + render( <> {getColumnTypeTooltipNode({ id: 123, @@ -96,7 +91,7 @@ test('should get column datatype rendered as tooltip when column has a type', () test('should get column name, verbose name and description when it has a verbose name', () => { const ref = { current: { scrollWidth: 100, clientWidth: 100 } }; - renderWithTheme( + render( <> {getColumnTooltipNode( { @@ -120,7 +115,7 @@ test('should get column name, verbose name and description when it has a verbose test('should get column name as tooltip if it overflowed', () => { const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - renderWithTheme( + render( <> {getColumnTooltipNode( { @@ -141,7 +136,7 @@ test('should get column name as tooltip if it overflowed', () => { test('should get column name, verbose name and description as tooltip if it overflowed', () => { const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - renderWithTheme( + render( <> {getColumnTooltipNode( { @@ -180,7 +175,7 @@ test('should get null as tooltip in metric', () => { test('should get metric name, verbose name and description as tooltip in metric', () => { const ref = { current: { scrollWidth: 100, clientWidth: 100 } }; - renderWithTheme( + render( <> {getMetricTooltipNode( { @@ -203,7 +198,7 @@ test('should get metric name, verbose name and description as tooltip in metric' test('should get metric name as tooltip if it overflowed', () => { const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - renderWithTheme( + render( <> {getMetricTooltipNode( { @@ -224,7 +219,7 @@ test('should get metric name as tooltip if it overflowed', () => { test('should get metric name, verbose name and description in tooltip if it overflowed', () => { const ref = { current: { scrollWidth: 200, clientWidth: 100 } }; - renderWithTheme( + render( <> {getMetricTooltipNode( { diff --git a/superset-frontend/packages/superset-ui-core/.eslintrc b/superset-frontend/packages/superset-ui-core/.eslintrc new file mode 100644 index 00000000000..e0ff7c67bb8 --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/.eslintrc @@ -0,0 +1,68 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +{ + "plugins": ["jest", "jest-dom", "no-only-tests", "testing-library"], + "env": { + "jest/globals": true + }, + "settings": { + "jest": { + "version": "detect" + } + }, + "extends": [ + "plugin:jest/recommended", + "plugin:jest-dom/recommended", + "plugin:testing-library/react" + ], + "overrides": [ + { + "files": [ + "**/*.stories.*", + "**/*.overview.*", + "**/fixtures.*" + ], + "rules": { + "import/no-extraneous-dependencies": "off" + } + } + ], + "rules": { + "import/no-extraneous-dependencies": ["error", { "devDependencies": true }], + "jest/consistent-test-it": "error", + "no-only-tests/no-only-tests": "error", + "prefer-promise-reject-errors": 0, + + "testing-library/no-node-access": "off", + "testing-library/prefer-screen-queries": "off", + "testing-library/no-container": "off", + "testing-library/await-async-queries": "off", + "testing-library/await-async-utils": "off", + "testing-library/no-await-sync-events": "off", + "testing-library/no-render-in-lifecycle": "off", + "testing-library/no-unnecessary-act": "off", + "testing-library/no-wait-for-multiple-assertions": "off", + "testing-library/await-async-events": "off", + "testing-library/no-wait-for-side-effects": "off", + "testing-library/prefer-presence-queries": "off", + "testing-library/render-result-naming-convention": "off", + "testing-library/prefer-find-by": "off", + "testing-library/no-manual-cleanup": "off" + } +} diff --git a/superset-frontend/packages/superset-ui-core/__mocks__/mockExportObject.js b/superset-frontend/packages/superset-ui-core/__mocks__/mockExportObject.js new file mode 100644 index 00000000000..ab22d88b5b2 --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/__mocks__/mockExportObject.js @@ -0,0 +1,19 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +module.exports = {}; diff --git a/superset-frontend/packages/superset-ui-core/__mocks__/mockExportString.js b/superset-frontend/packages/superset-ui-core/__mocks__/mockExportString.js new file mode 100644 index 00000000000..5b7f1d6da96 --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/__mocks__/mockExportString.js @@ -0,0 +1,19 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ +module.exports = 'test-file-stub'; diff --git a/superset-frontend/packages/superset-ui-core/__mocks__/svgrMock.tsx b/superset-frontend/packages/superset-ui-core/__mocks__/svgrMock.tsx new file mode 100644 index 00000000000..4f1178bee8d --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/__mocks__/svgrMock.tsx @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 { SVGProps, forwardRef } from 'react'; + +const SvgrMock = forwardRef>( + (props, ref) => , +); + +SvgrMock.displayName = 'SvgrMock'; + +export const ReactComponent = SvgrMock; +export default SvgrMock; diff --git a/superset-frontend/packages/superset-ui-core/package.json b/superset-frontend/packages/superset-ui-core/package.json index a6393c22e8b..ce42004f1ef 100644 --- a/superset-frontend/packages/superset-ui-core/package.json +++ b/superset-frontend/packages/superset-ui-core/package.json @@ -24,21 +24,37 @@ "lib" ], "dependencies": { + "@ant-design/icons": "^5.2.6", "@babel/runtime": "^7.25.6", + "@fontsource/fira-code": "^5.0.18", + "@fontsource/inter": "^5.0.20", "@types/json-bigint": "^1.0.4", + "ace-builds": "^1.41.0", + "brace": "^0.11.1", + "classnames": "^2.2.5", "csstype": "^3.1.3", + "core-js": "^3.38.1", "d3-format": "^1.3.2", + "dayjs": "^1.11.13", "d3-interpolate": "^3.0.1", "d3-scale": "^3.0.0", "d3-time": "^3.1.0", "d3-time-format": "^4.1.0", + "dompurify": "^3.2.4", "fetch-retry": "^6.0.0", "jed": "^1.1.1", "lodash": "^4.17.21", "math-expression-evaluator": "^2.0.6", "pretty-ms": "^9.2.0", + "re-resizable": "^6.10.1", + "react-ace": "^10.1.0", + "react-js-cron": "^5.2.0", + "react-draggable": "^4.4.6", + "react-resize-detector": "^7.1.2", + "react-ultimate-pagination": "^1.3.2", "react-error-boundary": "^5.0.0", "react-markdown": "^8.0.7", + "regenerator-runtime": "^0.14.1", "rehype-raw": "^7.0.0", "rehype-sanitize": "^6.0.0", "remark-gfm": "^3.0.1", @@ -56,7 +72,9 @@ "@types/d3-scale": "^2.1.1", "@types/d3-time": "^3.0.4", "@types/d3-time-format": "^4.0.3", + "@types/react-table": "^7.7.20", "@types/fetch-mock": "^7.3.8", + "@types/jquery": "^3.5.8", "@types/lodash": "^4.17.16", "@types/math-expression-evaluator": "^1.3.3", "@types/node": "^22.10.3", @@ -69,6 +87,7 @@ "timezone-mock": "1.3.6" }, "peerDependencies": { + "antd": "^5.24.6", "@emotion/cache": "^11.4.0", "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", @@ -79,13 +98,37 @@ "@testing-library/user-event": "*", "@types/react": "*", "@types/react-loadable": "*", + "@types/react-window": "^1.8.8", "@types/tinycolor2": "*", "nanoid": "^5.0.9", "react": "^17.0.2", + "react-dom": "^17.0.2", "react-loadable": "^5.5.0", "tinycolor2": "*" }, "publishConfig": { "access": "public" + }, + "exports": { + ".": { + "import": "./esm/index.js", + "require": "./lib/index.js", + "types": "./lib/index.d.ts" + }, + "./components/*": { + "import": "./esm/components/*/index.js", + "require": "./lib/components/*/index.js", + "types": "./lib/components/*/index.d.ts" + }, + "./components": { + "import": "./esm/components/index.js", + "require": "./lib/components/index.js", + "types": "./lib/components/index.d.ts" + }, + "./utils/*": { + "import": "./esm/utils/*.js", + "require": "./lib/utils/*.js", + "types": "./lib/utils/*.d.ts" + } } } diff --git a/superset-frontend/packages/superset-ui-core/src/chart-composition/tooltip/TooltipTable.tsx b/superset-frontend/packages/superset-ui-core/src/chart-composition/tooltip/TooltipTable.tsx index 4952d821f1a..6e17d8134c2 100644 --- a/superset-frontend/packages/superset-ui-core/src/chart-composition/tooltip/TooltipTable.tsx +++ b/superset-frontend/packages/superset-ui-core/src/chart-composition/tooltip/TooltipTable.tsx @@ -16,8 +16,8 @@ * specific language governing permissions and limitations * under the License. */ - -import { CSSProperties, PureComponent, ReactNode } from 'react'; +import { CSSProperties, ReactNode } from 'react'; +import { Table, type TableColumnsType } from 'antd'; interface TooltipRowData { key: string | number; @@ -27,43 +27,52 @@ interface TooltipRowData { valueStyle?: CSSProperties; } -const defaultProps = { - className: '', - data: [] as TooltipRowData[], -}; - -type Props = { +interface TooltipTableProps { className?: string; data: TooltipRowData[]; -} & Readonly; +} const VALUE_CELL_STYLE: CSSProperties = { paddingLeft: 8, textAlign: 'right' }; -export default class TooltipTable extends PureComponent { - static defaultProps = defaultProps; +const TooltipTable = ({ className = '', data }: TooltipTableProps) => { + const columns: TableColumnsType = [ + { + title: '', + dataIndex: 'keyColumn', + key: 'keyColumn', + render: (text, record) => ( +
{record.keyColumn ?? record.key}
+ ), + }, + { + title: '', + dataIndex: 'valueColumn', + key: 'valueColumn', + align: 'right', + render: (text, record) => ( +
+ {record.valueColumn} +
+ ), + }, + ]; - render() { - const { className, data } = this.props; + return ( + + ); +}; - return ( -
- - {data.map(({ key, keyColumn, keyStyle, valueColumn, valueStyle }) => ( - - - - - ))} - -
{keyColumn ?? key} - {valueColumn} -
- ); - } -} +export default TooltipTable; diff --git a/superset-frontend/packages/superset-ui-core/src/chart/components/FallbackComponent.tsx b/superset-frontend/packages/superset-ui-core/src/chart/components/FallbackComponent.tsx index 4d34fc88e8d..d5ff70c954c 100644 --- a/superset-frontend/packages/superset-ui-core/src/chart/components/FallbackComponent.tsx +++ b/superset-frontend/packages/superset-ui-core/src/chart/components/FallbackComponent.tsx @@ -18,7 +18,7 @@ */ import { t } from '@superset-ui/core'; -import { SupersetTheme } from '../../style'; +import { SupersetTheme } from '../..'; import { FallbackPropsWithDimension } from './SuperChart'; export type Props = FallbackPropsWithDimension; diff --git a/superset-frontend/packages/superset-ui-core/src/chart/components/NoResultsComponent.tsx b/superset-frontend/packages/superset-ui-core/src/chart/components/NoResultsComponent.tsx index 73e8df62584..3bcb3e3a89a 100644 --- a/superset-frontend/packages/superset-ui-core/src/chart/components/NoResultsComponent.tsx +++ b/superset-frontend/packages/superset-ui-core/src/chart/components/NoResultsComponent.tsx @@ -18,7 +18,7 @@ */ import { CSSProperties } from 'react'; -import { css, styled } from '../../style'; +import { css, styled } from '../../theme'; import { t } from '../../translation'; const MESSAGE_STYLES: CSSProperties = { maxWidth: 800 }; @@ -36,16 +36,16 @@ const Container = styled.div<{ text-align: center; height: ${height}px; width: ${width}px; - padding: ${theme.gridUnit * 4}px; + padding: ${theme.sizeUnit * 4}px; & .no-results-title { - font-size: ${theme.typography.sizes.l}px; - font-weight: ${theme.typography.weights.bold}; - padding-bottom: ${theme.gridUnit * 2}; + font-size: ${theme.fontSizeLG}px; + font-weight: ${theme.fontWeightStrong}; + padding-bottom: ${theme.sizeUnit * 2}; } & .no-results-body { - font-size: ${theme.typography.sizes.m}px; + font-size: ${theme.fontSize}px; } `} `; diff --git a/superset-frontend/packages/superset-ui-core/src/chart/components/reactify.tsx b/superset-frontend/packages/superset-ui-core/src/chart/components/reactify.tsx index 0a1bee16c54..c52f13d0de0 100644 --- a/superset-frontend/packages/superset-ui-core/src/chart/components/reactify.tsx +++ b/superset-frontend/packages/superset-ui-core/src/chart/components/reactify.tsx @@ -18,7 +18,7 @@ */ // eslint-disable-next-line no-restricted-syntax -- whole React import is required for `reactify.test.tsx` Jest test passing. -import React, { Component, ComponentClass, WeakValidationMap } from 'react'; +import { Component, ComponentClass, WeakValidationMap } from 'react'; // TODO: Note that id and className can collide between Props and ReactifyProps // leading to (likely) unexpected behaviors. We should either require Props to not diff --git a/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts b/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts index f953e498588..a886dacdb9e 100644 --- a/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts +++ b/superset-frontend/packages/superset-ui-core/src/chart/models/ChartProps.ts @@ -37,7 +37,7 @@ import { SetDataMaskHook, } from '../types/Base'; import { QueryData, DataRecordFilters } from '..'; -import { SupersetTheme } from '../../style'; +import { SupersetTheme } from '../../theme'; // TODO: more specific typing for these fields of ChartProps type AnnotationData = PlainObject; diff --git a/superset-frontend/src/components/Alert/Alert.stories.tsx b/superset-frontend/packages/superset-ui-core/src/components/Alert/Alert.stories.tsx similarity index 96% rename from superset-frontend/src/components/Alert/Alert.stories.tsx rename to superset-frontend/packages/superset-ui-core/src/components/Alert/Alert.stories.tsx index 649abaa16a9..97241e10580 100644 --- a/superset-frontend/src/components/Alert/Alert.stories.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/Alert/Alert.stories.tsx @@ -16,7 +16,8 @@ * specific language governing permissions and limitations * under the License. */ -import Alert, { AlertProps } from './index'; +import { Alert } from '.'; +import type { AlertProps } from './types'; type AlertType = Required>; type AlertTypeValue = AlertType['type']; @@ -30,7 +31,7 @@ const bigText = 'purus convallis placerat in at nunc. Nulla nec viverra augue.'; export default { - title: 'Alert', + title: 'Components/Alert', component: Alert, }; diff --git a/superset-frontend/src/components/Alert/index.tsx b/superset-frontend/packages/superset-ui-core/src/components/Alert/index.tsx similarity index 79% rename from superset-frontend/src/components/Alert/index.tsx rename to superset-frontend/packages/superset-ui-core/src/components/Alert/index.tsx index b8fb872b6a2..512f83b22d6 100644 --- a/superset-frontend/src/components/Alert/index.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/Alert/index.tsx @@ -16,15 +16,10 @@ * specific language governing permissions and limitations * under the License. */ -import { PropsWithChildren } from 'react'; -import { Alert as AntdAlert } from 'antd-v5'; -import { AlertProps as AntdAlertProps } from 'antd-v5/lib/alert'; +import { Alert as AntdAlert } from 'antd'; +import type { AlertProps } from './types'; -export type AlertProps = PropsWithChildren< - Omit & { roomBelow?: boolean } ->; - -export default function Alert(props: AlertProps) { +export const Alert = (props: AlertProps) => { const { type = 'info', description, @@ -46,4 +41,6 @@ export default function Alert(props: AlertProps) { {...rest} /> ); -} +}; + +export type { AlertProps }; diff --git a/superset-frontend/src/components/Divider/index.tsx b/superset-frontend/packages/superset-ui-core/src/components/Alert/types.ts similarity index 78% rename from superset-frontend/src/components/Divider/index.tsx rename to superset-frontend/packages/superset-ui-core/src/components/Alert/types.ts index 1e0110c8233..37bf8751be1 100644 --- a/superset-frontend/src/components/Divider/index.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/Alert/types.ts @@ -16,12 +16,9 @@ * specific language governing permissions and limitations * under the License. */ +import type { PropsWithChildren } from 'react'; +import type { AlertProps as AntdAlertProps } from 'antd/es/alert'; -import { Divider as AntdDivider } from 'antd-v5'; -import type { DividerProps } from 'antd-v5/es/divider'; - -export function Divider(props: DividerProps) { - return ; -} - -export { DividerProps }; +export type AlertProps = PropsWithChildren< + Omit & { roomBelow?: boolean } +>; diff --git a/superset-frontend/src/components/Switch/index.tsx b/superset-frontend/packages/superset-ui-core/src/components/AntdThemeProvider/index.tsx similarity index 79% rename from superset-frontend/src/components/Switch/index.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AntdThemeProvider/index.tsx index b4d89e85057..6bb9ffc0b2c 100644 --- a/superset-frontend/src/components/Switch/index.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AntdThemeProvider/index.tsx @@ -16,8 +16,12 @@ * specific language governing permissions and limitations * under the License. */ -import { SwitchProps } from 'antd-v5/lib/switch'; -import { Switch as AntdSwitch } from 'antd-v5'; -export const Switch = (props: SwitchProps) => ; -export type { SwitchProps }; +import { ConfigProvider, type ConfigProviderProps } from 'antd'; + +export const AntdThemeProvider = ({ + children, + ...rest +}: ConfigProviderProps) => ( + {children} +); diff --git a/superset-frontend/src/components/AsyncAceEditor/AsyncAceEditor.stories.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.stories.tsx similarity index 96% rename from superset-frontend/src/components/AsyncAceEditor/AsyncAceEditor.stories.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.stories.tsx index c537e409851..5f6b7679f11 100644 --- a/superset-frontend/src/components/AsyncAceEditor/AsyncAceEditor.stories.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.stories.tsx @@ -24,9 +24,10 @@ import { CssEditor, JsonEditor, ConfigEditor, - AsyncAceEditorOptions, } from '.'; +import type { AsyncAceEditorOptions } from './types'; + type EditorType = | 'sql' | 'full-sql' @@ -47,7 +48,7 @@ const editorTypes: EditorType[] = [ ]; export default { - title: 'AsyncAceEditor', + title: 'Components/AsyncAceEditor', }; const parseEditorType = (editorType: EditorType) => { diff --git a/superset-frontend/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx similarity index 93% rename from superset-frontend/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx index 6e377f889fd..151b1db1a93 100644 --- a/superset-frontend/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/AsyncAceEditor.test.tsx @@ -16,8 +16,9 @@ * specific language governing permissions and limitations * under the License. */ -import { render, screen, waitFor } from 'spec/helpers/testing-library'; -import AsyncAceEditor, { +import { render, screen, waitFor } from '@superset-ui/core/spec'; +import { + AsyncAceEditor, SQLEditor, FullSQLEditor, MarkdownEditor, @@ -25,9 +26,9 @@ import AsyncAceEditor, { CssEditor, JsonEditor, ConfigEditor, - AceModule, - AsyncAceEditorOptions, -} from 'src/components/AsyncAceEditor'; +} from '.'; + +import type { AceModule, AsyncAceEditorOptions } from './types'; const selector = '[id="ace-editor"]'; diff --git a/superset-frontend/src/components/AsyncAceEditor/Tooltip.test.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/Tooltip.test.tsx similarity index 100% rename from superset-frontend/src/components/AsyncAceEditor/Tooltip.test.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/Tooltip.test.tsx diff --git a/superset-frontend/src/components/AsyncAceEditor/Tooltip.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/Tooltip.tsx similarity index 99% rename from superset-frontend/src/components/AsyncAceEditor/Tooltip.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/Tooltip.tsx index a495928d61a..ef8158c9899 100644 --- a/superset-frontend/src/components/AsyncAceEditor/Tooltip.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/Tooltip.tsx @@ -16,7 +16,6 @@ * specific language governing permissions and limitations * under the License. */ - import DOMPurify from 'dompurify'; type Props = { diff --git a/superset-frontend/src/components/AsyncAceEditor/index.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx similarity index 59% rename from superset-frontend/src/components/AsyncAceEditor/index.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx index 13b569c54e2..e4292b25b5b 100644 --- a/superset-frontend/src/components/AsyncAceEditor/index.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/index.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import { forwardRef, useEffect, ComponentType } from 'react'; +import { forwardRef, useEffect, useCallback, ComponentType } from 'react'; import type { Editor as OrigEditor, @@ -27,10 +27,10 @@ import type { import type AceEditor from 'react-ace'; import type { IAceEditorProps } from 'react-ace'; -import AsyncEsmComponent, { +import { + AsyncEsmComponent, PlaceholderProps, -} from 'src/components/AsyncEsmComponent'; -import useEffectEvent from 'src/hooks/useEffectEvent'; +} from '@superset-ui/core/components/AsyncEsmComponent'; import { useTheme, css } from '@superset-ui/core'; import { Global } from '@emotion/react'; @@ -67,7 +67,7 @@ export interface AceCompleterKeyword extends AceCompleterKeywordData { * Async loaders to import brace modules. Must manually create call `import(...)` * promises because webpack can only analyze async imports statically. */ -const aceModuleLoaders = { +export const aceModuleLoaders = { 'mode/sql': () => import('brace/mode/sql'), 'mode/markdown': () => import('brace/mode/markdown'), 'mode/css': () => import('brace/mode/css'), @@ -102,7 +102,7 @@ export type AsyncAceEditorOptions = { /** * Get an async AceEditor with automatical loading of specified ace modules. */ -export default function AsyncAceEditor( +export function AsyncAceEditor( aceModules: AceModule[], { defaultMode, @@ -155,9 +155,10 @@ export default function AsyncAceEditor( }, ref, ) { - const supersetTheme = useTheme(); + const token = useTheme(); const langTools = acequire('ace/ext/language_tools'); - const setCompleters = useEffectEvent( + + const setCompleters = useCallback( (keywords: AceCompleterKeyword[]) => { const completer = { getCompletions: ( @@ -180,7 +181,9 @@ export default function AsyncAceEditor( }; langTools.setCompleters([completer]); }, + [langTools, mode], ); + useEffect(() => { if (keywords) { setCompleters(keywords); @@ -192,36 +195,148 @@ export default function AsyncAceEditor( .ant-tag { + margin-right: 0px; + } + } + } + + /* Adjust the searchbox to match theme */ + .ace_search { + background-color: ${token.colorBgContainer} !important; + color: ${token.colorText} !important; + border: 1px solid ${token.colorBorder} !important; + } + + .ace_search_field { + background-color: ${token.colorBgContainer} !important; + color: ${token.colorText} !important; + border: 1px solid ${token.colorBorder} !important; + } + + .ace_button { + background-color: ${token.colorBgElevated} !important; + color: ${token.colorText} !important; + border: 1px solid ${token.colorBorder} !important; + } + + .ace_button:hover { + background-color: ${token.colorPrimaryBg} !important; } `} /> diff --git a/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/types.ts b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/types.ts new file mode 100644 index 00000000000..17a4210b2ba --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncAceEditor/types.ts @@ -0,0 +1,68 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 { Editor as OrigEditor, TextMode as OrigTextMode } from 'brace'; +import type { ComponentType } from 'react'; +import type { IAceEditorProps } from 'react-ace'; +import type { PlaceholderProps } from '../AsyncEsmComponent/types'; +import { aceModuleLoaders } from '.'; + +export interface AceCompleterKeywordData { + name: string; + value: string; + score: number; + meta: string; + docText?: string; + docHTML?: string; +} + +export type TextMode = OrigTextMode & { $id: string }; + +export interface AceCompleter { + insertMatch: ( + data?: Editor | { value: string } | string, + options?: AceCompleterKeywordData, + ) => void; +} + +export type Editor = OrigEditor & { + completer: AceCompleter; + completers: AceCompleter[]; +}; + +export interface AceCompleterKeyword extends AceCompleterKeywordData { + completer?: AceCompleter; +} + +export type AceModule = keyof typeof aceModuleLoaders; + +export type AsyncAceEditorProps = IAceEditorProps & { + keywords?: AceCompleterKeyword[]; +}; + +export type AceEditorMode = 'sql'; +export type AceEditorTheme = 'textmate' | 'github'; +export type AsyncAceEditorOptions = { + defaultMode?: AceEditorMode; + defaultTheme?: AceEditorTheme; + defaultTabSize?: number; + fontFamily?: string; + placeholder?: ComponentType< + PlaceholderProps & Partial + > | null; +}; diff --git a/superset-frontend/src/components/AsyncEsmComponent/AsyncEsmComponent.stories.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/AsyncEsmComponent.stories.tsx similarity index 91% rename from superset-frontend/src/components/AsyncEsmComponent/AsyncEsmComponent.stories.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/AsyncEsmComponent.stories.tsx index 0a9125fe05e..0c786141e06 100644 --- a/superset-frontend/src/components/AsyncEsmComponent/AsyncEsmComponent.stories.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/AsyncEsmComponent.stories.tsx @@ -16,10 +16,11 @@ * specific language governing permissions and limitations * under the License. */ -import AsyncEsmComponent, { PlaceholderProps } from '.'; +import { AsyncEsmComponent } from '.'; +import type { PlaceholderProps } from './types'; export default { - title: 'AsyncEsmComponent', + title: 'Components/AsyncEsmComponent', }; const Placeholder = () => Loading...; diff --git a/superset-frontend/src/components/AsyncEsmComponent/AsyncEsmComponent.test.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/AsyncEsmComponent.test.tsx similarity index 94% rename from superset-frontend/src/components/AsyncEsmComponent/AsyncEsmComponent.test.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/AsyncEsmComponent.test.tsx index 9e23acf5d64..82a88a322f9 100644 --- a/superset-frontend/src/components/AsyncEsmComponent/AsyncEsmComponent.test.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/AsyncEsmComponent.test.tsx @@ -16,8 +16,8 @@ * specific language governing permissions and limitations * under the License. */ -import { render, screen } from 'spec/helpers/testing-library'; -import AsyncEsmComponent from 'src/components/AsyncEsmComponent'; +import { render, screen } from '@superset-ui/core/spec'; +import { AsyncEsmComponent } from '.'; const Placeholder = () => Loading...; diff --git a/superset-frontend/src/components/AsyncEsmComponent/index.tsx b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/index.tsx similarity index 92% rename from superset-frontend/src/components/AsyncEsmComponent/index.tsx rename to superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/index.tsx index 06ac5ef10ff..dd643a8e1a6 100644 --- a/superset-frontend/src/components/AsyncEsmComponent/index.tsx +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/index.tsx @@ -17,7 +17,6 @@ * under the License. */ import { - CSSProperties, useEffect, useState, RefObject, @@ -28,16 +27,8 @@ import { RefAttributes, } from 'react'; -import Loading from '../Loading'; - -export type PlaceholderProps = { - showLoadingForImport?: boolean; - width?: string | number; - height?: string | number; - placeholderStyle?: CSSProperties; -} & { - [key: string]: any; -}; +import { Loading } from '../Loading'; +import type { PlaceholderProps } from './types'; function DefaultPlaceholder({ width, @@ -62,7 +53,7 @@ function DefaultPlaceholder({ * Asynchronously import an ES module as a React component, render a placeholder * first (if provided) and re-render once import is complete. */ -export default function AsyncEsmComponent< +export function AsyncEsmComponent< P = PlaceholderProps, M = ComponentType

| { default: ComponentType

}, >( @@ -128,6 +119,7 @@ export default function AsyncEsmComponent< const Component = component || placeholder; return Component ? ( // placeholder does not get the ref + // @ts-ignore: Suppress TypeScript error for ref assignment ) : null; }); @@ -138,3 +130,5 @@ export default function AsyncEsmComponent< preload: typeof waitForPromise; }; } + +export type { PlaceholderProps }; diff --git a/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/types.ts b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/types.ts new file mode 100644 index 00000000000..d00bdaa7c5e --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/src/components/AsyncEsmComponent/types.ts @@ -0,0 +1,28 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 { CSSProperties } from 'react'; + +export type PlaceholderProps = { + showLoadingForImport?: boolean; + width?: string | number; + height?: string | number; + placeholderStyle?: CSSProperties; +} & { + [key: string]: any; +}; diff --git a/superset-frontend/packages/superset-ui-core/src/components/AutoComplete/AutoComplete.stories.tsx b/superset-frontend/packages/superset-ui-core/src/components/AutoComplete/AutoComplete.stories.tsx new file mode 100644 index 00000000000..84c125645f4 --- /dev/null +++ b/superset-frontend/packages/superset-ui-core/src/components/AutoComplete/AutoComplete.stories.tsx @@ -0,0 +1,267 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 type { Meta, StoryObj } from '@storybook/react'; +import { AutoComplete } from '.'; +import type { AutoCompleteProps } from './types'; + +export default { + title: 'Components/AutoComplete', + component: AutoComplete, + argTypes: { + style: { + control: 'object', + description: 'Custom styles for AutoComplete', + }, + placeholder: { + control: 'text', + description: 'Placeholder text for AutoComplete', + }, + value: { + control: 'text', + description: 'Selected option', + table: { + type: { summary: 'string' }, + }, + }, + disabled: { + control: 'boolean', + description: 'Disable the AutoComplete', + defaultValue: false, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'false' }, + }, + }, + popupMatchSelectWidth: { + control: 'number', + description: 'Width of the dropdown', + defaultValue: 252, + }, + allowClear: { + control: 'boolean', + description: 'Show clear button', + defaultValue: false, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'false' }, + }, + }, + autoFocus: { + control: 'boolean', + description: 'If get focus when component mounted', + defaultValue: false, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'false' }, + }, + }, + backfill: { + control: 'boolean', + description: 'If backfill selected item the input when using keyboard', + defaultValue: false, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'false' }, + }, + }, + popupClassName: { + control: 'text', + description: 'The className of dropdown menu', + }, + filterOption: { + control: 'boolean', + description: + 'If true, filters options by input. If a function, filters options using `inputValue` and `option`. Returns true to include the option, false to exclude it.', + defaultValue: true, + table: { + type: { summary: 'boolean | function(inputValue, option)' }, + defaultValue: { summary: 'true' }, + }, + }, + notFoundContent: { + control: 'text', + description: 'Specify content to show when no result matches.', + defaultValue: undefined, + table: { + type: { summary: 'ReactNode' }, + defaultValue: { summary: '-' }, + }, + }, + open: { + control: 'boolean', + description: 'Controlled open state of dropdown', + defaultValue: undefined, + table: { + type: { summary: 'boolean' }, + }, + }, + status: { + control: 'select', + options: [undefined, 'error', 'warning'], + description: 'Set validation status', + defaultValue: undefined, + }, + size: { + control: 'select', + options: [undefined, 'large', 'middle', 'small'], + description: 'The size of the input box', + defaultValue: undefined, + }, + variant: { + control: 'select', + options: ['outlined', 'borderless', 'filled'], + description: 'Variants of input', + defaultValue: 'outlined', + }, + virtual: { + control: 'boolean', + description: 'Disable virtual scroll when set to false', + defaultValue: true, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'true' }, + }, + }, + // reference of additional props + defaultValue: { + control: false, + description: 'Initial selected option from the `options` array.', + table: { + type: { summary: 'string' }, + }, + }, + defaultOpen: { + control: false, + description: 'Initial open state of dropdown', + defaultValue: undefined, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'false' }, + }, + }, + defaultActiveFirstOption: { + control: false, + description: 'Whether active first option by default', + defaultValue: undefined, + table: { + type: { summary: 'boolean' }, + defaultValue: { summary: 'false' }, + }, + }, + dropdownRender: { + control: false, + description: + 'Custom render function for dropdown content. `(menus: ReactNode) => ReactNode`', + table: { + type: { summary: '(menus: ReactNode) => ReactNode' }, + defaultValue: { summary: '-' }, + }, + }, + options: { + control: false, + description: + 'Select options. Will get better performance than using JSX elements.', + table: { + type: { summary: '{ label: string, value: string }[]' }, + defaultValue: { summary: '-' }, + }, + }, + children: { + control: false, + description: + 'Can be used in two ways:\n' + + '1. Customize input element (e.g., ``, `