From a837f04e5983f5e13bc9f2af99ff85e7ccc8c2ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 26 Oct 2024 13:09:42 +0200 Subject: [PATCH 01/98] New add-on structure with cookieplone --- .editorconfig | 35 + .gitattributes | 2 - .github/workflows/acceptance.yml | 73 - .github/workflows/backend.yml | 158 + .github/workflows/changelog.yml | 43 - .github/workflows/code.yml | 15 - .github/workflows/frontend.yml | 145 + .github/workflows/unit.yml | 15 - .gitignore | 130 +- .pre-commit-config.yaml | 16 + .project.eslintrc.js | 50 - .release-it.json | 16 - .vscode/settings.json | 7 + CHANGELOG.md | 470 +-- DEVELOPMENT.md | 49 - LICENSE | 21 - Makefile | 305 +- README.md | 145 +- TESTING.md | 39 - TODO.md | 6 - acceptance/.env | 19 - acceptance/.gitignore | 16 - acceptance/ci.yml | 99 - acceptance/cypress/fixtures/broccoli.jpg | Bin 102057 -> 0 bytes acceptance/cypress/fixtures/example.json | 5 - acceptance/cypress/fixtures/file.pdf | Bin 74429 -> 0 bytes acceptance/cypress/fixtures/halfdome2022.jpg | Bin 319364 -> 0 bytes acceptance/cypress/fixtures/image.png | Bin 1185 -> 0 bytes acceptance/cypress/plugins/index.js | 17 - acceptance/cypress/support/commands.js | 1 - acceptance/cypress/support/reset-fixture.js | 45 - acceptance/cypress/support/slate.js | 25 - acceptance/cypress/tests/basic.cy.js | 43 - .../cypress/tests/blocks-searchkit.cy.js | 90 - acceptance/docker-compose.yml | 159 - acceptance/package.json | 5 - acceptance/yarn.lock | 2638 ----------------- backend/.dockerignore | 14 + backend/.editorconfig | 54 + backend/.flake8 | 22 + backend/.gitignore | 51 + backend/.pre-commit-config.yaml | 94 + backend/CHANGES.md | 10 + backend/CONTRIBUTORS.md | 3 + backend/Dockerfile | 41 + backend/Dockerfile.acceptance | 43 + backend/LICENSE.GPL | 339 +++ backend/LICENSE.md | 15 + backend/MANIFEST.in | 20 + backend/Makefile | 139 + backend/README.md | 33 + backend/constraints.txt | 1 + {acceptance => backend/docs}/.gitkeep | 0 backend/instance.yaml | 3 + backend/mx.ini | 17 + backend/news/.changelog_template.jinja | 15 + backend/news/.gitkeep | 1 + backend/pyproject.toml | 170 ++ backend/requirements-docker.txt | 1 + backend/requirements.txt | 1 + backend/scripts/create_site.py | 70 + backend/setup.py | 77 + backend/src/searchkit/__init__.py | 1 + backend/src/searchkit/block/__init__.py | 12 + backend/src/searchkit/block/configure.zcml | 22 + .../src/searchkit/block/content/__init__.py | 0 .../searchkit/block/controlpanel/__init__.py | 0 .../block/controlpanel/configure.zcml | 8 + backend/src/searchkit/block/dependencies.zcml | 7 + .../src/searchkit/block/indexers/__init__.py | 0 .../searchkit/block/indexers/configure.zcml | 5 + backend/src/searchkit/block/interfaces.py | 7 + .../src/searchkit/block/locales/__init__.py | 0 .../locales/en/LC_MESSAGES/searchkit.block.po | 15 + .../block/locales/searchkit.block.pot | 18 + backend/src/searchkit/block/locales/update.py | 79 + backend/src/searchkit/block/profiles.zcml | 41 + .../block/profiles/default/browserlayer.xml | 6 + .../block/profiles/default/catalog.xml | 13 + .../block/profiles/default/controlpanel.xml | 4 + .../block/profiles/default/diff_tool.xml | 6 + .../block/profiles/default/metadata.xml | 7 + .../block/profiles/default/registry/.gitkeep | 0 ...se.interfaces.controlpanel.IMailSchema.xml | 9 + ...se.interfaces.controlpanel.ISiteSchema.xml | 9 + .../plone.i18n.interfaces.ILanguageSchema.xml | 12 + .../block/profiles/default/repositorytool.xml | 6 + .../block/profiles/default/rolemap.xml | 6 + .../block/profiles/default/theme.xml | 5 + .../block/profiles/default/types.xml | 10 + .../block/profiles/default/types/.gitkeep | 0 .../block/profiles/initial/metadata.xml | 4 + .../block/profiles/uninstall/browserlayer.xml | 6 + .../searchkit/block/serializers/__init__.py | 0 .../block/serializers/configure.zcml | 10 + .../searchkit/block/serializers/summary.py | 10 + .../searchkit/block/setuphandlers/__init__.py | 11 + .../setuphandlers/examplecontent/.gitkeep | 0 .../examplecontent/content/__metadata__.json | 40 + .../data.json | 56 + .../image/plone-foundation.png | Bin 0 -> 50737 bytes .../data.json | 98 + .../content/plone_site_root/data.json | 267 ++ .../examplecontent/discussions.json | 1 + .../examplecontent/portlets.json | 1 + .../examplecontent/principals.json | 4 + .../examplecontent/redirects.json | 1 + .../examplecontent/relations.json | 1 + .../examplecontent/translations.json | 1 + .../searchkit/block/setuphandlers/initial.py | 16 + backend/src/searchkit/block/testing.py | 49 + .../src/searchkit/block/upgrades/__init__.py | 0 .../searchkit/block/upgrades/configure.zcml | 19 + .../searchkit/block/vocabularies/__init__.py | 0 .../block/vocabularies/configure.zcml | 3 + backend/tests/conftest.py | 18 + backend/tests/setup/test_setup_install.py | 17 + backend/tests/setup/test_setup_uninstall.py | 19 + backend/tox.ini | 212 ++ backend/version.txt | 1 + dependabot.yml | 8 + devops/README-GITLAB.md | 61 + devops/stacks/searchkit-block.example.com.yml | 173 ++ docker-compose.yml | 106 + docker-opensearch/Dockerfile.ingest | 3 - docker-opensearch/Dockerfile.opensearch | 6 - docker-opensearch/README.md | 4 - docker-opensearch/docker-compose.yml | 117 - .../ingest-configuration/analysis.json | 37 - .../ingest-configuration/mappings.json | 398 --- .../mappings_example.json | 455 --- .../ingest-configuration/preprocessings.json | 234 -- .../opensearch-configuration/keywords.txt | 3 - .../opensearch-configuration/lexicon.txt | 360 --- dockerfiles/Dockerfile.acceptance | 16 - dockerfiles/Dockerfile.ci | 27 - dockerfiles/Dockerfile.dev | 21 - dockerfiles/backend/Dockerfile.acceptance | 32 - dockerfiles/docker-compose.yml | 56 - frontend/.dockerignore | 6 + frontend/.eslintrc.js | 43 + frontend/.gitignore | 13 + frontend/.npmignore | 16 + frontend/.npmrc | 6 + frontend/.pre-commit-config.yaml | 27 + .prettierignore => frontend/.prettierignore | 1 + frontend/.prettierrc | 12 + frontend/.storybook/main.js | 188 ++ frontend/.storybook/preview.jsx | 26 + frontend/.stylelintrc | 32 + frontend/Dockerfile | 24 + frontend/Makefile | 142 + frontend/README.md | 203 ++ {acceptance => frontend}/cypress.config.js | 6 +- frontend/cypress/.gitkeep | 0 frontend/cypress/support/commands.js | 1 + .../cypress/support/e2e.js | 3 +- frontend/cypress/tests/.gitkeep | 0 frontend/cypress/tests/example.cy.js | 20 + frontend/jest-addon.config.js | 17 + frontend/mrs.developer.json | 9 + frontend/package.json | 44 + .../packages/volto-searchkit-block/.gitignore | 3 + .../volto-searchkit-block/.release-it.json | 31 + .../volto-searchkit-block/CHANGELOG.md | 9 + .../volto-searchkit-block/babel.config.js | 0 .../locales/de/LC_MESSAGES/volto.po | 12 + .../locales/en/LC_MESSAGES/volto.po | 12 + .../locales/es/LC_MESSAGES/volto.po | 19 + .../locales/pt_BR/LC_MESSAGES/volto.po | 17 + .../volto-searchkit-block/locales/volto.pot | 14 + .../volto-searchkit-block/news/.gitkeep | 0 .../volto-searchkit-block/package.json | 38 + .../volto-searchkit-block/public/.gitkeep | 0 .../src/components/.gitkeep | 0 .../volto-searchkit-block/src/index.js | 11 + .../volto-searchkit-block/towncrier.toml | 33 + .../volto-searchkit-block/tsconfig.json | 30 + frontend/pnpm-workspace.yaml | 4 + frontend/volto.config.js | 7 + jest-addon.config.js | 33 - locales/de/LC_MESSAGES/volto.po | 153 - locales/en/LC_MESSAGES/volto.po | 153 - locales/volto.pot | 155 - news/15.internal | 1 - package.json | 67 - pm2.config.js | 14 - public/configuration.png | Bin 57903 -> 0 bytes public/elasticsearch_nested_field.png | Bin 68560 -> 0 bytes public/search.png | Bin 70380 -> 0 bytes .../Blocks/DownloadFiltersMapping.jsx | 46 - .../Blocks/FacetedSearchBlockEdit.jsx | 28 - .../Blocks/FacetedSearchBlockView.jsx | 13 - .../Reference/ReferenceSearchBlockEdit.jsx | 20 - .../Reference/ReferenceSearchBlockView.jsx | 17 - src/components/Blocks/Reference/index.js | 4 - .../Blocks/SearchSectionsWidget.jsx | 66 - src/components/Blocks/Sidebar.jsx | 24 - src/components/Blocks/schema.js | 186 -- .../Searchkit/CustomESRequestSerializer.jsx | 423 --- .../Searchkit/CustomESResponseSerializer.jsx | 48 - src/components/Searchkit/ESSearchApi.jsx | 78 - .../Searchkit/ElasticSearchHighlights.jsx | 120 - src/components/Searchkit/Error.jsx | 22 - src/components/Searchkit/Error.test.js | 31 - .../Searchkit/LICENSE_Cern_react-searchkit.md | 21 - src/components/Searchkit/README.md | 3 - src/components/Searchkit/Results.js | 89 - src/components/Searchkit/SearchBarSection.jsx | 51 - src/components/Searchkit/SectionsSearch.jsx | 156 - .../__snapshots__/Error.test.js.snap | 23 - src/components/StateLogger.jsx | 23 - src/components/Views/FacetedSearch.jsx | 800 ----- .../Views/TestSearchkitQuerystrings.jsx | 214 -- .../springisnow-volto-searchkit-block.less | 291 -- src/components/helpers.jsx | 56 - src/components/index.js | 9 - src/index.js | 106 - src/messages.js | 72 - variables.mk | 7 - version.txt | 1 + webpack.config.js | 9 - 222 files changed, 4463 insertions(+), 9675 deletions(-) create mode 100644 .editorconfig delete mode 100644 .gitattributes delete mode 100644 .github/workflows/acceptance.yml create mode 100644 .github/workflows/backend.yml delete mode 100644 .github/workflows/changelog.yml delete mode 100644 .github/workflows/code.yml create mode 100644 .github/workflows/frontend.yml delete mode 100644 .github/workflows/unit.yml create mode 100644 .pre-commit-config.yaml delete mode 100644 .project.eslintrc.js delete mode 100644 .release-it.json create mode 100644 .vscode/settings.json delete mode 100644 DEVELOPMENT.md delete mode 100644 LICENSE delete mode 100644 TESTING.md delete mode 100644 TODO.md delete mode 100644 acceptance/.env delete mode 100644 acceptance/.gitignore delete mode 100644 acceptance/ci.yml delete mode 100644 acceptance/cypress/fixtures/broccoli.jpg delete mode 100644 acceptance/cypress/fixtures/example.json delete mode 100644 acceptance/cypress/fixtures/file.pdf delete mode 100644 acceptance/cypress/fixtures/halfdome2022.jpg delete mode 100644 acceptance/cypress/fixtures/image.png delete mode 100644 acceptance/cypress/plugins/index.js delete mode 100644 acceptance/cypress/support/commands.js delete mode 100644 acceptance/cypress/support/reset-fixture.js delete mode 100644 acceptance/cypress/support/slate.js delete mode 100644 acceptance/cypress/tests/basic.cy.js delete mode 100644 acceptance/cypress/tests/blocks-searchkit.cy.js delete mode 100644 acceptance/docker-compose.yml delete mode 100644 acceptance/package.json delete mode 100644 acceptance/yarn.lock create mode 100644 backend/.dockerignore create mode 100644 backend/.editorconfig create mode 100644 backend/.flake8 create mode 100644 backend/.gitignore create mode 100644 backend/.pre-commit-config.yaml create mode 100644 backend/CHANGES.md create mode 100644 backend/CONTRIBUTORS.md create mode 100644 backend/Dockerfile create mode 100644 backend/Dockerfile.acceptance create mode 100644 backend/LICENSE.GPL create mode 100644 backend/LICENSE.md create mode 100644 backend/MANIFEST.in create mode 100644 backend/Makefile create mode 100644 backend/README.md create mode 100644 backend/constraints.txt rename {acceptance => backend/docs}/.gitkeep (100%) create mode 100644 backend/instance.yaml create mode 100644 backend/mx.ini create mode 100644 backend/news/.changelog_template.jinja create mode 100644 backend/news/.gitkeep create mode 100644 backend/pyproject.toml create mode 100644 backend/requirements-docker.txt create mode 100644 backend/requirements.txt create mode 100644 backend/scripts/create_site.py create mode 100644 backend/setup.py create mode 100644 backend/src/searchkit/__init__.py create mode 100644 backend/src/searchkit/block/__init__.py create mode 100644 backend/src/searchkit/block/configure.zcml rename acceptance/cypress/.gitkeep => backend/src/searchkit/block/content/__init__.py (100%) create mode 100644 backend/src/searchkit/block/controlpanel/__init__.py create mode 100644 backend/src/searchkit/block/controlpanel/configure.zcml create mode 100644 backend/src/searchkit/block/dependencies.zcml create mode 100644 backend/src/searchkit/block/indexers/__init__.py create mode 100644 backend/src/searchkit/block/indexers/configure.zcml create mode 100644 backend/src/searchkit/block/interfaces.py create mode 100644 backend/src/searchkit/block/locales/__init__.py create mode 100644 backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po create mode 100644 backend/src/searchkit/block/locales/searchkit.block.pot create mode 100644 backend/src/searchkit/block/locales/update.py create mode 100644 backend/src/searchkit/block/profiles.zcml create mode 100644 backend/src/searchkit/block/profiles/default/browserlayer.xml create mode 100644 backend/src/searchkit/block/profiles/default/catalog.xml create mode 100644 backend/src/searchkit/block/profiles/default/controlpanel.xml create mode 100644 backend/src/searchkit/block/profiles/default/diff_tool.xml create mode 100644 backend/src/searchkit/block/profiles/default/metadata.xml create mode 100644 backend/src/searchkit/block/profiles/default/registry/.gitkeep create mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml create mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml create mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml create mode 100644 backend/src/searchkit/block/profiles/default/repositorytool.xml create mode 100644 backend/src/searchkit/block/profiles/default/rolemap.xml create mode 100644 backend/src/searchkit/block/profiles/default/theme.xml create mode 100644 backend/src/searchkit/block/profiles/default/types.xml create mode 100644 backend/src/searchkit/block/profiles/default/types/.gitkeep create mode 100644 backend/src/searchkit/block/profiles/initial/metadata.xml create mode 100644 backend/src/searchkit/block/profiles/uninstall/browserlayer.xml create mode 100644 backend/src/searchkit/block/serializers/__init__.py create mode 100644 backend/src/searchkit/block/serializers/configure.zcml create mode 100644 backend/src/searchkit/block/serializers/summary.py create mode 100644 backend/src/searchkit/block/setuphandlers/__init__.py create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a720393b3c0240e5bd27c43fcd2cfd1e/data.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/plone_site_root/data.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/discussions.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/portlets.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/principals.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/redirects.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/relations.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/translations.json create mode 100644 backend/src/searchkit/block/setuphandlers/initial.py create mode 100644 backend/src/searchkit/block/testing.py create mode 100644 backend/src/searchkit/block/upgrades/__init__.py create mode 100644 backend/src/searchkit/block/upgrades/configure.zcml create mode 100644 backend/src/searchkit/block/vocabularies/__init__.py create mode 100644 backend/src/searchkit/block/vocabularies/configure.zcml create mode 100644 backend/tests/conftest.py create mode 100644 backend/tests/setup/test_setup_install.py create mode 100644 backend/tests/setup/test_setup_uninstall.py create mode 100644 backend/tox.ini create mode 100644 backend/version.txt create mode 100644 dependabot.yml create mode 100644 devops/README-GITLAB.md create mode 100644 devops/stacks/searchkit-block.example.com.yml create mode 100644 docker-compose.yml delete mode 100644 docker-opensearch/Dockerfile.ingest delete mode 100644 docker-opensearch/Dockerfile.opensearch delete mode 100644 docker-opensearch/README.md delete mode 100644 docker-opensearch/docker-compose.yml delete mode 100644 docker-opensearch/ingest-configuration/analysis.json delete mode 100644 docker-opensearch/ingest-configuration/mappings.json delete mode 100644 docker-opensearch/ingest-configuration/mappings_example.json delete mode 100644 docker-opensearch/ingest-configuration/preprocessings.json delete mode 100644 docker-opensearch/opensearch-configuration/keywords.txt delete mode 100644 docker-opensearch/opensearch-configuration/lexicon.txt delete mode 100644 dockerfiles/Dockerfile.acceptance delete mode 100644 dockerfiles/Dockerfile.ci delete mode 100644 dockerfiles/Dockerfile.dev delete mode 100644 dockerfiles/backend/Dockerfile.acceptance delete mode 100644 dockerfiles/docker-compose.yml create mode 100644 frontend/.dockerignore create mode 100644 frontend/.eslintrc.js create mode 100644 frontend/.gitignore create mode 100644 frontend/.npmignore create mode 100644 frontend/.npmrc create mode 100644 frontend/.pre-commit-config.yaml rename .prettierignore => frontend/.prettierignore (67%) create mode 100644 frontend/.prettierrc create mode 100644 frontend/.storybook/main.js create mode 100644 frontend/.storybook/preview.jsx create mode 100644 frontend/.stylelintrc create mode 100644 frontend/Dockerfile create mode 100644 frontend/Makefile create mode 100644 frontend/README.md rename {acceptance => frontend}/cypress.config.js (57%) create mode 100644 frontend/cypress/.gitkeep create mode 100644 frontend/cypress/support/commands.js rename {acceptance => frontend}/cypress/support/e2e.js (69%) create mode 100644 frontend/cypress/tests/.gitkeep create mode 100644 frontend/cypress/tests/example.cy.js create mode 100644 frontend/jest-addon.config.js create mode 100644 frontend/mrs.developer.json create mode 100644 frontend/package.json create mode 100644 frontend/packages/volto-searchkit-block/.gitignore create mode 100644 frontend/packages/volto-searchkit-block/.release-it.json create mode 100644 frontend/packages/volto-searchkit-block/CHANGELOG.md rename babel.config.js => frontend/packages/volto-searchkit-block/babel.config.js (100%) create mode 100644 frontend/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po create mode 100644 frontend/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po create mode 100644 frontend/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po create mode 100644 frontend/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po create mode 100644 frontend/packages/volto-searchkit-block/locales/volto.pot create mode 100644 frontend/packages/volto-searchkit-block/news/.gitkeep create mode 100644 frontend/packages/volto-searchkit-block/package.json create mode 100644 frontend/packages/volto-searchkit-block/public/.gitkeep create mode 100644 frontend/packages/volto-searchkit-block/src/components/.gitkeep create mode 100644 frontend/packages/volto-searchkit-block/src/index.js create mode 100644 frontend/packages/volto-searchkit-block/towncrier.toml create mode 100644 frontend/packages/volto-searchkit-block/tsconfig.json create mode 100644 frontend/pnpm-workspace.yaml create mode 100644 frontend/volto.config.js delete mode 100644 jest-addon.config.js delete mode 100644 locales/de/LC_MESSAGES/volto.po delete mode 100644 locales/en/LC_MESSAGES/volto.po delete mode 100644 locales/volto.pot delete mode 100644 news/15.internal delete mode 100644 package.json delete mode 100644 pm2.config.js delete mode 100644 public/configuration.png delete mode 100644 public/elasticsearch_nested_field.png delete mode 100644 public/search.png delete mode 100644 src/components/Blocks/DownloadFiltersMapping.jsx delete mode 100644 src/components/Blocks/FacetedSearchBlockEdit.jsx delete mode 100644 src/components/Blocks/FacetedSearchBlockView.jsx delete mode 100644 src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx delete mode 100644 src/components/Blocks/Reference/ReferenceSearchBlockView.jsx delete mode 100644 src/components/Blocks/Reference/index.js delete mode 100644 src/components/Blocks/SearchSectionsWidget.jsx delete mode 100644 src/components/Blocks/Sidebar.jsx delete mode 100644 src/components/Blocks/schema.js delete mode 100644 src/components/Searchkit/CustomESRequestSerializer.jsx delete mode 100644 src/components/Searchkit/CustomESResponseSerializer.jsx delete mode 100644 src/components/Searchkit/ESSearchApi.jsx delete mode 100644 src/components/Searchkit/ElasticSearchHighlights.jsx delete mode 100644 src/components/Searchkit/Error.jsx delete mode 100644 src/components/Searchkit/Error.test.js delete mode 100644 src/components/Searchkit/LICENSE_Cern_react-searchkit.md delete mode 100644 src/components/Searchkit/README.md delete mode 100644 src/components/Searchkit/Results.js delete mode 100644 src/components/Searchkit/SearchBarSection.jsx delete mode 100644 src/components/Searchkit/SectionsSearch.jsx delete mode 100644 src/components/Searchkit/__snapshots__/Error.test.js.snap delete mode 100644 src/components/StateLogger.jsx delete mode 100644 src/components/Views/FacetedSearch.jsx delete mode 100644 src/components/Views/TestSearchkitQuerystrings.jsx delete mode 100644 src/components/Views/less/springisnow-volto-searchkit-block.less delete mode 100644 src/components/helpers.jsx delete mode 100644 src/components/index.js delete mode 100644 src/index.js delete mode 100644 src/messages.js delete mode 100644 variables.mk create mode 100644 version.txt delete mode 100644 webpack.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..f8ae1e55 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,35 @@ + +# EditorConfig Configurtaion file, for more details see: +# https://EditorConfig.org +# EditorConfig is a convention description, that could be interpreted +# by multiple editors to enforce common coding conventions for specific +# file types + +# top-most EditorConfig file: +# Will ignore other EditorConfig files in Home directory or upper tree level. +root = true + + +[*] # For All Files +# Unix-style newlines with a newline ending every file +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +# Set default charset +charset = utf-8 +# Indent style default +indent_style = space + +[*.{py,cfg,ini}] +# 4 space indentation +indent_size = 4 + +[*.{html,dtml,pt,zpt,xml,zcml,js,json,ts,less,scss,css,sass,yml,yaml}] +# 2 space indentation +indent_size = 2 + +[{Makefile,.gitmodules}] +# Tab indentation (no size specified, but view as 4 spaces) +indent_style = tab +indent_size = unset +tab_width = unset diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe07704..00000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml deleted file mode 100644 index ff727a81..00000000 --- a/.github/workflows/acceptance.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Acceptance tests -on: [push] - -env: - ADDON_NAME: "@rohberg/volto-searchkit-block" - ADDON_PATH: volto-searchkit-block - VOLTO_VERSION: 17 - PLONE_VERSION: 6.0 - - INDEX_SERVER: opensearch:9200 - INDEX_OPENSEARCH: 1 - INDEX_USE_SSL: 0 - INDEX_LOGIN: admin - INDEX_PASSWORD: "oxczBG).3xWyapLn" - - CELERY_BROKER: redis://redis:6379/0 - CELERY_LOG_LEVEL: info - - PLONE_SERVICE: http://backend-acceptance:55001 - PLONE_SITE_PREFIX_PATH: plone - PLONE_USER: admin - PLONE_PASSWORD: secret - - MAPPINGS_FILE: /configuration/mappings.json - ANALYSIS_FILE: /configuration/analysis.json - PREPROCESSINGS_FILE: /configuration/preprocessings.json - -jobs: - acceptance: - runs-on: ubuntu-latest - timeout-minutes: 45 - strategy: - fail-fast: false - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Install Cypress - run: | - cd acceptance - yarn - - - name: "Cypress: Acceptance tests" - uses: cypress-io/github-action@v6 - env: - BABEL_ENV: production - CYPRESS_RETRIES: 2 - with: - parallel: false - browser: chrome - working-directory: acceptance - spec: cypress/tests/*.cy.js - install: false - start: | - docker compose -f ci.yml --profile prod up - wait-on: 'npx wait-on --httpTimeout 20000 http-get://localhost:55001/plone http://localhost:3000 http://localhost:9200' - - # Upload Cypress screenshots - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: cypress-screenshots-acceptance - path: acceptance/cypress/screenshots - - # Upload Cypress videos - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: cypress-videos-acceptance - path: acceptance/cypress/videos diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml new file mode 100644 index 00000000..6a5af533 --- /dev/null +++ b/.github/workflows/backend.yml @@ -0,0 +1,158 @@ +name: Backend CI + +on: + push: + paths: + - "backend/**" + - ".github/workflows/backend.yml" + workflow_dispatch: + +env: + IMAGE_NAME_PREFIX: ghcr.io/rohberg/searchkit-block + IMAGE_NAME_SUFFIX: backend + PYTHON_VERSION: "3.11" + +jobs: + + meta: + runs-on: ubuntu-latest + outputs: + PLONE_VERSION: ${{ steps.vars.outputs.PLONE_VERSION }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set Env Vars + id: vars + run: | + echo "PLONE_VERSION=$(cat backend/version.txt)" >> $GITHUB_OUTPUT + + black: + runs-on: ubuntu-latest + steps: + - name: Checkout codebase + uses: actions/checkout@v4 + + - name: Run check + uses: plone/code-analysis-action@v2 + with: + base_dir: 'backend' + check: 'black' + + flake8: + runs-on: ubuntu-latest + steps: + - name: Checkout codebase + uses: actions/checkout@v4 + + - name: Run check + uses: plone/code-analysis-action@v2 + with: + base_dir: 'backend' + check: 'flake8' + + isort: + runs-on: ubuntu-latest + steps: + - name: Checkout codebase + uses: actions/checkout@v4 + + - name: Run check + uses: plone/code-analysis-action@v2 + with: + base_dir: 'backend' + check: 'isort' + + zpretty: + runs-on: ubuntu-latest + steps: + - name: Checkout codebase + uses: actions/checkout@v4 + + - name: Run check + uses: plone/code-analysis-action@v2 + with: + base_dir: 'backend' + check: 'zpretty' + + tests: + runs-on: ubuntu-latest + needs: + - meta + defaults: + run: + working-directory: ./backend + + steps: + - uses: actions/checkout@v4 + + - name: Setup Plone ${{ needs.meta.outputs.PLONE_VERSION }} with Python ${{ env.PYTHON_VERSION }} + uses: plone/setup-plone@v2.0.0 + with: + python-version: ${{ env.PYTHON_VERSION }} + plone-version: ${{ needs.meta.outputs.PLONE_VERSION }} + + - name: Install package + run: | + pip install mxdev + mxdev -c mx.ini + pip install -r requirements-mxdev.txt + + - name: Run tests + run: | + pytest --disable-warnings tests + + release: + runs-on: ubuntu-latest + needs: + - black + - flake8 + - isort + - zpretty + - tests + permissions: + contents: read + packages: write + + steps: + + - name: Checkout + uses: actions/checkout@v4 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }} + labels: | + org.label-schema.docker.cmd=docker run -d -p 8080:8080 ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }}:latest + flavor: + latest=false + tags: | + type=ref,event=branch + type=sha + type=raw,value=latest,enable={{is_default_branch}} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + platforms: linux/amd64 + context: backend + file: backend/Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml deleted file mode 100644 index f8f99a5a..00000000 --- a/.github/workflows/changelog.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Changelog check -on: - pull_request: - types: [assigned, opened, synchronize, reopened, labeled, unlabeled] - branches: - - main - -env: - node-version: 20.x - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - # Fetch all history - fetch-depth: '0' - - - name: Install pipx - run: pip install towncrier - - # node setup - - name: Use Node.js ${{ env.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ env.node-version }} - cache: 'yarn' - - # node install - - name: Install dependencies - run: yarn - - - name: Check for presence of a Change Log fragment (only pull requests) - run: | - # Fetch the pull request' base branch so towncrier will be able to - # compare the current branch with the base branch. - # Source: https://github.com/actions/checkout/#fetch-all-branches. - git fetch --no-tags origin main - towncrier check --compare-with origin/main - env: - BASE_BRANCH: ${{ github.base_ref }} - if: github.event_name == 'pull_request' diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml deleted file mode 100644 index dccebc2d..00000000 --- a/.github/workflows/code.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Code analysis checks -on: [push] -jobs: - codeanalysis: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [20.x] - - steps: - - name: Main checkout - uses: actions/checkout@v4 - - - name: Linting - run: make lint diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml new file mode 100644 index 00000000..b8deece1 --- /dev/null +++ b/.github/workflows/frontend.yml @@ -0,0 +1,145 @@ +name: Frontend CI + +on: + push: + paths: + - "frontend/**" + - ".github/workflows/frontend.yml" + workflow_dispatch: + +env: + IMAGE_NAME_PREFIX: ghcr.io/rohberg/searchkit-block + IMAGE_NAME_SUFFIX: frontend + NODE_VERSION: 20.x + +defaults: + run: + working-directory: ./frontend + +jobs: + meta: + runs-on: ubuntu-latest + outputs: + BASE_TAG: ${{ steps.vars.outputs.BASE_TAG }} + VOLTO_VERSION: ${{ steps.vars.outputs.VOLTO_VERSION }} + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Compute several vars needed for the build + id: vars + run: | + echo 'BASE_TAG=sha-$(git rev-parse --short HEAD)' >> $GITHUB_OUTPUT + python3 -c 'import json; data = json.load(open("./mrs.developer.json")); print("VOLTO_VERSION=" + (data["core"].get("tag") or "latest"))' >> $GITHUB_OUTPUT + - name: Test vars + run: | + echo 'BASE_TAG=${{ steps.vars.outputs.BASE_TAG }}' + echo 'VOLTO_VERSION=${{ steps.vars.outputs.VOLTO_VERSION }}' + + code-analysis: + runs-on: ubuntu-latest + steps: + - name: Checkout codebase + uses: actions/checkout@v4 + + - name: Use Node.js ${{ env.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: make install + + - name: Linting + id: lint + if: ${{ success() || failure() }} + run: make lint + + - name: i18n sync + id: i18n + if: ${{ success() || failure() }} + run: make ci-i18n + + - name: Unit Tests + id: unit + if: ${{ success() || failure() }} + run: make test + + - name: Report + if: ${{ success() || failure() }} + run: | + echo '# Code Analysis' >> $GITHUB_STEP_SUMMARY + echo '| Test | Status |' >> $GITHUB_STEP_SUMMARY + echo '| --- | --- |' >> $GITHUB_STEP_SUMMARY + echo '| Lint | ${{ steps.lint.conclusion == 'failure' && '❌' || ' ✅' }} |' >> $GITHUB_STEP_SUMMARY + echo '| i18n | ${{ steps.i18n.conclusion == 'failure' && '❌' || ' ✅' }} |' >> $GITHUB_STEP_SUMMARY + echo '| Unit Tests | ${{ steps.unit.conclusion == 'failure' && '❌' || ' ✅' }} |' >> $GITHUB_STEP_SUMMARY + + release: + runs-on: ubuntu-latest + needs: + - meta + - code-analysis + permissions: + contents: read + packages: write + + steps: + + - name: Checkout + uses: actions/checkout@v4 + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: | + ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }} + labels: | + org.label-schema.docker.cmd=docker run -d -p 3000:3000 ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }}:latest + flavor: + latest=false + tags: | + type=ref,event=branch + type=sha + type=raw,value=latest,enable={{is_default_branch}} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + platforms: linux/amd64 + context: frontend/ + file: frontend/Dockerfile + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + VOLTO_VERSION=${{ needs.meta.outputs.VOLTO_VERSION }} diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml deleted file mode 100644 index 090177a8..00000000 --- a/.github/workflows/unit.yml +++ /dev/null @@ -1,15 +0,0 @@ -name: Unit Tests -on: [push] -jobs: - unit: - runs-on: ubuntu-latest - strategy: - matrix: - node-version: [20.x] - - steps: - - name: Main checkout - uses: actions/checkout@v4 - - - name: Unit tests - run: make test-ci diff --git a/.gitignore b/.gitignore index a591ad0c..90993858 100644 --- a/.gitignore +++ b/.gitignore @@ -1,125 +1,5 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# Next.js build output -.next - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and *not* Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port -testing/volumes/src/ -testing/volumes/var/ -volumes/src/ -volumes/var/ - -addon-testing-project -addon-testing-project_cypress - -api/venv/ -api/instance/ -api/sources/ -api/constraints-mxdev.txt -api/requirements-mxdev.txt -development-searchkitblock/celery/venv/ -development-searchkitblock/celery/sources/ -build/ -.yarn/ -yarn.lock - -!docker-opensearch/.env -!acceptance/.env +!.vscode +node_modules +/core +/public +*.mo diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..d933aa8c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,16 @@ +repos: + - repo: https://github.com/ddanier/sub-pre-commit.git + rev: v3.7.1 # MUST match your pre-commit version + hooks: + - id: sub-pre-commit + alias: backend + name: "pre-commit for backend/" + args: ["-p", "backend/"] + files: "^backend/.*" + stages: ["commit"] + - id: sub-pre-commit + alias: frontend + name: "pre-commit for frontend" + args: ["-p", "frontend"] + files: "^frontend/.*" + stages: ["commit"] diff --git a/.project.eslintrc.js b/.project.eslintrc.js deleted file mode 100644 index 6e392578..00000000 --- a/.project.eslintrc.js +++ /dev/null @@ -1,50 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const projectRootPath = fs.realpathSync('./project'); // __dirname -const packageJson = require(path.join(projectRootPath, 'package.json')); - -let voltoPath = path.join(projectRootPath, 'node_modules/@plone/volto'); - -let configFile; -if (fs.existsSync(`${this.projectRootPath}/tsconfig.json`)) - configFile = `${this.projectRootPath}/tsconfig.json`; -else if (fs.existsSync(`${this.projectRootPath}/jsconfig.json`)) - configFile = `${this.projectRootPath}/jsconfig.json`; - -if (configFile) { - const jsConfig = require(configFile).compilerOptions; - const pathsConfig = jsConfig.paths; - if (pathsConfig['@plone/volto']) - voltoPath = `./${jsConfig.baseUrl}/${pathsConfig['@plone/volto'][0]}`; -} - -const AddonConfigurationRegistry = require(`${voltoPath}/addon-registry.js`); -const reg = new AddonConfigurationRegistry(projectRootPath); - -// Extends ESlint configuration for adding the aliases to `src` directories in Volto addons -const addonAliases = Object.keys(reg.packages).map((o) => [ - o, - reg.packages[o].modulePath, -]); - -module.exports = { - extends: `${voltoPath}/.eslintrc`, - settings: { - 'import/resolver': { - alias: { - map: [ - ['@plone/volto', '@plone/volto/src'], - ...addonAliases, - ['@package', `${__dirname}/src`], - ['@root', `${__dirname}/src`], - ['~', `${__dirname}/src`], - ], - extensions: ['.js', '.jsx', '.json'], - }, - 'babel-plugin-root-import': { - rootPathSuffix: 'src', - }, - }, - }, -}; diff --git a/.release-it.json b/.release-it.json deleted file mode 100644 index c3aa1317..00000000 --- a/.release-it.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "npm": { - "publish": true - }, - "git": { - "changelog": "npx auto-changelog --stdout --commit-limit false -u --template https://raw.githubusercontent.com/release-it/release-it/master/templates/changelog-compact.hbs", - "tagName": "${version}" - }, - "github": { - "release": true - }, - "hooks": { - "before:init": "", - "after:bump": "npx auto-changelog --commit-limit false -p" - } -} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..17446662 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "eslint.workingDirectories": ["./frontend"], + "flake8.cwd": "${workspaceFolder}/backend", + "flake8.args": ["--config=pyproject.toml"], + "black-formatter.cwd": "${workspaceFolder}/backend", + "isort.args": ["--settings-path=${workspaceFolder}/backend/pyproject.toml"] +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 900cad91..70e09c90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,469 +1,5 @@ -### Changelog +# Changes -All notable changes to this project will be documented in this file. Dates are displayed in UTC. +## 1.0.0 (2024-10-26) -Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). - -#### [0.3.3](https://github.com/rohberg/volto-searchkit-block/compare/0.3.2...0.3.3) - -- Bug fix for metadata values not part of vocabularies [`b1f370f`](https://github.com/rohberg/volto-searchkit-block/commit/b1f370f7f7bc20e9679ee91a81671e6f41f84445) -- Bug fix for metadata values not part of vocabularies [`09fe2b9`](https://github.com/rohberg/volto-searchkit-block/commit/09fe2b9721639a591c59a19a88084c0e343620c8) -- Fix format of search result to external target. [`9d35007`](https://github.com/rohberg/volto-searchkit-block/commit/9d3500794e8957ea3a44ff34b8b45ad4e7b80319) -- Update README.md [`9ef5a46`](https://github.com/rohberg/volto-searchkit-block/commit/9ef5a4666cb3ef14dd6ad70d558b49524afdb43d) -- code health [`b932d03`](https://github.com/rohberg/volto-searchkit-block/commit/b932d0306af28e359e162db05e1ff771923f2441) -- Update README.md [`7822514`](https://github.com/rohberg/volto-searchkit-block/commit/7822514b3c5377b01ab2b2b1c03d46b148be5120) -- Update package.json [`4aac32f`](https://github.com/rohberg/volto-searchkit-block/commit/4aac32f4a9bc6c4c27a514f17db5144acfb40462) - -#### [0.3.2](https://github.com/rohberg/volto-searchkit-block/compare/0.3.1...0.3.2) - -> 23 July 2023 - -- Replace axios with fetch [`#14`](https://github.com/rohberg/volto-searchkit-block/pull/14) -- Bump semver from 7.3.8 to 7.5.4 in /acceptance [`#13`](https://github.com/rohberg/volto-searchkit-block/pull/13) -- Delete yarn.lock [`337a712`](https://github.com/rohberg/volto-searchkit-block/commit/337a712a728c4007c3687ab5cafa7c03c5fd7590) -- Refactor SectionsSearch [`cdb3775`](https://github.com/rohberg/volto-searchkit-block/commit/cdb3775ebd1622e757479386ac207a9195f27718) -- Bookmarks: Add export button for filter mapping to block sidebar configuration. [`b422b5b`](https://github.com/rohberg/volto-searchkit-block/commit/b422b5b4940aed3db062b7dba600035923f59e7d) -- Update README with user search instructions. [`7654dce`](https://github.com/rohberg/volto-searchkit-block/commit/7654dce1a78c2bee0988ac4021551c69aac0dfe2) -- Release 0.3.2 [`6214066`](https://github.com/rohberg/volto-searchkit-block/commit/621406641d43475d4030af9f14aacae86bdca624) -- prettier [`5d2014b`](https://github.com/rohberg/volto-searchkit-block/commit/5d2014b53fb4b0abebfb5b9c1f303c8013eb1f8d) -- Exclude AND and OR [`469b807`](https://github.com/rohberg/volto-searchkit-block/commit/469b807e752be9aba2f682261befb6226e718f1a) -- Dispatch event "searchkitQueryChanged" on query change. [`d6354fa`](https://github.com/rohberg/volto-searchkit-block/commit/d6354fa81d7f4008902066d9666dfba431725ec1) -- code sanity [`ff695ea`](https://github.com/rohberg/volto-searchkit-block/commit/ff695ea5ca2300bbfa0ba6e9e474b615cd840cfe) -- Remove reminders [`b5f4b4d`](https://github.com/rohberg/volto-searchkit-block/commit/b5f4b4da198f21b9fa07f40bae65d6b7c25b84a3) -- Update .gitignore [`554592c`](https://github.com/rohberg/volto-searchkit-block/commit/554592c2a49e59b18a1f5facd6bf1b14f779b34f) -- Update SectionsSearch.jsx [`bb19961`](https://github.com/rohberg/volto-searchkit-block/commit/bb199617b87b352037f9222773257b0b53b775af) - -#### [0.3.1](https://github.com/rohberg/volto-searchkit-block/compare/0.3.0...0.3.1) - -> 4 May 2023 - -- Do not flatten url to app url for external content. [`bf1f662`](https://github.com/rohberg/volto-searchkit-block/commit/bf1f662a57184e529fe069fa69fd35b93c13451d) -- Release 0.3.1 [`e3cff4e`](https://github.com/rohberg/volto-searchkit-block/commit/e3cff4e287bebdcda57f20dc437ada4205bf46e0) - -#### [0.3.0](https://github.com/rohberg/volto-searchkit-block/compare/0.2.0...0.3.0) - -> 3 May 2023 - -- Update release-it [`16d8cfc`](https://github.com/rohberg/volto-searchkit-block/commit/16d8cfc008ff3ebc6cce492127bdf478da36076b) -- Dropdown: Keep menu open for multiple selection [`5652231`](https://github.com/rohberg/volto-searchkit-block/commit/565223113546bbdd95fd40363cd33b0a1fa58f87) -- Release 0.3.0 [`403cfdf`](https://github.com/rohberg/volto-searchkit-block/commit/403cfdf900fefb24b42d2dfa30d4dc3e403fafa7) -- Filter options: Show clear icon link to deselect option [`b610fc5`](https://github.com/rohberg/volto-searchkit-block/commit/b610fc51592bd2d4fd24522b37c8d0dfa0f04ef3) -- Fix clear buttons in filter options [`b7598d8`](https://github.com/rohberg/volto-searchkit-block/commit/b7598d8e16645b8c0ed970f714b6c6c12eee8891) -- Add translation for 'deselect all' [`95fe15b`](https://github.com/rohberg/volto-searchkit-block/commit/95fe15b1d7b0899356b2ef3e0d8bac11087e7445) -- REmove "private": false, [`3532b48`](https://github.com/rohberg/volto-searchkit-block/commit/3532b4808da92afe7cd627d6b75a89286aa2e7e3) -- Reset sections selection on reset of search string [`065daf9`](https://github.com/rohberg/volto-searchkit-block/commit/065daf96f4262b93183f7b7818a7ae4f7420dd34) -- "react-searchkit": "v2.2.0" [`6c4a90c`](https://github.com/rohberg/volto-searchkit-block/commit/6c4a90cc406db8ba5225152a749e7314bf069129) -- Update package.json [`b2399b3`](https://github.com/rohberg/volto-searchkit-block/commit/b2399b362c4b9545c23e01735d43bdde7f0c90a1) -- prettier [`8b7fb5b`](https://github.com/rohberg/volto-searchkit-block/commit/8b7fb5b9687fdd4d675a6ea632f6f2b7e57bdba4) -- Filter options more compact [`6107026`](https://github.com/rohberg/volto-searchkit-block/commit/61070269da62e29fae0b0c2f48f1d186c19b1e81) -- Update package.json [`38aea58`](https://github.com/rohberg/volto-searchkit-block/commit/38aea58bb09af433a11590e8bb97f932864eeb89) -- Update springisnow-volto-searchkit-block.less [`6c63ff0`](https://github.com/rohberg/volto-searchkit-block/commit/6c63ff0cba8b37e8a02d3f7e209b0370d2d0ee24) -- Update FacetedSearch.jsx [`1816fe4`](https://github.com/rohberg/volto-searchkit-block/commit/1816fe401185475f7bc9c6bb8afaa0111cc5b109) - -#### 0.2.0 - -> 4 March 2023 - -- Small fixes [`#11`](https://github.com/rohberg/volto-searchkit-block/pull/11) -- Fix linting warnings [`#10`](https://github.com/rohberg/volto-searchkit-block/pull/10) -- Acceptance tests [`#9`](https://github.com/rohberg/volto-searchkit-block/pull/9) -- Refactoring [`#8`](https://github.com/rohberg/volto-searchkit-block/pull/8) -- Optional search on sections [`#7`](https://github.com/rohberg/volto-searchkit-block/pull/7) -- block configurable [`#4`](https://github.com/rohberg/volto-searchkit-block/pull/4) -- Testing searchstrings [`#3`](https://github.com/rohberg/volto-searchkit-block/pull/3) -- Compounder and stemmer [`#2`](https://github.com/rohberg/volto-searchkit-block/pull/2) -- Update filter doc count on filtering [`#1`](https://github.com/rohberg/volto-searchkit-block/pull/1) -- Update yarn.lock [`2dca452`](https://github.com/rohberg/volto-searchkit-block/commit/2dca452e49bc24384761316327d58d1fe27a1241) -- Add acceptance/ and dockerfiles/ remove old cypress/ (goes to acceptance/) [`2012172`](https://github.com/rohberg/volto-searchkit-block/commit/2012172eba3f6b84cb3617db631578d3daa3de57) -- Add cypress 10 [`245be3e`](https://github.com/rohberg/volto-searchkit-block/commit/245be3e2b2e052cc4299606ddb79dad741e4a103) -- Integrate elasticsearch in docker-compose [`84be7c5`](https://github.com/rohberg/volto-searchkit-block/commit/84be7c5db957d1612430d46eefc11bd5f5598dca) -- remove /testing/volumes [`e5aaa32`](https://github.com/rohberg/volto-searchkit-block/commit/e5aaa32524312a88f48c94b907829222cb4adb3f) -- Add elasticsearch mapping, preprocessing and analysis json files [`27dfd8c`](https://github.com/rohberg/volto-searchkit-block/commit/27dfd8c2d17bf0b089fa0482908578ee4ab8b870) -- Ready to write acceptance tests. [`2330ec1`](https://github.com/rohberg/volto-searchkit-block/commit/2330ec18aa189df2206dabcca9c4249cfda79fe3) -- Make more configurable in block [`95037c3`](https://github.com/rohberg/volto-searchkit-block/commit/95037c391c07c6a8a52b0f03c225231e15ab3f35) -- Add cypress [`10052a0`](https://github.com/rohberg/volto-searchkit-block/commit/10052a0f2263512624cc5fcaf647ad49c2e13a5d) -- Create elasticsearch-mappings_example.json [`e17a0dd`](https://github.com/rohberg/volto-searchkit-block/commit/e17a0dd1777ac0ff21b148bb0451cd2d03811a65) -- Initial acceptance test setup [`ad47910`](https://github.com/rohberg/volto-searchkit-block/commit/ad47910c61f3fb8ac80b08fc2aa89358367ea9d9) -- Searchkit [`bbecd57`](https://github.com/rohberg/volto-searchkit-block/commit/bbecd57eaa8dfb9b00c50bfdf7db634cf1d6f347) -- Release 0.2.0 [`1d572f6`](https://github.com/rohberg/volto-searchkit-block/commit/1d572f654fef09e1739927d0405a8cb8c40d5dfb) -- Update springisnow-volto-searchkit-block.less [`5f99f61`](https://github.com/rohberg/volto-searchkit-block/commit/5f99f6192fb0736172301d67968378775fecd32c) -- Add dev stuff: elasticsearch, redis, celery [`aed5640`](https://github.com/rohberg/volto-searchkit-block/commit/aed564039705f4058ba4228470fa53de6ca946fb) -- Revert "Create FacetedSearch copy.jsx" [`d335dc6`](https://github.com/rohberg/volto-searchkit-block/commit/d335dc6ca0fa8cb4e48b6f280a801dd3e25a966c) -- Create FacetedSearch copy.jsx [`955f815`](https://github.com/rohberg/volto-searchkit-block/commit/955f815e92f36ade21267449186f73cfd6ef8e44) -- Update configuration [`31a6d2f`](https://github.com/rohberg/volto-searchkit-block/commit/31a6d2fa927043613885c1b356cea2789fa45d07) -- Update FacetedSearch.jsx [`c5360db`](https://github.com/rohberg/volto-searchkit-block/commit/c5360db65f78c2d9dbc8c9db0ad3e283a3d62bea) -- Fix permission for result list [`16ae788`](https://github.com/rohberg/volto-searchkit-block/commit/16ae788eaa5c26e6f0dfb1fc130128197e32aaa9) -- Search by section (draft) [`6913a84`](https://github.com/rohberg/volto-searchkit-block/commit/6913a8472fc0a374853380d92e5adc43fe647662) -- sort of results [`bbcb257`](https://github.com/rohberg/volto-searchkit-block/commit/bbcb25724e374ee0826c6fd80cf1a1178ba4691b) -- Update elasticsearch mapping, analysis and preprocessing [`f529dfa`](https://github.com/rohberg/volto-searchkit-block/commit/f529dfa76aff9cec025522be29a08a2577ec374d) -- Make buckets configurable. Refactor ExtraInfo for result items [`bb8bf2f`](https://github.com/rohberg/volto-searchkit-block/commit/bb8bf2fdfd438ef606148aeaf44e7321ecc34e3d) -- Initial commit [`71c3377`](https://github.com/rohberg/volto-searchkit-block/commit/71c3377377e3ca4b383307ea06f62842abbcc738) -- Catch error on non existing subjects field name. [`b02a79f`](https://github.com/rohberg/volto-searchkit-block/commit/b02a79fdbce5040b5b0bd6c3f9251a785c314151) -- Add locales [`1ac26f3`](https://github.com/rohberg/volto-searchkit-block/commit/1ac26f38e45df725e4658adb8e9c9950eba39603) -- Update README and License [`5ee5278`](https://github.com/rohberg/volto-searchkit-block/commit/5ee5278a1a103e6d898eaf37b07dfc94cd4e8e5d) -- Makefile according '@kitconcept/volto-blocks-grid' [`21aa2f0`](https://github.com/rohberg/volto-searchkit-block/commit/21aa2f0e7c2e8c9670b9f29e134d5984833996fd) -- Enhance testing view http://igib.example.com/controlpanel/test-searchkit-querystrings [`e19685a`](https://github.com/rohberg/volto-searchkit-block/commit/e19685a357602f25c3517abbb237ccb527699f86) -- Fix search in PDF. [`3c6808d`](https://github.com/rohberg/volto-searchkit-block/commit/3c6808dc00321ca98fb75b8a623f17ccd8d1b1d6) -- Fix bugs: include, exclude, exact [`0b0ca88`](https://github.com/rohberg/volto-searchkit-block/commit/0b0ca88a4d518252995fc4a89aa147dd37eaeed3) -- Generate locales [`8c147a0`](https://github.com/rohberg/volto-searchkit-block/commit/8c147a064afc427319d255dfc77208e9e45afbdf) -- Move messages to one file [`a1375c3`](https://github.com/rohberg/volto-searchkit-block/commit/a1375c310ee38128b2b96e1414af01df645595bd) -- refactor aggs [`00100d4`](https://github.com/rohberg/volto-searchkit-block/commit/00100d45005886ee0d1b5de3128769af3e0353b2) -- Filter: display: flex [`d24b9d9`](https://github.com/rohberg/volto-searchkit-block/commit/d24b9d9f567147d57c639418a0cdf48a011939b4) -- searchresults: tag links of result items clickable [`9cf2966`](https://github.com/rohberg/volto-searchkit-block/commit/9cf29664ebabeee5f3f965ff13953f8bbffcc526) -- ci [`26b8302`](https://github.com/rohberg/volto-searchkit-block/commit/26b83028d84df861b1ae105cc9dd96e20290cdd9) -- First try with bool query [`e52ab4c`](https://github.com/rohberg/volto-searchkit-block/commit/e52ab4c978d0a558b27c6d700a26ca4dcfd4d564) -- Show and hide filters according block configuration. Reorganise block configuration in fieldsets. [`b4bdcac`](https://github.com/rohberg/volto-searchkit-block/commit/b4bdcacb58f6e975d9674263c76616d3789bb0ca) -- search for testing [`6cf398d`](https://github.com/rohberg/volto-searchkit-block/commit/6cf398df28c6c15e9d74fb298c136248c9f0b8e7) -- dummy es filter for updating the search filter counts [`1ae224b`](https://github.com/rohberg/volto-searchkit-block/commit/1ae224ba4aba48438024defbaa19337e0ffb86cd) -- architecture without functionality [`4525916`](https://github.com/rohberg/volto-searchkit-block/commit/45259166c73187bb1afb55750271661dca6f0859) -- acceptance backend is running! [`5ef0838`](https://github.com/rohberg/volto-searchkit-block/commit/5ef0838c457e37f54fecb1465b7f5d3144ae11f1) -- Add filter option "select all" [`ff75e46`](https://github.com/rohberg/volto-searchkit-block/commit/ff75e46ba523742096e3ee0653be419caa6a8c91) -- Remove build [`378326a`](https://github.com/rohberg/volto-searchkit-block/commit/378326a9f21c98663fb5a492cc3fa982ba3248f5) -- Code clean up [`f9933d2`](https://github.com/rohberg/volto-searchkit-block/commit/f9933d2ee2dad86a2869afea5ed21ee44c8b6429) -- Add german translation [`f00b798`](https://github.com/rohberg/volto-searchkit-block/commit/f00b79892f1aca1bcba8be184ea0947714b9a2df) -- Revert "eslint" [`ffca9de`](https://github.com/rohberg/volto-searchkit-block/commit/ffca9de34d63a5bae466d90b404c12315bd7a074) -- eslint [`866aa1c`](https://github.com/rohberg/volto-searchkit-block/commit/866aa1cd34ff0d56439bab5fab2fc9353ef8963e) -- search by section: show number of results [`297cd7a`](https://github.com/rohberg/volto-searchkit-block/commit/297cd7a2f8aa7a99941c2d8da3186d9d8958bf6a) -- Add api/backend [`6c0f941`](https://github.com/rohberg/volto-searchkit-block/commit/6c0f941cb3bda304b948a111044f408f4e740bd5) -- Styling Filters [`080359c`](https://github.com/rohberg/volto-searchkit-block/commit/080359c405136ab7f5b1c4673b7425d927979373) -- Show highlight / matches [`c044c1f`](https://github.com/rohberg/volto-searchkit-block/commit/c044c1fe43c553bd397c825826bd91d91a5136ed) -- Isolate SearchBarSection. Hide delete button if querystring empty [`5f7cb74`](https://github.com/rohberg/volto-searchkit-block/commit/5f7cb745a3002ec0a58b75d932e39e66268f8a4d) -- Fix highlights [`38309d0`](https://github.com/rohberg/volto-searchkit-block/commit/38309d091c5ecc59ee2ab59c5a9bb400f4d3b348) -- Enhance configuration feedback [`fe58897`](https://github.com/rohberg/volto-searchkit-block/commit/fe588973b0356dd7119934a152bde86f88dc1674) -- Update TestSearchkitQuerystrings.jsx [`c0f4e69`](https://github.com/rohberg/volto-searchkit-block/commit/c0f4e69b080feac0dbd214cf05d5f8275e2a98ab) -- wrap searchBar to align reset / delete button [`3add591`](https://github.com/rohberg/volto-searchkit-block/commit/3add591d3363b1be4d082d506b7d78bb2a7b52a4) -- draft of multiselection with removable single items in dropdown header [`d38c91d`](https://github.com/rohberg/volto-searchkit-block/commit/d38c91de78342cafd3698f19f77f4adcc9864ab7) -- dev celery [`ab6a1aa`](https://github.com/rohberg/volto-searchkit-block/commit/ab6a1aa496a126d113fc263f173b886aaad78e04) -- reference block with default components of react-searchkit [`ee87069`](https://github.com/rohberg/volto-searchkit-block/commit/ee870693dafdaf4591cfff13e82d49e0b1f7de04) -- Enhance Error message [`0bbcbd8`](https://github.com/rohberg/volto-searchkit-block/commit/0bbcbd8e57b1427592740543faad7403d6242455) -- Search by section [`d0ab19a`](https://github.com/rohberg/volto-searchkit-block/commit/d0ab19ae22ed16fa03f0ca9c9792e5b31cfc2704) -- relocation and relocationcontext [`10c84f0`](https://github.com/rohberg/volto-searchkit-block/commit/10c84f02cdc10b2285b0c95c77375944c3c49869) -- cleanup and remove of IGIB naming [`7a17bac`](https://github.com/rohberg/volto-searchkit-block/commit/7a17bacd2d77dd26622f9d1e38e61f44ee5c60f2) -- Fix dev backend [`2ff2e60`](https://github.com/rohberg/volto-searchkit-block/commit/2ff2e60899d68bd6635861d25ba4f7c328fbd70a) -- delete button for filters [`13bd3f1`](https://github.com/rohberg/volto-searchkit-block/commit/13bd3f1bb316b84e46ff5ae9f6071b463521d83f) -- draft docker-compose.yml [`19952a3`](https://github.com/rohberg/volto-searchkit-block/commit/19952a3e591bea2fe648a11bfb1a0d90a454ff83) -- Stylling: new public.less [`4f9cffa`](https://github.com/rohberg/volto-searchkit-block/commit/4f9cffa4d4cb9f39066a98392b8665104ae96b71) -- Update add-on setup [`1d4b5c4`](https://github.com/rohberg/volto-searchkit-block/commit/1d4b5c4a26d39222cfbe955a250ed2c575aa6b4a) -- Fix filter [`e31a3e6`](https://github.com/rohberg/volto-searchkit-block/commit/e31a3e6ff991e96d9ad57820c9be6acdb3a21a1b) -- Add Count. Add Link to matches. [`53c3868`](https://github.com/rohberg/volto-searchkit-block/commit/53c3868af633369cc711c33c652c6b1416c92ee4) -- Draft: Select multiple options with cmd/ctrl key [`08cffdf`](https://github.com/rohberg/volto-searchkit-block/commit/08cffdf3a856424d24bf581897a1dd7d9be7ff3e) -- Searchbar added and relocated to Navigation [`1fab876`](https://github.com/rohberg/volto-searchkit-block/commit/1fab876b32057d4df79e7c92010497efd663d75f) -- Fix layout facets and input field searchstring [`064357d`](https://github.com/rohberg/volto-searchkit-block/commit/064357d2fc646643296f7f209c23cc7c09056b3f) -- Update blocks.cy.js [`67ccad4`](https://github.com/rohberg/volto-searchkit-block/commit/67ccad42acd470fbece0dbc2d5bf7abef3c00ee2) -- Fix sort on layout [`4872774`](https://github.com/rohberg/volto-searchkit-block/commit/4872774577a367eaa651e99b1aeae6eb4e3308ec) -- Styling sort by: links statt dropdown [`183837a`](https://github.com/rohberg/volto-searchkit-block/commit/183837a84467c0a241a8f9e397c60c9b48f3effc) -- label of selectedFilters, not token [`d2f1393`](https://github.com/rohberg/volto-searchkit-block/commit/d2f139389145dc241b9b68ffe961b25010cbfe3d) -- First simple test [`4e78a7f`](https://github.com/rohberg/volto-searchkit-block/commit/4e78a7ffa78863c1f16e7c0d1ad87fcc098ac615) -- test view: Get settings from controlpanel [`c564765`](https://github.com/rohberg/volto-searchkit-block/commit/c564765f9aa2f7e01cd2fef6b1837f853ad7abf8) -- Fix trackSiteSearch: Only on search, not just typing [`2fdfacb`](https://github.com/rohberg/volto-searchkit-block/commit/2fdfacb4f7f46bd3b97509de13e21de22332490b) -- Search in nested fields like file fields [`7793c4e`](https://github.com/rohberg/volto-searchkit-block/commit/7793c4e0a0eb86246c31b17ea1585ce7f42db9b2) -- custom response serializer to add label (until now just the token) [`24d7c19`](https://github.com/rohberg/volto-searchkit-block/commit/24d7c1934a40fa8d04fc8d1c3574fab47ff78b4c) -- Fix serializer [`46b9ba3`](https://github.com/rohberg/volto-searchkit-block/commit/46b9ba3758c41e7e3abc22639e866013c893ea0a) -- Update README.md [`630bf37`](https://github.com/rohberg/volto-searchkit-block/commit/630bf3744631a8eb1428779a418d719ee91a865d) -- Fix mount-bind [`4b929ff`](https://github.com/rohberg/volto-searchkit-block/commit/4b929fff48abca1821b4d4832efe4a01b7058692) -- Fix docker Plone 6 mac [`5416bee`](https://github.com/rohberg/volto-searchkit-block/commit/5416beee0bb1bfee50921c62d87b82f480366264) -- Styling: Metadata: Separator [`dc13218`](https://github.com/rohberg/volto-searchkit-block/commit/dc13218a5b9464d66c24e4f6188888b4e7d3ac00) -- result list: bug fix links of meta data. informationtype: link instead of label [`5c0ed73`](https://github.com/rohberg/volto-searchkit-block/commit/5c0ed73f4198688bed1d230bbe977f8c8749b6eb) -- configurable overriddenComponents [`f71212f`](https://github.com/rohberg/volto-searchkit-block/commit/f71212f25564f026adc56bcb7e0d2cda7487e557) -- on searchstring search: scrollIntoView. [`8c5fcd4`](https://github.com/rohberg/volto-searchkit-block/commit/8c5fcd4aea86f6c0fbe0dffb71a22cd836d5bf71) -- Make facets configurable [`8a5682e`](https://github.com/rohberg/volto-searchkit-block/commit/8a5682e6e5d74391cbb4056aea03f073324fd029) -- Make configurable: allowed_content_types, allowed_review_states [`93528b1`](https://github.com/rohberg/volto-searchkit-block/commit/93528b17c45008fbe25aff91b5afd0193f099c5e) -- styling filter [`f3aace3`](https://github.com/rohberg/volto-searchkit-block/commit/f3aace3b9846ff7dd3573cff0c8d36e995bf4760) -- Add locales [`d0ab0de`](https://github.com/rohberg/volto-searchkit-block/commit/d0ab0de994b34f76e90ac13331a1a70ccd82b1cb) -- Add locales [`19ac737`](https://github.com/rohberg/volto-searchkit-block/commit/19ac73755bf0e61bfa3e2f66189983b5f395a8b6) -- refactor. Export ploneSearchApi. [`ed74b47`](https://github.com/rohberg/volto-searchkit-block/commit/ed74b47abb0eef174a6c87f59ed2a32011c4a0e5) -- first filter (but still too much: XY must not be filtered by XY) [`bbf6be1`](https://github.com/rohberg/volto-searchkit-block/commit/bbf6be1fb37cecca9d1d97266621cbec71a3dea0) -- Styling: filter [`a937ec1`](https://github.com/rohberg/volto-searchkit-block/commit/a937ec1c3165e68c5f7a1b5d83f9090ac75f6125) -- proxy removed [`ad723bb`](https://github.com/rohberg/volto-searchkit-block/commit/ad723bb11a4f38c78788142dfc8d64a9534482a5) -- Update README.md [`5ee1c1e`](https://github.com/rohberg/volto-searchkit-block/commit/5ee1c1e5fca516c57a55099aa84c0fd370dac7e8) -- Fix bug search: trim query string. [`437da04`](https://github.com/rohberg/volto-searchkit-block/commit/437da04f102f04f851a3f688f505f024652e8b49) -- proxy [`e5c263b`](https://github.com/rohberg/volto-searchkit-block/commit/e5c263b5a117b1de3ef7146bc158b5606a80820f) -- Create DEVELOPMENT.md [`69c9d9a`](https://github.com/rohberg/volto-searchkit-block/commit/69c9d9ab302542b0804896cbf82ecbff61d24863) -- Remove unnecessary blocks fields [`cdf371a`](https://github.com/rohberg/volto-searchkit-block/commit/cdf371ac1e8ff96274af4e4083e5a52c00db09d3) -- Remove obsolete _getAllowedHits [`8d8acb6`](https://github.com/rohberg/volto-searchkit-block/commit/8d8acb627902f95525e03f1b1c73163141b3c003) -- ElasticSearchMatches [`d4e3fda`](https://github.com/rohberg/volto-searchkit-block/commit/d4e3fda79c12377aca9a66845f010cda620d31e3) -- Add TestSearchkitQuerystrings [`8654c3f`](https://github.com/rohberg/volto-searchkit-block/commit/8654c3f0ed4c7ef5e750242355d7c2e53015be8b) -- Switch to scroll to input field search on Results [`7a512f0`](https://github.com/rohberg/volto-searchkit-block/commit/7a512f018cb0056a94e058ab4bf9ebacf2061c3d) -- Fix request to Elasticsearch [`fbbc96f`](https://github.com/rohberg/volto-searchkit-block/commit/fbbc96f08534a113485f0a651c3e5881cf73ce83) -- Wenn Wort mit Bindestrich wie 'Dinkel-Mehl', dann suche auch nach Dinkel und Mehl [`ad934f0`](https://github.com/rohberg/volto-searchkit-block/commit/ad934f0d4631184f41e7bda642e213c694d8c732) -- Update Volto 14 [`5b386df`](https://github.com/rohberg/volto-searchkit-block/commit/5b386df19307727b084e0b77f9136d218c1d55ef) -- Update Makefile [`9457175`](https://github.com/rohberg/volto-searchkit-block/commit/9457175332ae58d0ab8ead14049651b4f8d4935e) -- Update CustomESRequestSerializer.jsx [`1ccab17`](https://github.com/rohberg/volto-searchkit-block/commit/1ccab179eb274af9dbff7a064f94e951e6519f1d) -- Update CustomESResponseSerializer.jsx [`1a3f2e2`](https://github.com/rohberg/volto-searchkit-block/commit/1a3f2e2b28b28165f90ed4fe4bd39a6c47f7c639) -- docu [`2efdce7`](https://github.com/rohberg/volto-searchkit-block/commit/2efdce73ae1def564aec599c2c6c71208d6001c9) -- Update FacetedSearch.jsx [`c48f44a`](https://github.com/rohberg/volto-searchkit-block/commit/c48f44adff58fd4cdf3f333d1216ff7d87cc6c32) -- Overriding components per app [`7bd1589`](https://github.com/rohberg/volto-searchkit-block/commit/7bd158987418f359ddc787bf7292d78c88dc133b) -- Update docker-compose.yml [`d84835e`](https://github.com/rohberg/volto-searchkit-block/commit/d84835eb6373458757ca389a59c2f0a6958149e1) -- Fix results after dummy ES filter [`e16d301`](https://github.com/rohberg/volto-searchkit-block/commit/e16d301afae453efb4fb033f5ad30b29643ac638) -- SearchBar added [`4683b29`](https://github.com/rohberg/volto-searchkit-block/commit/4683b29af77348d3e5d5041d1e7875ad61973fc2) -- Clean up. [`ec1a3bb`](https://github.com/rohberg/volto-searchkit-block/commit/ec1a3bbd75a2741707235d7d68ce2dc2d9029b65) -- force_fuzzy `${word}~` [`0defe0c`](https://github.com/rohberg/volto-searchkit-block/commit/0defe0c13377ad7778563a96d6b558066d84fe59) -- Add example ElasticSearch mapping [`75e9df3`](https://github.com/rohberg/volto-searchkit-block/commit/75e9df396c6013161eed3e1c3ae4de52629b8ea5) -- Update DEVELOPMENT.md [`97a1c1d`](https://github.com/rohberg/volto-searchkit-block/commit/97a1c1d55bbfd05746809b508dabfd1038aedba0) -- Delete foo.cy.js [`44b9001`](https://github.com/rohberg/volto-searchkit-block/commit/44b900127f4b4aa3370fc0fe6d8457018633d753) -- Fix url in result list [`1fd69ba`](https://github.com/rohberg/volto-searchkit-block/commit/1fd69bac63fe1461f7874976dda4936d7b27cb68) -- next step with 'command: celery; robot-server with ROHBERG_ELASTICSEARCHBLOCKS_FIXTURE [`d667f2c`](https://github.com/rohberg/volto-searchkit-block/commit/d667f2c216e825b35db761eb2e8844d5c6f76df5) -- run test backend with "docker compose" [`7c45d2d`](https://github.com/rohberg/volto-searchkit-block/commit/7c45d2d33c53826d3213f1c45c776ea3cf546e7d) -- Fix missing imports in test control panel [`3610513`](https://github.com/rohberg/volto-searchkit-block/commit/3610513c3180ebf2fca057116b37f4fcdbdac659) -- Fallback for missing search_sections [`7e28942`](https://github.com/rohberg/volto-searchkit-block/commit/7e289424ec2abee849af61c2224e75d5cdaf7116) -- Fix edit mode [`fec65c4`](https://github.com/rohberg/volto-searchkit-block/commit/fec65c4dd695b7c27a87a628f08b186a4273441e) -- Clean up fields [`75b74cb`](https://github.com/rohberg/volto-searchkit-block/commit/75b74cb72c1b465800fc6c85edd971b84e14a1b0) -- Configuration for dev and testing [`eb8bf0f`](https://github.com/rohberg/volto-searchkit-block/commit/eb8bf0f6897bda9b545d235352b4212c919e6d72) -- Sort Filter options [`ad35919`](https://github.com/rohberg/volto-searchkit-block/commit/ad35919a6268a11c70285c211e4fea3abac53df1) -- Prepare release [`20ea60b`](https://github.com/rohberg/volto-searchkit-block/commit/20ea60b56fa21c62a4d0885043a19591f932062b) -- Remove debug [`3be6072`](https://github.com/rohberg/volto-searchkit-block/commit/3be6072593848b1bfac9ac04a426cd576680df94) -- Sort matches case insensitive [`19b42ef`](https://github.com/rohberg/volto-searchkit-block/commit/19b42ef6e8220cc7b51bc0667667761c6788c5b5) -- Fix unit test / snapshot [`e54dc29`](https://github.com/rohberg/volto-searchkit-block/commit/e54dc290508451576204801502f8314ff7b935eb) -- Create StateLogger.jsx [`443ae71`](https://github.com/rohberg/volto-searchkit-block/commit/443ae71c069fa254b3b60edcd1a8647a6a654cd5) -- Back to command: tail -f /dev/null. Fix backend environment variables [`515b578`](https://github.com/rohberg/volto-searchkit-block/commit/515b5785daba6044d6d6d215f665dadd4908beed) -- Update TESTING.md [`7aadb70`](https://github.com/rohberg/volto-searchkit-block/commit/7aadb702bff4bb49091983f6f9447f3014e61abd) -- Update TESTING.md [`f5acf3e`](https://github.com/rohberg/volto-searchkit-block/commit/f5acf3e797b03bc4e8db525b206b74395036d107) -- clean up: remove console.debug [`19932ab`](https://github.com/rohberg/volto-searchkit-block/commit/19932abfb43475c55c9cc54679580d8ad0220cbe) -- Fix schema to vocabulary [`7988876`](https://github.com/rohberg/volto-searchkit-block/commit/798887610779eab17b1c5d31289ee7dafc579a0d) -- panel for testing matches: make configurable via environment variables [`9d0364f`](https://github.com/rohberg/volto-searchkit-block/commit/9d0364f5a7a9c8d33ac90cba47b965b1287aea03) -- track search string [`1c6c72e`](https://github.com/rohberg/volto-searchkit-block/commit/1c6c72e730cc7aa0ebb809371ba08ad7e87aa432) -- Update CustomESRequestSerializer.jsx: typos and logging [`ad17506`](https://github.com/rohberg/volto-searchkit-block/commit/ad17506c91fee64fb3cf629ce0d9a27532de99da) -- block title translation for slash menu [`c5d50b5`](https://github.com/rohberg/volto-searchkit-block/commit/c5d50b53012d88780b77751b52e10e9bc9f22b34) -- Fix Error component [`7c0bac0`](https://github.com/rohberg/volto-searchkit-block/commit/7c0bac0075647fa874faac2f00109de1494580d8) -- Update README [`c421901`](https://github.com/rohberg/volto-searchkit-block/commit/c421901d591ba3bffdf7ba61b140b51661c1c6b5) -- Switch from elasticsearch to elk image [`5770e74`](https://github.com/rohberg/volto-searchkit-block/commit/5770e74f025f035504328f5852aa5e7dbebdcbeb) -- clean up [`d10c1cf`](https://github.com/rohberg/volto-searchkit-block/commit/d10c1cfde584c29410e2cb17a4c4b7370c3e12c9) -- Clean up [`9ef0000`](https://github.com/rohberg/volto-searchkit-block/commit/9ef000092adb26bbed1af2cf75ecd9eaf7c1a953) -- Remove post-check Plone [`933db0d`](https://github.com/rohberg/volto-searchkit-block/commit/933db0d226de0e69db977b034364c358a9855826) -- Update Makefile: Create and consolidate testing project [`569cbf9`](https://github.com/rohberg/volto-searchkit-block/commit/569cbf9a65dbbb38ecc7d500b422aa89f8d88673) -- Add elasticsearch word list (lexicon) and keywords [`6f7cbfd`](https://github.com/rohberg/volto-searchkit-block/commit/6f7cbfdda29ef57011b96fd38ba94852abd29c4b) -- SearchBar: reset button to reset all (qs and filter) [`aeeeb73`](https://github.com/rohberg/volto-searchkit-block/commit/aeeeb7356c8dce822a2ef2d7d270eb2b4f6bda80) -- Create helpers.jsx [`73f27e5`](https://github.com/rohberg/volto-searchkit-block/commit/73f27e574ffefbebaacb8dbc49b58adfaa0c8bcc) -- Update README.md [`3696e76`](https://github.com/rohberg/volto-searchkit-block/commit/3696e761064643839b5d4e98487ca179d2043256) -- Upgrade to "react-searchkit": "v2.0.2" (was 1.x) [`28b7bea`](https://github.com/rohberg/volto-searchkit-block/commit/28b7beac2fecfcc7918e3a8c643eda3447a180af) -- Rename testing/ [`13f9a99`](https://github.com/rohberg/volto-searchkit-block/commit/13f9a99018577669dec7f337393133efcf2c3651) -- Add documentation [`18ecd04`](https://github.com/rohberg/volto-searchkit-block/commit/18ecd043b4aed66db21142ac0dbdd1513b756228) -- Stemming: Redirect exact search to field 'xy.exact' [`593835e`](https://github.com/rohberg/volto-searchkit-block/commit/593835eebc5f510310a7565bf2667e9e5c6489e3) -- "react-searchkit": "github:rohberg/react-searchkit" [`7bd81bf`](https://github.com/rohberg/volto-searchkit-block/commit/7bd81bf53385f39e174a9c5438719071203ee119) -- Add collective.elastic.plone [`dbf288d`](https://github.com/rohberg/volto-searchkit-block/commit/dbf288d917538231c93161e7037a01540faab33e) -- draft pm2 [`e80d43f`](https://github.com/rohberg/volto-searchkit-block/commit/e80d43fc8552920f00aa44918483047359f0d385) -- Add scrollToTarget helper [`5f32dd5`](https://github.com/rohberg/volto-searchkit-block/commit/5f32dd5b09e51b987f4a8b35f9c7bdce64a999fb) -- Increase number of buckets (30 instead of default 10) [`6279d8c`](https://github.com/rohberg/volto-searchkit-block/commit/6279d8c6e20ece25edfcf29ff3f453ce67d5cf6b) -- Update FacetedSearch.jsx [`9efa800`](https://github.com/rohberg/volto-searchkit-block/commit/9efa80090a1cdfa277f2465f3d3e19b60bf8fb93) -- Fix message ids [`bba3106`](https://github.com/rohberg/volto-searchkit-block/commit/bba31062ee961631998b8481dba18ae6af4688aa) -- Fix getObjectFromObjectList [`93446a3`](https://github.com/rohberg/volto-searchkit-block/commit/93446a3fd0aa5a897ae8b337ffad978e110de520) -- Fix exports for i18n [`b9bf39f`](https://github.com/rohberg/volto-searchkit-block/commit/b9bf39fc31fba990e2184ffb85ecf41f4151efd0) -- Filter out spaces and orphan " [`408aa9f`](https://github.com/rohberg/volto-searchkit-block/commit/408aa9f75158d288564e3583f6f33d3399259577) -- "react-searchkit": "^v1.0.0-alpha.15" [`c7deddc`](https://github.com/rohberg/volto-searchkit-block/commit/c7deddc687a0585b333b5536dd266063b85f6e87) -- Update README.md [`20ec2ee`](https://github.com/rohberg/volto-searchkit-block/commit/20ec2ee421b6bed36c5dd794fa7fa66459200ba2) -- Change order of filters: Komponenten, Informationstype,... [`f897c88`](https://github.com/rohberg/volto-searchkit-block/commit/f897c88d3dad3130c6cc2321a57224cf7829a16c) -- Distinguish singular and plural [`37fdf18`](https://github.com/rohberg/volto-searchkit-block/commit/37fdf18e37cbb705250ae645c48aedd0ddf36ed9) -- Update FacetedSearch.jsx: no label for filters [`c540c23`](https://github.com/rohberg/volto-searchkit-block/commit/c540c2364186ece69d9512ec7e1635ad7e55eb96) -- clean up [`633aad9`](https://github.com/rohberg/volto-searchkit-block/commit/633aad94105d0b90fca7a01e7c2a880f9d3ee042) -- default ES index esploneindex [`91d463e`](https://github.com/rohberg/volto-searchkit-block/commit/91d463e185bb1897070e69e9555181eba1c8797b) -- add-on name [`bd443b9`](https://github.com/rohberg/volto-searchkit-block/commit/bd443b9645678c298269c5276b89b8ba1aa8e5ca) -- Catch errors [`c25ffeb`](https://github.com/rohberg/volto-searchkit-block/commit/c25ffeb27e12c8ad1dbafef9673a87b76a5ac511) -- BREAKING CHANGE: Address Plone, not ElasticSearch for searching: @kitsearch [`6d2c397`](https://github.com/rohberg/volto-searchkit-block/commit/6d2c397da1598f76b356087c276d7936c0c143c1) -- Fix useEffect dependencies in SectionsSearch [`cce5ed2`](https://github.com/rohberg/volto-searchkit-block/commit/cce5ed246a31cef1e40e3d6a88109d78e92939cb) -- Add locales [`869eb58`](https://github.com/rohberg/volto-searchkit-block/commit/869eb583a3d77dc19defefa75e339015ab7535c1) -- Refactor EmptyResults [`5835fad`](https://github.com/rohberg/volto-searchkit-block/commit/5835fad2a5c1b91d1614b3d8ec54536cba188384) -- Layout: description, facts background color [`0aac2be`](https://github.com/rohberg/volto-searchkit-block/commit/0aac2be8f2fa5a5745b919963076e9c37cbebd0a) -- Fix mapping. not necessary, as default behavior [`06fb0c9`](https://github.com/rohberg/volto-searchkit-block/commit/06fb0c900f7c43a7ed15e3ed2e1c51b57a6c97d1) -- Update elasticsearch-mappings.json: subjects [`bbb47ab`](https://github.com/rohberg/volto-searchkit-block/commit/bbb47ab0278380fa3d7cbb614067f5e7964f8cfe) -- Add rohberg.examplemetadata [`5830e24`](https://github.com/rohberg/volto-searchkit-block/commit/5830e24c3eaee45f8844008f973ee20bcb5a0956) -- Switch from simple_query_string to query_string for wildcard search [`62f85d4`](https://github.com/rohberg/volto-searchkit-block/commit/62f85d498904783bf9f927514fb7b75bb187eeef) -- compact filter selection [`fe08bfd`](https://github.com/rohberg/volto-searchkit-block/commit/fe08bfd3a2781521b7bce37f21322df7011dfbdc) -- fix imports [`b6fdb02`](https://github.com/rohberg/volto-searchkit-block/commit/b6fdb021a47832bdb2876ced86c6517d135077ce) -- Layout mobile [`b60c411`](https://github.com/rohberg/volto-searchkit-block/commit/b60c411e8a48ff2d9b22a959c79c1d865e4b25ae) -- Show searchblock in edit mode [`5fc08e6`](https://github.com/rohberg/volto-searchkit-block/commit/5fc08e6044bab9a17809fdd55e21351b55d4feff) -- Install ingest. Install Python packages. Mount volume. [`f37a1ff`](https://github.com/rohberg/volto-searchkit-block/commit/f37a1ff870e4f4ad6eb8dc46f62088443d450c5c) -- Create TESTING.md [`7389230`](https://github.com/rohberg/volto-searchkit-block/commit/7389230df677d0f9e5db613931c68de300db312b) -- bug fix document __CLIENT__ [`895629c`](https://github.com/rohberg/volto-searchkit-block/commit/895629c6a124488478d8aa3dd9b6ba6ed8189470) -- Create Error.jsx [`c949103`](https://github.com/rohberg/volto-searchkit-block/commit/c94910373480d1c9bd625337add69d10664aa391) -- Fix query test [`a753679`](https://github.com/rohberg/volto-searchkit-block/commit/a7536790635df728a4a7815c6e76f7f0c70331ea) -- Update springisnow-volto-searchkit-block.less [`ef28935`](https://github.com/rohberg/volto-searchkit-block/commit/ef28935d116c2d71d99add8fed5605bb381c4ada) -- Theming search filter [`f1a70b4`](https://github.com/rohberg/volto-searchkit-block/commit/f1a70b4cb990a6a6c0b96c3c08ef07d4e84a792c) -- sort by: default: relevance and modified [`6fdd01a`](https://github.com/rohberg/volto-searchkit-block/commit/6fdd01a32e9276d64062a2f4ef3eb8067e553c73) -- Fix request to Plone [`ce1101e`](https://github.com/rohberg/volto-searchkit-block/commit/ce1101e2b6ebcf32fbbe0e813c3cb9a775d88233) -- Update README.md [`47f2476`](https://github.com/rohberg/volto-searchkit-block/commit/47f2476be42c79926b8126e8bc49583f8c852a16) -- make project: copy cypress tests and config to project [`810fd36`](https://github.com/rohberg/volto-searchkit-block/commit/810fd36ec7efdbe2bc1ab293abe18749677d64c8) -- Add simpleFields to config (just for test view) [`961f5b9`](https://github.com/rohberg/volto-searchkit-block/commit/961f5b95ac9a7dff4b48465b5804c8e5c66d8edc) -- Update docker-compose.yml [`306e4e3`](https://github.com/rohberg/volto-searchkit-block/commit/306e4e3825d58d0ba9ec56f5a30d81062d6a1bae) -- counts of filters OK [`ea36f99`](https://github.com/rohberg/volto-searchkit-block/commit/ea36f99eb0c3f6e6db35b0c3dd19166692551ffc) -- Start celery [`7c10df4`](https://github.com/rohberg/volto-searchkit-block/commit/7c10df4dc3b0598d012b3f3e11010ed455a0c4ec) -- Rename const to reduce confusion on 'action' to be dispatched. [`ad8e08c`](https://github.com/rohberg/volto-searchkit-block/commit/ad8e08cb8194179da065d42f56a2dca616c11c20) -- Update README.md [`f334051`](https://github.com/rohberg/volto-searchkit-block/commit/f334051040307cc4e8e6be89f537d6ab485857db) -- Update Makefile [`fcad4d5`](https://github.com/rohberg/volto-searchkit-block/commit/fcad4d59e8b596db480f99c2d50e9aa054369f5a) -- Update docker-compose.yml [`b22972f`](https://github.com/rohberg/volto-searchkit-block/commit/b22972f3e62e9fba1e1669544b69978c7a92af93) -- Update README.md [`2f07348`](https://github.com/rohberg/volto-searchkit-block/commit/2f07348d17ef34b2b3f8fd3c0b00ca1ed5a1c3d9) -- try to fix wildcard search. Problem: wildcard should not go to analysed fields [`71f8d2c`](https://github.com/rohberg/volto-searchkit-block/commit/71f8d2cd0f0f7343ef79fd03edacb4009d8876ee) -- Revert "Remove fuzzy search as we analyze text with decompounder and stemmer" [`539e316`](https://github.com/rohberg/volto-searchkit-block/commit/539e3169ddcd5456fff4bc2df9fd06e4f9d76121) -- Remove fuzzy search as we analyze text with decompounder and stemmer [`e96a7a2`](https://github.com/rohberg/volto-searchkit-block/commit/e96a7a265c307615b617c99b4f7e8b7e7e226626) -- results: also private and draft review_state [`788b0cb`](https://github.com/rohberg/volto-searchkit-block/commit/788b0cb2411d4cf2d1e1d70fa8363e752f4b8b6f) -- search: boost tags, title [`ee758f6`](https://github.com/rohberg/volto-searchkit-block/commit/ee758f615ca0c557a9ac99532b1c992d9187245b) -- Update package description [`db314ac`](https://github.com/rohberg/volto-searchkit-block/commit/db314acf8f3f2543b7c9c27c1df812481e68932a) -- Fix meta data <button> default, not Semantic-UI for searchkit uri (-> bookmarking) [`0051ff5`](https://github.com/rohberg/volto-searchkit-block/commit/0051ff5ee11526065c97a62906b1c4934d5dbc6a) -- Update README.md [`8bb60c8`](https://github.com/rohberg/volto-searchkit-block/commit/8bb60c877441740aff4aa60fffe604fe7e26f711) -- Remove obsolete settings [`7a3c4a5`](https://github.com/rohberg/volto-searchkit-block/commit/7a3c4a517f65e0a0b9000a02a8b12f49032c0ae4) -- Update springisnow-volto-searchkit-block.less [`31c88f2`](https://github.com/rohberg/volto-searchkit-block/commit/31c88f29491997aa923559a517cda5b578e038ad) -- Make: Add "start-test" cypress [`890ca62`](https://github.com/rohberg/volto-searchkit-block/commit/890ca62362c924ad3392541712aa68ada65691f8) -- Update docker-compose.yml [`084edb2`](https://github.com/rohberg/volto-searchkit-block/commit/084edb299ad9677b8903360e9a5ebceb41063af0) -- Fix CustomESRequestSerializer: `${word} ${word}~` [`c9278a9`](https://github.com/rohberg/volto-searchkit-block/commit/c9278a9b7c3d92d417e881bb2d97b4e0c45e7ae1) -- add commented debug [`a944d07`](https://github.com/rohberg/volto-searchkit-block/commit/a944d071f5a599ef8f38e25e835630d3414ce25a) -- Hide header on testing [`6aac37a`](https://github.com/rohberg/volto-searchkit-block/commit/6aac37a87fbc74cfde1291fc52c2e1bef45bb517) -- Focus on testing [`abafae9`](https://github.com/rohberg/volto-searchkit-block/commit/abafae9d3a79ae02cd9995fcc24753c223ccc4e7) -- Upgrade "react-searchkit": "^v1.0.0-alpha.22" with @semantic-ui-react/css-patch [`9bd578b`](https://github.com/rohberg/volto-searchkit-block/commit/9bd578bd74cd37912bc683f1f5403b22d0d7b96c) -- Fix tags layout [`404c0a9`](https://github.com/rohberg/volto-searchkit-block/commit/404c0a946121cc8e30dae72ce57813e1ce243c2c) -- Update index.js [`baad79c`](https://github.com/rohberg/volto-searchkit-block/commit/baad79cdceb79441569575cf594bda04caa6c57f) -- Fix empty filter [`ec7dd3e`](https://github.com/rohberg/volto-searchkit-block/commit/ec7dd3e40d078d5394cd1b9020464147c2827ac7) -- Fix className warning. [`b03a547`](https://github.com/rohberg/volto-searchkit-block/commit/b03a547d94a02afbee26f2ff67c88c8877718dc2) -- Layout: Link in description [`ab9e18b`](https://github.com/rohberg/volto-searchkit-block/commit/ab9e18b69b114d99e64c47a62d4126e598026813) -- Fix layout [`c38d2f8`](https://github.com/rohberg/volto-searchkit-block/commit/c38d2f8306e25e3c78219c979f99f3a45edecc04) -- Update TODO.md [`9c07beb`](https://github.com/rohberg/volto-searchkit-block/commit/9c07beb5dae0f80690ec8e83b7c57c707675e81d) -- Remove Products.PDBDebugMode [`6c30089`](https://github.com/rohberg/volto-searchkit-block/commit/6c30089395889c8b0f5017180adb2b741458f092) -- TODO endpoint search-elasticsearch [`18a6ab9`](https://github.com/rohberg/volto-searchkit-block/commit/18a6ab9afe8789ee21d34ec6d6b1ae0dc499fc32) -- Add TODO [`a99756b`](https://github.com/rohberg/volto-searchkit-block/commit/a99756b92c8e83025f6d1ce2eecba05a5aebf93a) -- Fix connecting issue [`be9f564`](https://github.com/rohberg/volto-searchkit-block/commit/be9f564499bc3535dc6a8b807d0ba4a3e639d3a2) -- Remove fuzzy search (again) [`d842c35`](https://github.com/rohberg/volto-searchkit-block/commit/d842c359def269e3272c6962e70efd1f9c3ddce5) -- Fix scrolling behavior on search [`bf873e0`](https://github.com/rohberg/volto-searchkit-block/commit/bf873e0ffa305fa69a697134e08697ae4a1a9482) -- Add missing key [`51df51e`](https://github.com/rohberg/volto-searchkit-block/commit/51df51e14b37c2d48a4901692700f097926a7d66) -- Search for freemanualtags_searchable (text join of freemanualtags) [`54b99e6`](https://github.com/rohberg/volto-searchkit-block/commit/54b99e63470dd7219f516e0516393c7c89dd8e80) -- Scroll to search on enter in search field [`7731c44`](https://github.com/rohberg/volto-searchkit-block/commit/7731c44d12f6824bf71c0dacc513072ad849ac72) -- Update ReferenceSearchBlockView.jsx with new config attribute filterLayout="cards" [`7190c9c`](https://github.com/rohberg/volto-searchkit-block/commit/7190c9c64d41eb13ed6173a23ea32e2880184c5f) -- Update README.md [`47e6a9e`](https://github.com/rohberg/volto-searchkit-block/commit/47e6a9e9e9ac18a11a52eba8d0b01e379619b51f) -- Use __CLIENT__ to prevent SSR. Remove custom NoSSR helper. [`ee418dd`](https://github.com/rohberg/volto-searchkit-block/commit/ee418dda46edadb64cc6fb578b4f44133932145a) -- Update springisnow-volto-searchkit-block.less [`8385436`](https://github.com/rohberg/volto-searchkit-block/commit/8385436073d4ac79b4fc9771884477dee9f3f651) -- Update springisnow-volto-searchkit-block.less [`450134a`](https://github.com/rohberg/volto-searchkit-block/commit/450134ae77a068c95b96696e49c4170395b9170c) -- Layout more compact [`28dd29e`](https://github.com/rohberg/volto-searchkit-block/commit/28dd29e919e6288a5bcc8664220d7f9f203a55fd) -- Update TestSearchkitQuerystrings.jsx [`7d9cf64`](https://github.com/rohberg/volto-searchkit-block/commit/7d9cf6427a2155c8fe4e3b2bc010d1bdf4cfdc1d) -- Update README.md [`acba39d`](https://github.com/rohberg/volto-searchkit-block/commit/acba39d2c77967ccf03c3f712738d05c4a60829c) -- Update README.md [`f307f30`](https://github.com/rohberg/volto-searchkit-block/commit/f307f3053d448f50579f435cc712189444dce998) -- Create TODO.md [`a5164c2`](https://github.com/rohberg/volto-searchkit-block/commit/a5164c2441fec9efefef7fdc214d9d150a1311f7) -- Update README.md [`324af2f`](https://github.com/rohberg/volto-searchkit-block/commit/324af2f94d868da5ecff6b744921965d52fa8603) -- Update docker-compose.yml [`cfbc5df`](https://github.com/rohberg/volto-searchkit-block/commit/cfbc5df2089b5861be243e330cad4ada3aa7fc90) -- Update docker-compose.yml [`f847d6a`](https://github.com/rohberg/volto-searchkit-block/commit/f847d6a746638650e868b5ec3fc4ec41203924b7) -- Theming: easier to override in project [`c403ae9`](https://github.com/rohberg/volto-searchkit-block/commit/c403ae97c6f786f8caf74091c28d43f2e6ac9ffc) -- logging [`10cfbc9`](https://github.com/rohberg/volto-searchkit-block/commit/10cfbc9fe2a835c7b3779afe5204f96711945d7a) -- styling: sort by [`6c1ad0f`](https://github.com/rohberg/volto-searchkit-block/commit/6c1ad0ffaaf97ffc052409ac09d4ce681d27c6f6) -- dispatch custom event searchkitQueryChanged for external components [`1e8c70b`](https://github.com/rohberg/volto-searchkit-block/commit/1e8c70b63964b99a097b1dbc994e58e75721af25) -- Switch tests to collective.elastic.xy releases [`88157c5`](https://github.com/rohberg/volto-searchkit-block/commit/88157c56a37ac40eb9cbc8fe0709274417927aec) -- Fix typos [`2a526f7`](https://github.com/rohberg/volto-searchkit-block/commit/2a526f767f1c82a2cc5eca934df03028fd0e4563) -- Update Makefile: Dependency install-acceptance [`7f570f4`](https://github.com/rohberg/volto-searchkit-block/commit/7f570f468e0dca34f07a6da56059a98a8d0a11ba) -- Update package.json [`82f91a2`](https://github.com/rohberg/volto-searchkit-block/commit/82f91a2318a22a1741a74b036d5f9a136d1e2827) -- Fallback for missing search_sections [`9711c02`](https://github.com/rohberg/volto-searchkit-block/commit/9711c02fd38774d9557c5dc0dbcceaa12e0a285a) -- Update README [`808479d`](https://github.com/rohberg/volto-searchkit-block/commit/808479df871fa8d889eb96cc17b5ad665cab5546) -- Hide search button [`0055b94`](https://github.com/rohberg/volto-searchkit-block/commit/0055b946ef16ba88bc3761c3739f347156921c4e) -- Update DEVELOPMENT.md [`daf0909`](https://github.com/rohberg/volto-searchkit-block/commit/daf09097731e6c7a63fe4d1a332fbe44cd34b641) -- Fix mapping [`aff28c3`](https://github.com/rohberg/volto-searchkit-block/commit/aff28c3848151a53cfc124788875796e15d53bb7) -- Uddate title and group of block [`ec9fb6e`](https://github.com/rohberg/volto-searchkit-block/commit/ec9fb6efec4191dccfed32de3e7a40c4ed925c84) -- Move "@eeacms/volto-matomo" from devDependencies to dependencies [`3c7e469`](https://github.com/rohberg/volto-searchkit-block/commit/3c7e469c91b3bf921742e926864bb9587f11d7db) -- Update Makefile [`9026109`](https://github.com/rohberg/volto-searchkit-block/commit/90261099904257800a66a70dd1cfdcd19d2ae3f6) -- Update TESTING.md [`6bdb3ec`](https://github.com/rohberg/volto-searchkit-block/commit/6bdb3eca8822d7d8399c0751b14d2708a77297f7) -- Fix volume mount [`30fe2fc`](https://github.com/rohberg/volto-searchkit-block/commit/30fe2fca68361d6cabed794af01461a3bb7cc72d) -- Remove debugging [`cecb865`](https://github.com/rohberg/volto-searchkit-block/commit/cecb8652bcc10aa78b409a89ba91db51bbd15207) -- Bug fix in debug [`5038380`](https://github.com/rohberg/volto-searchkit-block/commit/50383806762db041c4bc74cf933a8aca0af33cab) -- workflow state: new name: internally_published [`8608b96`](https://github.com/rohberg/volto-searchkit-block/commit/8608b96032a4917c12f17e0fb1971bc6b75aa901) -- remove block from mostUsed and hide via 'restricted' ... [`b042512`](https://github.com/rohberg/volto-searchkit-block/commit/b0425129dc67745a1e35b3d54f7e8ed68bb11cd8) -- Update TODO.md [`cade557`](https://github.com/rohberg/volto-searchkit-block/commit/cade557879da53eae5b20c0b8a1c1c6afa7b2561) -- Highlight selected sort option. [`3191b22`](https://github.com/rohberg/volto-searchkit-block/commit/3191b224c9319c1c4fd9ce4a85100185c5db6185) -- Fix layout result list [`c92e8c6`](https://github.com/rohberg/volto-searchkit-block/commit/c92e8c6e04a576ee326d25deb4f39af3698428c7) -- Update docker-compose.yml [`bc92854`](https://github.com/rohberg/volto-searchkit-block/commit/bc92854930a5bb9aa7cb53c573dce21d14eabea4) -- Fix dependency volto-matomo [`0cae3f1`](https://github.com/rohberg/volto-searchkit-block/commit/0cae3f1da744de20d52e812adcb0beea9625d543) -- Update docker-compose.yml [`ccd17a1`](https://github.com/rohberg/volto-searchkit-block/commit/ccd17a110fe024b1eee752da5b636f8be0dc4537) -- Update .gitignore [`0c16bdd`](https://github.com/rohberg/volto-searchkit-block/commit/0c16bdd317f7caf25f3d4282ee7dfae26cd31304) -- freemanualtags is a text field (freemanualtags) [`e302d77`](https://github.com/rohberg/volto-searchkit-block/commit/e302d779351bd8a7d640945b146174a127fcf298) -- Add dependency @eeacms/volto-matomo [`edcf2bf`](https://github.com/rohberg/volto-searchkit-block/commit/edcf2bfd00913bd91245999e165effa68dd1ba85) -- Update README.md [`bfe5968`](https://github.com/rohberg/volto-searchkit-block/commit/bfe5968e094e1101be26b8110132678e3a963d23) -- config: additional filterLayout attribute (default 'dropdown') [`4122092`](https://github.com/rohberg/volto-searchkit-block/commit/412209278b8e620d730be80f96ea7807c149c409) -- clean up [`671fd7f`](https://github.com/rohberg/volto-searchkit-block/commit/671fd7fd261c2573e8095eff3941ffa0484a5792) -- clean up [`7fa6737`](https://github.com/rohberg/volto-searchkit-block/commit/7fa6737d311cc6f64b93a900f43dfa4b21e9111f) -- Update package.json [`434b59c`](https://github.com/rohberg/volto-searchkit-block/commit/434b59cee8a1dcf1c5a8811825280199b2337c2d) -- Update FacetedSearch.jsx [`8c42bc4`](https://github.com/rohberg/volto-searchkit-block/commit/8c42bc4480f488dadac9bd25f0f41c5eabe3edae) -- Update ci.yml [`e960afb`](https://github.com/rohberg/volto-searchkit-block/commit/e960afb1cf750923e3d51748826e9410a19e7666) -- Update code.yml [`12da42c`](https://github.com/rohberg/volto-searchkit-block/commit/12da42cbf968e0710aa612019636e520775980a5) -- searchkit block restricted: false [`ff886ef`](https://github.com/rohberg/volto-searchkit-block/commit/ff886efc40dd9fe9c6dcae1cd8311befa642faff) -- Fix filter label if no option selected: align center [`102b70b`](https://github.com/rohberg/volto-searchkit-block/commit/102b70bee0f798d80f8529c3b14cd69c8c0bf74e) -- Update README.md [`a0ec90c`](https://github.com/rohberg/volto-searchkit-block/commit/a0ec90c4484e52bc14ef73a96b76dd6f330b636b) -- Update README.md [`ff0270c`](https://github.com/rohberg/volto-searchkit-block/commit/ff0270cf6b04a400b6f798ef5c39028d0fb82acd) -- Update Makefile [`cfe55bb`](https://github.com/rohberg/volto-searchkit-block/commit/cfe55bb695a42d6cebaca293256ddee8b2e60878) -- Metadata of search results: class "metadata" [`47812ff`](https://github.com/rohberg/volto-searchkit-block/commit/47812ffaa8900a72033ace85a6ad2c1ccb55bdf4) -- Fallback if no search sections [`a79bbfd`](https://github.com/rohberg/volto-searchkit-block/commit/a79bbfdf0c842043c58b0d6b39d7fefc05c66ca6) -- Remove unused imports [`21dc234`](https://github.com/rohberg/volto-searchkit-block/commit/21dc2341ca9d9eff8e6e3ff40023a3b8d4520e52) -- Update FacetedSearch.jsx [`cacdb81`](https://github.com/rohberg/volto-searchkit-block/commit/cacdb81a95924b753d97da275df096b54f474a5d) -- Searching and Finding [`3698ac4`](https://github.com/rohberg/volto-searchkit-block/commit/3698ac4c0a6dbd6ef4c795e10ab91a905cb7e143) -- Update CustomESRequestSerializer.jsx [`f80663f`](https://github.com/rohberg/volto-searchkit-block/commit/f80663f7eda7eff4291ef8f4d2f9bfffbc05583f) -- Update TestSearchkitQuerystrings.jsx [`0dacaab`](https://github.com/rohberg/volto-searchkit-block/commit/0dacaaba1b2b76e6ff5897bd036102f00b29a3e0) -- Hide Logger [`7ea6af0`](https://github.com/rohberg/volto-searchkit-block/commit/7ea6af0da653bcbdc115dbf73d189ea5b296ac6d) -- Update babel.config.js [`508ac82`](https://github.com/rohberg/volto-searchkit-block/commit/508ac82072ed613eb309a0022c22d4082cffe259) -- Update jest-addon.config.js [`81d2dc9`](https://github.com/rohberg/volto-searchkit-block/commit/81d2dc9eb36763bc32c4701f15bd6b70649561fd) -- Label edit [`eaec8f3`](https://github.com/rohberg/volto-searchkit-block/commit/eaec8f32d9f7fcaffb23e844e46a9e6ff9af1e48) -- Important: Add block data to initial query state initialQueryState [`d23c14d`](https://github.com/rohberg/volto-searchkit-block/commit/d23c14d17bd702a2825a76f81e46a86893d12d7d) -- Update ElasticSearchHighlights.jsx [`f703084`](https://github.com/rohberg/volto-searchkit-block/commit/f7030841b12135a2d86f6e22af61169fda2a1f57) -- Update CustomESRequestSerializer.jsx [`f8c34a3`](https://github.com/rohberg/volto-searchkit-block/commit/f8c34a3e35470a1ee5ed202ddbd2c099754a63f8) -- Fix warning className [`717573f`](https://github.com/rohberg/volto-searchkit-block/commit/717573f6ff0afc8cde984103d60ce0159c404632) -- Fix warning SemanticUI [`57ee714`](https://github.com/rohberg/volto-searchkit-block/commit/57ee714367d5cc57d72d4b310a74bb7de9cb2a7c) -- mx.ini collective.elastic.plone branch=endpoint [`055c0ba`](https://github.com/rohberg/volto-searchkit-block/commit/055c0baa19bb1c513d7276cac243325ca480dfea) -- Update README.md [`a6e6038`](https://github.com/rohberg/volto-searchkit-block/commit/a6e6038481c4d76acf770cdd151adeca348dd76b) -- Update README.md [`f8a71f0`](https://github.com/rohberg/volto-searchkit-block/commit/f8a71f0f18f249e97b3fba3de2bee0ab9641738a) -- Update Makefile: test project canary [`e52d8c1`](https://github.com/rohberg/volto-searchkit-block/commit/e52d8c1c8a0acbb551da03317e673e984a5085e7) -- Update .gitignore [`36448d2`](https://github.com/rohberg/volto-searchkit-block/commit/36448d27d62f59237f4c5b84c7c30fc7c83657b9) -- Update package.json [`008e46a`](https://github.com/rohberg/volto-searchkit-block/commit/008e46ac371856285190eed458a6dc71d1063b4d) -- Fix make test backend [`34f129f`](https://github.com/rohberg/volto-searchkit-block/commit/34f129f85884be54ddc2ce07e5d84fb63d7bc56f) -- Update .gitignore [`cd6ba24`](https://github.com/rohberg/volto-searchkit-block/commit/cd6ba24f69a2fb897130cc8c247aaa9d084fb816) -- Remove unused import [`7ad32cc`](https://github.com/rohberg/volto-searchkit-block/commit/7ad32cc3abe629c5632fa6f5f53b0f9a422b6fdb) -- Update TESTING.md [`38d4e9c`](https://github.com/rohberg/volto-searchkit-block/commit/38d4e9c219a82eaea4ea9cbcf2e191bb69ceb903) -- Update FacetedSearch.jsx [`697a4f3`](https://github.com/rohberg/volto-searchkit-block/commit/697a4f35e0d21c1d63d1ce469cb4430fde44d31e) -- Update TESTING.md [`23c40c1`](https://github.com/rohberg/volto-searchkit-block/commit/23c40c1f50ffa91b555caeb64d49aa9da44fc18b) -- Install rohberg.elasticsearchblocks. [`74570a6`](https://github.com/rohberg/volto-searchkit-block/commit/74570a60ccb65e35d4daa5e61be83ae7faabf6cb) -- Update docker-compose.yml: add profile rohberg.elasticsearchblocks:testing [`6895da1`](https://github.com/rohberg/volto-searchkit-block/commit/6895da13e2a68520385aeaa498433fedbaa0f76d) -- Update TESTING.md [`e9fc86d`](https://github.com/rohberg/volto-searchkit-block/commit/e9fc86dcd69e6d9ea8267c3e3130f4e7cf116325) -- Update Makefile [`23bea3c`](https://github.com/rohberg/volto-searchkit-block/commit/23bea3c9bdfc6d14afae2b11429c2b7da4f9a588) -- Switch from query_string to simple_query_string search [`15d7a08`](https://github.com/rohberg/volto-searchkit-block/commit/15d7a08d257511e46b8dd727eeec264021b0c21c) -- Update README.md [`5acac03`](https://github.com/rohberg/volto-searchkit-block/commit/5acac03ee79d308e187dd488fec0f7b9996427b8) -- Update .gitignore [`f5a59d3`](https://github.com/rohberg/volto-searchkit-block/commit/f5a59d30e37e44601f19e84a2e8d63cb6eeb8883) -- Update Makefile [`11bc4e2`](https://github.com/rohberg/volto-searchkit-block/commit/11bc4e2e1cdfbc4bc1818538e0120ecba3264d48) -- Upgrade "react-searchkit": "v1.0.1" [`5fc6e12`](https://github.com/rohberg/volto-searchkit-block/commit/5fc6e12e0e9771d51d77d5b4354fcc15e1b5303e) -- Remove debugging. [`b696ef7`](https://github.com/rohberg/volto-searchkit-block/commit/b696ef74e76cd3164ecb086beb3d98c0b6fae207) -- Fix bug: Reload page: window undefined on SSR [`de71169`](https://github.com/rohberg/volto-searchkit-block/commit/de71169e0965650ca498ff13991b0ce42c39b675) -- Move @eeacms/volto-matomo to dev dependencies [`3ec3075`](https://github.com/rohberg/volto-searchkit-block/commit/3ec307512f7e32940c5f6e7edec0819e27c70f0b) -- Fix deprecated ES Syntax [`edf4acc`](https://github.com/rohberg/volto-searchkit-block/commit/edf4accaae872fe2472039a4cbbd35d84e394168) -- Upgrade to "react-searchkit": "^v1.0.0-alpha.17", [`a001b90`](https://github.com/rohberg/volto-searchkit-block/commit/a001b905e86087365993539a1cb962a5c2f17c93) -- update dependency volto-matomo [`f5eb8b6`](https://github.com/rohberg/volto-searchkit-block/commit/f5eb8b61b2dd17fa4bb10cfd2304b580991c1b09) -- Update CustomESResponseSerializer.jsx [`4a12564`](https://github.com/rohberg/volto-searchkit-block/commit/4a125647b4531d42aba9c90435c1ee970bf811ab) -- Update README.md [`04a8285`](https://github.com/rohberg/volto-searchkit-block/commit/04a8285d807470bbdb32c23196c3f4cd760909ba) -- on search: scroll in to view (still not solved) [`27d3be6`](https://github.com/rohberg/volto-searchkit-block/commit/27d3be6e9382687a386e79239a8f987d13259919) -- docu [`9057df6`](https://github.com/rohberg/volto-searchkit-block/commit/9057df6eda330c0356a1a91e3bd0dff0591b6fea) -- Update package.json: https://github.com/rohberg/react-searchkit.git [`02c445a`](https://github.com/rohberg/volto-searchkit-block/commit/02c445a08ae73c59df091c89d506b0acabaf6843) -- Update package.json: "react-searchkit": "^v1.0.0-alpha.15", [`a575e98`](https://github.com/rohberg/volto-searchkit-block/commit/a575e9898d6dfa7f421ec88d761e7137c01ae680) -- Update package.json [`59bde03`](https://github.com/rohberg/volto-searchkit-block/commit/59bde0321d47c3635758c0070a2fa00f1b5b2a24) -- Update LICENSE.md [`5de261f`](https://github.com/rohberg/volto-searchkit-block/commit/5de261f890e836bb4f1ea566cdc3cdf89b6c6beb) -- no need to trigger search from external [`c0544dc`](https://github.com/rohberg/volto-searchkit-block/commit/c0544dcc9aef76c99f50c3bd9ad973c0557cce6c) -- Search also for DocumentationOverview [`6610a8e`](https://github.com/rohberg/volto-searchkit-block/commit/6610a8e4b0d38cabd5b37369ec2996ecb985b694) -- Edit form: no rendering [`f57935f`](https://github.com/rohberg/volto-searchkit-block/commit/f57935f804b78f5b3ab50e0b54b1f4a85239cdee) -- fix block schema [`f863eb9`](https://github.com/rohberg/volto-searchkit-block/commit/f863eb9d4a5f41aa32ba5c97c4048438b0224cba) -- Update blocks.cy.js [`faf739b`](https://github.com/rohberg/volto-searchkit-block/commit/faf739b7d754ab91c3a70d859a917aed8664e2b1) -- Remove unused import [`833af25`](https://github.com/rohberg/volto-searchkit-block/commit/833af252e0c917219d47dd0558aef2c8070dac5c) -- Fix meta data margin of items [`168aaeb`](https://github.com/rohberg/volto-searchkit-block/commit/168aaebcff97958ce3e1ced8b2b7652286c3fb15) -- Fix width of filters. [`53ba5a7`](https://github.com/rohberg/volto-searchkit-block/commit/53ba5a7fdc6bd845aecd741f823eaf09c09b0f1a) -- Update .gitignore [`a8b7898`](https://github.com/rohberg/volto-searchkit-block/commit/a8b7898539fe03d896b50c19c7e4b13186e55c14) -- Update springisnow-volto-searchkit-block.less [`e417978`](https://github.com/rohberg/volto-searchkit-block/commit/e4179782c02645c23257e969b3892c8cc9a0a770) -- Update springisnow-volto-searchkit-block.less [`45acc7c`](https://github.com/rohberg/volto-searchkit-block/commit/45acc7cdeeeab850a9ae3d451aabe7a09f5d5caa) -- Update CustomESResponseSerializer.jsx [`5475a88`](https://github.com/rohberg/volto-searchkit-block/commit/5475a88c40ebf1eef065090efc837ff63e0ab317) -- Update elasticsearch-preprocessings.json [`0c14944`](https://github.com/rohberg/volto-searchkit-block/commit/0c1494481da1a8242affd17f44b5c7890f6d4c67) -- Update .gitignore [`ca7492b`](https://github.com/rohberg/volto-searchkit-block/commit/ca7492b4d7e3da4a90773c07998913e52737abf3) -- fragment_size default 100 for all fields [`a497155`](https://github.com/rohberg/volto-searchkit-block/commit/a4971557b6c2de54a4f79bfdf09b98e41adadbe7) -- Do not search in field 'id' [`bb36110`](https://github.com/rohberg/volto-searchkit-block/commit/bb36110c30b3a02fae3eda31cd34b6ef1564f6b1) -- Update CustomESRequestSerializer.jsx [`ffbef7b`](https://github.com/rohberg/volto-searchkit-block/commit/ffbef7b6eeb59897a1238e708b61ccc8effcd35d) -- Update FacetedSearch.jsx. Add scrollbar to facets. [`471fce9`](https://github.com/rohberg/volto-searchkit-block/commit/471fce918100eeec6f8a6de82557b94bd5920cb1) -- theming: reference block with react-searchkit cards [`d8ea3d2`](https://github.com/rohberg/volto-searchkit-block/commit/d8ea3d2c0336c49954f4485f84227b8b9c605393) -- Update README.md [`f7b3e92`](https://github.com/rohberg/volto-searchkit-block/commit/f7b3e929e5c631e059eeabb8fb468b17716f0491) -- Update FacetedSearch.jsx [`77f299a`](https://github.com/rohberg/volto-searchkit-block/commit/77f299a03a474a44a994d1aee3424606f2e21915) -- Search in block text [`98e4177`](https://github.com/rohberg/volto-searchkit-block/commit/98e41775c060d4941e2d1870f8c3aaaebf72c089) -- styling: searchbar [`cb82d5e`](https://github.com/rohberg/volto-searchkit-block/commit/cb82d5e042745c5b12f32fdc6677664923f86269) -- sort filter on token (key) [`9131cf4`](https://github.com/rohberg/volto-searchkit-block/commit/9131cf420bba22f12c76e2ac89f13cca132a1f8d) -- Update package.json [`0df7934`](https://github.com/rohberg/volto-searchkit-block/commit/0df7934c023158fce769feb761bd7bed7a2a41e5) -- Update package.json [`a8b85fd`](https://github.com/rohberg/volto-searchkit-block/commit/a8b85fd2d11443fbdedacd0aacf440f0d2529271) -- dependency react-searchkit [`7218d03`](https://github.com/rohberg/volto-searchkit-block/commit/7218d030a6696d9a576204be22e04304fe13a2a6) -- Update configuration.png [`399a3b2`](https://github.com/rohberg/volto-searchkit-block/commit/399a3b268174f251bc9af3c2d59892be189d2473) -- Create volto.pot [`87d70db`](https://github.com/rohberg/volto-searchkit-block/commit/87d70db5b4daa5c0ec6d07b783053d320cdee2cb) -- Create Search_for_example_content.png [`005769d`](https://github.com/rohberg/volto-searchkit-block/commit/005769d943f9819d0a05a7307f3e0a5fd9112e27) -- Update configuration.png [`8d3f0c9`](https://github.com/rohberg/volto-searchkit-block/commit/8d3f0c9ed6a02df939ae37f0899db7fdf8277603) -- Create elasticsearch_nested_field.png [`ea83933`](https://github.com/rohberg/volto-searchkit-block/commit/ea83933c094366222082fcb49513919bd977275d) -- Rename /volumes/ploneconfiguration [`9f0730e`](https://github.com/rohberg/volto-searchkit-block/commit/9f0730e1575d27afa958c6db8508b6539b721096) -- Create configuration.png [`051cdf2`](https://github.com/rohberg/volto-searchkit-block/commit/051cdf2f054b5fde68772be5513fb7f533849633) -- Create search.png [`69b5be8`](https://github.com/rohberg/volto-searchkit-block/commit/69b5be8845373455d26354e9fa882ed0a5b68567) +- Initial version [rohberg] diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md deleted file mode 100644 index 785b9592..00000000 --- a/DEVELOPMENT.md +++ /dev/null @@ -1,49 +0,0 @@ -# Development - -## Backend - - make dev-start-backend - -## Elasticsearch - -Run with Docker. - -Change directory to ./development-searchkitblock/mac/ or ./development-searchkitblock/linux/ and run: - - docker compose up - -Inspect with - - docker exec -it bash - -## Redis - -Start with - - redis-server /usr/local/etc/redis.conf - -## Celery - -Change directory to ./development-searchkitblock/celery and install: - -Install with: - - python -m venv venv - source venv/bin/activate - pip install -U pip wheel mxdev - mxdev -c mx.ini - - pip install -r requirements-mxdev.txt - -Run with: - - source .env - venv/bin/celery -A collective.elastic.ingest.celery.app worker -l info - - # or with more info: - venv/bin/celery -A collective.elastic.ingest.celery.app worker -l debug - - -## Frontend - - make start-addon-testing-project diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 71c2d871..00000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (C) 2022 Rohberg, Zürich. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Makefile b/Makefile index dddee065..723a465c 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,23 @@ -# Makefile volto-searchkit-block - +### Defensive settings for make: +# https://tech.davis-hansson.com/p/make/ SHELL:=bash .ONESHELL: -# .SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c +.SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c .SILENT: .DELETE_ON_ERROR: MAKEFLAGS+=--warn-undefined-variables MAKEFLAGS+=--no-builtin-rules -include variables.mk - CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) +GIT_FOLDER=$(CURRENT_DIR)/.git + +PROJECT_NAME=searchkit-block +STACK_NAME=searchkit-block-example-com + +VOLTO_VERSION = $(shell cat frontend/mrs.developer.json | python -c "import sys, json; print(json.load(sys.stdin)['core']['tag'])") +PLONE_VERSION=$(shell cat backend/version.txt) + +PRE_COMMIT=pipx run --spec 'pre-commit==3.7.1' pre-commit # We like colors # From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects @@ -19,117 +26,189 @@ GREEN=`tput setaf 2` RESET=`tput sgr0` YELLOW=`tput setaf 3` -BACKEND_ADDONS='collective.elastic.plone ${KGS} $(TESTING_ADDONS)' -DEV_COMPOSE=dockerfiles/docker-compose.yml -ACCEPTANCE_COMPOSE=acceptance/docker-compose.yml -# OPENSEARCH_COMPOSE=docker-opensearch/docker-compose.yml -CMD=CURRENT_DIR=${CURRENT_DIR} ADDON_NAME=${ADDON_NAME} ADDON_PATH=${ADDON_PATH} VOLTO_VERSION=${VOLTO_VERSION} PLONE_VERSION=${PLONE_VERSION} BACKEND_ADDONS=${BACKEND_ADDONS} docker compose -DOCKER_COMPOSE=${CMD} -p ${ADDON_PATH} -f ${DEV_COMPOSE} -ACCEPTANCE=${CMD} -p ${ADDON_PATH}-acceptance -f ${ACCEPTANCE_COMPOSE} -# OPENSEARCH=CURRENT_DIR=${CURRENT_DIR} docker compose -p ${ADDON_PATH}-opensearch -f ${OPENSEARCH_COMPOSE} - - .PHONY: all -all: help +all: install +# Add the following 'help' target to your Makefile +# And add help text after each target name starting with '\#\#' .PHONY: help -help: ## Show this help. - @echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)" - -.PHONY: build-backend -build-backend: ## Build - @echo "$(GREEN)==> Build Backend Container $(RESET)" - ${DOCKER_COMPOSE} build backend - -.PHONY: start-backend -start-backend: ## Starts Docker backend - @echo "$(GREEN)==> Start Docker-based Plone Backend $(RESET)" - ${DOCKER_COMPOSE} up backend -d - -.PHONY: stop-backend -stop-backend: ## Stop Docker backend - @echo "$(GREEN)==> Stop Docker-based Plone Backend $(RESET)" - ${DOCKER_COMPOSE} stop backend - -.PHONY: build-addon -build-addon: ## Build Addon dev - @echo "$(GREEN)==> Build Addon development container $(RESET)" - ${DOCKER_COMPOSE} build addon-dev - -.PHONY: start-dev -start-dev: ## Starts Dev container - @echo "$(GREEN)==> Start Addon Development container $(RESET)" - ${DOCKER_COMPOSE} up addon-dev - -.PHONY: dev -dev: ## Develop the addon - @echo "$(GREEN)==> Start Development Environment $(RESET)" - make build-backend - make start-backend - make build-addon - make start-dev - -# Dev Helpers -.PHONY: i18n -i18n: ## Sync i18n - ${DOCKER_COMPOSE} run addon-dev i18n +help: ## This help message + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +########################################### +# Frontend +########################################### +.PHONY: frontend-install +frontend-install: ## Install React Frontend + $(MAKE) -C "./frontend/" install + +.PHONY: frontend-build +frontend-build: ## Build React Frontend + $(MAKE) -C "./frontend/" build + +.PHONY: frontend-start +frontend-start: ## Start React Frontend + $(MAKE) -C "./frontend/" start + +.PHONY: frontend-test +frontend-test: ## Test frontend codebase + @echo "Test frontend" + $(MAKE) -C "./frontend/" test + +########################################### +# Backend +########################################### +.PHONY: backend-install +backend-install: ## Create virtualenv and install Plone + $(MAKE) -C "./backend/" install + $(MAKE) backend-create-site + +.PHONY: backend-build +backend-build: ## Build Backend + $(MAKE) -C "./backend/" install + +.PHONY: backend-create-site +backend-create-site: ## Create a Plone site with default content + $(MAKE) -C "./backend/" create-site + +.PHONY: backend-update-example-content +backend-update-example-content: ## Export example content inside package + $(MAKE) -C "./backend/" update-example-content + +.PHONY: backend-start +backend-start: ## Start Plone Backend + $(MAKE) -C "./backend/" start + +.PHONY: backend-test +backend-test: ## Test backend codebase + @echo "Test backend" + $(MAKE) -C "./backend/" test + +.PHONY: install +install: ## Install + @echo "Install Backend & Frontend" + if [ -d $(GIT_FOLDER) ]; then $(PRE_COMMIT) install; else echo "$(RED) Not installing pre-commit$(RESET)";fi + $(MAKE) backend-install + $(MAKE) frontend-install + +.PHONY: start +start: ## Start + @echo "Starting application" + $(MAKE) backend-start + $(MAKE) frontend-start + +.PHONY: clean +clean: ## Clean installation + @echo "Clean installation" + $(MAKE) -C "./backend/" clean + $(MAKE) -C "./frontend/" clean + +.PHONY: check +check: ## Lint and Format codebase + @echo "Lint and Format codebase" + $(PRE_COMMIT) run -a -.PHONY: format -format: ## Format codebase - ${DOCKER_COMPOSE} run addon-dev lint:fix - ${DOCKER_COMPOSE} run addon-dev prettier:fix - ${DOCKER_COMPOSE} run addon-dev stylelint:fix - -.PHONY: lint -lint: ## Lint Codebase - ${DOCKER_COMPOSE} run addon-dev lint - ${DOCKER_COMPOSE} run addon-dev prettier - ${DOCKER_COMPOSE} run addon-dev stylelint +.PHONY: i18n +i18n: ## Update locales + @echo "Update locales" + $(MAKE) -C "./backend/" i18n + $(MAKE) -C "./frontend/" i18n .PHONY: test -test: ## Run unit tests - ${DOCKER_COMPOSE} run addon-dev test --watchAll - -.PHONY: test-ci -test-ci: ## Run unit tests in CI - ${DOCKER_COMPOSE} run -e CI=1 addon-dev test - -# Acceptance opensearch -# # TODO marry OPENSEARCH with backend acceptance -# .PHONY: build-acceptance-opensearch -# build-acceptance-opensearch: ## build opensearch containers -# (cd docker-opensearch) -# ${OPENSEARCH} --profile dev build - -# .PHONY: start-test-acceptance-server -# start-test-acceptance-server-opensearch: ## Start acceptance opensearch containers -# ${OPENSEARCH} --profile dev up -d - -# Acceptance backend and frontend -.PHONY: build-acceptance -build-acceptance: ## Install Cypress, build containers - (cd acceptance && yarn) - ${ACCEPTANCE} --profile dev build - -.PHONY: start-acceptance-containers -start-acceptance: ## Start acceptance server-containers - ${ACCEPTANCE} --profile dev up -d --force-recreate - -# TODO Maybe depend on build and start? -.PHONY: test-acceptance -test-acceptance: ## Start Cypress - (cd acceptance && ./node_modules/.bin/cypress open) - -.PHONY: test-acceptance-headless -# test-acceptance-headless: install-acceptance ## Run cypress tests in CI -test-acceptance-headless: ## Run cypress tests in CI - (cd acceptance && ./node_modules/.bin/cypress run) - -.PHONY: stop-test-acceptance-server -stop-test-acceptance-server: ## Stop acceptance server - ${ACCEPTANCE} down - ${OPENSEARCH} down - -.PHONY: status-test-acceptance-server -status-test-acceptance-server: ## Status of Acceptance Server - ${ACCEPTANCE} ps +test: backend-test frontend-test ## Test codebase + +.PHONY: build-images +build-images: ## Build docker images + @echo "Build" + $(MAKE) -C "./backend/" build-image + $(MAKE) -C "./frontend/" build-image + +## Docker stack +.PHONY: stack-start +stack-start: ## Local Stack: Start Services + @echo "Start local Docker stack" + VOLTO_VERSION=$(VOLTO_VERSION) PLONE_VERSION=$(PLONE_VERSION) docker compose -f docker-compose.yml up -d --build + @echo "Now visit: http://searchkit-block.localhost" + +.PHONY: start-stack +stack-create-site: ## Local Stack: Create a new site + @echo "Create a new site in the local Docker stack" + @docker compose -f docker-compose.yml exec backend ./docker-entrypoint.sh create-site + +.PHONY: start-ps +stack-status: ## Local Stack: Check Status + @echo "Check the status of the local Docker stack" + @docker compose -f docker-compose.yml ps + +.PHONY: stack-stop +stack-stop: ## Local Stack: Stop Services + @echo "Stop local Docker stack" + @docker compose -f docker-compose.yml stop + +.PHONY: stack-rm +stack-rm: ## Local Stack: Remove Services and Volumes + @echo "Remove local Docker stack" + @docker compose -f docker-compose.yml down + @echo "Remove local volume data" + @docker volume rm $(PROJECT_NAME)_vol-site-data + +## Acceptance +.PHONY: acceptance-backend-dev-start +acceptance-backend-dev-start: + @echo "Start acceptance backend" + $(MAKE) -C "./backend/" acceptance-backend-start + +.PHONY: acceptance-frontend-dev-start +acceptance-frontend-dev-start: + @echo "Start acceptance frontend" + $(MAKE) -C "./frontend/" acceptance-frontend-dev-start + +.PHONY: acceptance-test +acceptance-test: + @echo "Start acceptance tests in interactive mode" + $(MAKE) -C "./frontend/" acceptance-test + +# Build Docker images +.PHONY: acceptance-frontend-image-build +acceptance-frontend-image-build: + @echo "Build acceptance frontend image" + @docker build frontend -t rohberg/searchkit-block-frontend:acceptance -f frontend/Dockerfile --build-arg VOLTO_VERSION=$(VOLTO_VERSION) + +.PHONY: acceptance-backend-image-build +acceptance-backend-image-build: + @echo "Build acceptance backend image" + @docker build backend -t rohberg/searchkit-block-backend:acceptance -f backend/Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) + +.PHONY: acceptance-images-build +acceptance-images-build: ## Build Acceptance frontend/backend images + $(MAKE) acceptance-backend-image-build + $(MAKE) acceptance-frontend-image-build + +.PHONY: acceptance-frontend-container-start +acceptance-frontend-container-start: + @echo "Start acceptance frontend" + @docker run --rm -p 3000:3000 --name searchkit-block-frontend-acceptance --link searchkit-block-backend-acceptance:backend -e RAZZLE_API_PATH=http://localhost:55001/plone -e RAZZLE_INTERNAL_API_PATH=http://backend:55001/plone -d rohberg/searchkit-block-frontend:acceptance + +.PHONY: acceptance-backend-container-start +acceptance-backend-container-start: + @echo "Start acceptance backend" + @docker run --rm -p 55001:55001 --name searchkit-block-backend-acceptance -d rohberg/searchkit-block-backend:acceptance + +.PHONY: acceptance-containers-start +acceptance-containers-start: ## Start Acceptance containers + $(MAKE) acceptance-backend-container-start + $(MAKE) acceptance-frontend-container-start + +.PHONY: acceptance-containers-stop +acceptance-containers-stop: ## Stop Acceptance containers + @echo "Stop acceptance containers" + @docker stop searchkit-block-frontend-acceptance + @docker stop searchkit-block-backend-acceptance + +.PHONY: ci-acceptance-test +ci-acceptance-test: + @echo "Run acceptance tests in CI mode" + $(MAKE) acceptance-containers-start + pnpm dlx wait-on --httpTimeout 20000 http-get://localhost:55001/plone http://localhost:3000 + $(MAKE) -C "./frontend/" ci-acceptance-test + $(MAKE) acceptance-containers-stop diff --git a/README.md b/README.md index 37ca0d9b..89358f8b 100644 --- a/README.md +++ b/README.md @@ -1,117 +1,110 @@ -# Features of **@rohberg/volto-searchkit-block** +# Searchkit Block 🚀 -Search block with highly overridable components for searching, filtering and displaying search results. Sometimes also called faceted navigation. +[![Built with Cookieplone](https://img.shields.io/badge/built%20with-Cookieplone-0083be.svg?logo=cookiecutter)](https://github.com/plone/cookiecutter-plone/) +[![Black code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) +[![Backend Tests](https://github.com/rohberg/searchkit-block/actions/workflows/backend.yml/badge.svg)](https://github.com/rohberg/searchkit-block/actions/workflows/backend.yml) +[![Frontend Tests](https://github.com/rohberg/searchkit-block/actions/workflows/frontend.yml/badge.svg)](https://github.com/rohberg/searchkit-block/actions/workflows/frontend.yml) -As this search is addressing `OpenSearch/ElasticSearch` with text analysis, the search does understand inflection of words, tolerates typos by fuzzy searching, allows exact search and wildcard search. -See [User documentation](#user-documentation) on how to search. +A new project using Plone 6. -Matched phrases are shown with highlighted matches. +## Quick Start 🏁 -Additional metadata per result item can be configured easily. -Meta data values are clickable to find related content. +### Prerequisites ✅ -The block is prepared for Matomo analytics. +Ensure you have the following installed: -![Search @rohberg/volto-searchkit-block](public/search.png) +- Python 3.11 🐍 +- Node 20 🟩 +- pnpm 🧶 +- Docker 🐳 +### Installation 🔧 -# Getting started +1. Clone the repository: -Install Plone backend add-on [`collective.elastic.plone 2.x`](https://github.com/collective/collective.elastic.plone) to provide the Plone REST API service which accepts queries and requests OpenSearch/ElasticSearch. - -Install Plone backend add-on [`collective.elastic.ingest 2.x`](https://github.com/collective/collective.elastic.ingest) to index Plone content. - -Setting up OpenSearch/ElasticSearch instructions can be found on [`collective.elastic.plone 2.x`](https://github.com/collective/collective.elastic.plone). -See the [example](docker-opensearch) configuration of collective.elastic of a mapping, attachment handling and last but not least analysis. - - -# Configuration - -The block is not for editors. So please enable adding a searchkit block once by - -```js -config.blocks.blocksConfig.searchkitblock.restricted = true; +```shell +git clone git@github.com:rohberg/searchkit-block.git +cd searchkit-block ``` -and disable the block after adding it to a page of your choice. - -The block can be configured by +2. Install both Backend and Frontend: -- searchable fields with boosting -- facets -- restricting types and states -- results meta data - -![Configuration](public/configuration.png) +```shell +make install +``` +### Fire Up the Servers 🔥 -Enable Matomo tracking via +1. Create a new Plone site on your first run: -```js - config.settings.searchkitblock.trackVoltoMatomo = true +```shell +make backend-create-site ``` -# Overriding components +2. Start the Backend at [http://localhost:8080/](http://localhost:8080/): -Components of @rohberg/volto-searchkit-block can be overridden via its overridableId: +```shell +make backend-start +``` -```jsx -const MySearchkitResultsListItem = ({ result, index }) => { - return ( -
-
- - {result.title} - -
-
- ); -}; +3. In a new terminal, start the Frontend at [http://localhost:3000/](http://localhost:3000/): -config.settings.searchkitblock.overriddenComponents = { - 'ResultsList.item.elasticsearch': MySearchkitResultsListItem, -}; -```` +```shell +make frontend-start +``` +Voila! Your Plone site should be live and kicking! 🎉 -# Panel for testing matches +### Local Stack Deployment 📦 -`/controlpanel/test-searchkit-querystrings` +Deploy a local `Docker Compose` environment that includes: -Please update the settings according to your deployment: `/controlpanel/volto_searchkit_block_control_panel` +- Docker images for Backend and Frontend 🖼️ +- A stack with a Traefik router and a Postgres database 🗃️ +- Accessible at [http://searchkit-block.localhost](http://searchkit-block.localhost) 🌐 +Execute the following: -# User documentation +```shell +make stack-start +make stack-create-site +``` -The search is a fuzzy search, that means typos are compensated. -Approximate matches and inflections are found. +And... you're all set! Your Plone site is up and running locally! 🚀 -To force the match of a search string, precede it with "+". -To exclude matches of a search string, precede it with "-". +## Project Structure 🏗️ -Use wildcards to find matches of words that complement the search string. +This monorepo consists of three distinct sections: `backend`, `frontend`, and `devops`. -For exact matches of a search string embrace it with quotation marks. +- **backend**: Houses the API and Plone installation, utilizing pip instead of buildout, and includes a policy package named searchkit.block. +- **frontend**: Contains the React (Volto) package. +- **devops**: Encompasses Docker Stack, Ansible playbooks, and Cache settings. -A search for a word with hyphen is equivalent to a search for the word and the parts of it. -Example: A search for "LSR-Lehrbetrieb" is equivalent to a search for "LSR-Lehrbetrieb LSR Lehrbetrieb" +### Why This Structure? 🤔 -Words with hyphen are matched by searches for part of the words. -Example: "LSR-Lehrbetrieb" is found by a search for "LSR". +- All necessary codebases to run the site are contained within the repo (excluding existing addons for Plone and React). +- Specific GitHub Workflows are triggered based on changes in each codebase (refer to .github/workflows). +- Simplifies the creation of Docker images for each codebase. +- Demonstrates Plone installation/setup without buildout. -## Multiple search strings +## Code Quality Assurance 🧐 -Search results do include at least one of the search strings. +To automatically format your code and ensure it adheres to quality standards, execute: +```shell +make check +``` -# Credits +Linters can be run individually within the `backend` or `frontend` folders. -This package is a Plone Volto integration of react-searchkit https://www.npmjs.com/package/react-searchkit Copyright (C) 2015-2019 CERN. +## Internationalization 🌐 +Generate translation files for Plone and Volto with ease: -# Copyright and license +```shell +make i18n +``` -Copyright (C) 2024 Rohberg. +## Credits and Acknowledgements 🙏 -The project is licensed. -See [LICENSE](https://github.com/rohberg/volto-searchkit-block/blob/master/LICENSE) for details. +Crafted with care by **Generated using [Cookieplone (0.7.1)](https://github.com/plone/cookieplone) and [cookiecutter-plone (6f17615)](https://github.com/plone/cookiecutter-plone/commit/6f1761520019010ae3799dfa0c6b999b533d59a7) on 2024-10-26 13:04:00.309419**. A special thanks to all contributors and supporters! diff --git a/TESTING.md b/TESTING.md deleted file mode 100644 index 8091a177..00000000 --- a/TESTING.md +++ /dev/null @@ -1,39 +0,0 @@ -# Testing - -## TODO - -- block can be added -- search fuzzy -- search flexation -- search wildcard -- search exact -- search compounded word - - -## Build and run acceptance tests - -Build acceptance server: - - make build-acceptance - -Start acceptance server: - - make start-acceptance - -Then robot server runs on http://localhost:55001/plone - -Run cypress acceptance tests: - - make test-acceptance - - -## Further topics - -In general: Execute command on container with: - - docker compose exec backend ls -la - -Inspect container with - - docker exec -it bash - diff --git a/TODO.md b/TODO.md deleted file mode 100644 index 75d59800..00000000 --- a/TODO.md +++ /dev/null @@ -1,6 +0,0 @@ - -# TODOs - -- Restrict block creation to Site Admins. - In future, blocks creation can be restricted by permission / role. Then change attribute "restricted" to false. Until then: download add-on, change restricted to false, add block, switch back to restricted true. - `config.blocks.blocksConfig.searchkitblock.restricted` \ No newline at end of file diff --git a/acceptance/.env b/acceptance/.env deleted file mode 100644 index 95cefbd0..00000000 --- a/acceptance/.env +++ /dev/null @@ -1,19 +0,0 @@ -# This env file work out-of-the-box with the opensearch example docker-compose setup - -export INDEX_SERVER=opensearch:9200 -export INDEX_OPENSEARCH=1 -export INDEX_USE_SSL=0 -export INDEX_LOGIN=admin -export INDEX_PASSWORD="oxczBG).3xWyapLn" - -export CELERY_BROKER=redis://redis:6379/0 -export CELERY_LOG_LEVEL=debug - -export PLONE_SERVICE=http://backend-acceptance:55001 -export PLONE_SITE_PREFIX_PATH=plone -export PLONE_USER=admin -export PLONE_PASSWORD=secret - -export MAPPINGS_FILE=/configuration/mappings.json -export ANALYSIS_FILE=/configuration/analysis.json -export PREPROCESSINGS_FILE=/configuration/preprocessings.json \ No newline at end of file diff --git a/acceptance/.gitignore b/acceptance/.gitignore deleted file mode 100644 index ac385657..00000000 --- a/acceptance/.gitignore +++ /dev/null @@ -1,16 +0,0 @@ -node_modules -cypress/videos/ -results -build -*~ -project -addon-testing-project - -# yarn 3 -.pnp.* -.yarn/* -!.yarn/patches -!.yarn/plugins -!.yarn/releases -!.yarn/sdks -!.yarn/versions diff --git a/acceptance/ci.yml b/acceptance/ci.yml deleted file mode 100644 index 2ec75b38..00000000 --- a/acceptance/ci.yml +++ /dev/null @@ -1,99 +0,0 @@ -version: "3" - -services: - addon-acceptance: - build: - context: ../ - dockerfile: ./dockerfiles/Dockerfile.ci - args: - ADDON_NAME: "${ADDON_NAME}" - ADDON_PATH: "${ADDON_PATH}" - VOLTO_VERSION: ${VOLTO_VERSION:-17} - environment: - RAZZLE_INTERNAL_API_PATH: http://backend-acceptance:55001/plone - RAZZLE_API_PATH: http://localhost:55001/plone - ports: - - 3000:3000 - depends_on: - - backend-acceptance - profiles: - - prod - - backend-acceptance: - # TODO Create content - build: - context: ../ - dockerfile: ./dockerfiles/backend/Dockerfile.acceptance - args: - PLONE_VERSION: ${PLONE_VERSION:-6.0} - environment: - ZSERVER_HOST: 0.0.0.0 - ZSERVER_PORT: 55001 - # plone.elastic 2.x - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - CELERY_BROKER: ${CELERY_BROKER?unset} - ports: - - 55001:55001 - depends_on: - - ingest - - redis - - opensearch - profiles: - - dev - - prod - - ingest: - build: - context: ../ - dockerfile: ./docker-opensearch/Dockerfile.ingest - environment: - MAPPINGS_FILE: "/configuration/mappings.json" - ANALYSIS_FILE: "/configuration/analysis.json" - PREPROCESSINGS_FILE: "/configuration/preprocessings.json" - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - CELERY_BROKER: ${CELERY_BROKER?unset} - CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} - CELEREY_LOG_LEVEL: ${CELERY_LOG_LEVEL:-info} - PLONE_SERVICE: ${PLONE_SERVICE?unset} - PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} - PLONE_USER: ${PLONE_USER?unset} - PLONE_PASSWORD: ${PLONE_PASSWORD?unset} - - redis: - image: 'redis:latest' - ports: - - 6379:6379 - - opensearch: - build: - context: ../ - dockerfile: ./docker-opensearch/Dockerfile.opensearch - environment: - - plugins.security.disabled=true - - cluster.name=opensearch-cluster - - node.name=opensearch - - discovery.type=single-node - - bootstrap.memory_lock=true - - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx2g" - - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${INDEX_PASSWORD?unset} - ulimits: - memlock: - soft: -1 - hard: -1 - nofile: - soft: 65536 - hard: 65536 - ports: - - 9200:9200 # REST API - - 9600:9600 # Performance Analyzer - profiles: - - dev - - prod diff --git a/acceptance/cypress/fixtures/broccoli.jpg b/acceptance/cypress/fixtures/broccoli.jpg deleted file mode 100644 index 456706d6627d9a911219187bf6dd6bf8eeed22ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102057 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 diff --git a/acceptance/cypress/fixtures/example.json b/acceptance/cypress/fixtures/example.json deleted file mode 100644 index 02e42543..00000000 --- a/acceptance/cypress/fixtures/example.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Using fixtures to represent data", - "email": "hello@cypress.io", - "body": "Fixtures are a great way to mock data for responses to routes" -} diff --git a/acceptance/cypress/fixtures/file.pdf b/acceptance/cypress/fixtures/file.pdf deleted file mode 100644 index ef9c79819496798012ceabadd92415c3b1923c26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74429 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

?R4wK8QIEP1Kg{=O1nOJ{EcekN1_8U3@io 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 z783�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 U48wH?Nr*?2Ra2&FRGOUQ_d|7Rbr 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�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 bfN0LUh8FbW+rTTmU`7)yzw!~;=jHzaFbeZ? diff --git a/acceptance/cypress/fixtures/image.png b/acceptance/cypress/fixtures/image.png deleted file mode 100644 index 4c109bab8dbadd00ceb082694f3416b715055935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1185 zcmV;S1YY}zP)=xnvsnabWDk;T{N>i~nkE||zor_QO-;(NTvH2D426-nUu@_7pLQpkYy_MZTyNstbb5ZZ zwqx{xEQCOPq!bL>d=r~XQr|(z$J{CUw@0HTe<-H69xKkDirw2{ZFwlK-*d1^i(#2< zZdBfJ$f$ydeoc4S)mON7eLJim#v9j1NI?#R@upr~6xDF?Osq{SklySZY|9{P>H((P z`_IIpd>5zt1#+K6%5}triu4b;lFhklRGZ(O-CA(TH(592LivBkRT?MLfBr3vORg5K z?&8YkTrRZ838i$k$XU2LZhDxqU(mI)Ok&p(Gt zFIg1VKIzh2-EAACm_>`mgctiiTzjxQ8leQa$z?AWkGY&3CS6N=JG6$2FugPF>rm?z z#BRDZf7!{U#i4-E)hd;v*qzu@>3yU1DP%$=aQWyzNrB+rxId8cvMiKsCmoEY4;7xsu7lJSs`q zq@vs!E~A?@hOhg}y0(AP4leWtZUTp!=Dl2b2y%%t*wjuiQ68@RUB}vp(xr0@t{_iO z*B;F~Xz(n4GRP$yz8}9-ajm^eR}XT(Bq=9wAr^Ake&kCZWGpys#Ta1r(SPlS`?+jT zE!UuJ-%kpRUyL;6;Ft8OxPdZBea3~RZ*#87Ww7yZAkIfUjq@OuJ*GLABpExoP}|q% zWxID??y8~(xcE5Nm-8rdB#%0uYnJzN&UT?kA;e+c`@eGGx&xOE{t4@p7k*zf+z`NZ zrGXGQUsoRIDu?5tP@u+j0ILtw0YJ~6zdQsx(70|B4%cl^`}2({R{$Ray`av98s>)v z^1~@t0&fDnsxFE`Q!m}%vwXW_E)`+2F*thMGAz%jW230=W!+5q+DMy2E-}RDDukQE z`wnZqi4JfHM!e9UdZ4e?%U;&Yb1rQk?@}t=m(#5G?h~2eKGA+I^aR>h-#{+uV$?F; z*K>BVuXmKoRb0b*)SOFs#42g94=Z&E>-CX+*nPY6G_D`cxp4WwdcJS2iAW#YH&-LA zw&POTz$W`XE=62Z#qg?g4uOA54W)zOs~pznqgkOo@0AE&?|jMd)1&87UZdm3RUAFz z9MR9Yub*>zKj$ic&cUM6_ASmW&(E2McZB){V+fV(8gbsY00000NkvXXu0mjf { - // `on` is used to hook into various events Cypress emits - // `config` is the resolved Cypress config -}; diff --git a/acceptance/cypress/support/commands.js b/acceptance/cypress/support/commands.js deleted file mode 100644 index 44a50003..00000000 --- a/acceptance/cypress/support/commands.js +++ /dev/null @@ -1 +0,0 @@ -import '@plone/volto-testing/cypress/support/commands'; diff --git a/acceptance/cypress/support/reset-fixture.js b/acceptance/cypress/support/reset-fixture.js deleted file mode 100644 index a9a5fad7..00000000 --- a/acceptance/cypress/support/reset-fixture.js +++ /dev/null @@ -1,45 +0,0 @@ -function setup() { - const api_url = Cypress.env('API_PATH') || 'http://localhost:55001/plone'; - cy.request({ - method: 'POST', - url: `${api_url}/RobotRemote`, - headers: { Accept: 'text/xml', 'content-type': 'text/xml' }, - body: - 'run_keywordremote_zodb_setupplone.app.robotframework.testing.PLONE_ROBOT_TESTING', - }).then(() => cy.log('Setting up API fixture')); -} - -function teardown() { - const api_url = Cypress.env('API_PATH') || 'http://localhost:55001/plone'; - cy.request({ - method: 'POST', - url: `${api_url}/RobotRemote`, - headers: { Accept: 'text/xml', 'content-type': 'text/xml' }, - body: - 'run_keywordremote_zodb_teardownplone.app.robotframework.testing.PLONE_ROBOT_TESTING', - }).then(() => cy.log('Tearing down API fixture')); -} - -function main() { - const command = process.argv[2]; - switch (command) { - case 'setup': - setup(); - break; - case 'teardown': - teardown(); - break; - default: - setup(); - } -} - -// This is the equivalent of `if __name__ == '__main__'` in Python :) -if (require.main === module) { - main(); -} - -module.exports = { - setup, - teardown, -}; diff --git a/acceptance/cypress/support/slate.js b/acceptance/cypress/support/slate.js deleted file mode 100644 index d910f6ca..00000000 --- a/acceptance/cypress/support/slate.js +++ /dev/null @@ -1,25 +0,0 @@ -export const createSlateBlock = () => { - cy.get('.ui.basic.icon.button.block-add-button').first().click(); - cy.get('.blocks-chooser .title').contains('Text').click(); - cy.get('.ui.basic.icon.button.slate').contains('Text').click(); - return getSelectedSlateEditor(); -}; - -export const getSelectedSlateEditor = () => { - return cy.get('.slate-editor.selected [contenteditable=true]').click(); -}; - -export const getSlateEditorAndType = (selector, type) => { - return cy - .wait(1000) - .get(selector) - .focus() - .click() - .wait(2000) - .type(type) - .wait(1000); -}; - -export const getSlateEditorAndClear = (selector) => { - return cy.get(selector).focus().click().wait(1000).clear(); -}; diff --git a/acceptance/cypress/tests/basic.cy.js b/acceptance/cypress/tests/basic.cy.js deleted file mode 100644 index 2fa0c728..00000000 --- a/acceptance/cypress/tests/basic.cy.js +++ /dev/null @@ -1,43 +0,0 @@ -import { - getSlateEditorAndType, - getSelectedSlateEditor, -} from '../support/slate'; - -context('Basic Acceptance Tests', () => { - describe('Text Block Tests', () => { - beforeEach(() => { - cy.intercept('GET', `/**/*?expand*`).as('content'); - cy.intercept('GET', '/**/Document').as('schema'); - - // given a logged in editor and a page in edit mode - cy.autologin(); - cy.createContent({ - contentType: 'Document', - contentId: 'document', - contentTitle: 'Document', - }); - cy.visit('/'); - cy.wait('@content'); - }); - - it('As editor I can add a page with a text block', function () { - // when I add a page with a text block - cy.get('#toolbar-add').click(); - cy.get('#toolbar-add-document').click(); - cy.get('.documentFirstHeading') - .type('My Page') - .get('.documentFirstHeading') - .contains('My Page'); - - getSlateEditorAndType( - '.block .slate-editor [contenteditable=true]', - 'This is the text', - ); - - getSelectedSlateEditor().contains('This is the text'); - cy.get('#toolbar-save').click(); - cy.wait('@content'); - cy.url().should('eq', Cypress.config().baseUrl + '/my-page'); - }); - }); -}); diff --git a/acceptance/cypress/tests/blocks-searchkit.cy.js b/acceptance/cypress/tests/blocks-searchkit.cy.js deleted file mode 100644 index 1035ba3c..00000000 --- a/acceptance/cypress/tests/blocks-searchkit.cy.js +++ /dev/null @@ -1,90 +0,0 @@ -describe('Searchkit Block Tests', () => { - before(() => { - cy.intercept('GET', `/**/*?expand*`).as('content'); - cy.intercept('GET', '/**/Document').as('schema'); - - cy.autologin(); - - cy.createContent({ - contentType: 'Document', - contentId: 'searching', - contentTitle: 'Search', - }); - cy.createContent({ - contentType: 'Document', - contentId: 'garden-blog', - contentTitle: 'Garden blog', - }); - cy.createContent({ - contentType: 'Document', - contentId: 'garden-february', - contentTitle: 'The garden in february', - path: '/garden-blog', - }); - cy.createContent({ - contentType: 'Document', - contentId: 'garden-march', - contentTitle: 'The garden in march', - path: '/garden-blog', - }); - - cy.visit('/'); - cy.wait('@content'); - }); - - beforeEach(() => { - cy.intercept('GET', `/**/*?expand*`).as('content'); - cy.intercept('GET', '/**/Document').as('schema'); - - cy.autologin(); - - cy.visit('/'); - cy.wait('@content'); - }); - - after(() => { - // cy.removeContent({ path: 'garden-february' }); - // cy.removeContent({ path: 'garden-march' }); - // cy.removeContent({ path: 'garden-blog' }); - // cy.removeContent({ path: 'searching' }); - // TODO Update index server - // @@update-elasticsearch - - }); - - it('As manager I can add a searchkit-block', function () { - cy.navigate('/searching/edit'); - cy.wait('@schema'); - - cy.getSlate().click(); - cy.get('.button .block-add-button').click({ force: true }); - cy.get('div[aria-label="Unfold Common blocks"]').click(); - cy.get('.blocks-chooser .common .button.searchkitblock').click({ - force: true, - }); - - // // block configuration index server - // cy.get('input#field-backend_url').type('http://localhost:55001/plone') - // cy.get('input#field-frontend_url').type('http://localhost:3000') - // // block configuration allowed types and states - // cy.get("#field-allowed_content_types").click(); - // cy.get("#field-allowed_content_types .react-select__option") - // .contains('Page') - // .click(); - // cy.get("#field-allowed_review_states").click(); - // cy.get("#field-allowed_review_states .react-select__option") - // .contains('Private') - // .click(); - - cy.get('#toolbar-save').click(); - cy.visit('/searching'); - - cy.get('.block.searchkitsearch') - .should('not.contain', 'No results') - cy.get('.block.searchkitsearch') - .contains('The garden in february'); - - - // cy.visit('/garden-blog/contents'); - }); -}); diff --git a/acceptance/docker-compose.yml b/acceptance/docker-compose.yml deleted file mode 100644 index e13720f7..00000000 --- a/acceptance/docker-compose.yml +++ /dev/null @@ -1,159 +0,0 @@ -version: "3" - -services: - - addon-acceptance: - build: - context: ../ - dockerfile: ./dockerfiles/Dockerfile.acceptance - args: - ADDON_NAME: "${ADDON_NAME}" - ADDON_PATH: "${ADDON_PATH}" - VOLTO_VERSION: ${VOLTO_VERSION:-17} - volumes: - - ${CURRENT_DIR}:/app/src/addons/${ADDON_PATH}/ - environment: - RAZZLE_INTERNAL_API_PATH: http://backend-acceptance:55001/plone - RAZZLE_API_PATH: http://localhost:55001/plone - HOST: 0.0.0.0 - ports: - - 3000:3000 - - 3001:3001 - tty: true - depends_on: - - backend-acceptance - profiles: - - dev - - backend-acceptance: - # TODO Create content - build: - context: ../ - dockerfile: ./dockerfiles/backend/Dockerfile.acceptance - args: - PLONE_VERSION: ${PLONE_VERSION:-6.0} - environment: - ZSERVER_HOST: "0.0.0.0" - ZSERVER_PORT: "55001" - # CORS_ALLOW_ORIGIN: "*" - # DELETE_EXISTING: "true" - # SETUP_CONTENT: "true" - # ADDONS: ${BACKEND_ADDONS} - # TYPE: volto - # # Profiles to be added to the created site - # ADDITIONAL_PROFILES: "collective.elastic.plone:default" - # # Packages to be used in configuration - # # CONFIGURE_PACKAGES: "plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors" - # # CONFIGURE_PACKAGES: "plone.app.contenttypes,plone.restapi,plone.volto" - # plone.elastic 2.x - CELERY_BROKER: ${CELERY_BROKER?unset} - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - ports: - - 55001:55001 - profiles: - - dev - - prod - - ingest: - image: ghcr.io/collective/collective.elastic.ingest:latest - environment: - MAPPINGS_FILE: ${MAPPINGS_FILE} - ANALYSIS_FILE: ${ANALYSIS_FILE} - PREPROCESSINGS_FILE: ${PREPROCESSINGS_FILE} - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - CELERY_BROKER: ${CELERY_BROKER?unset} - CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} - CELEREY_LOG_LEVEL: ${CELERY_LOG_LEVEL:-info} - PLONE_SERVICE: ${PLONE_SERVICE?unset} - PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} - PLONE_USER: ${PLONE_USER?unset} - PLONE_PASSWORD: ${PLONE_PASSWORD?unset} - SENTRY_DSN: ${SENTRY_DSN} - volumes: - - ingest-configuration:/configuration - - redis: - image: 'redis:latest' - ports: - - 6379:6379 - - opensearch: - build: - context: ../ - dockerfile: ./docker-opensearch/Dockerfile.opensearch - # args: - # ADDON_NAME: "${ADDON_NAME}" - # ADDON_PATH: "${ADDON_PATH}" - # VOLTO_VERSION: ${VOLTO_VERSION:-17} - environment: - - plugins.security.disabled=true - - cluster.name=opensearch-cluster - - node.name=opensearch - - discovery.type=single-node - - bootstrap.memory_lock=true - - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx2g" - ulimits: - memlock: - soft: -1 - hard: -1 - nofile: - soft: 65536 - hard: 65536 - volumes: - - opensearch-data:/usr/share/opensearch/data - - "../docker-opensearch/opensearch-configuration/keywords.txt:/usr/share/opensearch/config/keywords.txt" - - "../docker-opensearch/opensearch-configuration/lexicon.txt:/usr/share/opensearch/config/lexicon.txt" - ports: - - 9200:9200 # REST API - - 9600:9600 # Performance Analyzer - tty: true - profiles: - - dev - - prod - - - opensearch-dashboards: - image: opensearchproject/opensearch-dashboards:latest - ports: - - 5601:5601 - expose: - - "5601" - environment: - OPENSEARCH_HOSTS: '["http://opensearch:9200"]' - profiles: - - dev - - # dejavu: - # image: appbaseio/dejavu:latest - # container_name: dejavu - # ports: - # - "1358:1358" - # expose: - # - "1358" - # links: - # - opensearch - -volumes: - opensearch-data: - ingest-configuration: - driver: local - driver_opts: - type: none - device: ../docker-opensearch/ingest-configuration - o: bind - # opensearch-configuration: - # driver: local - # driver_opts: - # type: none - # device: ./opensearch-configuration - # o: bind - - diff --git a/acceptance/package.json b/acceptance/package.json deleted file mode 100644 index c11c8e33..00000000 --- a/acceptance/package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "dependencies": { - "@plone/volto-testing": "^4.0.0" - } -} diff --git a/acceptance/yarn.lock b/acceptance/yarn.lock deleted file mode 100644 index e13d2606..00000000 --- a/acceptance/yarn.lock +++ /dev/null @@ -1,2638 +0,0 @@ -# This file is generated by running "yarn install" inside your project. -# Manual changes might be lost - proceed with caution! - -__metadata: - version: 6 - cacheKey: 8 - -"@babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13": - version: 7.18.6 - resolution: "@babel/code-frame@npm:7.18.6" - dependencies: - "@babel/highlight": ^7.18.6 - checksum: 195e2be3172d7684bf95cff69ae3b7a15a9841ea9d27d3c843662d50cdd7d6470fd9c8e64be84d031117e4a4083486effba39f9aef6bbb2c89f7f21bcfba33ba - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.18.6": - version: 7.19.1 - resolution: "@babel/helper-validator-identifier@npm:7.19.1" - checksum: 0eca5e86a729162af569b46c6c41a63e18b43dbe09fda1d2a3c8924f7d617116af39cac5e4cd5d431bb760b4dca3c0970e0c444789b1db42bcf1fa41fbad0a3a - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.18.6": - version: 7.18.6 - resolution: "@babel/highlight@npm:7.18.6" - dependencies: - "@babel/helper-validator-identifier": ^7.18.6 - chalk: ^2.0.0 - js-tokens: ^4.0.0 - checksum: 92d8ee61549de5ff5120e945e774728e5ccd57fd3b2ed6eace020ec744823d4a98e242be1453d21764a30a14769ecd62170fba28539b211799bbaf232bbb2789 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.9.2": - version: 7.20.13 - resolution: "@babel/runtime@npm:7.20.13" - dependencies: - regenerator-runtime: ^0.13.11 - checksum: 09b7a97a05c80540db6c9e4ddf8c5d2ebb06cae5caf3a87e33c33f27f8c4d49d9c67a2d72f1570e796045288fad569f98a26ceba0c4f5fad2af84b6ad855c4fb - languageName: node - linkType: hard - -"@colors/colors@npm:1.5.0": - version: 1.5.0 - resolution: "@colors/colors@npm:1.5.0" - checksum: d64d5260bed1d5012ae3fc617d38d1afc0329fec05342f4e6b838f46998855ba56e0a73833f4a80fa8378c84810da254f76a8a19c39d038260dc06dc4e007425 - languageName: node - linkType: hard - -"@cypress/request@npm:^3.0.0": - version: 3.0.1 - resolution: "@cypress/request@npm:3.0.1" - dependencies: - aws-sign2: ~0.7.0 - aws4: ^1.8.0 - caseless: ~0.12.0 - combined-stream: ~1.0.6 - extend: ~3.0.2 - forever-agent: ~0.6.1 - form-data: ~2.3.2 - http-signature: ~1.3.6 - is-typedarray: ~1.0.0 - isstream: ~0.1.2 - json-stringify-safe: ~5.0.1 - mime-types: ~2.1.19 - performance-now: ^2.1.0 - qs: 6.10.4 - safe-buffer: ^5.1.2 - tough-cookie: ^4.1.3 - tunnel-agent: ^0.6.0 - uuid: ^8.3.2 - checksum: 7175522ebdbe30e3c37973e204c437c23ce659e58d5939466615bddcd58d778f3a8ea40f087b965ae8b8138ea8d102b729c6eb18c6324f121f3778f4a2e8e727 - languageName: node - linkType: hard - -"@cypress/xvfb@npm:^1.2.4": - version: 1.2.4 - resolution: "@cypress/xvfb@npm:1.2.4" - dependencies: - debug: ^3.1.0 - lodash.once: ^4.1.1 - checksum: 7bdcdaeb1bb692ec9d9bf8ec52538aa0bead6764753f4a067a171a511807a43fab016f7285a56bef6a606c2467ff3f1365e1ad2d2d583b81beed849ee1573fd1 - languageName: node - linkType: hard - -"@jest/expect-utils@npm:^29.4.2": - version: 29.4.2 - resolution: "@jest/expect-utils@npm:29.4.2" - dependencies: - jest-get-type: ^29.4.2 - checksum: 5d23a09a4f85f0cb8da3bac3a6118efe4365dce6923702bc7f1a0edf36699c5c91d9c77e95349e71e305d36ae35d4e06086c923bf9635ccf3fffda05cc7cc2e8 - languageName: node - linkType: hard - -"@jest/schemas@npm:^29.4.2": - version: 29.4.2 - resolution: "@jest/schemas@npm:29.4.2" - dependencies: - "@sinclair/typebox": ^0.25.16 - checksum: 85d9416dce85604400e65ba0b2146fea5ba313612d6d1fa8f39c30bcb42fabd7120193d277327fb10228ea3112f3b83e914bc7ab42137d19a1e1c37093f32363 - languageName: node - linkType: hard - -"@jest/types@npm:^29.4.2": - version: 29.4.2 - resolution: "@jest/types@npm:29.4.2" - dependencies: - "@jest/schemas": ^29.4.2 - "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^3.0.0 - "@types/node": "*" - "@types/yargs": ^17.0.8 - chalk: ^4.0.0 - checksum: da2caa2c1d3ce7461167faddf9a4158a4be5c900e44f22db9c370b189c804b7492051c635a8c0c62ac4e41aff3bc6c324a008043e193bc5d6ce7b44aaa449258 - languageName: node - linkType: hard - -"@plone/volto-testing@npm:^4.0.0": - version: 4.0.0 - resolution: "@plone/volto-testing@npm:4.0.0" - dependencies: - "@testing-library/cypress": 9.0.0 - "@testing-library/jest-dom": 5.16.4 - "@testing-library/react": 12.1.5 - axe-core: 4.6.3 - cypress: 13.1.0 - cypress-axe: 1.5.0 - cypress-file-upload: 5.0.8 - checksum: ce4f3149177e3314cc6cff7cfad03637dde512cc5f4a689fb43e88f56b2aadc93c9b8283092a9b40139d4846e0f741f20a080405bfde7706873067219fec1a4d - languageName: node - linkType: hard - -"@sinclair/typebox@npm:^0.25.16": - version: 0.25.21 - resolution: "@sinclair/typebox@npm:0.25.21" - checksum: 763af1163fe4eabee9b914d4e4548a39fbba3287d2b3b1ff043c1da3c5a321e99d50a3ca94eb182988131e00b006a6f019799cde8da2f61e2f118b30b0276a00 - languageName: node - linkType: hard - -"@testing-library/cypress@npm:9.0.0": - version: 9.0.0 - resolution: "@testing-library/cypress@npm:9.0.0" - dependencies: - "@babel/runtime": ^7.14.6 - "@testing-library/dom": ^8.1.0 - peerDependencies: - cypress: ^12.0.0 - checksum: fbd24e8f0b8a60279b336de5f6bc0e7ad6fb31316eacab5128dacc7fccde1eb40935b90f2c3bddc7d814115fe3965c6dbf011785448cd15b5a5b0bc40ef5bb4c - languageName: node - linkType: hard - -"@testing-library/dom@npm:^8.0.0, @testing-library/dom@npm:^8.1.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" - dependencies: - "@babel/code-frame": ^7.10.4 - "@babel/runtime": ^7.12.5 - "@types/aria-query": ^5.0.1 - aria-query: ^5.0.0 - chalk: ^4.1.0 - dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 - pretty-format: ^27.0.2 - checksum: 1e599129a2fe91959ce80900a0a4897232b89e2a8e22c1f5950c36d39c97629ea86b4986b60b173b5525a05de33fde1e35836ea597b03de78cc51b122835c6f0 - languageName: node - linkType: hard - -"@testing-library/jest-dom@npm:5.16.4": - version: 5.16.4 - resolution: "@testing-library/jest-dom@npm:5.16.4" - dependencies: - "@babel/runtime": ^7.9.2 - "@types/testing-library__jest-dom": ^5.9.1 - aria-query: ^5.0.0 - chalk: ^3.0.0 - css: ^3.0.0 - css.escape: ^1.5.1 - dom-accessibility-api: ^0.5.6 - lodash: ^4.17.15 - redent: ^3.0.0 - checksum: 4240501223b72b97a44d4e3c669f39b208c49fb645d11d08d5f178d607265c5dfad07efbe027f41a0e2458178ff1fd5bf437fc05661b9109dcd013b95a37079e - languageName: node - linkType: hard - -"@testing-library/react@npm:12.1.5": - version: 12.1.5 - resolution: "@testing-library/react@npm:12.1.5" - dependencies: - "@babel/runtime": ^7.12.5 - "@testing-library/dom": ^8.0.0 - "@types/react-dom": <18.0.0 - peerDependencies: - react: <18.0.0 - react-dom: <18.0.0 - checksum: 4abd0490405e709a7df584a0db604e508a4612398bb1326e8fa32dd9393b15badc826dcf6d2f7525437886d507871f719f127b9860ed69ddd204d1fa834f576a - languageName: node - linkType: hard - -"@types/aria-query@npm:^5.0.1": - version: 5.0.1 - resolution: "@types/aria-query@npm:5.0.1" - checksum: 69fd7cceb6113ed370591aef04b3fd0742e9a1b06dd045c43531448847b85de181495e4566f98e776b37c422a12fd71866e0a1dfd904c5ec3f84d271682901de - languageName: node - linkType: hard - -"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0": - version: 2.0.4 - resolution: "@types/istanbul-lib-coverage@npm:2.0.4" - checksum: a25d7589ee65c94d31464c16b72a9dc81dfa0bea9d3e105ae03882d616e2a0712a9c101a599ec482d297c3591e16336962878cb3eb1a0a62d5b76d277a890ce7 - languageName: node - linkType: hard - -"@types/istanbul-lib-report@npm:*": - version: 3.0.0 - resolution: "@types/istanbul-lib-report@npm:3.0.0" - dependencies: - "@types/istanbul-lib-coverage": "*" - checksum: 656398b62dc288e1b5226f8880af98087233cdb90100655c989a09f3052b5775bf98ba58a16c5ae642fb66c61aba402e07a9f2bff1d1569e3b306026c59f3f36 - languageName: node - linkType: hard - -"@types/istanbul-reports@npm:^3.0.0": - version: 3.0.1 - resolution: "@types/istanbul-reports@npm:3.0.1" - dependencies: - "@types/istanbul-lib-report": "*" - checksum: f1ad54bc68f37f60b30c7915886b92f86b847033e597f9b34f2415acdbe5ed742fa559a0a40050d74cdba3b6a63c342cac1f3a64dba5b68b66a6941f4abd7903 - languageName: node - linkType: hard - -"@types/jest@npm:*": - version: 29.4.0 - resolution: "@types/jest@npm:29.4.0" - dependencies: - expect: ^29.0.0 - pretty-format: ^29.0.0 - checksum: 23760282362a252e6690314584d83a47512d4cd61663e957ed3398ecf98195fe931c45606ee2f9def12f8ed7d8aa102d492ec42d26facdaf8b78094a31e6568e - languageName: node - linkType: hard - -"@types/node@npm:*": - version: 18.13.0 - resolution: "@types/node@npm:18.13.0" - checksum: 4ea10f8802848b01672bce938f678b6774ca2cee0c9774f12275ab064ae07818419c3e2e41d6257ce7ba846d1ea26c63214aa1dfa4166fa3746291752b8c6416 - languageName: node - linkType: hard - -"@types/node@npm:^16.18.39": - version: 16.18.86 - resolution: "@types/node@npm:16.18.86" - checksum: 12d70d3a51c9a95c401532dabb1014ccb06f638283cb46f72886a8939baf20f62d2dcd6292743be61dca2808e837801e610b511bcbf1282e9d4033751002d870 - languageName: node - linkType: hard - -"@types/prop-types@npm:*": - version: 15.7.5 - resolution: "@types/prop-types@npm:15.7.5" - checksum: 5b43b8b15415e1f298243165f1d44390403bb2bd42e662bca3b5b5633fdd39c938e91b7fce3a9483699db0f7a715d08cef220c121f723a634972fdf596aec980 - languageName: node - linkType: hard - -"@types/react-dom@npm:<18.0.0": - version: 17.0.18 - resolution: "@types/react-dom@npm:17.0.18" - dependencies: - "@types/react": ^17 - checksum: b74525b1a13a0e27fe20859ff7a7e8f7e4581fb9d45ed1b6447ad1534d86f813818353c39d0df2e28f9d2b9be2e3af1908c244b2214a979393d19f217665e614 - languageName: node - linkType: hard - -"@types/react@npm:^17": - version: 17.0.53 - resolution: "@types/react@npm:17.0.53" - dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" - csstype: ^3.0.2 - checksum: dacfde02c260fd98bed2eb775ed0c7ce1397be4c0844f907a50763b081a4008f81f57071889a16eb1350ddcf0927f3cf1a6541702c8ad03de3c70383ef931e3f - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.2 - resolution: "@types/scheduler@npm:0.16.2" - checksum: b6b4dcfeae6deba2e06a70941860fb1435730576d3689225a421280b7742318d1548b3d22c1f66ab68e414f346a9542f29240bc955b6332c5b11e561077583bc - languageName: node - linkType: hard - -"@types/sinonjs__fake-timers@npm:8.1.1": - version: 8.1.1 - resolution: "@types/sinonjs__fake-timers@npm:8.1.1" - checksum: ca09d54d47091d87020824a73f026300fa06b17cd9f2f9b9387f28b549364b141ef194ee28db762f6588de71d8febcd17f753163cb7ea116b8387c18e80ebd5c - languageName: node - linkType: hard - -"@types/sizzle@npm:^2.3.2": - version: 2.3.3 - resolution: "@types/sizzle@npm:2.3.3" - checksum: 586a9fb1f6ff3e325e0f2cc1596a460615f0bc8a28f6e276ac9b509401039dd242fa8b34496d3a30c52f5b495873922d09a9e76c50c2ab2bcc70ba3fb9c4e160 - languageName: node - linkType: hard - -"@types/stack-utils@npm:^2.0.0": - version: 2.0.1 - resolution: "@types/stack-utils@npm:2.0.1" - checksum: 205fdbe3326b7046d7eaf5e494d8084f2659086a266f3f9cf00bccc549c8e36e407f88168ad4383c8b07099957ad669f75f2532ed4bc70be2b037330f7bae019 - languageName: node - linkType: hard - -"@types/testing-library__jest-dom@npm:^5.9.1": - version: 5.14.5 - resolution: "@types/testing-library__jest-dom@npm:5.14.5" - dependencies: - "@types/jest": "*" - checksum: dcb05416758fe88c1f4f3aa97b4699fcb46a5ed8f53c6b81721e66155452a48caf12ecb97dfdfd4130678e65efd66b9fca0ac434b3d63affec84842a84a6bf38 - languageName: node - linkType: hard - -"@types/yargs-parser@npm:*": - version: 21.0.0 - resolution: "@types/yargs-parser@npm:21.0.0" - checksum: b2f4c8d12ac18a567440379909127cf2cec393daffb73f246d0a25df36ea983b93b7e9e824251f959e9f928cbc7c1aab6728d0a0ff15d6145f66cec2be67d9a2 - languageName: node - linkType: hard - -"@types/yargs@npm:^17.0.8": - version: 17.0.22 - resolution: "@types/yargs@npm:17.0.22" - dependencies: - "@types/yargs-parser": "*" - checksum: 0773523fda71bafdc52f13f5970039e535a353665a60ba9261149a5c9c2b908242e6e77fbb7a8c06931ec78ce889d64d09673c68ba23eb5f5742d5385d0d1982 - languageName: node - linkType: hard - -"@types/yauzl@npm:^2.9.1": - version: 2.10.0 - resolution: "@types/yauzl@npm:2.10.0" - dependencies: - "@types/node": "*" - checksum: 55d27ae5d346ea260e40121675c24e112ef0247649073848e5d4e03182713ae4ec8142b98f61a1c6cbe7d3b72fa99bbadb65d8b01873e5e605cdc30f1ff70ef2 - languageName: node - linkType: hard - -"aggregate-error@npm:^3.0.0": - version: 3.1.0 - resolution: "aggregate-error@npm:3.1.0" - dependencies: - clean-stack: ^2.0.0 - indent-string: ^4.0.0 - checksum: 1101a33f21baa27a2fa8e04b698271e64616b886795fd43c31068c07533c7b3facfcaf4e9e0cab3624bd88f729a592f1c901a1a229c9e490eafce411a8644b79 - languageName: node - linkType: hard - -"ansi-colors@npm:^4.1.1": - version: 4.1.3 - resolution: "ansi-colors@npm:4.1.3" - checksum: a9c2ec842038a1fabc7db9ece7d3177e2fe1c5dc6f0c51ecfbf5f39911427b89c00b5dc6b8bd95f82a26e9b16aaae2e83d45f060e98070ce4d1333038edceb0e - languageName: node - linkType: hard - -"ansi-escapes@npm:^4.3.0": - version: 4.3.2 - resolution: "ansi-escapes@npm:4.3.2" - dependencies: - type-fest: ^0.21.3 - checksum: 93111c42189c0a6bed9cdb4d7f2829548e943827ee8479c74d6e0b22ee127b2a21d3f8b5ca57723b8ef78ce011fbfc2784350eb2bde3ccfccf2f575fa8489815 - languageName: node - linkType: hard - -"ansi-regex@npm:^5.0.1": - version: 5.0.1 - resolution: "ansi-regex@npm:5.0.1" - checksum: 2aa4bb54caf2d622f1afdad09441695af2a83aa3fe8b8afa581d205e57ed4261c183c4d3877cee25794443fde5876417d859c108078ab788d6af7e4fe52eb66b - languageName: node - linkType: hard - -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - -"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": - version: 4.3.0 - resolution: "ansi-styles@npm:4.3.0" - dependencies: - color-convert: ^2.0.1 - checksum: 513b44c3b2105dd14cc42a19271e80f386466c4be574bccf60b627432f9198571ebf4ab1e4c3ba17347658f4ee1711c163d574248c0c1cdc2d5917a0ad582ec4 - languageName: node - linkType: hard - -"ansi-styles@npm:^5.0.0": - version: 5.2.0 - resolution: "ansi-styles@npm:5.2.0" - checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 - languageName: node - linkType: hard - -"arch@npm:^2.2.0": - version: 2.2.0 - resolution: "arch@npm:2.2.0" - checksum: e21b7635029fe8e9cdd5a026f9a6c659103e63fff423834323cdf836a1bb240a72d0c39ca8c470f84643385cf581bd8eda2cad8bf493e27e54bd9783abe9101f - languageName: node - linkType: hard - -"aria-query@npm:^5.0.0": - version: 5.1.3 - resolution: "aria-query@npm:5.1.3" - dependencies: - deep-equal: ^2.0.5 - checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b - languageName: node - linkType: hard - -"asn1@npm:~0.2.3": - version: 0.2.6 - resolution: "asn1@npm:0.2.6" - dependencies: - safer-buffer: ~2.1.0 - checksum: 39f2ae343b03c15ad4f238ba561e626602a3de8d94ae536c46a4a93e69578826305366dc09fbb9b56aec39b4982a463682f259c38e59f6fa380cd72cd61e493d - languageName: node - linkType: hard - -"assert-plus@npm:1.0.0, assert-plus@npm:^1.0.0": - version: 1.0.0 - resolution: "assert-plus@npm:1.0.0" - checksum: 19b4340cb8f0e6a981c07225eacac0e9d52c2644c080198765d63398f0075f83bbc0c8e95474d54224e297555ad0d631c1dcd058adb1ddc2437b41a6b424ac64 - languageName: node - linkType: hard - -"astral-regex@npm:^2.0.0": - version: 2.0.0 - resolution: "astral-regex@npm:2.0.0" - checksum: 876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766 - languageName: node - linkType: hard - -"async@npm:^3.2.0": - version: 3.2.4 - resolution: "async@npm:3.2.4" - checksum: 43d07459a4e1d09b84a20772414aa684ff4de085cbcaec6eea3c7a8f8150e8c62aa6cd4e699fe8ee93c3a5b324e777d34642531875a0817a35697522c1b02e89 - languageName: node - linkType: hard - -"asynckit@npm:^0.4.0": - version: 0.4.0 - resolution: "asynckit@npm:0.4.0" - checksum: 7b78c451df768adba04e2d02e63e2d0bf3b07adcd6e42b4cf665cb7ce899bedd344c69a1dcbce355b5f972d597b25aaa1c1742b52cffd9caccb22f348114f6be - languageName: node - linkType: hard - -"at-least-node@npm:^1.0.0": - version: 1.0.0 - resolution: "at-least-node@npm:1.0.0" - checksum: 463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e - languageName: node - linkType: hard - -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5": - version: 1.0.5 - resolution: "available-typed-arrays@npm:1.0.5" - checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a - languageName: node - linkType: hard - -"aws-sign2@npm:~0.7.0": - version: 0.7.0 - resolution: "aws-sign2@npm:0.7.0" - checksum: b148b0bb0778098ad8cf7e5fc619768bcb51236707ca1d3e5b49e41b171166d8be9fdc2ea2ae43d7decf02989d0aaa3a9c4caa6f320af95d684de9b548a71525 - languageName: node - linkType: hard - -"aws4@npm:^1.8.0": - version: 1.12.0 - resolution: "aws4@npm:1.12.0" - checksum: 68f79708ac7c335992730bf638286a3ee0a645cf12575d557860100767c500c08b30e24726b9f03265d74116417f628af78509e1333575e9f8d52a80edfe8cbc - languageName: node - linkType: hard - -"axe-core@npm:4.6.3": - version: 4.6.3 - resolution: "axe-core@npm:4.6.3" - checksum: d0c46be92b9707c48b88a53cd5f471b155a2bfc8bf6beffb514ecd14e30b4863e340b5fc4f496d82a3c562048088c1f3ff5b93b9b3b026cb9c3bfacfd535da10 - languageName: node - linkType: hard - -"balanced-match@npm:^1.0.0": - version: 1.0.2 - resolution: "balanced-match@npm:1.0.2" - checksum: 9706c088a283058a8a99e0bf91b0a2f75497f185980d9ffa8b304de1d9e58ebda7c72c07ebf01dadedaac5b2907b2c6f566f660d62bd336c3468e960403b9d65 - languageName: node - linkType: hard - -"base64-js@npm:^1.3.1": - version: 1.5.1 - resolution: "base64-js@npm:1.5.1" - checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 - languageName: node - linkType: hard - -"bcrypt-pbkdf@npm:^1.0.0": - version: 1.0.2 - resolution: "bcrypt-pbkdf@npm:1.0.2" - dependencies: - tweetnacl: ^0.14.3 - checksum: 4edfc9fe7d07019609ccf797a2af28351736e9d012c8402a07120c4453a3b789a15f2ee1530dc49eee8f7eb9379331a8dd4b3766042b9e502f74a68e7f662291 - languageName: node - linkType: hard - -"blob-util@npm:^2.0.2": - version: 2.0.2 - resolution: "blob-util@npm:2.0.2" - checksum: d543e6b92e4ca715ca33c78e89a07a2290d43e5b2bc897d7ec588c5c7bbf59df93e45225ac0c9258aa6ce4320358990f99c9288f1c48280f8ec5d7a2e088d19b - languageName: node - linkType: hard - -"bluebird@npm:^3.7.2": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef - languageName: node - linkType: hard - -"brace-expansion@npm:^1.1.7": - version: 1.1.11 - resolution: "brace-expansion@npm:1.1.11" - dependencies: - balanced-match: ^1.0.0 - concat-map: 0.0.1 - checksum: faf34a7bb0c3fcf4b59c7808bc5d2a96a40988addf2e7e09dfbb67a2251800e0d14cd2bfc1aa79174f2f5095c54ff27f46fb1289fe2d77dac755b5eb3434cc07 - languageName: node - linkType: hard - -"braces@npm:^3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"buffer-crc32@npm:~0.2.3": - version: 0.2.13 - resolution: "buffer-crc32@npm:0.2.13" - checksum: 06252347ae6daca3453b94e4b2f1d3754a3b146a111d81c68924c22d91889a40623264e95e67955b1cb4a68cbedf317abeabb5140a9766ed248973096db5ce1c - languageName: node - linkType: hard - -"buffer@npm:^5.6.0": - version: 5.7.1 - resolution: "buffer@npm:5.7.1" - dependencies: - base64-js: ^1.3.1 - ieee754: ^1.1.13 - checksum: e2cf8429e1c4c7b8cbd30834ac09bd61da46ce35f5c22a78e6c2f04497d6d25541b16881e30a019c6fd3154150650ccee27a308eff3e26229d788bbdeb08ab84 - languageName: node - linkType: hard - -"cachedir@npm:^2.3.0": - version: 2.3.0 - resolution: "cachedir@npm:2.3.0" - checksum: ec90cb0f2e6336e266aa748dbadf3da9e0b20e843e43f1591acab7a3f1451337dc2f26cb9dd833ae8cfefeffeeb43ef5b5ff62782a685f4e3c2305dd98482fcb - languageName: node - linkType: hard - -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": - version: 1.0.2 - resolution: "call-bind@npm:1.0.2" - dependencies: - function-bind: ^1.1.1 - get-intrinsic: ^1.0.2 - checksum: f8e31de9d19988a4b80f3e704788c4a2d6b6f3d17cfec4f57dc29ced450c53a49270dc66bf0fbd693329ee948dd33e6c90a329519aef17474a4d961e8d6426b0 - languageName: node - linkType: hard - -"caseless@npm:~0.12.0": - version: 0.12.0 - resolution: "caseless@npm:0.12.0" - checksum: b43bd4c440aa1e8ee6baefee8063b4850fd0d7b378f6aabc796c9ec8cb26d27fb30b46885350777d9bd079c5256c0e1329ad0dc7c2817e0bb466810ebb353751 - languageName: node - linkType: hard - -"chalk@npm:^2.0.0": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: 8e3ddf3981c4da405ddbd7d9c8d91944ddf6e33d6837756979f7840a29272a69a5189ecae0ff84006750d6d1e92368d413335eab4db5476db6e6703a1d1e0505 - languageName: node - linkType: hard - -"chalk@npm:^4.0.0, chalk@npm:^4.1.0": - version: 4.1.2 - resolution: "chalk@npm:4.1.2" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: fe75c9d5c76a7a98d45495b91b2172fa3b7a09e0cc9370e5c8feb1c567b85c4288e2b3fded7cfdd7359ac28d6b3844feb8b82b8686842e93d23c827c417e83fc - languageName: node - linkType: hard - -"check-more-types@npm:^2.24.0": - version: 2.24.0 - resolution: "check-more-types@npm:2.24.0" - checksum: b09080ec3404d20a4b0ead828994b2e5913236ef44ed3033a27062af0004cf7d2091fbde4b396bf13b7ce02fb018bc9960b48305e6ab2304cd82d73ed7a51ef4 - languageName: node - linkType: hard - -"ci-info@npm:^3.2.0": - version: 3.7.1 - resolution: "ci-info@npm:3.7.1" - checksum: 72d93d5101ea1c186511277fbd8d06ae8a6e028cc2fb94361e92bf735b39c5ebd192e8d15a66ff8c4e3ed569f87c2f844e96f90e141b2de5c649f77ec34ff601 - languageName: node - linkType: hard - -"clean-stack@npm:^2.0.0": - version: 2.2.0 - resolution: "clean-stack@npm:2.2.0" - checksum: 2ac8cd2b2f5ec986a3c743935ec85b07bc174d5421a5efc8017e1f146a1cf5f781ae962618f416352103b32c9cd7e203276e8c28241bbe946160cab16149fb68 - languageName: node - linkType: hard - -"cli-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "cli-cursor@npm:3.1.0" - dependencies: - restore-cursor: ^3.1.0 - checksum: 2692784c6cd2fd85cfdbd11f53aea73a463a6d64a77c3e098b2b4697a20443f430c220629e1ca3b195ea5ac4a97a74c2ee411f3807abf6df2b66211fec0c0a29 - languageName: node - linkType: hard - -"cli-table3@npm:~0.6.1": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" - dependencies: - "@colors/colors": 1.5.0 - string-width: ^4.2.0 - dependenciesMeta: - "@colors/colors": - optional: true - checksum: 09897f68467973f827c04e7eaadf13b55f8aec49ecd6647cc276386ea660059322e2dd8020a8b6b84d422dbdd619597046fa89cbbbdc95b2cea149a2df7c096c - languageName: node - linkType: hard - -"cli-truncate@npm:^2.1.0": - version: 2.1.0 - resolution: "cli-truncate@npm:2.1.0" - dependencies: - slice-ansi: ^3.0.0 - string-width: ^4.2.0 - checksum: bf1e4e6195392dc718bf9cd71f317b6300dc4a9191d052f31046b8773230ece4fa09458813bf0e3455a5e68c0690d2ea2c197d14a8b85a7b5e01c97f4b5feb5d - languageName: node - linkType: hard - -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - -"color-convert@npm:^2.0.1": - version: 2.0.1 - resolution: "color-convert@npm:2.0.1" - dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d - languageName: node - linkType: hard - -"color-name@npm:~1.1.4": - version: 1.1.4 - resolution: "color-name@npm:1.1.4" - checksum: b0445859521eb4021cd0fb0cc1a75cecf67fceecae89b63f62b201cca8d345baf8b952c966862a9d9a2632987d4f6581f0ec8d957dfacece86f0a7919316f610 - languageName: node - linkType: hard - -"colorette@npm:^2.0.16": - version: 2.0.19 - resolution: "colorette@npm:2.0.19" - checksum: 888cf5493f781e5fcf54ce4d49e9d7d698f96ea2b2ef67906834bb319a392c667f9ec69f4a10e268d2946d13a9503d2d19b3abaaaf174e3451bfe91fb9d82427 - languageName: node - linkType: hard - -"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": - version: 1.0.8 - resolution: "combined-stream@npm:1.0.8" - dependencies: - delayed-stream: ~1.0.0 - checksum: 49fa4aeb4916567e33ea81d088f6584749fc90c7abec76fd516bf1c5aa5c79f3584b5ba3de6b86d26ddd64bae5329c4c7479343250cfe71c75bb366eae53bb7c - languageName: node - linkType: hard - -"commander@npm:^6.2.1": - version: 6.2.1 - resolution: "commander@npm:6.2.1" - checksum: d7090410c0de6bc5c67d3ca41c41760d6d268f3c799e530aafb73b7437d1826bbf0d2a3edac33f8b57cc9887b4a986dce307fa5557e109be40eadb7c43b21742 - languageName: node - linkType: hard - -"common-tags@npm:^1.8.0": - version: 1.8.2 - resolution: "common-tags@npm:1.8.2" - checksum: 767a6255a84bbc47df49a60ab583053bb29a7d9687066a18500a516188a062c4e4cd52de341f22de0b07062e699b1b8fe3cfa1cb55b241cb9301aeb4f45b4dff - languageName: node - linkType: hard - -"concat-map@npm:0.0.1": - version: 0.0.1 - resolution: "concat-map@npm:0.0.1" - checksum: 902a9f5d8967a3e2faf138d5cb784b9979bad2e6db5357c5b21c568df4ebe62bcb15108af1b2253744844eb964fc023fbd9afbbbb6ddd0bcc204c6fb5b7bf3af - languageName: node - linkType: hard - -"core-util-is@npm:1.0.2": - version: 1.0.2 - resolution: "core-util-is@npm:1.0.2" - checksum: 7a4c925b497a2c91421e25bf76d6d8190f0b2359a9200dbeed136e63b2931d6294d3b1893eda378883ed363cd950f44a12a401384c609839ea616befb7927dab - languageName: node - linkType: hard - -"cross-spawn@npm:^7.0.0": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" - dependencies: - path-key: ^3.1.0 - shebang-command: ^2.0.0 - which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 - languageName: node - linkType: hard - -"css.escape@npm:^1.5.1": - version: 1.5.1 - resolution: "css.escape@npm:1.5.1" - checksum: f6d38088d870a961794a2580b2b2af1027731bb43261cfdce14f19238a88664b351cc8978abc20f06cc6bbde725699dec8deb6fe9816b139fc3f2af28719e774 - languageName: node - linkType: hard - -"css@npm:^3.0.0": - version: 3.0.0 - resolution: "css@npm:3.0.0" - dependencies: - inherits: ^2.0.4 - source-map: ^0.6.1 - source-map-resolve: ^0.6.0 - checksum: 4273ac816ddf99b99acb9c1d1a27d86d266a533cc01118369d941d8e8a78277a83cad3315e267a398c509d930fbb86504e193ea1ebc620a4a4212e06fe76e8be - languageName: node - linkType: hard - -"csstype@npm:^3.0.2": - version: 3.1.1 - resolution: "csstype@npm:3.1.1" - checksum: 1f7b4f5fdd955b7444b18ebdddf3f5c699159f13e9cf8ac9027ae4a60ae226aef9bbb14a6e12ca7dba3358b007cee6354b116e720262867c398de6c955ea451d - languageName: node - linkType: hard - -"cypress-axe@npm:1.5.0": - version: 1.5.0 - resolution: "cypress-axe@npm:1.5.0" - peerDependencies: - axe-core: ^3 || ^4 - cypress: ^10 || ^11 || ^12 || ^13 - checksum: 7b5574da4ea2c1a1141f79cb4465a4f30879e30b9ac08da4aca935dfc7662d3fa170254be8c4eff26841bc065e6115bf6e6b8a8eee5ff7cb9812bbcbeb863ff2 - languageName: node - linkType: hard - -"cypress-file-upload@npm:5.0.8": - version: 5.0.8 - resolution: "cypress-file-upload@npm:5.0.8" - peerDependencies: - cypress: ">3.0.0" - checksum: 9c70ca7e0bb137d0ec0b8d38987219ce15b26ac3a40e3ed4e78e6ad4690392eab905586848eec6ad8edd42ee480e68ccc63007b2ebd0a02f4b3eca116ff017e3 - languageName: node - linkType: hard - -"cypress@npm:13.1.0": - version: 13.1.0 - resolution: "cypress@npm:13.1.0" - dependencies: - "@cypress/request": ^3.0.0 - "@cypress/xvfb": ^1.2.4 - "@types/node": ^16.18.39 - "@types/sinonjs__fake-timers": 8.1.1 - "@types/sizzle": ^2.3.2 - arch: ^2.2.0 - blob-util: ^2.0.2 - bluebird: ^3.7.2 - buffer: ^5.6.0 - cachedir: ^2.3.0 - chalk: ^4.1.0 - check-more-types: ^2.24.0 - cli-cursor: ^3.1.0 - cli-table3: ~0.6.1 - commander: ^6.2.1 - common-tags: ^1.8.0 - dayjs: ^1.10.4 - debug: ^4.3.4 - enquirer: ^2.3.6 - eventemitter2: 6.4.7 - execa: 4.1.0 - executable: ^4.1.1 - extract-zip: 2.0.1 - figures: ^3.2.0 - fs-extra: ^9.1.0 - getos: ^3.2.1 - is-ci: ^3.0.0 - is-installed-globally: ~0.4.0 - lazy-ass: ^1.6.0 - listr2: ^3.8.3 - lodash: ^4.17.21 - log-symbols: ^4.0.0 - minimist: ^1.2.8 - ospath: ^1.2.2 - pretty-bytes: ^5.6.0 - process: ^0.11.10 - proxy-from-env: 1.0.0 - request-progress: ^3.0.0 - semver: ^7.5.3 - supports-color: ^8.1.1 - tmp: ~0.2.1 - untildify: ^4.0.0 - yauzl: ^2.10.0 - bin: - cypress: bin/cypress - checksum: 238057b288f54401ad3fa8693c31ec08eef2d98a7fc93ce7f60bc009fcae18539e84be4c1cd41526816603f642f63444a7adce9d914b1338a53c0bf756bdb762 - languageName: node - linkType: hard - -"dashdash@npm:^1.12.0": - version: 1.14.1 - resolution: "dashdash@npm:1.14.1" - dependencies: - assert-plus: ^1.0.0 - checksum: 3634c249570f7f34e3d34f866c93f866c5b417f0dd616275decae08147dcdf8fccfaa5947380ccfb0473998ea3a8057c0b4cd90c875740ee685d0624b2983598 - languageName: node - linkType: hard - -"dayjs@npm:^1.10.4": - version: 1.11.7 - resolution: "dayjs@npm:1.11.7" - checksum: 5003a7c1dd9ed51385beb658231c3548700b82d3548c0cfbe549d85f2d08e90e972510282b7506941452c58d32136d6362f009c77ca55381a09c704e9f177ebb - languageName: node - linkType: hard - -"debug@npm:^3.1.0": - version: 3.2.7 - resolution: "debug@npm:3.2.7" - dependencies: - ms: ^2.1.1 - checksum: b3d8c5940799914d30314b7c3304a43305fd0715581a919dacb8b3176d024a782062368405b47491516d2091d6462d4d11f2f4974a405048094f8bfebfa3071c - languageName: node - linkType: hard - -"debug@npm:^4.1.1, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 - languageName: node - linkType: hard - -"decode-uri-component@npm:^0.2.0": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 - languageName: node - linkType: hard - -"deep-equal@npm:^2.0.5": - version: 2.2.0 - resolution: "deep-equal@npm:2.2.0" - dependencies: - call-bind: ^1.0.2 - es-get-iterator: ^1.1.2 - get-intrinsic: ^1.1.3 - is-arguments: ^1.1.1 - is-array-buffer: ^3.0.1 - is-date-object: ^1.0.5 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - isarray: ^2.0.5 - object-is: ^1.1.5 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.4.3 - side-channel: ^1.0.4 - which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.1 - which-typed-array: ^1.1.9 - checksum: 46a34509d2766d6c6dc5aec4756089cf0cc137e46787e91f08f1ee0bb570d874f19f0493146907df0cf18aed4a7b4b50f6f62c899240a76c323f057528b122e3 - languageName: node - linkType: hard - -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" - dependencies: - has-property-descriptors: ^1.0.0 - object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b - languageName: node - linkType: hard - -"delayed-stream@npm:~1.0.0": - version: 1.0.0 - resolution: "delayed-stream@npm:1.0.0" - checksum: 46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020 - languageName: node - linkType: hard - -"diff-sequences@npm:^29.4.2": - version: 29.4.2 - resolution: "diff-sequences@npm:29.4.2" - checksum: 70a9f7c5516fb62f7e2fb5aea8d9580cc319880b364779093669fa8e7bc6c47b7251e0e9f0d3289a4db0263708fbf0baa81f4305c2b839dd06b4771159835d31 - languageName: node - linkType: hard - -"dom-accessibility-api@npm:^0.5.6, dom-accessibility-api@npm:^0.5.9": - version: 0.5.16 - resolution: "dom-accessibility-api@npm:0.5.16" - checksum: 005eb283caef57fc1adec4d5df4dd49189b628f2f575af45decb210e04d634459e3f1ee64f18b41e2dcf200c844bc1d9279d80807e686a30d69a4756151ad248 - languageName: node - linkType: hard - -"ecc-jsbn@npm:~0.1.1": - version: 0.1.2 - resolution: "ecc-jsbn@npm:0.1.2" - dependencies: - jsbn: ~0.1.0 - safer-buffer: ^2.1.0 - checksum: 22fef4b6203e5f31d425f5b711eb389e4c6c2723402e389af394f8411b76a488fa414d309d866e2b577ce3e8462d344205545c88a8143cc21752a5172818888a - languageName: node - linkType: hard - -"emoji-regex@npm:^8.0.0": - version: 8.0.0 - resolution: "emoji-regex@npm:8.0.0" - checksum: d4c5c39d5a9868b5fa152f00cada8a936868fd3367f33f71be515ecee4c803132d11b31a6222b2571b1e5f7e13890156a94880345594d0ce7e3c9895f560f192 - languageName: node - linkType: hard - -"end-of-stream@npm:^1.1.0": - version: 1.4.4 - resolution: "end-of-stream@npm:1.4.4" - dependencies: - once: ^1.4.0 - checksum: 530a5a5a1e517e962854a31693dbb5c0b2fc40b46dad2a56a2deec656ca040631124f4795823acc68238147805f8b021abbe221f4afed5ef3c8e8efc2024908b - languageName: node - linkType: hard - -"enquirer@npm:^2.3.6": - version: 2.3.6 - resolution: "enquirer@npm:2.3.6" - dependencies: - ansi-colors: ^4.1.1 - checksum: 1c0911e14a6f8d26721c91e01db06092a5f7675159f0261d69c403396a385afd13dd76825e7678f66daffa930cfaa8d45f506fb35f818a2788463d022af1b884 - languageName: node - linkType: hard - -"es-get-iterator@npm:^1.1.2": - version: 1.1.3 - resolution: "es-get-iterator@npm:1.1.3" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - has-symbols: ^1.0.3 - is-arguments: ^1.1.1 - is-map: ^2.0.2 - is-set: ^2.0.2 - is-string: ^1.0.7 - isarray: ^2.0.5 - stop-iteration-iterator: ^1.0.0 - checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d - languageName: node - linkType: hard - -"escape-string-regexp@npm:^1.0.5": - version: 1.0.5 - resolution: "escape-string-regexp@npm:1.0.5" - checksum: 6092fda75c63b110c706b6a9bfde8a612ad595b628f0bd2147eea1d3406723020810e591effc7db1da91d80a71a737a313567c5abb3813e8d9c71f4aa595b410 - languageName: node - linkType: hard - -"escape-string-regexp@npm:^2.0.0": - version: 2.0.0 - resolution: "escape-string-regexp@npm:2.0.0" - checksum: 9f8a2d5743677c16e85c810e3024d54f0c8dea6424fad3c79ef6666e81dd0846f7437f5e729dfcdac8981bc9e5294c39b4580814d114076b8d36318f46ae4395 - languageName: node - linkType: hard - -"eventemitter2@npm:6.4.7": - version: 6.4.7 - resolution: "eventemitter2@npm:6.4.7" - checksum: 1b36a77e139d6965ebf3a36c01fa00c089ae6b80faa1911e52888f40b3a7057b36a2cc45dcd1ad87cda3798fe7b97a0aabcbb8175a8b96092a23bb7d0f039e66 - languageName: node - linkType: hard - -"execa@npm:4.1.0": - version: 4.1.0 - resolution: "execa@npm:4.1.0" - dependencies: - cross-spawn: ^7.0.0 - get-stream: ^5.0.0 - human-signals: ^1.1.1 - is-stream: ^2.0.0 - merge-stream: ^2.0.0 - npm-run-path: ^4.0.0 - onetime: ^5.1.0 - signal-exit: ^3.0.2 - strip-final-newline: ^2.0.0 - checksum: e30d298934d9c52f90f3847704fd8224e849a081ab2b517bbc02f5f7732c24e56a21f14cb96a08256deffeb2d12b2b7cb7e2b014a12fb36f8d3357e06417ed55 - languageName: node - linkType: hard - -"executable@npm:^4.1.1": - version: 4.1.1 - resolution: "executable@npm:4.1.1" - dependencies: - pify: ^2.2.0 - checksum: f01927ce59bccec804e171bf859a26e362c1f50aa9ebc69f7cafdcce3859d29d4b6267fd47237c18b0a1830614bd3f0ee14b7380d9bad18a4e7af9b5f0b6984f - languageName: node - linkType: hard - -"expect@npm:^29.0.0": - version: 29.4.2 - resolution: "expect@npm:29.4.2" - dependencies: - "@jest/expect-utils": ^29.4.2 - jest-get-type: ^29.4.2 - jest-matcher-utils: ^29.4.2 - jest-message-util: ^29.4.2 - jest-util: ^29.4.2 - checksum: 32315804ec40011b4550b03b5549579b57af4d5d9b109727ecc611ee9fc911de9c40a174333bee7972ddc5732260592e3a9f37c82bf4f5851fb36e6f0eae7ff1 - languageName: node - linkType: hard - -"extend@npm:~3.0.2": - version: 3.0.2 - resolution: "extend@npm:3.0.2" - checksum: a50a8309ca65ea5d426382ff09f33586527882cf532931cb08ca786ea3146c0553310bda688710ff61d7668eba9f96b923fe1420cdf56a2c3eaf30fcab87b515 - languageName: node - linkType: hard - -"extract-zip@npm:2.0.1": - version: 2.0.1 - resolution: "extract-zip@npm:2.0.1" - dependencies: - "@types/yauzl": ^2.9.1 - debug: ^4.1.1 - get-stream: ^5.1.0 - yauzl: ^2.10.0 - dependenciesMeta: - "@types/yauzl": - optional: true - bin: - extract-zip: cli.js - checksum: 8cbda9debdd6d6980819cc69734d874ddd71051c9fe5bde1ef307ebcedfe949ba57b004894b585f758b7c9eeeea0e3d87f2dda89b7d25320459c2c9643ebb635 - languageName: node - linkType: hard - -"extsprintf@npm:1.3.0": - version: 1.3.0 - resolution: "extsprintf@npm:1.3.0" - checksum: cee7a4a1e34cffeeec18559109de92c27517e5641991ec6bab849aa64e3081022903dd53084f2080d0d2530803aa5ee84f1e9de642c365452f9e67be8f958ce2 - languageName: node - linkType: hard - -"extsprintf@npm:^1.2.0": - version: 1.4.1 - resolution: "extsprintf@npm:1.4.1" - checksum: a2f29b241914a8d2bad64363de684821b6b1609d06ae68d5b539e4de6b28659715b5bea94a7265201603713b7027d35399d10b0548f09071c5513e65e8323d33 - languageName: node - linkType: hard - -"fd-slicer@npm:~1.1.0": - version: 1.1.0 - resolution: "fd-slicer@npm:1.1.0" - dependencies: - pend: ~1.2.0 - checksum: c8585fd5713f4476eb8261150900d2cb7f6ff2d87f8feb306ccc8a1122efd152f1783bdb2b8dc891395744583436bfd8081d8e63ece0ec8687eeefea394d4ff2 - languageName: node - linkType: hard - -"figures@npm:^3.2.0": - version: 3.2.0 - resolution: "figures@npm:3.2.0" - dependencies: - escape-string-regexp: ^1.0.5 - checksum: 85a6ad29e9aca80b49b817e7c89ecc4716ff14e3779d9835af554db91bac41c0f289c418923519392a1e582b4d10482ad282021330cd045bb7b80c84152f2a2b - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" - dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 - languageName: node - linkType: hard - -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" - dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 - languageName: node - linkType: hard - -"forever-agent@npm:~0.6.1": - version: 0.6.1 - resolution: "forever-agent@npm:0.6.1" - checksum: 766ae6e220f5fe23676bb4c6a99387cec5b7b62ceb99e10923376e27bfea72f3c3aeec2ba5f45f3f7ba65d6616965aa7c20b15002b6860833bb6e394dea546a8 - languageName: node - linkType: hard - -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" - dependencies: - asynckit: ^0.4.0 - combined-stream: ^1.0.6 - mime-types: ^2.1.12 - checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 - languageName: node - linkType: hard - -"fs-extra@npm:^9.1.0": - version: 9.1.0 - resolution: "fs-extra@npm:9.1.0" - dependencies: - at-least-node: ^1.0.0 - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: ba71ba32e0faa74ab931b7a0031d1523c66a73e225de7426e275e238e312d07313d2da2d33e34a52aa406c8763ade5712eb3ec9ba4d9edce652bcacdc29e6b20 - languageName: node - linkType: hard - -"fs.realpath@npm:^1.0.0": - version: 1.0.0 - resolution: "fs.realpath@npm:1.0.0" - checksum: 99ddea01a7e75aa276c250a04eedeffe5662bce66c65c07164ad6264f9de18fb21be9433ead460e54cff20e31721c811f4fb5d70591799df5f85dce6d6746fd0 - languageName: node - linkType: hard - -"function-bind@npm:^1.1.1": - version: 1.1.1 - resolution: "function-bind@npm:1.1.1" - checksum: b32fbaebb3f8ec4969f033073b43f5c8befbb58f1a79e12f1d7490358150359ebd92f49e72ff0144f65f2c48ea2a605bff2d07965f548f6474fd8efd95bf361a - languageName: node - linkType: hard - -"functions-have-names@npm:^1.2.2": - version: 1.2.3 - resolution: "functions-have-names@npm:1.2.3" - checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 - languageName: node - linkType: hard - -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3": - version: 1.2.0 - resolution: "get-intrinsic@npm:1.2.0" - dependencies: - function-bind: ^1.1.1 - has: ^1.0.3 - has-symbols: ^1.0.3 - checksum: 78fc0487b783f5c58cf2dccafc3ae656ee8d2d8062a8831ce4a95e7057af4587a1d4882246c033aca0a7b4965276f4802b45cc300338d1b77a73d3e3e3f4877d - languageName: node - linkType: hard - -"get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": - version: 5.2.0 - resolution: "get-stream@npm:5.2.0" - dependencies: - pump: ^3.0.0 - checksum: 8bc1a23174a06b2b4ce600df38d6c98d2ef6d84e020c1ddad632ad75bac4e092eeb40e4c09e0761c35fc2dbc5e7fff5dab5e763a383582c4a167dd69a905bd12 - languageName: node - linkType: hard - -"getos@npm:^3.2.1": - version: 3.2.1 - resolution: "getos@npm:3.2.1" - dependencies: - async: ^3.2.0 - checksum: 42fd78a66d47cebd3e09de5566cc0044e034b08f4a000a310dbd89a77b02c65d8f4002554bfa495ea5bdc4fa9d515f5ac785a7cc474ba45383cc697f865eeaf1 - languageName: node - linkType: hard - -"getpass@npm:^0.1.1": - version: 0.1.7 - resolution: "getpass@npm:0.1.7" - dependencies: - assert-plus: ^1.0.0 - checksum: ab18d55661db264e3eac6012c2d3daeafaab7a501c035ae0ccb193c3c23e9849c6e29b6ac762b9c2adae460266f925d55a3a2a3a3c8b94be2f222df94d70c046 - languageName: node - linkType: hard - -"glob@npm:^7.1.3": - version: 7.2.3 - resolution: "glob@npm:7.2.3" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.1.1 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 29452e97b38fa704dabb1d1045350fb2467cf0277e155aa9ff7077e90ad81d1ea9d53d3ee63bd37c05b09a065e90f16aec4a65f5b8de401d1dac40bc5605d133 - languageName: node - linkType: hard - -"global-dirs@npm:^3.0.0": - version: 3.0.1 - resolution: "global-dirs@npm:3.0.1" - dependencies: - ini: 2.0.0 - checksum: 70147b80261601fd40ac02a104581432325c1c47329706acd773f3a6ce99bb36d1d996038c85ccacd482ad22258ec233c586b6a91535b1a116b89663d49d6438 - languageName: node - linkType: hard - -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 - languageName: node - linkType: hard - -"graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da - languageName: node - linkType: hard - -"has-bigints@npm:^1.0.1": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b - languageName: node - linkType: hard - -"has-flag@npm:^4.0.0": - version: 4.0.0 - resolution: "has-flag@npm:4.0.0" - checksum: 261a1357037ead75e338156b1f9452c016a37dcd3283a972a30d9e4a87441ba372c8b81f818cd0fbcd9c0354b4ae7e18b9e1afa1971164aef6d18c2b6095a8ad - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.0": - version: 1.0.0 - resolution: "has-property-descriptors@npm:1.0.0" - dependencies: - get-intrinsic: ^1.1.1 - checksum: a6d3f0a266d0294d972e354782e872e2fe1b6495b321e6ef678c9b7a06a40408a6891817350c62e752adced73a94ac903c54734fee05bf65b1905ee1368194bb - languageName: node - linkType: hard - -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 - languageName: node - linkType: hard - -"has-tostringtag@npm:^1.0.0": - version: 1.0.0 - resolution: "has-tostringtag@npm:1.0.0" - dependencies: - has-symbols: ^1.0.2 - checksum: cc12eb28cb6ae22369ebaad3a8ab0799ed61270991be88f208d508076a1e99abe4198c965935ce85ea90b60c94ddda73693b0920b58e7ead048b4a391b502c1c - languageName: node - linkType: hard - -"has@npm:^1.0.3": - version: 1.0.3 - resolution: "has@npm:1.0.3" - dependencies: - function-bind: ^1.1.1 - checksum: b9ad53d53be4af90ce5d1c38331e712522417d017d5ef1ebd0507e07c2fbad8686fffb8e12ddecd4c39ca9b9b47431afbb975b8abf7f3c3b82c98e9aad052792 - languageName: node - linkType: hard - -"http-signature@npm:~1.3.6": - version: 1.3.6 - resolution: "http-signature@npm:1.3.6" - dependencies: - assert-plus: ^1.0.0 - jsprim: ^2.0.2 - sshpk: ^1.14.1 - checksum: 10be2af4764e71fee0281392937050201ee576ac755c543f570d6d87134ce5e858663fe999a7adb3e4e368e1e356d0d7fec6b9542295b875726ff615188e7a0c - languageName: node - linkType: hard - -"human-signals@npm:^1.1.1": - version: 1.1.1 - resolution: "human-signals@npm:1.1.1" - checksum: d587647c9e8ec24e02821b6be7de5a0fc37f591f6c4e319b3054b43fd4c35a70a94c46fc74d8c1a43c47fde157d23acd7421f375e1c1365b09a16835b8300205 - languageName: node - linkType: hard - -"ieee754@npm:^1.1.13": - version: 1.2.1 - resolution: "ieee754@npm:1.2.1" - checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e - languageName: node - linkType: hard - -"indent-string@npm:^4.0.0": - version: 4.0.0 - resolution: "indent-string@npm:4.0.0" - checksum: 824cfb9929d031dabf059bebfe08cf3137365e112019086ed3dcff6a0a7b698cb80cf67ccccde0e25b9e2d7527aa6cc1fed1ac490c752162496caba3e6699612 - languageName: node - linkType: hard - -"inflight@npm:^1.0.4": - version: 1.0.6 - resolution: "inflight@npm:1.0.6" - dependencies: - once: ^1.3.0 - wrappy: 1 - checksum: f4f76aa072ce19fae87ce1ef7d221e709afb59d445e05d47fba710e85470923a75de35bfae47da6de1b18afc3ce83d70facf44cfb0aff89f0a3f45c0a0244dfd - languageName: node - linkType: hard - -"inherits@npm:2, inherits@npm:^2.0.4": - version: 2.0.4 - resolution: "inherits@npm:2.0.4" - checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 - languageName: node - linkType: hard - -"ini@npm:2.0.0": - version: 2.0.0 - resolution: "ini@npm:2.0.0" - checksum: e7aadc5fb2e4aefc666d74ee2160c073995a4061556b1b5b4241ecb19ad609243b9cceafe91bae49c219519394bbd31512516cb22a3b1ca6e66d869e0447e84e - languageName: node - linkType: hard - -"internal-slot@npm:^1.0.4": - version: 1.0.4 - resolution: "internal-slot@npm:1.0.4" - dependencies: - get-intrinsic: ^1.1.3 - has: ^1.0.3 - side-channel: ^1.0.4 - checksum: 8974588d06bab4f675573a3b52975370facf6486df51bc0567a982c7024fa29495f10b76c0d4dc742dd951d1b72024fdc1e31bb0bedf1678dc7aacacaf5a4f73 - languageName: node - linkType: hard - -"is-arguments@npm:^1.1.1": - version: 1.1.1 - resolution: "is-arguments@npm:1.1.1" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 7f02700ec2171b691ef3e4d0e3e6c0ba408e8434368504bb593d0d7c891c0dbfda6d19d30808b904a6cb1929bca648c061ba438c39f296c2a8ca083229c49f27 - languageName: node - linkType: hard - -"is-array-buffer@npm:^3.0.1": - version: 3.0.1 - resolution: "is-array-buffer@npm:3.0.1" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.3 - is-typed-array: ^1.1.10 - checksum: f26ab87448e698285daf707e52a533920449f7abf63714140ffab9d5571aa5a71ac2fa2677e8b793ad0d5d3e40078d4d2c8a0ab39c957e3cfc6513bb6c9dfdc9 - languageName: node - linkType: hard - -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" - dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 - languageName: node - linkType: hard - -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 - languageName: node - linkType: hard - -"is-callable@npm:^1.1.3": - version: 1.2.7 - resolution: "is-callable@npm:1.2.7" - checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac - languageName: node - linkType: hard - -"is-ci@npm:^3.0.0": - version: 3.0.1 - resolution: "is-ci@npm:3.0.1" - dependencies: - ci-info: ^3.2.0 - bin: - is-ci: bin.js - checksum: 192c66dc7826d58f803ecae624860dccf1899fc1f3ac5505284c0a5cf5f889046ffeb958fa651e5725d5705c5bcb14f055b79150ea5fcad7456a9569de60260e - languageName: node - linkType: hard - -"is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" - dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc - languageName: node - linkType: hard - -"is-fullwidth-code-point@npm:^3.0.0": - version: 3.0.0 - resolution: "is-fullwidth-code-point@npm:3.0.0" - checksum: 44a30c29457c7fb8f00297bce733f0a64cd22eca270f83e58c105e0d015e45c019491a4ab2faef91ab51d4738c670daff901c799f6a700e27f7314029e99e348 - languageName: node - linkType: hard - -"is-installed-globally@npm:~0.4.0": - version: 0.4.0 - resolution: "is-installed-globally@npm:0.4.0" - dependencies: - global-dirs: ^3.0.0 - is-path-inside: ^3.0.2 - checksum: 3359840d5982d22e9b350034237b2cda2a12bac1b48a721912e1ab8e0631dd07d45a2797a120b7b87552759a65ba03e819f1bd63f2d7ab8657ec0b44ee0bf399 - languageName: node - linkType: hard - -"is-map@npm:^2.0.1, is-map@npm:^2.0.2": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 - languageName: node - linkType: hard - -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 - languageName: node - linkType: hard - -"is-number@npm:^7.0.0": - version: 7.0.0 - resolution: "is-number@npm:7.0.0" - checksum: 456ac6f8e0f3111ed34668a624e45315201dff921e5ac181f8ec24923b99e9f32ca1a194912dc79d539c97d33dba17dc635202ff0b2cf98326f608323276d27a - languageName: node - linkType: hard - -"is-path-inside@npm:^3.0.2": - version: 3.0.3 - resolution: "is-path-inside@npm:3.0.3" - checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 - languageName: node - linkType: hard - -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" - dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-set@npm:^2.0.1, is-set@npm:^2.0.2": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 - languageName: node - linkType: hard - -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a - languageName: node - linkType: hard - -"is-stream@npm:^2.0.0": - version: 2.0.1 - resolution: "is-stream@npm:2.0.1" - checksum: b8e05ccdf96ac330ea83c12450304d4a591f9958c11fd17bed240af8d5ffe08aedafa4c0f4cfccd4d28dc9d4d129daca1023633d5c11601a6cbc77521f6fae66 - languageName: node - linkType: hard - -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" - dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 - languageName: node - linkType: hard - -"is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" - dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 - languageName: node - linkType: hard - -"is-typed-array@npm:^1.1.10": - version: 1.1.10 - resolution: "is-typed-array@npm:1.1.10" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 - languageName: node - linkType: hard - -"is-typedarray@npm:~1.0.0": - version: 1.0.0 - resolution: "is-typedarray@npm:1.0.0" - checksum: 3508c6cd0a9ee2e0df2fa2e9baabcdc89e911c7bd5cf64604586697212feec525aa21050e48affb5ffc3df20f0f5d2e2cf79b08caa64e1ccc9578e251763aef7 - languageName: node - linkType: hard - -"is-unicode-supported@npm:^0.1.0": - version: 0.1.0 - resolution: "is-unicode-supported@npm:0.1.0" - checksum: a2aab86ee7712f5c2f999180daaba5f361bdad1efadc9610ff5b8ab5495b86e4f627839d085c6530363c6d6d4ecbde340fb8e54bdb83da4ba8e0865ed5513c52 - languageName: node - linkType: hard - -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 - languageName: node - linkType: hard - -"isarray@npm:^2.0.5": - version: 2.0.5 - resolution: "isarray@npm:2.0.5" - checksum: bd5bbe4104438c4196ba58a54650116007fa0262eccef13a4c55b2e09a5b36b59f1e75b9fcc49883dd9d4953892e6fc007eef9e9155648ceea036e184b0f930a - languageName: node - linkType: hard - -"isexe@npm:^2.0.0": - version: 2.0.0 - resolution: "isexe@npm:2.0.0" - checksum: 26bf6c5480dda5161c820c5b5c751ae1e766c587b1f951ea3fcfc973bafb7831ae5b54a31a69bd670220e42e99ec154475025a468eae58ea262f813fdc8d1c62 - languageName: node - linkType: hard - -"isstream@npm:~0.1.2": - version: 0.1.2 - resolution: "isstream@npm:0.1.2" - checksum: 1eb2fe63a729f7bdd8a559ab552c69055f4f48eb5c2f03724430587c6f450783c8f1cd936c1c952d0a927925180fcc892ebd5b174236cf1065d4bd5bdb37e963 - languageName: node - linkType: hard - -"jest-diff@npm:^29.4.2": - version: 29.4.2 - resolution: "jest-diff@npm:29.4.2" - dependencies: - chalk: ^4.0.0 - diff-sequences: ^29.4.2 - jest-get-type: ^29.4.2 - pretty-format: ^29.4.2 - checksum: 5f8ee70ed2cbfa8a76b7614e9d0736fc218a786df500aae6c5876ad7c58f658901fec7777112dc404e7146582c1537564d570eb7b989922f0dfcb3d6c8844952 - languageName: node - linkType: hard - -"jest-get-type@npm:^29.4.2": - version: 29.4.2 - resolution: "jest-get-type@npm:29.4.2" - checksum: 52b69cfdc8817a106ed58b44ac0ee77df36073d0deb7357ea9eb208fd8fb9be2abcc2cc6d72019460b7ca262687da482c47bd9c357eb2fbe52279397739e8c11 - languageName: node - linkType: hard - -"jest-matcher-utils@npm:^29.4.2": - version: 29.4.2 - resolution: "jest-matcher-utils@npm:29.4.2" - dependencies: - chalk: ^4.0.0 - jest-diff: ^29.4.2 - jest-get-type: ^29.4.2 - pretty-format: ^29.4.2 - checksum: e8549f8534f31ae60c81b6c5f690b5dd6d42190318165bba943b3d2c278730c59b4933d5941c70e577f08c0c633b7d92edec43696b79a5cce8e2b4080cccae3c - languageName: node - linkType: hard - -"jest-message-util@npm:^29.4.2": - version: 29.4.2 - resolution: "jest-message-util@npm:29.4.2" - dependencies: - "@babel/code-frame": ^7.12.13 - "@jest/types": ^29.4.2 - "@types/stack-utils": ^2.0.0 - chalk: ^4.0.0 - graceful-fs: ^4.2.9 - micromatch: ^4.0.4 - pretty-format: ^29.4.2 - slash: ^3.0.0 - stack-utils: ^2.0.3 - checksum: d3b32fbf5c16100817bdf6d3eaae0cf618d39df62df0c9e8dcfa2ffc9fe2afb0c71312b9b86d4afb33b87795dc1dc3b7f7f024ae1fe21e818d2caf90c3ba6fdc - languageName: node - linkType: hard - -"jest-util@npm:^29.4.2": - version: 29.4.2 - resolution: "jest-util@npm:29.4.2" - dependencies: - "@jest/types": ^29.4.2 - "@types/node": "*" - chalk: ^4.0.0 - ci-info: ^3.2.0 - graceful-fs: ^4.2.9 - picomatch: ^2.2.3 - checksum: c570de97ccae9f6eca736a4559c77205db1b115d1d3e63f3855b0f016708306de610615f9502291f9382b8e5c9be0443841c392d6ce3197a2915997ced88bc84 - languageName: node - linkType: hard - -"js-tokens@npm:^4.0.0": - version: 4.0.0 - resolution: "js-tokens@npm:4.0.0" - checksum: 8a95213a5a77deb6cbe94d86340e8d9ace2b93bc367790b260101d2f36a2eaf4e4e22d9fa9cf459b38af3a32fb4190e638024cf82ec95ef708680e405ea7cc78 - languageName: node - linkType: hard - -"jsbn@npm:~0.1.0": - version: 0.1.1 - resolution: "jsbn@npm:0.1.1" - checksum: e5ff29c1b8d965017ef3f9c219dacd6e40ad355c664e277d31246c90545a02e6047018c16c60a00f36d561b3647215c41894f5d869ada6908a2e0ce4200c88f2 - languageName: node - linkType: hard - -"json-schema@npm:0.4.0": - version: 0.4.0 - resolution: "json-schema@npm:0.4.0" - checksum: 66389434c3469e698da0df2e7ac5a3281bcff75e797a5c127db7c5b56270e01ae13d9afa3c03344f76e32e81678337a8c912bdbb75101c62e487dc3778461d72 - languageName: node - linkType: hard - -"json-stringify-safe@npm:~5.0.1": - version: 5.0.1 - resolution: "json-stringify-safe@npm:5.0.1" - checksum: 48ec0adad5280b8a96bb93f4563aa1667fd7a36334f79149abd42446d0989f2ddc58274b479f4819f1f00617957e6344c886c55d05a4e15ebb4ab931e4a6a8ee - languageName: node - linkType: hard - -"jsonfile@npm:^6.0.1": - version: 6.1.0 - resolution: "jsonfile@npm:6.1.0" - dependencies: - graceful-fs: ^4.1.6 - universalify: ^2.0.0 - dependenciesMeta: - graceful-fs: - optional: true - checksum: 7af3b8e1ac8fe7f1eccc6263c6ca14e1966fcbc74b618d3c78a0a2075579487547b94f72b7a1114e844a1e15bb00d440e5d1720bfc4612d790a6f285d5ea8354 - languageName: node - linkType: hard - -"jsprim@npm:^2.0.2": - version: 2.0.2 - resolution: "jsprim@npm:2.0.2" - dependencies: - assert-plus: 1.0.0 - extsprintf: 1.3.0 - json-schema: 0.4.0 - verror: 1.10.0 - checksum: d175f6b1991e160cb0aa39bc857da780e035611986b5492f32395411879fdaf4e513d98677f08f7352dac93a16b66b8361c674b86a3fa406e2e7af6b26321838 - languageName: node - linkType: hard - -"lazy-ass@npm:^1.6.0": - version: 1.6.0 - resolution: "lazy-ass@npm:1.6.0" - checksum: 5a3ebb17915b03452320804466345382a6c25ac782ec4874fecdb2385793896cd459be2f187dc7def8899180c32ee0ab9a1aa7fe52193ac3ff3fe29bb0591729 - languageName: node - linkType: hard - -"listr2@npm:^3.8.3": - version: 3.14.0 - resolution: "listr2@npm:3.14.0" - dependencies: - cli-truncate: ^2.1.0 - colorette: ^2.0.16 - log-update: ^4.0.0 - p-map: ^4.0.0 - rfdc: ^1.3.0 - rxjs: ^7.5.1 - through: ^2.3.8 - wrap-ansi: ^7.0.0 - peerDependencies: - enquirer: ">= 2.3.0 < 3" - peerDependenciesMeta: - enquirer: - optional: true - checksum: fdb8b2d6bdf5df9371ebd5082bee46c6d0ca3d1e5f2b11fbb5a127839855d5f3da9d4968fce94f0a5ec67cac2459766abbb1faeef621065ebb1829b11ef9476d - languageName: node - linkType: hard - -"lodash.once@npm:^4.1.1": - version: 4.1.1 - resolution: "lodash.once@npm:4.1.1" - checksum: d768fa9f9b4e1dc6453be99b753906f58990e0c45e7b2ca5a3b40a33111e5d17f6edf2f768786e2716af90a8e78f8f91431ab8435f761fef00f9b0c256f6d245 - languageName: node - linkType: hard - -"lodash@npm:^4.17.15, lodash@npm:^4.17.21": - version: 4.17.21 - resolution: "lodash@npm:4.17.21" - checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7 - languageName: node - linkType: hard - -"log-symbols@npm:^4.0.0": - version: 4.1.0 - resolution: "log-symbols@npm:4.1.0" - dependencies: - chalk: ^4.1.0 - is-unicode-supported: ^0.1.0 - checksum: fce1497b3135a0198803f9f07464165e9eb83ed02ceb2273930a6f8a508951178d8cf4f0378e9d28300a2ed2bc49050995d2bd5f53ab716bb15ac84d58c6ef74 - languageName: node - linkType: hard - -"log-update@npm:^4.0.0": - version: 4.0.0 - resolution: "log-update@npm:4.0.0" - dependencies: - ansi-escapes: ^4.3.0 - cli-cursor: ^3.1.0 - slice-ansi: ^4.0.0 - wrap-ansi: ^6.2.0 - checksum: ae2f85bbabc1906034154fb7d4c4477c79b3e703d22d78adee8b3862fa913942772e7fa11713e3d96fb46de4e3cabefbf5d0a544344f03b58d3c4bff52aa9eb2 - languageName: node - linkType: hard - -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" - bin: - lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 - languageName: node - linkType: hard - -"merge-stream@npm:^2.0.0": - version: 2.0.0 - resolution: "merge-stream@npm:2.0.0" - checksum: 6fa4dcc8d86629705cea944a4b88ef4cb0e07656ebf223fa287443256414283dd25d91c1cd84c77987f2aec5927af1a9db6085757cb43d90eb170ebf4b47f4f4 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc - languageName: node - linkType: hard - -"mime-db@npm:1.52.0": - version: 1.52.0 - resolution: "mime-db@npm:1.52.0" - checksum: 0d99a03585f8b39d68182803b12ac601d9c01abfa28ec56204fa330bc9f3d1c5e14beb049bafadb3dbdf646dfb94b87e24d4ec7b31b7279ef906a8ea9b6a513f - languageName: node - linkType: hard - -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": - version: 2.1.35 - resolution: "mime-types@npm:2.1.35" - dependencies: - mime-db: 1.52.0 - checksum: 89a5b7f1def9f3af5dad6496c5ed50191ae4331cc5389d7c521c8ad28d5fdad2d06fd81baf38fed813dc4e46bb55c8145bb0ff406330818c9cf712fb2e9b3836 - languageName: node - linkType: hard - -"mimic-fn@npm:^2.1.0": - version: 2.1.0 - resolution: "mimic-fn@npm:2.1.0" - checksum: d2421a3444848ce7f84bd49115ddacff29c15745db73f54041edc906c14b131a38d05298dae3081667627a59b2eb1ca4b436ff2e1b80f69679522410418b478a - languageName: node - linkType: hard - -"min-indent@npm:^1.0.0": - version: 1.0.1 - resolution: "min-indent@npm:1.0.1" - checksum: bfc6dd03c5eaf623a4963ebd94d087f6f4bbbfd8c41329a7f09706b0cb66969c4ddd336abeb587bc44bc6f08e13bf90f0b374f9d71f9f01e04adc2cd6f083ef1 - languageName: node - linkType: hard - -"minimatch@npm:^3.1.1": - version: 3.1.2 - resolution: "minimatch@npm:3.1.2" - dependencies: - brace-expansion: ^1.1.7 - checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a - languageName: node - linkType: hard - -"minimist@npm:^1.2.8": - version: 1.2.8 - resolution: "minimist@npm:1.2.8" - checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 - languageName: node - linkType: hard - -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.1.1": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"npm-run-path@npm:^4.0.0": - version: 4.0.1 - resolution: "npm-run-path@npm:4.0.1" - dependencies: - path-key: ^3.0.0 - checksum: 5374c0cea4b0bbfdfae62da7bbdf1e1558d338335f4cacf2515c282ff358ff27b2ecb91ffa5330a8b14390ac66a1e146e10700440c1ab868208430f56b5f4d23 - languageName: node - linkType: hard - -"object-inspect@npm:^1.9.0": - version: 1.12.3 - resolution: "object-inspect@npm:1.12.3" - checksum: dabfd824d97a5f407e6d5d24810d888859f6be394d8b733a77442b277e0808860555176719c5905e765e3743a7cada6b8b0a3b85e5331c530fd418cc8ae991db - languageName: node - linkType: hard - -"object-is@npm:^1.1.5": - version: 1.1.5 - resolution: "object-is@npm:1.1.5" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe - languageName: node - linkType: hard - -"object-keys@npm:^1.1.1": - version: 1.1.1 - resolution: "object-keys@npm:1.1.1" - checksum: b363c5e7644b1e1b04aa507e88dcb8e3a2f52b6ffd0ea801e4c7a62d5aa559affe21c55a07fd4b1fd55fc03a33c610d73426664b20032405d7b92a1414c34d6a - languageName: node - linkType: hard - -"object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 - has-symbols: ^1.0.3 - object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 - languageName: node - linkType: hard - -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.4.0": - version: 1.4.0 - resolution: "once@npm:1.4.0" - dependencies: - wrappy: 1 - checksum: cd0a88501333edd640d95f0d2700fbde6bff20b3d4d9bdc521bdd31af0656b5706570d6c6afe532045a20bb8dc0849f8332d6f2a416e0ba6d3d3b98806c7db68 - languageName: node - linkType: hard - -"onetime@npm:^5.1.0": - version: 5.1.2 - resolution: "onetime@npm:5.1.2" - dependencies: - mimic-fn: ^2.1.0 - checksum: 2478859ef817fc5d4e9c2f9e5728512ddd1dbc9fb7829ad263765bb6d3b91ce699d6e2332eef6b7dff183c2f490bd3349f1666427eaba4469fba0ac38dfd0d34 - languageName: node - linkType: hard - -"ospath@npm:^1.2.2": - version: 1.2.2 - resolution: "ospath@npm:1.2.2" - checksum: 505f48a4f4f1c557d6c656ec985707726e3714721680139be037613e903aa8c8fa4ddd8d1342006f9b2dc0065e6e20f8b7bea2ee05354f31257044790367b347 - languageName: node - linkType: hard - -"p-map@npm:^4.0.0": - version: 4.0.0 - resolution: "p-map@npm:4.0.0" - dependencies: - aggregate-error: ^3.0.0 - checksum: cb0ab21ec0f32ddffd31dfc250e3afa61e103ef43d957cc45497afe37513634589316de4eb88abdfd969fe6410c22c0b93ab24328833b8eb1ccc087fc0442a1c - languageName: node - linkType: hard - -"path-is-absolute@npm:^1.0.0": - version: 1.0.1 - resolution: "path-is-absolute@npm:1.0.1" - checksum: 060840f92cf8effa293bcc1bea81281bd7d363731d214cbe5c227df207c34cd727430f70c6037b5159c8a870b9157cba65e775446b0ab06fd5ecc7e54615a3b8 - languageName: node - linkType: hard - -"path-key@npm:^3.0.0, path-key@npm:^3.1.0": - version: 3.1.1 - resolution: "path-key@npm:3.1.1" - checksum: 55cd7a9dd4b343412a8386a743f9c746ef196e57c823d90ca3ab917f90ab9f13dd0ded27252ba49dbdfcab2b091d998bc446f6220cd3cea65db407502a740020 - languageName: node - linkType: hard - -"pend@npm:~1.2.0": - version: 1.2.0 - resolution: "pend@npm:1.2.0" - checksum: 6c72f5243303d9c60bd98e6446ba7d30ae29e3d56fdb6fae8767e8ba6386f33ee284c97efe3230a0d0217e2b1723b8ab490b1bbf34fcbb2180dbc8a9de47850d - languageName: node - linkType: hard - -"performance-now@npm:^2.1.0": - version: 2.1.0 - resolution: "performance-now@npm:2.1.0" - checksum: 534e641aa8f7cba160f0afec0599b6cecefbb516a2e837b512be0adbe6c1da5550e89c78059c7fabc5c9ffdf6627edabe23eb7c518c4500067a898fa65c2b550 - languageName: node - linkType: hard - -"picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": - version: 2.3.1 - resolution: "picomatch@npm:2.3.1" - checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf - languageName: node - linkType: hard - -"pify@npm:^2.2.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba - languageName: node - linkType: hard - -"pretty-bytes@npm:^5.6.0": - version: 5.6.0 - resolution: "pretty-bytes@npm:5.6.0" - checksum: 9c082500d1e93434b5b291bd651662936b8bd6204ec9fa17d563116a192d6d86b98f6d328526b4e8d783c07d5499e2614a807520249692da9ec81564b2f439cd - languageName: node - linkType: hard - -"pretty-format@npm:^27.0.2": - version: 27.5.1 - resolution: "pretty-format@npm:27.5.1" - dependencies: - ansi-regex: ^5.0.1 - ansi-styles: ^5.0.0 - react-is: ^17.0.1 - checksum: cf610cffcb793885d16f184a62162f2dd0df31642d9a18edf4ca298e909a8fe80bdbf556d5c9573992c102ce8bf948691da91bf9739bee0ffb6e79c8a8a6e088 - languageName: node - linkType: hard - -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.4.2": - version: 29.4.2 - resolution: "pretty-format@npm:29.4.2" - dependencies: - "@jest/schemas": ^29.4.2 - ansi-styles: ^5.0.0 - react-is: ^18.0.0 - checksum: ef322c76b617494efda4a7fe277fe10ac4b34ffc4dc2149adbd2533f3b03a67a58ab0c32ee6a9a9ac143a4822c971a071502f6c9ecd87b07ba5d43c58619c2e1 - languageName: node - linkType: hard - -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - -"proxy-from-env@npm:1.0.0": - version: 1.0.0 - resolution: "proxy-from-env@npm:1.0.0" - checksum: 292e28d1de0c315958d71d8315eb546dd3cd8c8cbc2dab7c54eeb9f5c17f421771964ad0b5e1f77011bab2305bdae42e1757ce33bdb1ccc3e87732322a8efcf1 - languageName: node - linkType: hard - -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d - languageName: node - linkType: hard - -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"punycode@npm:^2.1.1": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 - languageName: node - linkType: hard - -"qs@npm:6.10.4": - version: 6.10.4 - resolution: "qs@npm:6.10.4" - dependencies: - side-channel: ^1.0.4 - checksum: 31e4fedd759d01eae52dde6692abab175f9af3e639993c5caaa513a2a3607b34d8058d3ae52ceeccf37c3025f22ed5e90e9ddd6c2537e19c0562ddd10dc5b1eb - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 - languageName: node - linkType: hard - -"react-is@npm:^17.0.1": - version: 17.0.2 - resolution: "react-is@npm:17.0.2" - checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8 - languageName: node - linkType: hard - -"react-is@npm:^18.0.0": - version: 18.2.0 - resolution: "react-is@npm:18.2.0" - checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e - languageName: node - linkType: hard - -"redent@npm:^3.0.0": - version: 3.0.0 - resolution: "redent@npm:3.0.0" - dependencies: - indent-string: ^4.0.0 - strip-indent: ^3.0.0 - checksum: fa1ef20404a2d399235e83cc80bd55a956642e37dd197b4b612ba7327bf87fa32745aeb4a1634b2bab25467164ab4ed9c15be2c307923dd08b0fe7c52431ae6b - languageName: node - linkType: hard - -"regenerator-runtime@npm:^0.13.11": - version: 0.13.11 - resolution: "regenerator-runtime@npm:0.13.11" - checksum: 27481628d22a1c4e3ff551096a683b424242a216fee44685467307f14d58020af1e19660bf2e26064de946bad7eff28950eae9f8209d55723e2d9351e632bbb4 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 - languageName: node - linkType: hard - -"request-progress@npm:^3.0.0": - version: 3.0.0 - resolution: "request-progress@npm:3.0.0" - dependencies: - throttleit: ^1.0.0 - checksum: 6ea1761dcc8a8b7b5894afd478c0286aa31bd69438d7050294bd4fd0d0b3e09b5cde417d38deef9c49809039c337d8744e4bb49d8632b0c3e4ffa5e8a687e0fd - languageName: node - linkType: hard - -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - -"restore-cursor@npm:^3.1.0": - version: 3.1.0 - resolution: "restore-cursor@npm:3.1.0" - dependencies: - onetime: ^5.1.0 - signal-exit: ^3.0.2 - checksum: f877dd8741796b909f2a82454ec111afb84eb45890eb49ac947d87991379406b3b83ff9673a46012fca0d7844bb989f45cc5b788254cf1a39b6b5a9659de0630 - languageName: node - linkType: hard - -"rfdc@npm:^1.3.0": - version: 1.3.0 - resolution: "rfdc@npm:1.3.0" - checksum: fb2ba8512e43519983b4c61bd3fa77c0f410eff6bae68b08614437bc3f35f91362215f7b4a73cbda6f67330b5746ce07db5dd9850ad3edc91271ad6deea0df32 - languageName: node - linkType: hard - -"rimraf@npm:^3.0.0": - version: 3.0.2 - resolution: "rimraf@npm:3.0.2" - dependencies: - glob: ^7.1.3 - bin: - rimraf: bin.js - checksum: 87f4164e396f0171b0a3386cc1877a817f572148ee13a7e113b238e48e8a9f2f31d009a92ec38a591ff1567d9662c6b67fd8818a2dbbaed74bc26a87a2a4a9a0 - languageName: node - linkType: hard - -"root-workspace-0b6124@workspace:.": - version: 0.0.0-use.local - resolution: "root-workspace-0b6124@workspace:." - dependencies: - "@plone/volto-testing": ^4.0.0 - languageName: unknown - linkType: soft - -"rxjs@npm:^7.5.1": - version: 7.8.0 - resolution: "rxjs@npm:7.8.0" - dependencies: - tslib: ^2.1.0 - checksum: 61b4d4fd323c1043d8d6ceb91f24183b28bcf5def4f01ca111511d5c6b66755bc5578587fe714ef5d67cf4c9f2e26f4490d4e1d8cabf9bd5967687835e9866a2 - languageName: node - linkType: hard - -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.2": - version: 5.2.1 - resolution: "safe-buffer@npm:5.2.1" - checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 - languageName: node - linkType: hard - -"safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": - version: 2.1.2 - resolution: "safer-buffer@npm:2.1.2" - checksum: cab8f25ae6f1434abee8d80023d7e72b598cf1327164ddab31003c51215526801e40b66c5e65d658a0af1e9d6478cadcb4c745f4bd6751f97d8644786c0978b0 - languageName: node - linkType: hard - -"semver@npm:^7.5.3": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c - languageName: node - linkType: hard - -"shebang-command@npm:^2.0.0": - version: 2.0.0 - resolution: "shebang-command@npm:2.0.0" - dependencies: - shebang-regex: ^3.0.0 - checksum: 6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa - languageName: node - linkType: hard - -"shebang-regex@npm:^3.0.0": - version: 3.0.0 - resolution: "shebang-regex@npm:3.0.0" - checksum: 1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222 - languageName: node - linkType: hard - -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" - dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 - languageName: node - linkType: hard - -"signal-exit@npm:^3.0.2": - version: 3.0.7 - resolution: "signal-exit@npm:3.0.7" - checksum: a2f098f247adc367dffc27845853e9959b9e88b01cb301658cfe4194352d8d2bb32e18467c786a7fe15f1d44b233ea35633d076d5e737870b7139949d1ab6318 - languageName: node - linkType: hard - -"slash@npm:^3.0.0": - version: 3.0.0 - resolution: "slash@npm:3.0.0" - checksum: 94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c - languageName: node - linkType: hard - -"slice-ansi@npm:^3.0.0": - version: 3.0.0 - resolution: "slice-ansi@npm:3.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 5ec6d022d12e016347e9e3e98a7eb2a592213a43a65f1b61b74d2c78288da0aded781f665807a9f3876b9daa9ad94f64f77d7633a0458876c3a4fdc4eb223f24 - languageName: node - linkType: hard - -"slice-ansi@npm:^4.0.0": - version: 4.0.0 - resolution: "slice-ansi@npm:4.0.0" - dependencies: - ansi-styles: ^4.0.0 - astral-regex: ^2.0.0 - is-fullwidth-code-point: ^3.0.0 - checksum: 4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756 - languageName: node - linkType: hard - -"source-map-resolve@npm:^0.6.0": - version: 0.6.0 - resolution: "source-map-resolve@npm:0.6.0" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - checksum: fe503b9e5dac1c54be835282fcfec10879434e7b3ee08a9774f230299c724a8d403484d9531276d1670c87390e0e4d1d3f92b14cca6e4a2445ea3016b786ecd4 - languageName: node - linkType: hard - -"source-map@npm:^0.6.1": - version: 0.6.1 - resolution: "source-map@npm:0.6.1" - checksum: 59ce8640cf3f3124f64ac289012c2b8bd377c238e316fb323ea22fbfe83da07d81e000071d7242cad7a23cd91c7de98e4df8830ec3f133cb6133a5f6e9f67bc2 - languageName: node - linkType: hard - -"sshpk@npm:^1.14.1": - version: 1.17.0 - resolution: "sshpk@npm:1.17.0" - dependencies: - asn1: ~0.2.3 - assert-plus: ^1.0.0 - bcrypt-pbkdf: ^1.0.0 - dashdash: ^1.12.0 - ecc-jsbn: ~0.1.1 - getpass: ^0.1.1 - jsbn: ~0.1.0 - safer-buffer: ^2.0.2 - tweetnacl: ~0.14.0 - bin: - sshpk-conv: bin/sshpk-conv - sshpk-sign: bin/sshpk-sign - sshpk-verify: bin/sshpk-verify - checksum: ba109f65c8e6c35133b8e6ed5576abeff8aa8d614824b7275ec3ca308f081fef483607c28d97780c1e235818b0f93ed8c8b56d0a5968d5a23fd6af57718c7597 - languageName: node - linkType: hard - -"stack-utils@npm:^2.0.3": - version: 2.0.6 - resolution: "stack-utils@npm:2.0.6" - dependencies: - escape-string-regexp: ^2.0.0 - checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 - languageName: node - linkType: hard - -"stop-iteration-iterator@npm:^1.0.0": - version: 1.0.0 - resolution: "stop-iteration-iterator@npm:1.0.0" - dependencies: - internal-slot: ^1.0.4 - checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 - languageName: node - linkType: hard - -"string-width@npm:^4.1.0, string-width@npm:^4.2.0": - version: 4.2.3 - resolution: "string-width@npm:4.2.3" - dependencies: - emoji-regex: ^8.0.0 - is-fullwidth-code-point: ^3.0.0 - strip-ansi: ^6.0.1 - checksum: e52c10dc3fbfcd6c3a15f159f54a90024241d0f149cf8aed2982a2d801d2e64df0bf1dc351cf8e95c3319323f9f220c16e740b06faecd53e2462df1d2b5443fb - languageName: node - linkType: hard - -"strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": - version: 6.0.1 - resolution: "strip-ansi@npm:6.0.1" - dependencies: - ansi-regex: ^5.0.1 - checksum: f3cd25890aef3ba6e1a74e20896c21a46f482e93df4a06567cebf2b57edabb15133f1f94e57434e0a958d61186087b1008e89c94875d019910a213181a14fc8c - languageName: node - linkType: hard - -"strip-final-newline@npm:^2.0.0": - version: 2.0.0 - resolution: "strip-final-newline@npm:2.0.0" - checksum: 69412b5e25731e1938184b5d489c32e340605bb611d6140344abc3421b7f3c6f9984b21dff296dfcf056681b82caa3bb4cc996a965ce37bcfad663e92eae9c64 - languageName: node - linkType: hard - -"strip-indent@npm:^3.0.0": - version: 3.0.0 - resolution: "strip-indent@npm:3.0.0" - dependencies: - min-indent: ^1.0.0 - checksum: 18f045d57d9d0d90cd16f72b2313d6364fd2cb4bf85b9f593523ad431c8720011a4d5f08b6591c9d580f446e78855c5334a30fb91aa1560f5d9f95ed1b4a0530 - languageName: node - linkType: hard - -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - -"supports-color@npm:^7.1.0": - version: 7.2.0 - resolution: "supports-color@npm:7.2.0" - dependencies: - has-flag: ^4.0.0 - checksum: 3dda818de06ebbe5b9653e07842d9479f3555ebc77e9a0280caf5a14fb877ffee9ed57007c3b78f5a6324b8dbeec648d9e97a24e2ed9fdb81ddc69ea07100f4a - languageName: node - linkType: hard - -"supports-color@npm:^8.1.1": - version: 8.1.1 - resolution: "supports-color@npm:8.1.1" - dependencies: - has-flag: ^4.0.0 - checksum: c052193a7e43c6cdc741eb7f378df605636e01ad434badf7324f17fb60c69a880d8d8fcdcb562cf94c2350e57b937d7425ab5b8326c67c2adc48f7c87c1db406 - languageName: node - linkType: hard - -"throttleit@npm:^1.0.0": - version: 1.0.0 - resolution: "throttleit@npm:1.0.0" - checksum: 1b2db4d2454202d589e8236c07a69d2fab838876d370030ebea237c34c0a7d1d9cf11c29f994531ebb00efd31e9728291042b7754f2798a8352ec4463455b659 - languageName: node - linkType: hard - -"through@npm:^2.3.8": - version: 2.3.8 - resolution: "through@npm:2.3.8" - checksum: a38c3e059853c494af95d50c072b83f8b676a9ba2818dcc5b108ef252230735c54e0185437618596c790bbba8fcdaef5b290405981ffa09dce67b1f1bf190cbd - languageName: node - linkType: hard - -"tmp@npm:~0.2.1": - version: 0.2.1 - resolution: "tmp@npm:0.2.1" - dependencies: - rimraf: ^3.0.0 - checksum: 8b1214654182575124498c87ca986ac53dc76ff36e8f0e0b67139a8d221eaecfdec108c0e6ec54d76f49f1f72ab9325500b246f562b926f85bcdfca8bf35df9e - languageName: node - linkType: hard - -"to-regex-range@npm:^5.0.1": - version: 5.0.1 - resolution: "to-regex-range@npm:5.0.1" - dependencies: - is-number: ^7.0.0 - checksum: f76fa01b3d5be85db6a2a143e24df9f60dd047d151062d0ba3df62953f2f697b16fe5dad9b0ac6191c7efc7b1d9dcaa4b768174b7b29da89d4428e64bc0a20ed - languageName: node - linkType: hard - -"tough-cookie@npm:^4.1.3": - version: 4.1.3 - resolution: "tough-cookie@npm:4.1.3" - dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc - languageName: node - linkType: hard - -"tslib@npm:^2.1.0": - version: 2.5.0 - resolution: "tslib@npm:2.5.0" - checksum: ae3ed5f9ce29932d049908ebfdf21b3a003a85653a9a140d614da6b767a93ef94f460e52c3d787f0e4f383546981713f165037dc2274df212ea9f8a4541004e1 - languageName: node - linkType: hard - -"tunnel-agent@npm:^0.6.0": - version: 0.6.0 - resolution: "tunnel-agent@npm:0.6.0" - dependencies: - safe-buffer: ^5.0.1 - checksum: 05f6510358f8afc62a057b8b692f05d70c1782b70db86d6a1e0d5e28a32389e52fa6e7707b6c5ecccacc031462e4bc35af85ecfe4bbc341767917b7cf6965711 - languageName: node - linkType: hard - -"tweetnacl@npm:^0.14.3, tweetnacl@npm:~0.14.0": - version: 0.14.5 - resolution: "tweetnacl@npm:0.14.5" - checksum: 6061daba1724f59473d99a7bb82e13f211cdf6e31315510ae9656fefd4779851cb927adad90f3b488c8ed77c106adc0421ea8055f6f976ff21b27c5c4e918487 - languageName: node - linkType: hard - -"type-fest@npm:^0.21.3": - version: 0.21.3 - resolution: "type-fest@npm:0.21.3" - checksum: e6b32a3b3877f04339bae01c193b273c62ba7bfc9e325b8703c4ee1b32dc8fe4ef5dfa54bf78265e069f7667d058e360ae0f37be5af9f153b22382cd55a9afe0 - languageName: node - linkType: hard - -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - -"universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 - languageName: node - linkType: hard - -"untildify@npm:^4.0.0": - version: 4.0.0 - resolution: "untildify@npm:4.0.0" - checksum: 39ced9c418a74f73f0a56e1ba4634b4d959422dff61f4c72a8e39f60b99380c1b45ed776fbaa0a4101b157e4310d873ad7d114e8534ca02609b4916bb4187fb9 - languageName: node - linkType: hard - -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf - languageName: node - linkType: hard - -"uuid@npm:^8.3.2": - version: 8.3.2 - resolution: "uuid@npm:8.3.2" - bin: - uuid: dist/bin/uuid - checksum: 5575a8a75c13120e2f10e6ddc801b2c7ed7d8f3c8ac22c7ed0c7b2ba6383ec0abda88c905085d630e251719e0777045ae3236f04c812184b7c765f63a70e58df - languageName: node - linkType: hard - -"verror@npm:1.10.0": - version: 1.10.0 - resolution: "verror@npm:1.10.0" - dependencies: - assert-plus: ^1.0.0 - core-util-is: 1.0.2 - extsprintf: ^1.2.0 - checksum: c431df0bedf2088b227a4e051e0ff4ca54df2c114096b0c01e1cbaadb021c30a04d7dd5b41ab277bcd51246ca135bf931d4c4c796ecae7a4fef6d744ecef36ea - languageName: node - linkType: hard - -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" - dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e - languageName: node - linkType: hard - -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" - dependencies: - is-map: ^2.0.1 - is-set: ^2.0.1 - is-weakmap: ^2.0.1 - is-weakset: ^2.0.1 - checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.9": - version: 1.1.9 - resolution: "which-typed-array@npm:1.1.9" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.0 - is-typed-array: ^1.1.10 - checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef - languageName: node - linkType: hard - -"which@npm:^2.0.1": - version: 2.0.2 - resolution: "which@npm:2.0.2" - dependencies: - isexe: ^2.0.0 - bin: - node-which: ./bin/node-which - checksum: 1a5c563d3c1b52d5f893c8b61afe11abc3bab4afac492e8da5bde69d550de701cf9806235f20a47b5c8fa8a1d6a9135841de2596535e998027a54589000e66d1 - languageName: node - linkType: hard - -"wrap-ansi@npm:^6.2.0": - version: 6.2.0 - resolution: "wrap-ansi@npm:6.2.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: 6cd96a410161ff617b63581a08376f0cb9162375adeb7956e10c8cd397821f7eb2a6de24eb22a0b28401300bf228c86e50617cd568209b5f6775b93c97d2fe3a - languageName: node - linkType: hard - -"wrap-ansi@npm:^7.0.0": - version: 7.0.0 - resolution: "wrap-ansi@npm:7.0.0" - dependencies: - ansi-styles: ^4.0.0 - string-width: ^4.1.0 - strip-ansi: ^6.0.0 - checksum: a790b846fd4505de962ba728a21aaeda189b8ee1c7568ca5e817d85930e06ef8d1689d49dbf0e881e8ef84436af3a88bc49115c2e2788d841ff1b8b5b51a608b - languageName: node - linkType: hard - -"wrappy@npm:1": - version: 1.0.2 - resolution: "wrappy@npm:1.0.2" - checksum: 159da4805f7e84a3d003d8841557196034155008f817172d4e986bd591f74aa82aa7db55929a54222309e01079a65a92a9e6414da5a6aa4b01ee44a511ac3ee5 - languageName: node - linkType: hard - -"yallist@npm:^4.0.0": - version: 4.0.0 - resolution: "yallist@npm:4.0.0" - checksum: 343617202af32df2a15a3be36a5a8c0c8545208f3d3dfbc6bb7c3e3b7e8c6f8e7485432e4f3b88da3031a6e20afa7c711eded32ddfb122896ac5d914e75848d5 - languageName: node - linkType: hard - -"yauzl@npm:^2.10.0": - version: 2.10.0 - resolution: "yauzl@npm:2.10.0" - dependencies: - buffer-crc32: ~0.2.3 - fd-slicer: ~1.1.0 - checksum: 7f21fe0bbad6e2cb130044a5d1d0d5a0e5bf3d8d4f8c4e6ee12163ce798fee3de7388d22a7a0907f563ac5f9d40f8699a223d3d5c1718da90b0156da6904022b - languageName: node - linkType: hard diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 00000000..e9e94ffc --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,14 @@ +.editorconfig +.gitattributes +bin +Dockerfile +Dockerfile.acceptance +include +instance +instance.yaml +lib +lib64 +Makefile +pyvenv.cfg +var +.venv diff --git a/backend/.editorconfig b/backend/.editorconfig new file mode 100644 index 00000000..8ae05aaa --- /dev/null +++ b/backend/.editorconfig @@ -0,0 +1,54 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +# +# EditorConfig Configuration file, for more details see: +# http://EditorConfig.org +# EditorConfig is a convention description, that could be interpreted +# by multiple editors to enforce common coding conventions for specific +# file types + +# top-most EditorConfig file: +# Will ignore other EditorConfig files in Home directory or upper tree level. +root = true + + +[*] # For All Files +# Unix-style newlines with a newline ending every file +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +# Set default charset +charset = utf-8 +# Indent style default +indent_style = space +# Max Line Length - a hard line wrap, should be disabled +max_line_length = off + +[*.{py,cfg,ini}] +# 4 space indentation +indent_size = 4 + +[*.{yml,zpt,pt,dtml,zcml}] +# 2 space indentation +indent_size = 2 + +[*.{json,jsonl,js,jsx,ts,tsx,css,less,scss,html}] # Frontend development +# 2 space indentation +indent_size = 2 +max_line_length = 80 + +[{Makefile,.gitmodules}] +# Tab indentation (no size specified, but view as 4 spaces) +indent_style = tab +indent_size = unset +tab_width = unset + + +## +# Add extra configuration options in .meta.toml: +# [editorconfig] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/.flake8 b/backend/.flake8 new file mode 100644 index 00000000..7ef4f64d --- /dev/null +++ b/backend/.flake8 @@ -0,0 +1,22 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +[flake8] +doctests = 1 +ignore = + # black takes care of line length + E501, + # black takes care of where to break lines + W503, + # black takes care of spaces within slicing (list[:]) + E203, + # black takes care of spaces after commas + E231, + +## +# Add extra configuration options in .meta.toml: +# [flake8] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 00000000..6a1e51f3 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,51 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +# python related +*.egg-info +*.pyc +*.pyo + +# tools related +build/ +.coverage +coverage.xml +dist/ +docs/_build +__pycache__/ +.tox +.vscode/ +node_modules/ + +# venv / buildout related +bin/ +develop-eggs/ +eggs/ +.eggs/ +etc/ +.installed.cfg +include/ +lib/ +lib64 +.mr.developer.cfg +parts/ +pyvenv.cfg +var/ + +# mxdev +/instance/ +/.make-sentinels/ +/*-mxdev.txt +/reports/ +/sources/ +/venv/ +.installed.txt +.lock + +## +# Add extra configuration options in .meta.toml: +# [gitignore] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/.pre-commit-config.yaml b/backend/.pre-commit-config.yaml new file mode 100644 index 00000000..b6eb0432 --- /dev/null +++ b/backend/.pre-commit-config.yaml @@ -0,0 +1,94 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +ci: + autofix_prs: false + autoupdate_schedule: monthly + +repos: +- repo: https://github.com/asottile/pyupgrade + rev: v3.14.0 + hooks: + - id: pyupgrade + args: [--py38-plus] +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort +- repo: https://github.com/psf/black + rev: 23.9.1 + hooks: + - id: black +- repo: https://github.com/collective/zpretty + rev: 3.1.0 + hooks: + - id: zpretty + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# zpretty_extra_lines = """ +# _your own configuration lines_ +# """ +## +- repo: https://github.com/PyCQA/flake8 + rev: 6.1.0 + hooks: + - id: flake8 + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# flake8_extra_lines = """ +# _your own configuration lines_ +# """ +## +- repo: https://github.com/codespell-project/codespell + rev: v2.2.6 + hooks: + - id: codespell + additional_dependencies: + - tomli + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# codespell_extra_lines = """ +# _your own configuration lines_ +# """ +## +- repo: https://github.com/mgedmin/check-manifest + rev: "0.49" + hooks: + - id: check-manifest +- repo: https://github.com/regebro/pyroma + rev: "4.2" + hooks: + - id: pyroma +- repo: https://github.com/mgedmin/check-python-versions + rev: "0.21.3" + hooks: + - id: check-python-versions + args: ['--only', 'setup.py,pyproject.toml'] +- repo: https://github.com/collective/i18ndude + rev: "6.1.0" + hooks: + - id: i18ndude + + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# i18ndude_extra_lines = """ +# _your own configuration lines_ +# """ +## + + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/CHANGES.md b/backend/CHANGES.md new file mode 100644 index 00000000..3020bae6 --- /dev/null +++ b/backend/CHANGES.md @@ -0,0 +1,10 @@ +# Changelog + + + + diff --git a/backend/CONTRIBUTORS.md b/backend/CONTRIBUTORS.md new file mode 100644 index 00000000..5a1aabd6 --- /dev/null +++ b/backend/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +# Contributors + +- Plone Foundation [collective@plone.org] diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 00000000..99da983f --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,41 @@ +# syntax=docker/dockerfile:1 +ARG PLONE_VERSION=6.0.13 +FROM plone/server-builder:${PLONE_VERSION} as builder + +WORKDIR /app + + +# Add local code +COPY scripts/ scripts/ +COPY . src + +# Install local requirements and pre-compile mo files +RUN < + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/backend/LICENSE.md b/backend/LICENSE.md new file mode 100644 index 00000000..1de10762 --- /dev/null +++ b/backend/LICENSE.md @@ -0,0 +1,15 @@ +searchkit.block Copyright 2023, Plone Foundation + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 2 +as published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, +MA 02111-1307 USA. diff --git a/backend/MANIFEST.in b/backend/MANIFEST.in new file mode 100644 index 00000000..45aae324 --- /dev/null +++ b/backend/MANIFEST.in @@ -0,0 +1,20 @@ +graft src/searchkit +graft docs +graft news +graft tests +graft scripts +include *.acceptance +include .coveragerc +include .dockerignore +include .editorconfig +include *.txt +include *.yml +include *.md +exclude *-mxdev.txt +exclude Dockerfile +exclude mx.ini +exclude Makefile +recursive-exclude frontend * +exclude instance.yaml +global-exclude *.pyc +global-exclude .DS_Store diff --git a/backend/Makefile b/backend/Makefile new file mode 100644 index 00000000..088d5fe4 --- /dev/null +++ b/backend/Makefile @@ -0,0 +1,139 @@ +### Defensive settings for make: +# https://tech.davis-hansson.com/p/make/ +SHELL:=bash +.ONESHELL: +.SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c +.SILENT: +.DELETE_ON_ERROR: +MAKEFLAGS+=--warn-undefined-variables +MAKEFLAGS+=--no-builtin-rules + +# We like colors +# From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects +RED=`tput setaf 1` +GREEN=`tput setaf 2` +RESET=`tput sgr0` +YELLOW=`tput setaf 3` + +IMAGE_NAME_PREFIX=ghcr.io/rohberg/searchkit-block +IMAGE_TAG=latest + +# Python checks +PYTHON?=python3 + +# installed? +ifeq (, $(shell which $(PYTHON) )) + $(error "PYTHON=$(PYTHON) not found in $(PATH)") +endif + +# version ok? +PYTHON_VERSION_MIN=3.8 +PYTHON_VERSION_OK=$(shell $(PYTHON) -c "import sys; print((int(sys.version_info[0]), int(sys.version_info[1])) >= tuple(map(int, '$(PYTHON_VERSION_MIN)'.split('.'))))") +ifeq ($(PYTHON_VERSION_OK),0) + $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)") +endif + +PLONE_SITE_ID=Plone +BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) +PLONE_VERSION=$(shell cat $(BACKEND_FOLDER)/version.txt) +EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/searchkit/block/setuphandlers/examplecontent + +GIT_FOLDER=$(BACKEND_FOLDER)/.git +VENV_FOLDER=$(BACKEND_FOLDER)/.venv +BIN_FOLDER=$(VENV_FOLDER)/bin + + +all: build + +# Add the following 'help' target to your Makefile +# And add help text after each target name starting with '\#\#' +.PHONY: help +help: ## This help message + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +$(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: + @echo "$(GREEN)==> Setup Virtual Env$(RESET)" + $(PYTHON) -m venv $(VENV_FOLDER) + $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" + if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi + +instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration + @echo "$(GREEN)==> Create instance configuration$(RESET)" + $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance + +.PHONY: config +config: instance/etc/zope.ini + +.PHONY: build-dev +build-dev: config ## Install Plone packages + @echo "$(GREEN)==> Setup Build$(RESET)" + $(BIN_FOLDER)/mxdev -c mx.ini + $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt + +.PHONY: install +install: build-dev ## Install Plone + +.PHONY: build +build: build-dev ## Install Plone + +.PHONY: clean +clean: ## Clean environment + @echo "$(RED)==> Cleaning environment and build$(RESET)" + rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache + +.PHONY: start +start: ## Start a Plone instance on localhost:8080 + PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini + +.PHONY: console +console: instance/etc/zope.ini ## Start a console into a Plone instance + PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf + +.PHONY: create-site +create-site: instance/etc/zope.ini ## Create a new site from scratch + PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py + +# Example Content +.PHONY: update-example-content +update-example-content: $(BIN_FOLDER)/tox ## Export example content inside package + @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER) $(RESET)" + if [ -d $(EXAMPLE_CONTENT_FOLDER)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER)/* ;fi + $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID) $(EXAMPLE_CONTENT_FOLDER) + +.PHONY: check +check: $(BIN_FOLDER)/tox ## Check and fix code base according to Plone standards + @echo "$(GREEN)==> Format codebase$(RESET)" + $(BIN_FOLDER)/tox -e lint + +# i18n +$(BIN_FOLDER)/i18ndude: $(BIN_FOLDER)/pip + @echo "$(GREEN)==> Install translation tools$(RESET)" + $(BIN_FOLDER)/uv pip install i18ndude + +.PHONY: i18n +i18n: $(BIN_FOLDER)/i18ndude ## Update locales + @echo "$(GREEN)==> Updating locales$(RESET)" + $(BIN_FOLDER)/update_locale + +# Tests +.PHONY: test +test: $(BIN_FOLDER)/tox ## run tests + $(BIN_FOLDER)/tox -e test + +.PHONY: test-coverage +test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage + $(BIN_FOLDER)/tox -e coverage + +# Build Docker images +.PHONY: build-image +build-image: ## Build Docker Images + @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) + +# Acceptance tests +.PHONY: acceptance-backend-start +acceptance-backend-start: ## Start backend acceptance server + ZSERVER_HOST=0.0.0.0 ZSERVER_PORT=55001 LISTEN_PORT=55001 APPLY_PROFILES="searchkit/block:default" CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,searchkit/block" $(BIN_FOLDER)/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING + +.PHONY: acceptance-image-build +acceptance-image-build: ## Build Docker Images + @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 00000000..33c6f3a2 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,33 @@ +# searchkit.block + +A new project using Plone 6. + +## Features + +TODO: List our awesome features + +## Installation + +Install searchkit.block with `pip`: + +```shell +pip install searchkit.block +``` +And to create the Plone site: + +```shell +make create_site +``` + +## Contribute + +- [Issue Tracker](https://github.com/rohberg/searchkit.block/issues) +- [Source Code](https://github.com/rohberg/searchkit.block/) + +## License + +The project is licensed under GPLv2. + +## Credits and Acknowledgements 🙏 + +Crafted with care by **This was generated by [cookiecutter-plone](https://github.com/plone/cookieplone-templates/backend_addon) on 2024-10-26 11:06:16**. A special thanks to all contributors and supporters! diff --git a/backend/constraints.txt b/backend/constraints.txt new file mode 100644 index 00000000..3bb2e326 --- /dev/null +++ b/backend/constraints.txt @@ -0,0 +1 @@ +-c https://dist.plone.org/release/6.0.13/constraints.txt diff --git a/acceptance/.gitkeep b/backend/docs/.gitkeep similarity index 100% rename from acceptance/.gitkeep rename to backend/docs/.gitkeep diff --git a/backend/instance.yaml b/backend/instance.yaml new file mode 100644 index 00000000..ad0b2a1f --- /dev/null +++ b/backend/instance.yaml @@ -0,0 +1,3 @@ +default_context: + initial_user_password: 'admin' + zcml_package_includes: 'searchkit.block' \ No newline at end of file diff --git a/backend/mx.ini b/backend/mx.ini new file mode 100644 index 00000000..9fccb995 --- /dev/null +++ b/backend/mx.ini @@ -0,0 +1,17 @@ +; This is a mxdev configuration file +; it can be used to override versions of packages already defined in the +; constraints files and to add new packages from VCS like git. +; to learn more about mxdev visit https://pypi.org/project/mxdev/ + +[settings] +main-package = -e .[test] +; example how to override a package version +; version-overrides = +; example.package==2.1.0a2 + +; example section to use packages from git +; [example.contenttype] +; url = https://github.com/collective/example.contenttype.git +; pushurl = git@github.com:collective/example.contenttype.git +; extras = test +; branch = feature-7 diff --git a/backend/news/.changelog_template.jinja b/backend/news/.changelog_template.jinja new file mode 100644 index 00000000..678bfa10 --- /dev/null +++ b/backend/news/.changelog_template.jinja @@ -0,0 +1,15 @@ +{% if sections[] %} +{% for category, val in definitions.items() if category in sections[] %} + +### {{ definitions[category]['name'] }} + +{% for text, values in sections[][category].items() %} +- {{ text }} {{ values|join(', ') }} +{% endfor %} + +{% endfor %} +{% else %} +No significant changes. + + +{% endif %} diff --git a/backend/news/.gitkeep b/backend/news/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/backend/news/.gitkeep @@ -0,0 +1 @@ + diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 00000000..c982aa92 --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,170 @@ +# Generated from: +# https://github.com/plone/meta/tree/main/config/default +# See the inline comments on how to expand/tweak this configuration file +[build-system] +requires = ["setuptools>=68.2"] + +[tool.towncrier] +directory = "news/" +filename = "CHANGES.md" +start_string = "\n" +title_format = "## {version} ({project_date})" +template = "news/.changelog_template.jinja" +underlines = ["", "", ""] + +[[tool.towncrier.type]] +directory = "breaking" +name = "Breaking changes:" +showcontent = true + +[[tool.towncrier.type]] +directory = "feature" +name = "New features:" +showcontent = true + +[[tool.towncrier.type]] +directory = "bugfix" +name = "Bug fixes:" +showcontent = true + +[[tool.towncrier.type]] +directory = "internal" +name = "Internal:" +showcontent = true + +[[tool.towncrier.type]] +directory = "documentation" +name = "Documentation:" +showcontent = true + +[[tool.towncrier.type]] +directory = "tests" +name = "Tests" +showcontent = true + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# towncrier_extra_lines = """ +# extra_configuration +# """ +## + +[tool.isort] +profile = "plone" + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# isort_extra_lines = """ +# extra_configuration +# """ +## + +[tool.black] +target-version = ["py38"] + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# black_extra_lines = """ +# extra_configuration +# """ +## + +[tool.codespell] +ignore-words-list = "discreet,vew" +skip = "*.po,*.min.js" +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# codespell_ignores = "foo,bar" +# codespell_skip = "*.po,*.map,package-lock.json" +## + +[tool.dependencychecker] +Zope = [ + # Zope own provided namespaces + 'App', 'OFS', 'Products.Five', 'Products.OFSP', 'Products.PageTemplates', + 'Products.SiteAccess', 'Shared', 'Testing', 'ZPublisher', 'ZTUtils', + 'Zope2', 'webdav', 'zmi', + # ExtensionClass own provided namespaces + 'ExtensionClass', 'ComputedAttribute', 'MethodObject', + # Zope dependencies + 'AccessControl', 'Acquisition', 'AuthEncoding', 'beautifulsoup4', 'BTrees', + 'cffi', 'Chameleon', 'DateTime', 'DocumentTemplate', + 'MultiMapping', 'multipart', 'PasteDeploy', 'Persistence', 'persistent', + 'pycparser', 'python-gettext', 'pytz', 'RestrictedPython', 'roman', + 'soupsieve', 'transaction', 'waitress', 'WebOb', 'WebTest', 'WSGIProxy2', + 'z3c.pt', 'zc.lockfile', 'ZConfig', 'zExceptions', 'ZODB', 'zodbpickle', + 'zope.annotation', 'zope.browser', 'zope.browsermenu', 'zope.browserpage', + 'zope.browserresource', 'zope.cachedescriptors', 'zope.component', + 'zope.configuration', 'zope.container', 'zope.contentprovider', + 'zope.contenttype', 'zope.datetime', 'zope.deferredimport', + 'zope.deprecation', 'zope.dottedname', 'zope.event', 'zope.exceptions', + 'zope.filerepresentation', 'zope.globalrequest', 'zope.hookable', + 'zope.i18n', 'zope.i18nmessageid', 'zope.interface', 'zope.lifecycleevent', + 'zope.location', 'zope.pagetemplate', 'zope.processlifetime', 'zope.proxy', + 'zope.ptresource', 'zope.publisher', 'zope.schema', 'zope.security', + 'zope.sequencesort', 'zope.site', 'zope.size', 'zope.structuredtext', + 'zope.tal', 'zope.tales', 'zope.testbrowser', 'zope.testing', + 'zope.traversing', 'zope.viewlet' +] +'Products.CMFCore' = [ + 'docutils', 'five.localsitemanager', 'Missing', 'Products.BTreeFolder2', + 'Products.GenericSetup', 'Products.MailHost', 'Products.PythonScripts', + 'Products.StandardCacheManagers', 'Products.ZCatalog', 'Record', + 'zope.sendmail', 'Zope' +] +'plone.base' = [ + 'plone.batching', 'plone.registry', 'plone.schema','plone.z3cform', + 'Products.CMFCore', 'Products.CMFDynamicViewFTI', +] +python-dateutil = ['dateutil'] +pytest-plone = ['pytest', 'plone.testing', 'plone.app.testing'] +ignore-packages = ['plone.app.iterate', 'plone.app.upgrade', 'plone.volto', 'zestreleaser.towncrier', 'zest.releaser', 'pytest-cov'] + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# dependencies_ignores = "['zestreleaser.towncrier']" +# dependencies_mappings = [ +# "gitpython = ['git']", +# "pygithub = ['github']", +# ] +## + +[tool.check-manifest] +ignore = [ + ".editorconfig", + ".flake8", + ".meta.toml", + ".pre-commit-config.yaml", + "dependabot.yml", + "mx.ini", + "tox.ini", + +] + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# check_manifest_ignores = """ +# "*.map.js", +# "*.pyc", +# """ +# check_manifest_extra_lines = """ +# ignore-bad-ideas = [ +# "some/test/file/PKG-INFO", +# ] +# """ +## + + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/requirements-docker.txt b/backend/requirements-docker.txt new file mode 100644 index 00000000..da443200 --- /dev/null +++ b/backend/requirements-docker.txt @@ -0,0 +1 @@ +-c constraints.txt diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 00000000..da443200 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1 @@ +-c constraints.txt diff --git a/backend/scripts/create_site.py b/backend/scripts/create_site.py new file mode 100644 index 00000000..3e296327 --- /dev/null +++ b/backend/scripts/create_site.py @@ -0,0 +1,70 @@ +from AccessControl.SecurityManagement import newSecurityManager +from Products.CMFPlone.factory import _DEFAULT_PROFILE +from Products.CMFPlone.factory import addPloneSite +from Products.GenericSetup.tool import SetupTool +from searchkit.block.interfaces import IBrowserLayer +from Testing.makerequest import makerequest +from zope.interface import directlyProvidedBy +from zope.interface import directlyProvides + +import os +import transaction + + +truthy = frozenset(("t", "true", "y", "yes", "on", "1")) + + +def asbool(s): + """Return the boolean value ``True`` if the case-lowered value of string + input ``s`` is a :term:`truthy string`. If ``s`` is already one of the + boolean values ``True`` or ``False``, return it.""" + if s is None: + return False + if isinstance(s, bool): + return s + s = str(s).strip() + return s.lower() in truthy + + +DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) +EXAMPLE_CONTENT = asbool( + os.getenv("EXAMPLE_CONTENT", "1") +) # Create example content by default + +app = makerequest(globals()["app"]) + +request = app.REQUEST + +ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) + +directlyProvides(request, *ifaces) + +admin = app.acl_users.getUserById("admin") +admin = admin.__of__(app.acl_users) +newSecurityManager(None, admin) + +site_id = "Plone" +payload = { + "title": "Searchkit Block", + "profile_id": _DEFAULT_PROFILE, + "extension_ids": [ + "searchkit.block:default", + ], + "setup_content": False, + "default_language": "en", + "portal_timezone": "UTC", +} + +if site_id in app.objectIds() and DELETE_EXISTING: + app.manage_delObjects([site_id]) + transaction.commit() + app._p_jar.sync() + +if site_id not in app.objectIds(): + site = addPloneSite(app, site_id, **payload) + transaction.commit() + if EXAMPLE_CONTENT: + portal_setup: SetupTool = site.portal_setup + portal_setup.runAllImportStepsFromProfile("searchkit.block:initial") + transaction.commit() + app._p_jar.sync() diff --git a/backend/setup.py b/backend/setup.py new file mode 100644 index 00000000..46788caa --- /dev/null +++ b/backend/setup.py @@ -0,0 +1,77 @@ +"""Installer for the searchkit.block package.""" + +from pathlib import Path +from setuptools import find_packages +from setuptools import setup + + +long_description = f""" +{Path("README.md").read_text()}\n +{Path("CONTRIBUTORS.md").read_text()}\n +{Path("CHANGES.md").read_text()}\n +""" + + +setup( + name="searchkit.block", + version="1.0.0a0", + description="A new project using Plone 6.", + long_description=long_description, + long_description_content_type="text/markdown", + classifiers=[ + "Development Status :: 3 - Alpha", + "Environment :: Web Environment", + "Framework :: Plone", + "Framework :: Plone :: Addon", + "Framework :: Plone :: 6.0", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Operating System :: OS Independent", + "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", + ], + keywords="Python Plone CMS", + author="Plone Foundation", + author_email="collective@plone.org", + url="https://github.com/rohberg/searchkit.block", + project_urls={ + "PyPI": "https://pypi.org/project/searchkit.block", + "Source": "https://github.com/rohberg/searchkit.block", + "Tracker": "https://github.com/rohberg/searchkit.block/issues", + }, + license="GPL version 2", + packages=find_packages("src", exclude=["ez_setup"]), + namespace_packages=["searchkit"], + package_dir={"": "src"}, + include_package_data=True, + zip_safe=False, + python_requires=">=3.8", + install_requires=[ + "setuptools", + "Plone", + "plone.api", + "plone.restapi", + "plone.volto", + "plone.exportimport", + ], + extras_require={ + "test": [ + "zest.releaser[recommended]", + "zestreleaser.towncrier", + "plone.app.testing", + "plone.restapi[test]", + "pytest", + "pytest-cov", + "pytest-plone>=0.5.0", + ], + }, + entry_points=""" + [z3c.autoinclude.plugin] + target = plone + [console_scripts] + update_locale = searchkit.block.locales.update:update_locale + """, +) diff --git a/backend/src/searchkit/__init__.py b/backend/src/searchkit/__init__.py new file mode 100644 index 00000000..5284146e --- /dev/null +++ b/backend/src/searchkit/__init__.py @@ -0,0 +1 @@ +__import__("pkg_resources").declare_namespace(__name__) diff --git a/backend/src/searchkit/block/__init__.py b/backend/src/searchkit/block/__init__.py new file mode 100644 index 00000000..e60d2c13 --- /dev/null +++ b/backend/src/searchkit/block/__init__.py @@ -0,0 +1,12 @@ +"""Init and utils.""" + +from zope.i18nmessageid import MessageFactory + +import logging + + +PACKAGE_NAME = "searchkit.block" + +_ = MessageFactory(PACKAGE_NAME) + +logger = logging.getLogger(PACKAGE_NAME) diff --git a/backend/src/searchkit/block/configure.zcml b/backend/src/searchkit/block/configure.zcml new file mode 100644 index 00000000..25d130b2 --- /dev/null +++ b/backend/src/searchkit/block/configure.zcml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/acceptance/cypress/.gitkeep b/backend/src/searchkit/block/content/__init__.py similarity index 100% rename from acceptance/cypress/.gitkeep rename to backend/src/searchkit/block/content/__init__.py diff --git a/backend/src/searchkit/block/controlpanel/__init__.py b/backend/src/searchkit/block/controlpanel/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/controlpanel/configure.zcml b/backend/src/searchkit/block/controlpanel/configure.zcml new file mode 100644 index 00000000..e0cd9f05 --- /dev/null +++ b/backend/src/searchkit/block/controlpanel/configure.zcml @@ -0,0 +1,8 @@ + + + diff --git a/backend/src/searchkit/block/dependencies.zcml b/backend/src/searchkit/block/dependencies.zcml new file mode 100644 index 00000000..b8d35ae5 --- /dev/null +++ b/backend/src/searchkit/block/dependencies.zcml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/backend/src/searchkit/block/indexers/__init__.py b/backend/src/searchkit/block/indexers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/indexers/configure.zcml b/backend/src/searchkit/block/indexers/configure.zcml new file mode 100644 index 00000000..bad8247b --- /dev/null +++ b/backend/src/searchkit/block/indexers/configure.zcml @@ -0,0 +1,5 @@ + + + + + diff --git a/backend/src/searchkit/block/interfaces.py b/backend/src/searchkit/block/interfaces.py new file mode 100644 index 00000000..7e2f2884 --- /dev/null +++ b/backend/src/searchkit/block/interfaces.py @@ -0,0 +1,7 @@ +"""Module where all interfaces, events and exceptions live.""" + +from zope.publisher.interfaces.browser import IDefaultBrowserLayer + + +class IBrowserLayer(IDefaultBrowserLayer): + """Marker interface that defines a browser layer.""" diff --git a/backend/src/searchkit/block/locales/__init__.py b/backend/src/searchkit/block/locales/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po b/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po new file mode 100644 index 00000000..0cadc3fe --- /dev/null +++ b/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2022-05-25 17:12+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8 latin1\n" +"Domain: DOMAIN\n" diff --git a/backend/src/searchkit/block/locales/searchkit.block.pot b/backend/src/searchkit/block/locales/searchkit.block.pot new file mode 100644 index 00000000..c4a3da19 --- /dev/null +++ b/backend/src/searchkit/block/locales/searchkit.block.pot @@ -0,0 +1,18 @@ +#--- PLEASE EDIT THE LINES BELOW CORRECTLY --- +#SOME DESCRIPTIVE TITLE. +#FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2022-05-25 17:12+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8 latin1\n" +"Domain: searchkit.block\n" diff --git a/backend/src/searchkit/block/locales/update.py b/backend/src/searchkit/block/locales/update.py new file mode 100644 index 00000000..42e4dee3 --- /dev/null +++ b/backend/src/searchkit/block/locales/update.py @@ -0,0 +1,79 @@ +"""Update locales.""" + +from pathlib import Path + +import logging +import re +import subprocess + + +logger = logging.getLogger("i18n") +logger.setLevel(logging.DEBUG) + + +PATTERN = r"^[a-z]{2}.*" +domains = ("searchkit.block",) +cwd = Path.cwd() +target_path = Path(__file__).parent.parent.resolve() +locale_path = target_path / "locales" + +i18ndude = cwd / "bin" / "i18ndude" +if not i18ndude.exists(): + i18ndude = cwd / "i18ndude" + +# ignore node_modules files resulting in errors +excludes = '"*.html *json-schema*.xml"' + + +def locale_folder_setup(domain: str): + languages = [path for path in locale_path.glob("*") if path.is_dir()] + for lang_folder in languages: + lc_messages_path = lang_folder / "LC_MESSAGES" + lang = lang_folder.name + if lc_messages_path.exists(): + continue + elif re.match(PATTERN, lang): + lc_messages_path.mkdir() + cmd = ( + f"msginit --locale={lang} " + f"--input={locale_path}/{domain}.pot " + f"--output={locale_path}/{lang}/LC_MESSAGES/{domain}.po" + ) + subprocess.call( + cmd, + shell=True, + ) + + +def _rebuild(domain: str): + cmd = ( + f"{i18ndude} rebuild-pot --pot {locale_path}/{domain}.pot " + f"--exclude {excludes} " + f"--create {domain} {target_path}" + ) + subprocess.call( + cmd, + shell=True, + ) + + +def _sync(domain: str): + cmd = ( + f"{i18ndude} sync --pot {locale_path}/{domain}.pot " + f"{locale_path}/*/LC_MESSAGES/{domain}.po" + ) + subprocess.call( + cmd, + shell=True, + ) + + +def update_locale(): + if i18ndude.exists(): + for domain in domains: + logger.info(f"Updating translations for {domain}") + locale_folder_setup(domain) + _rebuild(domain) + _sync(domain) + else: + logger.error("Not able to find i18ndude") diff --git a/backend/src/searchkit/block/profiles.zcml b/backend/src/searchkit/block/profiles.zcml new file mode 100644 index 00000000..7cae67f0 --- /dev/null +++ b/backend/src/searchkit/block/profiles.zcml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/browserlayer.xml b/backend/src/searchkit/block/profiles/default/browserlayer.xml new file mode 100644 index 00000000..58b6e1be --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/browserlayer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/backend/src/searchkit/block/profiles/default/catalog.xml b/backend/src/searchkit/block/profiles/default/catalog.xml new file mode 100644 index 00000000..9558132b --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/catalog.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/backend/src/searchkit/block/profiles/default/controlpanel.xml b/backend/src/searchkit/block/profiles/default/controlpanel.xml new file mode 100644 index 00000000..a75d00ca --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/controlpanel.xml @@ -0,0 +1,4 @@ + + + + diff --git a/backend/src/searchkit/block/profiles/default/diff_tool.xml b/backend/src/searchkit/block/profiles/default/diff_tool.xml new file mode 100644 index 00000000..6a1c5f4e --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/diff_tool.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/metadata.xml b/backend/src/searchkit/block/profiles/default/metadata.xml new file mode 100644 index 00000000..eec40a34 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/metadata.xml @@ -0,0 +1,7 @@ + + + 1000 + + profile-plone.volto:default + + diff --git a/backend/src/searchkit/block/profiles/default/registry/.gitkeep b/backend/src/searchkit/block/profiles/default/registry/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml new file mode 100644 index 00000000..ea77c18f --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml @@ -0,0 +1,9 @@ + + + + Searchkit Block + + diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml new file mode 100644 index 00000000..e8fd7a43 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml @@ -0,0 +1,9 @@ + + + + Searchkit Block + + diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml new file mode 100644 index 00000000..cd2730fc --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml @@ -0,0 +1,12 @@ + + + + + en + + en + + diff --git a/backend/src/searchkit/block/profiles/default/repositorytool.xml b/backend/src/searchkit/block/profiles/default/repositorytool.xml new file mode 100644 index 00000000..4f674d65 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/repositorytool.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/rolemap.xml b/backend/src/searchkit/block/profiles/default/rolemap.xml new file mode 100644 index 00000000..71ca5838 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/rolemap.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/theme.xml b/backend/src/searchkit/block/profiles/default/theme.xml new file mode 100644 index 00000000..7f916aad --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/theme.xml @@ -0,0 +1,5 @@ + + + barceloneta + true + diff --git a/backend/src/searchkit/block/profiles/default/types.xml b/backend/src/searchkit/block/profiles/default/types.xml new file mode 100644 index 00000000..bed2b0d4 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/types.xml @@ -0,0 +1,10 @@ + + + + diff --git a/backend/src/searchkit/block/profiles/default/types/.gitkeep b/backend/src/searchkit/block/profiles/default/types/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/profiles/initial/metadata.xml b/backend/src/searchkit/block/profiles/initial/metadata.xml new file mode 100644 index 00000000..f768b5a7 --- /dev/null +++ b/backend/src/searchkit/block/profiles/initial/metadata.xml @@ -0,0 +1,4 @@ + + + 1000 + diff --git a/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml b/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml new file mode 100644 index 00000000..d007dd37 --- /dev/null +++ b/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/backend/src/searchkit/block/serializers/__init__.py b/backend/src/searchkit/block/serializers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/serializers/configure.zcml b/backend/src/searchkit/block/serializers/configure.zcml new file mode 100644 index 00000000..edc2fdd1 --- /dev/null +++ b/backend/src/searchkit/block/serializers/configure.zcml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/backend/src/searchkit/block/serializers/summary.py b/backend/src/searchkit/block/serializers/summary.py new file mode 100644 index 00000000..4e0605fe --- /dev/null +++ b/backend/src/searchkit/block/serializers/summary.py @@ -0,0 +1,10 @@ +from plone.restapi.interfaces import IJSONSummarySerializerMetadata +from zope.interface import implementer + + +@implementer(IJSONSummarySerializerMetadata) +class JSONSummarySerializerMetadata: + """Additional metadata to be exposed on listings.""" + + def default_metadata_fields(self): + return {"image_field", "image_scales", "effective", "Subject"} diff --git a/backend/src/searchkit/block/setuphandlers/__init__.py b/backend/src/searchkit/block/setuphandlers/__init__.py new file mode 100644 index 00000000..580bd2c5 --- /dev/null +++ b/backend/src/searchkit/block/setuphandlers/__init__.py @@ -0,0 +1,11 @@ +from Products.CMFPlone.interfaces import INonInstallable +from zope.interface import implementer + + +@implementer(INonInstallable) +class HiddenProfiles: + def getNonInstallableProfiles(self): + """Hide uninstall profile from site-creation and quickinstaller.""" + return [ + "searchkit.block:uninstall", + ] diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep b/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json new file mode 100644 index 00000000..7281b504 --- /dev/null +++ b/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json @@ -0,0 +1,40 @@ +{ + "__version__": "1.0.0", + "_blob_files_": [ + "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png" + ], + "_data_files_": [ + "plone_site_root/data.json", + "a720393b3c0240e5bd27c43fcd2cfd1e/data.json", + "a58ccead718140c1baa98d43595fc3e6/data.json" + ], + "default_page": {}, + "local_roles": { + "a58ccead718140c1baa98d43595fc3e6": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "a720393b3c0240e5bd27c43fcd2cfd1e": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "plone_site_root": { + "local_roles": { + "admin": [ + "Owner" + ] + } + } + }, + "ordering": { + "a58ccead718140c1baa98d43595fc3e6": 0, + "a720393b3c0240e5bd27c43fcd2cfd1e": 42 + }, + "relations": [] +} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json new file mode 100644 index 00000000..08dbccf1 --- /dev/null +++ b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json @@ -0,0 +1,56 @@ +{ + "@id": "/images/plone-foundation.png", + "@type": "Image", + "UID": "a58ccead718140c1baa98d43595fc3e6", + "allow_discussion": false, + "contributors": [], + "created": "2024-05-27T03:23:37+00:00", + "creators": [ + "admin" + ], + "description": "", + "effective": null, + "exclude_from_nav": false, + "expires": null, + "exportimport.constrains": {}, + "exportimport.conversation": [], + "exportimport.versions": {}, + "id": "plone-foundation.png", + "image": { + "blob_path": "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png", + "content-type": "image/png", + "filename": "plone-foundation.png", + "height": 439, + "size": 50737, + "width": 2000 + }, + "is_folderish": false, + "language": "##DEFAULT##", + "layout": "image_view", + "lock": {}, + "modified": "2024-05-27T03:24:00+00:00", + "parent": { + "@id": "/images", + "@type": "Document", + "Subject": [], + "UID": "a720393b3c0240e5bd27c43fcd2cfd1e", + "description": "Site images", + "effective": "1969-12-31T03:00:00+00:00", + "image_field": null, + "image_scales": {}, + "review_state": "private", + "title": "Images", + "type_title": "Page" + }, + "review_state": null, + "rights": "", + "subjects": [ + "Plone" + ], + "title": "Plone Foundation Logo", + "type_title": "Image", + "version": "current", + "workflow_history": {}, + "working_copy": null, + "working_copy_of": null +} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png new file mode 100644 index 0000000000000000000000000000000000000000..9516c4c6392f24444bec95824f40fcf6bf3a0631 GIT binary patch literal 50737 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 z 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 + + + + diff --git a/backend/src/searchkit/block/vocabularies/__init__.py b/backend/src/searchkit/block/vocabularies/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/vocabularies/configure.zcml b/backend/src/searchkit/block/vocabularies/configure.zcml new file mode 100644 index 00000000..fb8b7931 --- /dev/null +++ b/backend/src/searchkit/block/vocabularies/configure.zcml @@ -0,0 +1,3 @@ + + + diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py new file mode 100644 index 00000000..006e9842 --- /dev/null +++ b/backend/tests/conftest.py @@ -0,0 +1,18 @@ +from pytest_plone import fixtures_factory +from searchkit.block.testing import ACCEPTANCE_TESTING +from searchkit.block.testing import FUNCTIONAL_TESTING +from searchkit.block.testing import INTEGRATION_TESTING + + +pytest_plugins = ["pytest_plone"] + + +globals().update( + fixtures_factory( + ( + (ACCEPTANCE_TESTING, "acceptance"), + (FUNCTIONAL_TESTING, "functional"), + (INTEGRATION_TESTING, "integration"), + ) + ) +) diff --git a/backend/tests/setup/test_setup_install.py b/backend/tests/setup/test_setup_install.py new file mode 100644 index 00000000..9a5bcb92 --- /dev/null +++ b/backend/tests/setup/test_setup_install.py @@ -0,0 +1,17 @@ +from searchkit.block import PACKAGE_NAME + + +class TestSetupInstall: + def test_addon_installed(self, installer): + """Test if searchkit.block is installed.""" + assert installer.is_product_installed(PACKAGE_NAME) is True + + def test_browserlayer(self, browser_layers): + """Test that IBrowserLayer is registered.""" + from searchkit.block.interfaces import IBrowserLayer + + assert IBrowserLayer in browser_layers + + def test_latest_version(self, profile_last_version): + """Test latest version of default profile.""" + assert profile_last_version(f"{PACKAGE_NAME}:default") == "1000" diff --git a/backend/tests/setup/test_setup_uninstall.py b/backend/tests/setup/test_setup_uninstall.py new file mode 100644 index 00000000..77a6a8f2 --- /dev/null +++ b/backend/tests/setup/test_setup_uninstall.py @@ -0,0 +1,19 @@ +from searchkit.block import PACKAGE_NAME + +import pytest + + +class TestSetupUninstall: + @pytest.fixture(autouse=True) + def uninstalled(self, installer): + installer.uninstall_product(PACKAGE_NAME) + + def test_addon_uninstalled(self, installer): + """Test if searchkit.block is uninstalled.""" + assert installer.is_product_installed(PACKAGE_NAME) is False + + def test_browserlayer_not_registered(self, browser_layers): + """Test that IBrowserLayer is not registered.""" + from searchkit.block.interfaces import IBrowserLayer + + assert IBrowserLayer not in browser_layers diff --git a/backend/tox.ini b/backend/tox.ini new file mode 100644 index 00000000..842da822 --- /dev/null +++ b/backend/tox.ini @@ -0,0 +1,212 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +[tox] +# We need 4.4.0 for constrain_package_deps. +min_version = 4.4.0 +envlist = + lint + test + dependencies + + +## +# Add extra configuration options in .meta.toml: +# [tox] +# envlist_lines = """ +# my_other_environment +# """ +# config_lines = """ +# my_extra_top_level_tox_configuration_lines +# """ +## + +[testenv] +skip_install = true +allowlist_externals = + echo + false +# Make sure typos like `tox -e formaat` are caught instead of silently doing nothing. +# See https://github.com/tox-dev/tox/issues/2858. +commands = + echo "Unrecognized environment name {envname}" + false + +[testenv:init] +description = Prepare environment +skip_install = true +deps = + mxdev +commands = + mxdev -c mx.ini + echo "Initial setup for mxdev" + + +[testenv:format] +description = automatically reformat code +skip_install = true +deps = + pre-commit +commands = + pre-commit run -a pyupgrade + pre-commit run -a isort + pre-commit run -a black + pre-commit run -a zpretty + +[testenv:lint] +description = run linters that will help improve the code style +skip_install = true +deps = + pre-commit +commands = + # Run pre-commit without chdir to the root of the git repository + python -c "from pre_commit import main; main._adjust_args_and_chdir = lambda args: None; raise SystemExit(main.main())" run -a + +[testenv:dependencies] +description = check if the package defines all its dependencies +skip_install = true +deps = + build + z3c.dependencychecker==2.11 +commands = + python -m build --sdist --no-isolation + dependencychecker + +[testenv:dependencies-graph] +description = generate a graph out of the dependencies of the package +skip_install = false +allowlist_externals = + sh +deps = + pipdeptree==2.5.1 + graphviz # optional dependency of pipdeptree +commands = + sh -c 'pipdeptree --exclude setuptools,wheel,pipdeptree,zope.interface,zope.component --graph-output svg > dependencies.svg' + +[testenv:test] +description = run the distribution tests +use_develop = true +skip_install = false +constrain_package_deps = true +set_env = + ROBOT_BROWSER=headlesschrome + +## +# Specify extra test environment variables in .meta.toml: +# [tox] +# test_environment_variables = """ +# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ +# """ +# +# Set constrain_package_deps .meta.toml: +# [tox] +# constrain_package_deps = false +## +deps = + pytest-plone + pytest + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +## +# Specify additional deps in .meta.toml: +# [tox] +# test_deps_additional = """ +# -esources/plonegovbr.portal_base[test] +# """ +# +# Specify a custom constraints file in .meta.toml: +# [tox] +# constraints_file = "https://my-server.com/constraints.txt" +## +commands = + pytest --disable-warnings {posargs} {toxinidir}/tests +extras = + test + + +[testenv:coverage] +description = get a test coverage report +use_develop = true +skip_install = false +constrain_package_deps = true +set_env = + ROBOT_BROWSER=headlesschrome + +## +# Specify extra test environment variables in .meta.toml: +# [tox] +# test_environment_variables = """ +# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ +# """ +# +# Set constrain_package_deps .meta.toml: +# [tox] +# constrain_package_deps = "false" +## +deps = + pytest-plone + pytest + coverage + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +commands = + coverage run --source searchkit.block -m pytest {posargs} --disable-warnings {toxinidir}/tests + coverage report -m --format markdown + coverage xml +extras = + test + + +[testenv:release-check] +description = ensure that the distribution is ready to release +skip_install = true +deps = + twine + build + towncrier + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +commands = + # fake version to not have to install the package + # we build the change log as news entries might break + # the README that is displayed on PyPI + towncrier build --version=100.0.0 --yes + python -m build --sdist --no-isolation + twine check dist/* + +[testenv:circular] +description = ensure there are no cyclic dependencies +use_develop = true +skip_install = false +set_env = + +## +# Specify extra test environment variables in .meta.toml: +# [tox] +# test_environment_variables = """ +# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ +# """ +## +allowlist_externals = + sh +deps = + pipdeptree + pipforester + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +commands = + # Generate the full dependency tree + sh -c 'pipdeptree -j > forest.json' + # Generate a DOT graph with the circular dependencies, if any + pipforester -i forest.json -o forest.dot --cycles + # Report if there are any circular dependencies, i.e. error if there are any + pipforester -i forest.json --check-cycles -o /dev/null + + +## +# Add extra configuration options in .meta.toml: +# [tox] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/version.txt b/backend/version.txt new file mode 100644 index 00000000..dd6bb261 --- /dev/null +++ b/backend/version.txt @@ -0,0 +1 @@ +6.0.13 diff --git a/dependabot.yml b/dependabot.yml new file mode 100644 index 00000000..df4d15b3 --- /dev/null +++ b/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + + - package-ecosystem: "github-actions" + directory: "/" + schedule: + # Check for updates to GitHub Actions every week + interval: "weekly" diff --git a/devops/README-GITLAB.md b/devops/README-GITLAB.md new file mode 100644 index 00000000..6408b1dc --- /dev/null +++ b/devops/README-GITLAB.md @@ -0,0 +1,61 @@ +# DevOps pipelines in GitLab CI/CD 🚀 + +Welcome to the DevOps pipelines guide for deploying your project using GitLab pipelines! +This README provides step-by-step instructions to set up your GitLab repository and initiate manual deployment pipelines. +Follow each step carefully to correctly configure your environment and secrets. + +## Repository setup 🛠️ + +See [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/). + +### Step 1: Add the deployment environment variables + +1. Visit [GitLab](https://gitlab.com/), or your organization's GitLab instance, and log in with your credentials. +2. Go to your repository at [rohberg/searchkit-block](https://gitlab.com/rohberg/searchkit-block). + Note that you might need to adjust the URL's host name to your organization's. +3. Click on `Settings` at the left menu and select `CI/CD`. +4. Expand the `Variables`. +5. Add all variables and their corresponding values, copying them from the `.env` file. + This file is not commited into the repository, and that's why we need to add them here. + +### Step 2: Add deployment's host SSH key as a known host + +1. Run `ssh-keyscan -t ed25519 DEPLOY_HOST` in a terminal, where you substitute `DEPLOY_HOST` with the address of the host, as in the `.env` file. +2. Copy the prompted value, and add it as a `Variable` in the GitLab web interface, like in the previous step. + Name the variable `SSH_KNOWN_HOSTS`. + +See [Use SSH keys to communicate with GitLab](https://docs.gitlab.com/ee/user/ssh.html). + +### Step 3: Add an SSH deployment key + +1. Create a new SSH key that will be used by GitLab CI/CD to connect to your host. + You can create it in your terminal with the command `ssh-keygen -t ed25519`. +2. Copy the public key to the `DEPLOY_HOST`'s user's `~/.ssh/authorized_keys` file. + Check your `DEPLOY_HOST` and `DEPLOY_USER` in the `.env` file. +3. Copy the private key as a `Variable` like in the previous step. + Name the variable `DEPLOY_SSH_PRIVATE_KEY`. + +*Note:* instead of creating a new key, you can use the one that this template creates for you when you run `make server-setup`. +Check the section "Server Setup" in the file `README.md` in the same folder as this file for details. +Be aware that the key generated by this template will not be added to your git repository because it is explicitly excluded by the `.gitignore` file. + +## Automatic deployment 🚀 + +The deployment is executed automatically on each commit to `main` branch. + +You may want to adapt your development workflow to that, and use a `develop` branch to develop and create merge requests for deployments. + +## Manual deployment 🚀 + +If you want to do manual deployments, you can enable the `when: manual` option of the `.gitlab-ci.yml` file. +By default it is commented. + +## Deployment with an auxiliary docker image + +The provided configuration tries to mimic the `Makefile` deployment flow. +It uses the same commands as you would use when deploying from your computer. + +If you want, you can use an [auxiliary docker image](https://github.com/kitconcept/docker-stack-deploy/), which does the deployment for you instead of using the `Makefile`. +This Docker image is used if you configure the deployments in GitHub. + +Check the commented section of the `.gitlab-ci.yml` file for an example. diff --git a/devops/stacks/searchkit-block.example.com.yml b/devops/stacks/searchkit-block.example.com.yml new file mode 100644 index 00000000..8eb18102 --- /dev/null +++ b/devops/stacks/searchkit-block.example.com.yml @@ -0,0 +1,173 @@ +--- +version: '3.8' + +services: + traefik: + image: traefik:v2.10 + + ports: + - 80:80 + - 443:443 + + deploy: + replicas: 1 + update_config: + parallelism: 1 + delay: 5s + order: start-first + labels: + - traefik.enable=true + - traefik.constraint-label=public + - traefik.http.services.traefik-public.loadbalancer.server.port=8000 + ## Basic Authentication + ### Note: all dollar signs in the hash need to be doubled for escaping. + ### To create user:password pair, it's possible to use this command: + ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g + ### Defaults to admin:admin + #- traefik.http.middlewares.admin-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 + #- traefik.http.routers.traefik-public-https.rule=Host(`traefik-searchkit-block.example.com`) + #- traefik.http.routers.traefik-public-https.entrypoints=https + #- traefik.http.routers.traefik-public-https.tls=true + #- traefik.http.routers.traefik-public-https.service=api@internal + #- traefik.http.routers.traefik-public-https.middlewares=admin-auth + + # GENERIC MIDDLEWARES + - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https + - traefik.http.middlewares.https-redirect.redirectscheme.permanent=true + - traefik.http.middlewares.gzip.compress=true + - traefik.http.middlewares.gzip.compress.excludedcontenttypes=image/png, image/jpeg, font/woff2 + + # GENERIC ROUTERS + - traefik.http.routers.generic-https-redirect.entrypoints=http + - traefik.http.routers.generic-https-redirect.rule=HostRegexp(`{host:.*}`) + - traefik.http.routers.generic-https-redirect.priority=1 + - traefik.http.routers.generic-https-redirect.middlewares=https-redirect + + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - vol-traefik-certs:/certificates + + command: + - --providers.docker + - --providers.docker.constraints=Label(`traefik.constraint-label`, `public`) + - --providers.docker.exposedbydefault=false + - --providers.docker.swarmmode + - --providers.docker.network=searchkit-block-example-com_nw-internal + - --entrypoints.http.address=:80 + - --entrypoints.https.address=:443 + - --certificatesresolvers.le.acme.email=collective@plone.org + - --certificatesresolvers.le.acme.storage=/certificates/acme.json + - --certificatesresolvers.le.acme.tlschallenge=true + - --accesslog + - --log + - --log.level=INFO + - --api + + networks: + - nw-internal + + frontend: + image: ghcr.io/rohberg/searchkit-block-frontend:${STACK_PARAM:-latest} + environment: + RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone + RAZZLE_API_PATH: https://searchkit-block.example.com + depends_on: + - backend + networks: + - nw-internal + deploy: + replicas: 2 + update_config: + parallelism: 1 + delay: 5s + order: start-first + labels: + - traefik.enable=true + - traefik.constraint-label=public + # Service + - traefik.http.services.svc-frontend.loadbalancer.server.port=3000 + # Routers + ## / + - traefik.http.routers.rt-frontend.rule=Host(`searchkit-block.example.com`) + - traefik.http.routers.rt-frontend.entrypoints=https + - traefik.http.routers.rt-frontend.tls=true + - traefik.http.routers.rt-frontend.tls.certresolver=le + - traefik.http.routers.rt-frontend.service=svc-frontend + - traefik.http.routers.rt-frontend.middlewares=gzip + + backend: + image: ghcr.io/rohberg/searchkit-block-backend:${STACK_PARAM:-latest} + environment: + RELSTORAGE_DSN: "dbname='${DB_NAME:-plone}' user='${DB_USER:-plone}' host='${DB_HOST:-db}' password='${DB_PASSWORD:-aiaWltFxzwYy}' port='${DB_PORT:-5432}'" + depends_on: + - db + networks: + - nw-internal + deploy: + replicas: 2 + update_config: + parallelism: 1 + delay: 5s + order: start-first + labels: + - traefik.enable=true + - traefik.constraint-label=public + # Services + - traefik.http.services.svc-backend.loadbalancer.server.port=8080 + # Middlewares + ## VHM rewrite /++api++/ + - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.regex=^/\\+\\+api\\+\\+($$|/.*)" + - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.replacement=/VirtualHostBase/https/searchkit-block.example.com/Plone/++api++/VirtualHostRoot$$1" + ## VHM rewrite /ClassicUI/ + - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.regex=^/ClassicUI($$|/.*)" + - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.replacement=/VirtualHostBase/https/searchkit-block.example.com/Plone/VirtualHostRoot/_vh_ClassicUI$$1" + ## Basic Authentication + ### Note: all dollar signs in the hash need to be doubled for escaping. + ### To create user:password pair, it's possible to use this command: + ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g + ### Defaults to admin:admin + - traefik.http.middlewares.mw-backend-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 + + # Routes + ## /++api++ + - traefik.http.routers.rt-backend-api.rule=Host(`searchkit-block.example.com`) && PathPrefix(`/++api++`) + - traefik.http.routers.rt-backend-api.entrypoints=https + - traefik.http.routers.rt-backend-api.tls=true + - traefik.http.routers.rt-backend-api.service=svc-backend + - traefik.http.routers.rt-backend-api.middlewares=gzip,mw-backend-vhm-api + ## /ClassicUI + - traefik.http.routers.rt-backend-classic.rule=Host(`searchkit-block.example.com`) && PathPrefix(`/ClassicUI`) + - traefik.http.routers.rt-backend-classic.entrypoints=https + - traefik.http.routers.rt-backend-classic.tls=true + - traefik.http.routers.rt-backend-classic.service=svc-backend + - traefik.http.routers.rt-backend-classic.middlewares=gzip,mw-backend-auth,mw-backend-vhm-classic + + db: + image: postgres:14 + environment: + POSTGRES_USER: plone + POSTGRES_PASSWORD: aiaWltFxzwYy + POSTGRES_DB: plone + deploy: + replicas: 1 + update_config: + parallelism: 1 + delay: 1s + order: stop-first + volumes: + - vol-site-data:/var/lib/postgresql/data + networks: + - nw-internal + +volumes: + vol-traefik-certs: {} + vol-site-data: + driver_opts: + type: none + device: "${DEPLOY_FOLDER:/srv/searchkit-block/data}" + o: bind + +networks: + nw-internal: + internal: true + driver: overlay diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..dc477c66 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,106 @@ +--- +name: searchkit-block + +services: + traefik: + image: traefik:v2.10 + + ports: + - 80:80 + + labels: + - traefik.enable=true + - traefik.constraint-label=public + - traefik.http.routers.traefik-public-http.rule=Host(`traefik.searchkit-block.localhost`) + - traefik.http.routers.traefik-public-http.entrypoints=http + - traefik.http.routers.traefik-public-http.service=api@internal + - traefik.http.services.traefik-public.loadbalancer.server.port=8000 + + # GENERIC MIDDLEWARES + - traefik.http.middlewares.gzip.compress=true + - traefik.http.middlewares.gzip.compress.excludedcontenttypes=image/png, image/jpeg, font/woff2 + + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + + command: + - --providers.docker + - --providers.docker.constraints=Label(`traefik.constraint-label`, `public`) + - --providers.docker.exposedbydefault=false + - --entrypoints.http.address=:80 + - --accesslog + - --log + - --api + frontend: + build: + context: ./frontend + args: + - VOLTO_VERSION=${VOLTO_VERSION} + environment: + RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone + depends_on: + - backend + labels: + - traefik.enable=true + - traefik.constraint-label=public + # Service + - traefik.http.services.svc-frontend.loadbalancer.server.port=3000 + # Routers + ## / + - traefik.http.routers.rt-frontend.rule=Host(`searchkit-block.localhost`) + - traefik.http.routers.rt-frontend.entrypoints=http + - traefik.http.routers.rt-frontend.service=svc-frontend + - traefik.http.routers.rt-frontend.middlewares=gzip + + backend: + build: + context: ./backend + args: + - PLONE_VERSION=${PLONE_VERSION} + environment: + RELSTORAGE_DSN: "dbname='${DB_NAME:-plone}' user='${DB_NAME:-plone}' host='${DB_HOST:-db}' password='${DB_PASSWORD:-aiaWltFxzwYy}' port='${DB_PORT:-5432}'" + depends_on: + - db + labels: + - traefik.enable=true + - traefik.constraint-label=public + # Services + - traefik.http.services.svc-backend.loadbalancer.server.port=8080 + + # Middlewares + ## VHM rewrite /++api++/ + - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.regex=^/\\+\\+api\\+\\+($$|/.*)" + - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.replacement=/VirtualHostBase/http/searchkit-block.localhost/Plone/++api++/VirtualHostRoot$$1" + + ## VHM rewrite /ClassicUI/ + - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.regex=^/ClassicUI($$|/.*)" + - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.replacement=/VirtualHostBase/http/searchkit-block.localhost/Plone/VirtualHostRoot/_vh_ClassicUI$$1" + + ## Basic Authentication + ### Note: all dollar signs in the hash need to be doubled for escaping. + ### To create user:password pair, it's possible to use this command: + ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g + ### Defaults to admin:admin + - traefik.http.middlewares.mw-backend-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 + # Routers + - traefik.http.routers.rt-backend-api.rule=Host(`searchkit-block.localhost`) && (PathPrefix(`/++api++`)) + - traefik.http.routers.rt-backend-api.entrypoints=http + - traefik.http.routers.rt-backend-api.service=svc-backend + - traefik.http.routers.rt-backend-api.middlewares=gzip,mw-backend-vhm-api + ## /ClassicUI + - traefik.http.routers.rt-backend-classic.rule=Host(`searchkit-block.localhost`) && PathPrefix(`/ClassicUI`) + - traefik.http.routers.rt-backend-classic.entrypoints=http + - traefik.http.routers.rt-backend-classic.service=svc-backend + - traefik.http.routers.rt-backend-classic.middlewares=gzip,mw-backend-auth,mw-backend-vhm-classic + + db: + image: postgres:14 + environment: + POSTGRES_USER: plone + POSTGRES_PASSWORD: aiaWltFxzwYy + POSTGRES_DB: plone + volumes: + - vol-site-data:/var/lib/postgresql/data + +volumes: + vol-site-data: {} diff --git a/docker-opensearch/Dockerfile.ingest b/docker-opensearch/Dockerfile.ingest deleted file mode 100644 index 739e8a84..00000000 --- a/docker-opensearch/Dockerfile.ingest +++ /dev/null @@ -1,3 +0,0 @@ -FROM ghcr.io/collective/collective.elastic.ingest:latest - -COPY docker-opensearch/ingest-configuration /configuration diff --git a/docker-opensearch/Dockerfile.opensearch b/docker-opensearch/Dockerfile.opensearch deleted file mode 100644 index 8d685ecf..00000000 --- a/docker-opensearch/Dockerfile.opensearch +++ /dev/null @@ -1,6 +0,0 @@ -FROM opensearchproject/opensearch:latest - -COPY docker-opensearch/opensearch-configuration/keywords.txt /usr/share/opensearch/config/keywords.txt -COPY docker-opensearch/opensearch-configuration/lexicon.txt /usr/share/opensearch/config/lexicon.txt - -RUN /usr/share/opensearch/bin/opensearch-plugin install --batch ingest-attachment diff --git a/docker-opensearch/README.md b/docker-opensearch/README.md deleted file mode 100644 index ad7e25ec..00000000 --- a/docker-opensearch/README.md +++ /dev/null @@ -1,4 +0,0 @@ -See OpenSearch with Docker Compose https://github.com/collective/collective.elastic.ingest/tree/fd87bea1d11a97ae231a824aa3a0c145988faede#opensearch-with-docker-compose - - docker buildx use default - docker buildx build --tag opensearch-ingest-attachment:latest . \ No newline at end of file diff --git a/docker-opensearch/docker-compose.yml b/docker-opensearch/docker-compose.yml deleted file mode 100644 index 5323d79b..00000000 --- a/docker-opensearch/docker-compose.yml +++ /dev/null @@ -1,117 +0,0 @@ -# ***************** -# OBSOLETE -# Merged with docker-compose for backend and frontend -# ********************* - -# opensearch needs sysctl -w vm.max_map_count=262144 -# see https://stackoverflow.com/questions/66444027/max-virtual-memory-areas-vm-max-map-count-65530-is-too-low-increase-to-at-lea -version: '3' -services: - - ingest: - image: ghcr.io/collective/collective.elastic.ingest:latest - environment: - MAPPINGS_FILE: ${MAPPINGS_FILE} - ANALYSIS_FILE: ${ANALYSIS_FILE} - PREPROCESSINGS_FILE: ${PREPROCESSINGS_FILE} - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - CELERY_BROKER: ${CELERY_BROKER?unset} - CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} - CELEREY_LOG_LEVEL: ${CELERY_LOG_LEVEL:-info} - PLONE_SERVICE: ${PLONE_SERVICE?unset} - PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} - PLONE_USER: ${PLONE_USER?unset} - PLONE_PASSWORD: ${PLONE_PASSWORD?unset} - SENTRY_DSN: ${SENTRY_DSN} - volumes: - - ingest-configuration:/configuration - networks: - - opensearch-net - - redis: - image: 'redis:latest' - networks: - - opensearch-net - ports: - - 6379:6379 - - opensearch: - build: - context: ../ - dockerfile: ./docker-opensearch/Dockerfile.opensearch - # args: - # ADDON_NAME: "${ADDON_NAME}" - # ADDON_PATH: "${ADDON_PATH}" - # VOLTO_VERSION: ${VOLTO_VERSION:-17} - environment: - - cluster.name=opensearch-cluster - - node.name=opensearch - - discovery.type=single-node - - bootstrap.memory_lock=true - - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx2g" - ulimits: - memlock: - soft: -1 - hard: -1 - nofile: - soft: 65536 - hard: 65536 - volumes: - - opensearch-data:/usr/share/opensearch/data - - "./opensearch-configuration/keywords.txt:/usr/share/opensearch/config/keywords.txt" - - "./opensearch-configuration/lexicon.txt:/usr/share/opensearch/config/lexicon.txt" - ports: - - 9200:9200 # REST API - - 9600:9600 # Performance Analyzer - networks: - - opensearch-net - tty: true - profiles: - - dev - - prod - - - opensearch-dashboards: - image: opensearchproject/opensearch-dashboards:latest - ports: - - 5601:5601 - expose: - - "5601" - environment: - OPENSEARCH_HOSTS: '["http://opensearch:9200"]' - networks: - - opensearch-net - profiles: - - dev - - # dejavu: - # image: appbaseio/dejavu:latest - # container_name: dejavu - # ports: - # - "1358:1358" - # expose: - # - "1358" - # links: - # - opensearch - -volumes: - opensearch-data: - ingest-configuration: - driver: local - driver_opts: - type: none - device: ./ingest-configuration - o: bind - # opensearch-configuration: - # driver: local - # driver_opts: - # type: none - # device: ./opensearch-configuration - # o: bind -networks: - opensearch-net: - diff --git a/docker-opensearch/ingest-configuration/analysis.json b/docker-opensearch/ingest-configuration/analysis.json deleted file mode 100644 index 194b395d..00000000 --- a/docker-opensearch/ingest-configuration/analysis.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "settings": { - "analysis": { - "analyzer": { - "german_analyzer": { - "tokenizer": "standard", - "filter": [ - "lowercase", - "custom_dictionary_decompounder", - "no_stem", - "light_german_stemmer" - ] - }, - "german_exact_analyzer": { - "tokenizer": "standard", - "filter": [ - "lowercase" - ] - } - }, - "filter": { - "custom_dictionary_decompounder": { - "type": "dictionary_decompounder", - "word_list_path": "lexicon.txt" - }, - "no_stem": { - "type": "keyword_marker", - "keywords_path": "keywords.txt" - }, - "light_german_stemmer": { - "type": "stemmer", - "language": "light_german" - } - } - } - } -} \ No newline at end of file diff --git a/docker-opensearch/ingest-configuration/mappings.json b/docker-opensearch/ingest-configuration/mappings.json deleted file mode 100644 index bdb43cef..00000000 --- a/docker-opensearch/ingest-configuration/mappings.json +++ /dev/null @@ -1,398 +0,0 @@ -{ - "behaviors/plone.basic/title": { - "type": "text", - "analyzer": "german_analyzer", - "term_vector": "with_positions_offsets", - "fields": { - "exact": { - "type": "text", - "analyzer": "german_exact_analyzer", - "term_vector": "with_positions_offsets" - } - } - }, - "behaviors/plone.basic/description": { - "type": "text", - "analyzer": "german_analyzer", - "term_vector": "with_positions_offsets", - "fields": { - "exact": { - "type": "text", - "analyzer": "german_exact_analyzer", - "term_vector": "with_positions_offsets" - } - } - }, - "behaviors/plone.categorization/subjects": { - "type": "text", - "analyzer": "german_analyzer", - "term_vector": "with_positions_offsets", - "fields": { - "exact": { - "type": "text", - "analyzer": "german_exact_analyzer", - "term_vector": "with_positions_offsets" - } - } - }, - "behaviors/rohberg.elasticsearchblocks.elastic_search_blocks/blocks_plaintext": { - "type": "text", - "analyzer": "german_analyzer", - "term_vector": "with_positions_offsets", - "fields": { - "exact": { - "type": "text", - "analyzer": "german_exact_analyzer", - "term_vector": "with_positions_offsets" - } - } - }, - "behaviors/plone.allowdiscussion/allow_discussion": { - "type": "boolean" - }, - "plone.app.textfield.RichText": { - "pipeline": { - "source": "{name}__data", - "target": "{name}__extracted", - "processors": [ - { - "attachment": { - "field": "{source}", - "target_field": "{target}", - "ignore_missing": true - } - }, - { - "remove": { - "field": "{source}", - "ignore_missing": true - } - } - ], - "type": { - "type": "nested", - "dynamic": false, - "properties": { - "author": { - "type": "text" - }, - "content": { - "type": "text" - }, - "content_length": { - "type": "long" - }, - "content_type": { - "type": "keyword" - }, - "date": { - "type": "date" - }, - "keywords": { - "type": "keyword" - }, - "language": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "title": { - "type": "text" - } - } - }, - "expansion": { - "method": "field", - "field": "data" - } - }, - "definition": { - "type": "nested", - "dynamic": false, - "properties": { - "data": { - "type": "text" - }, - "content-type": { - "type": "keyword" - }, - "encoding": { - "type": "keyword" - } - } - } - }, - "plone.namedfile.field.NamedBlobFile": { - "pipeline": { - "source": "{name}__data", - "target": "{name}__extracted", - "processors": [ - { - "attachment": { - "field": "{source}", - "target_field": "{target}", - "ignore_missing": true - } - }, - { - "remove": { - "field": "{source}", - "ignore_missing": true - } - } - ], - "type": { - "type": "nested", - "dynamic": false, - "properties": { - "author": { - "type": "text" - }, - "content": { - "type": "text" - }, - "content_length": { - "type": "long" - }, - "content_type": { - "type": "keyword" - }, - "date": { - "type": "date" - }, - "keywords": { - "type": "keyword" - }, - "language": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "title": { - "type": "text" - } - } - }, - "expansion": { - "method": "fetch", - "field": "download" - } - }, - "definition": { - "type": "nested", - "dynamic": false, - "properties": { - "content-type": { - "type": "keyword" - }, - "download": { - "type": "text" - }, - "filename": { - "type": "text" - }, - "size": { - "type": "long" - } - } - } - }, - "plone.namedfile.field.NamedBlobImage": { - "pipeline": { - "source": "{name}__data", - "target": "{name}__extracted", - "processors": [ - { - "attachment": { - "field": "{source}", - "target_field": "{target}", - "ignore_missing": true - } - }, - { - "remove": { - "field": "{source}", - "ignore_missing": true - } - } - ], - "type": { - "type": "nested", - "dynamic": false, - "properties": { - "author": { - "type": "text" - }, - "content": { - "type": "text" - }, - "content_length": { - "type": "long" - }, - "content_type": { - "type": "keyword" - }, - "date": { - "type": "date" - }, - "keywords": { - "type": "keyword" - }, - "language": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "title": { - "type": "text" - } - } - }, - "expansion": { - "method": "fetch", - "field": "download" - } - }, - "definition": { - "type": "nested", - "dynamic": false, - "properties": { - "content-type": { - "type": "keyword" - }, - "download": { - "type": "text" - }, - "filename": { - "type": "text" - }, - "size": { - "type": "long" - }, - "height": { - "type": "long" - }, - "width": { - "type": "long" - }, - "scales": { - "type": "nested", - "dynamic": false, - "properties": { - "download": { - "type": "text" - }, - "height": { - "type": "long" - }, - "width": { - "type": "long" - } - } - } - } - } - }, - "plone.schema.jsonfield.JSONField": { - "type": "text" - }, - "z3c.relationfield.schema.RelationList": { - "type": "nested", - "dynamic": false, - "properties": { - "@id": { - "type": "keyword" - }, - "@type": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "review_state": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "z3c.relationfield.schema.RelationChoice": { - "type": "nested", - "dynamic": false, - "properties": { - "@id": { - "type": "keyword" - }, - "@type": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "review_state": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "zope.schema._bootstrapfields.Bool": { - "type": "boolean" - }, - "zope.schema._bootstrapfields.Int": { - "type": "long" - }, - "zope.schema._bootstrapfields.Text": { - "type": "text", - "analyzer": "german_analyzer", - "term_vector": "with_positions_offsets", - "fields": { - "exact": { - "type": "text", - "analyzer": "german_exact_analyzer", - "term_vector": "with_positions_offsets" - } - } - }, - "zope.schema._bootstrapfields.TextLine": { - "type": "text", - "analyzer": "german_analyzer", - "term_vector": "with_positions_offsets", - "fields": { - "exact": { - "type": "text", - "analyzer": "german_exact_analyzer", - "term_vector": "with_positions_offsets" - } - } - }, - "zope.schema._field.ASCIILine": { - "type": "keyword" - }, - "zope.schema._field.Choice": { - "type": "keyword" - }, - "zope.schema._field.Datetime": { - "type": "date" - }, - "zope.schema._field.Dict": { - "type": "object" - }, - "zope.schema._field.Float": { - "type": "double" - }, - "zope.schema._field.List": { - "type": "keyword" - }, - "zope.schema._field.Tuple": { - "type": "keyword" - }, - "zope.schema._field.URI": { - "type": "text" - } -} \ No newline at end of file diff --git a/docker-opensearch/ingest-configuration/mappings_example.json b/docker-opensearch/ingest-configuration/mappings_example.json deleted file mode 100644 index 1ed30087..00000000 --- a/docker-opensearch/ingest-configuration/mappings_example.json +++ /dev/null @@ -1,455 +0,0 @@ -{ - "behaviors/plone.basic/title": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - } - }, - "behaviors/plone.basic/description": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - - } - }, - "behaviors/plone.categorization/subjects": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - - } - }, - "behaviors/plone.allowdiscussion/allow_discussion": { - "type": "boolean" - }, - - "plone.app.textfield.RichText": { - "pipeline": { - "source": "{name}__data", - "target": "{name}__extracted", - "processors": [ - { - "attachment": { - "field": "{source}", - "target_field": "{target}", - "ignore_missing": true - } - }, - { - "remove": { - "field": "{source}", - "ignore_missing": true - } - } - ], - "type": { - "type": "nested", - "dynamic": false, - "properties": { - "author": { - "type": "text" - }, - "content": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - - } - }, - "content_length": { - "type": "long" - }, - "content_type": { - "type": "keyword" - }, - "date": { - "type": "date" - }, - "keywords": { - "type": "keyword" - }, - "language": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "title": { - "type": "text" - } - } - }, - "expansion": { - "method": "field", - "field": "data" - } - }, - "definition": { - "type": "nested", - "dynamic": false, - "properties": { - "data": { - "type": "text" - }, - "content-type": { - "type": "keyword" - }, - "encoding": { - "type": "keyword" - } - } - } - }, - "plone.namedfile.field.NamedBlobFile": { - "pipeline": { - "source": "{name}__data", - "target": "{name}__extracted", - "processors": [ - { - "attachment": { - "field": "{source}", - "target_field": "{target}", - "ignore_missing": true - } - }, - { - "remove": { - "field": "{source}", - "ignore_missing": true - } - } - ], - "type": { - "type": "nested", - "dynamic": false, - "properties": { - "author": { - "type": "text" - }, - "content": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - - } - }, - "content_length": { - "type": "long" - }, - "content_type": { - "type": "keyword" - }, - "date": { - "type": "date" - }, - "keywords": { - "type": "keyword" - }, - "language": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "title": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - } - } - } - }, - "expansion": { - "method": "fetch", - "field": "download" - } - }, - "definition": { - "type": "nested", - "dynamic": false, - "properties": { - "content-type": { - "type": "keyword" - }, - "download": { - "type": "text" - }, - "filename": { - "type": "text" - }, - "size": { - "type": "long" - } - } - } - }, - "plone.namedfile.field.NamedBlobImage": { - "pipeline": { - "source": "{name}__data", - "target": "{name}__extracted", - "processors": [ - { - "attachment": { - "field": "{source}", - "target_field": "{target}", - "ignore_missing": true - } - }, - { - "remove": { - "field": "{source}", - "ignore_missing": true - } - } - ], - "type": { - "type": "nested", - "dynamic": false, - "properties": { - "author": { - "type": "text" - }, - "content": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - } - }, - "content_length": { - "type": "long" - }, - "content_type": { - "type": "keyword" - }, - "date": { - "type": "date" - }, - "keywords": { - "type": "keyword" - }, - "language": { - "type": "keyword" - }, - "name": { - "type": "text" - }, - "title": { - "type": "text" - } - } - }, - "expansion": { - "method": "fetch", - "field": "download" - } - }, - "definition": { - "type": "nested", - "dynamic": false, - "properties": { - "content-type": { - "type": "keyword" - }, - "download": { - "type": "text" - }, - "filename": { - "type": "text" - }, - "size": { - "type": "long" - }, - "height": { - "type": "long" - }, - "width": { - "type": "long" - }, - "scales": { - "type": "nested", - "dynamic": false, - "properties": { - "download": { - "type": "text" - }, - "height": { - "type": "long" - }, - "width": { - "type": "long" - } - } - } - } - } - }, - "plone.schema.jsonfield.JSONField": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - } - }, - "z3c.relationfield.schema.RelationList": { - "type": "nested", - "dynamic": false, - "properties": { - "@id": { - "type": "keyword" - }, - "@type": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "review_state": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "z3c.relationfield.schema.RelationChoice": { - "type": "nested", - "dynamic": false, - "properties": { - "@id": { - "type": "keyword" - }, - "@type": { - "type": "keyword" - }, - "description": { - "type": "text" - }, - "review_state": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "zope.schema._bootstrapfields.Bool": { - "type": "boolean" - }, - "zope.schema._bootstrapfields.Int": { - "type": "long" - }, - "zope.schema._bootstrapfields.Text": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - } - }, - "zope.schema._bootstrapfields.TextLine": { - "type": "text", - "fields": { - "de": { - "type": "text", - "analyzer": "german" - }, - "en": { - "type": "text", - "analyzer": "english" - } - } - }, - "zope.schema._field.ASCIILine": { - "type": "keyword" - }, - "zope.schema._field.Choice": { - "type": "nested", - "dynamic": false, - "properties": { - "token": { - "type": "keyword" - }, - "title": { - "type": "text" - } - } - }, - "zope.schema._field.Datetime": { - "type": "date" - }, - "zope.schema._field.Dict": { - "type": "object" - }, - "zope.schema._field.Float": { - "type": "double" - }, - "zope.schema._field.List": { - "type": "keyword" - }, - "zope.schema._field.Tuple": { - "type": "keyword" - }, - "zope.schema._field.URI": { - "type": "text" - } - } diff --git a/docker-opensearch/ingest-configuration/preprocessings.json b/docker-opensearch/ingest-configuration/preprocessings.json deleted file mode 100644 index 40be4e8a..00000000 --- a/docker-opensearch/ingest-configuration/preprocessings.json +++ /dev/null @@ -1,234 +0,0 @@ -[ - - { - "comment": "... needs this information, essential rewrite, do not remove", - "action": "rewrite", - "configuration": { - "source": "@components/collectiveelastic/section_id", - "target": "section", - "enforce": true - } - }, - { - "comment": "Schema for above section_id, do not remove", - "action": "additional_schema", - "configuration": { - "name": "section", - "field": "zope.schema._field.ASCIILine" - } - }, - - { - "comment": "Remove all empty fields.", - "action": "remove_empty" - }, - { - "comment": "Transform vocabularies to it token only form.", - "action": "strip_vocabulary_term_titles" - }, - { - "comment": "ProxyIndex needs this information, essential rewrite, do not remove", - "action": "rewrite", - "configuration": { - "source": "@components/collectiveelastic/catalog_rid", - "target": "rid", - "enforce": true - } - }, - { - "comment": "Schema for above rid, do not remove", - "action": "additional_schema", - "configuration": { - "name": "rid", - "field": "zope.schema._field.ASCIILine" - } - }, - { - "comment": "CESP Restapi Volto endpoint needs this information, essential rewrite, do not remove", - "action": "rewrite", - "configuration": { - "source": "@components/collectiveelastic/allowedRolesAndUsers", - "target": "allowedRolesAndUsers", - "enforce": true - } - }, - { - "comment": "Schema for above allowedRolesAndUsers, do not remove", - "action": "additional_schema", - "configuration": { - "name": "allowedRolesAndUsers", - "field": "zope.schema._field.List" - } - }, - { - "comment": "Remove plone.restapi parent information", - "action": "remove", - "configuration": { - "target": "parent" - } - }, - { - "comment": "Remove plone.restapi lock information", - "action": "remove", - "configuration": { - "target": "lock" - } - }, - { - "comment": "Remove plone.restapi batching information", - "action": "remove", - "configuration": { - "target": "batching" - } - }, - { - "comment": "If Volto is available, this is important for full text search, do not remove unless in Classic UI only environments", - "action": "rewrite", - "configuration": { - "source": "@components/collectiveelastic/blocks_plaintext", - "target": "blocks_plaintext", - "enforce": false - } - }, - { - "comment": "If Volto is available, this is important for full text search, do not remove unless in Classic UI only environments", - "action": "additional_schema", - "configuration": { - "name": "blocks_plaintext", - "field": "zope.schema._bootstrapfields.Text" - } - }, - { - "comment": "If volto.blocks is available, remove all its fields.", - "action": "full_remove", - "configuration": { - "section": "behaviors", - "name": "volto.blocks" - } - }, - { - "comment": "If volto.blocks.editable.layout is available, remove all its fields.", - "action": "full_remove", - "configuration": { - "section": "behaviors", - "name": "volto.blocks.editable.layout" - } - }, - { - "comment": "We want the field to be called portal_type, not @type, so we rewrite it.", - "action": "rewrite", - "configuration": { - "source": "@type", - "target": "portal_type" - } - }, - { - "comment": "Schema for above portal_type", - "action": "additional_schema", - "configuration": { - "name": "portal_type", - "field": "zope.schema._field.ASCIILine" - } - }, - { - "comment": "After all the rewrites, we want to remove the @components field, as it is not needed anymore.", - "action": "remove", - "configuration": { - "target": "@components" - } - }, - { - "comment": "No need for restapi specific folder/collection information.", - "action": "remove", - "configuration": { - "target": "items" - } - }, - { - "comment": "No need for restapi specific information.", - "action": "remove", - "configuration": { - "target": "items_total" - } - }, - { - "comment": "No need for restapi specific information.", - "action": "remove", - "configuration": { - "target": "previous_item" - } - }, - { - "comment": "No need for restapi specific information.", - "action": "remove", - "configuration": { - "target": "next_item" - } - }, - { - "comment": "No need for restapi versioning related information.", - "action": "remove", - "configuration": { - "target": "version" - } - }, - { - "comment": "No need for plone.versioning related information.", - "action": "full_remove", - "configuration": { - "section": "behaviors", - "name": "plone.versioning" - } - }, - { - "comment": "No need for plone.collection related information.", - "action": "full_remove", - "configuration": { - "section": "behaviors", - "name": "plone.collection" - } - }, - { - "comment": "No need for plone.thumb_icon related information.", - "action": "full_remove", - "configuration": { - "section": "behaviors", - "name": "plone.thumb_icon" - } - }, - { - "comment": "No need for plone.tableofcontents related information.", - "action": "full_remove", - "configuration": { - "section": "behaviors", - "name": "plone.tableofcontents" - } - }, - { - "comment": "No need for plone.layoutaware (Mosaic) layout related.", - "action": "field_remove", - "configuration": { - "section": "behaviors", - "name": "plone.layoutaware", - "field": "contentLayout" - } - }, - { - "comment": "No need for plone.layoutaware (Mosaic) layout related.", - "action": "field_remove", - "configuration": { - "section": "behaviors", - "name": "plone.layoutaware", - "field": "pageSiteLayout" - } - }, - { - "comment": "No need for plone.layoutaware (Mosaic) layout related.", - "action": "field_remove", - "configuration": { - "section": "behaviors", - "name": "plone.layoutaware", - "field": "sectionSiteLayout" - } - } -] \ No newline at end of file diff --git a/docker-opensearch/opensearch-configuration/keywords.txt b/docker-opensearch/opensearch-configuration/keywords.txt deleted file mode 100644 index ff5bb855..00000000 --- a/docker-opensearch/opensearch-configuration/keywords.txt +++ /dev/null @@ -1,3 +0,0 @@ -börse -zusammenführen -ük \ No newline at end of file diff --git a/docker-opensearch/opensearch-configuration/lexicon.txt b/docker-opensearch/opensearch-configuration/lexicon.txt deleted file mode 100644 index bd6f044e..00000000 --- a/docker-opensearch/opensearch-configuration/lexicon.txt +++ /dev/null @@ -1,360 +0,0 @@ -abacus -abbildung -abbruch -abfrage -abgleich -abgrenzung -abhängigkeit -abklärung -abkommen -abkürzung -ablage -ablauf -ableitung -abmeldung -abonnement -abonnent -abraxas -abrechnung -abruf -abschluss -abschnitt -absprache -absturz -abteilung -abweichung -abweisung -abzug -adapter -administration -administrator -adress -adressdaten -adresse -ahv -aktion -aktiv -aktualisieren -aktualisierung -aktuare -aktuell -akzent -akzeptanz -allgemein -alter -alternativ -amt -amtes -analog -analyse -anbieter -anbindung -anfang -anforderung -anfrage -angabe -angebot -anlage -anlegen -anleitung -anlieferung -anliegen -anmelde -anmeldung -anmeldungen -anpassen -anpassung -anrecht -anrede -anregungen -ansatz -anschliessend -anschluss -anschrift -ansehen -ansicht -ansprechen -anspruch -anstoss -anteil -antrag -antwort -anwender -anwendung -anwendungsfall -anzahl -anzeige -app -applikation -arbeit -arbeitgeber -arbeitnehmer -arbeitsliste -arbeitszeit -architektur -archiv -artikel -arzt -aspekt -assistent -attribut -aufbau -aufbereitung -aufbewahrung -aufenthalts -aufforderung -aufgabe -auflage -auflistung -aufnahme -aufruf -aufsplittung -auftrag -aufwand -aufwendungen -ausbildung -ausdruck -ausführen -ausgabe -auskunft -ausland -ausländer -ausnahme -ausprägung -austausch -auswahl -auswertung -auswirkung -auszahlungen -auszubildend -auszubildender -auszug -authentisierung -authorization -auto -autodat -automatisch -automatisiert -autor -bachelor -bank -barcode -basis -batch -baum -beachten -bearbeitung -beauftragt -bedarf -bedeutung -bedingungen -bedürfnis -beendigung -befreiung -begriff -begründung -behörde -beilagen -beispiel -beistand -beitrag -beitritt -beleg -bemerkung -bemessung -benachrichtigung -benutzend -benutzer -berater -beratung -berechnung -berechtigung -bereich -bereinigung -bereitstellung -bericht -berücksichtigung -beruf -beschaffung -beschäftigung -bescheid -beschlussdatum -beschreibung -beschrieb -beschulung -besitzer -bestimmung -betrag -betrieb -bewegung -bewerbung -bewertung -bewilligung -bezeichnung -beziehung -bilanz -bild -bildung -block -börse -branche -brückenangebot -buchhaltung -buchung -business -businesscase -code -company -content -contract -control -darlehen -darstellung -datei -daten -datenbank -datensatz -definition -detail -deutsch -developer -dienst -direkt -dokument -dokumentation -dossier -druck -durchführung -einführung -eingabe -eingang -element -eltern -email -entwickler -erfassung -erhebung -evaluation -exam -experte -experten -fach -fachschule -fehler -feld -filial -filter -finanz -format -formular -freigabe -funktion -gemeinde -gesamt -geschäfts -grund -gruppe -gültigkeit -handbuch -haupt -hochschul -identifikator -import -informatik -information -institution -jahr -jahres -job -kandidat -kanton -katalog -kern -klassen -kompass -kontakt -konto -kontroll -korrespondenz -kosten -kurs -lehr -lehre -lehrer -lehrstelle -leistung -leit -lieferung -liste -lokation -lösch -mandant -melde -mitarbeiter -modell -modul -mutation -noten -organisation -pendenz -person -portal -praktikant -praktikum -profil -programm -prüfung -qualification -qualifikation -rechnung -referenz -regel -register -schul -schule -schüler -schulung -selektion -semester -sonder -sozial -spezial -sprach -sprache -stamm -stammdaten -standard -status -stelle -steuerung -stipendien -stipendium -studien -such -system -tarif -team -teil -terminal -test -text -transaktion -transaktions -ük -überbetrieblich -übermittlung -überschuss -übertrag -variante -verarbeitung -verarbeitungs -verfahren -vertrag -verträge -vorbereitung -vorjahr -weiterbildung -weiterbildungs -zahlung -zahlungs -zusatz \ No newline at end of file diff --git a/dockerfiles/Dockerfile.acceptance b/dockerfiles/Dockerfile.acceptance deleted file mode 100644 index a6e51074..00000000 --- a/dockerfiles/Dockerfile.acceptance +++ /dev/null @@ -1,16 +0,0 @@ -# syntax=docker/dockerfile:1 -ARG VOLTO_VERSION -FROM plone/frontend-dev:${VOLTO_VERSION} - -ARG ADDON_NAME -ARG ADDON_PATH - -# Copy volto.config.js -COPY --chown=node:node volto.config.js* /app/ - -COPY --chown=node:node package.json /app/src/addons/${ADDON_PATH}/ - -RUN <=2.0.0 - bin/pip install collective.elastic.plone[redis,opensearch]>=2.0.1 -EOT - - -FROM plone/server-acceptance:${PLONE_VERSION} - -ENV CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone" -# Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex -ENV INSTALL_PRODUCTS="collective.elastic.plone" -ENV APPLY_PROFILES="collective.elastic.plone:default,plone.restapi:default,plone.volto:default,plone.volto:default-homepage" - -# Copy /app from builder -COPY --from=builder /app /app - -RUN < [ + o, + registry.packages[o].modulePath, +]); + +module.exports = { + extends: `${coreLocation}/packages/volto/.eslintrc`, + rules: { + 'import/no-unresolved': 1, + }, + settings: { + 'import/resolver': { + alias: { + map: [ + ['@plone/volto', `${coreLocation}/packages/volto/src`], + ['@plone/volto-slate', `${coreLocation}/packages/volto-slate/src`], + ['@plone/registry', `${coreLocation}/packages/registry/src`], + [ + 'volto-searchkit-block', + './packages/volto-searchkit-block/src', + ], + ...addonAliases, + ], + extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], + }, + }, + }, +}; diff --git a/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 00000000..cdcd9372 --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,13 @@ +.*project +.settings/ +.vscode +*~ +acceptance/cypress/videos/ +acceptance/node_modules +.storybook-build +build +core +node_modules +results +yarn.lock +/public diff --git a/frontend/.npmignore b/frontend/.npmignore new file mode 100644 index 00000000..eb6fa944 --- /dev/null +++ b/frontend/.npmignore @@ -0,0 +1,16 @@ +.vscode/ +.history +logs +*.log +npm-debug.log* +.DS_Store +*.swp +yarn-error.log + +node_modules +dockerfiles +acceptance +build +dist +yarn.lock +.storybook diff --git a/frontend/.npmrc b/frontend/.npmrc new file mode 100644 index 00000000..71c68438 --- /dev/null +++ b/frontend/.npmrc @@ -0,0 +1,6 @@ +public-hoist-pattern[]=*eslint* +public-hoist-pattern[]=*prettier* +public-hoist-pattern[]=*stylelint* +public-hoist-pattern[]=*cypress* +public-hoist-pattern[]=*process* +public-hoist-pattern[]=*parcel* diff --git a/frontend/.pre-commit-config.yaml b/frontend/.pre-commit-config.yaml new file mode 100644 index 00000000..3c7d331c --- /dev/null +++ b/frontend/.pre-commit-config.yaml @@ -0,0 +1,27 @@ +repos: + - repo: local + hooks: + - id: prettier + name: prettier + entry: pnpm exec prettier --write + language: system + files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' + types: [file] + - id: eslint + name: eslint + entry: bash -c "VOLTOCONFIG=$(pwd)/volto.config.js pnpm exec eslint --max-warnings=0 --fix" + language: system + files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' + types: [file] + - id: stylelint + name: stylelint + entry: pnpm exec stylelint --fix + language: system + files: '^packages/.*/src/.*/?.*.(css|scss|less)$' + types: [file] + - id: i18n + name: i18n + entry: make ci-i18n + language: system + files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' + types: [file] diff --git a/.prettierignore b/frontend/.prettierignore similarity index 67% rename from .prettierignore rename to frontend/.prettierignore index 192ea8b4..16f05c73 100644 --- a/.prettierignore +++ b/frontend/.prettierignore @@ -1,2 +1,3 @@ +.storybook CHANGELOG.md README.md diff --git a/frontend/.prettierrc b/frontend/.prettierrc new file mode 100644 index 00000000..c56f6269 --- /dev/null +++ b/frontend/.prettierrc @@ -0,0 +1,12 @@ +{ + "trailingComma": "all", + "singleQuote": true, + "overrides": [ + { + "files": "*.overrides", + "options": { + "parser": "less" + } + } + ] + } diff --git a/frontend/.storybook/main.js b/frontend/.storybook/main.js new file mode 100644 index 00000000..1b15d3b2 --- /dev/null +++ b/frontend/.storybook/main.js @@ -0,0 +1,188 @@ +const webpack = require('webpack'); +const fs = require('fs'); +const path = require('path'); + +const projectRootPath = path.resolve('.'); +const lessPlugin = require('@plone/volto/webpack-plugins/webpack-less-plugin'); +const scssPlugin = require('razzle-plugin-scss'); + +const createConfig = require('razzle/config/createConfigAsync.js'); +const razzleConfig = require(path.join(projectRootPath, 'razzle.config.js')); + +const SVGLOADER = { + test: /icons\/.*\.svg$/, + use: [ + { + loader: 'svg-loader', + }, + { + loader: 'svgo-loader', + options: { + plugins: [ + { + name: 'preset-default', + params: { + overrides: { + convertPathData: false, + removeViewBox: false, + }, + }, + }, + 'removeTitle', + 'removeUselessStrokeAndFill', + ], + }, + }, + ], +}; + +const defaultRazzleOptions = { + verbose: false, + debug: {}, + buildType: 'iso', + cssPrefix: 'static/css', + jsPrefix: 'static/js', + enableSourceMaps: true, + enableReactRefresh: true, + enableTargetBabelrc: false, + enableBabelCache: true, + forceRuntimeEnvVars: [], + mediaPrefix: 'static/media', + staticCssInDev: false, + emitOnErrors: false, + disableWebpackbar: false, + browserslist: [ + '>1%', + 'last 4 versions', + 'Firefox ESR', + 'not ie 11', + 'not dead', + ], +}; + +module.exports = { + stories: [ + '../packages/**/*.mdx', + '../packages/**/*.stories.@(js|jsx|ts|tsx)', + ], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-webpack5-compiler-babel', + ], + framework: { + name: '@storybook/react-webpack5', + options: { builder: { useSWC: true } }, + }, + typescript: { + check: false, + checkOptions: {}, + reactDocgen: 'react-docgen-typescript', + reactDocgenTypescriptOptions: { + compilerOptions: { + allowSyntheticDefaultImports: false, + esModuleInterop: false, + }, + propFilter: () => true, + }, + }, + webpackFinal: async (config, { configType }) => { + // `configType` has a value of 'DEVELOPMENT' or 'PRODUCTION' + // You can change the configuration based on that. + // 'PRODUCTION' is used when building the static version of storybook. + + // Make whatever fine-grained changes you need + let baseConfig; + baseConfig = await createConfig( + 'web', + 'dev', + { + // clearConsole: false, + modifyWebpackConfig: razzleConfig.modifyWebpackConfig, + plugins: razzleConfig.plugins, + }, + webpack, + false, + undefined, + [], + defaultRazzleOptions, + ); + const AddonConfigurationRegistry = require('@plone/registry/src/addon-registry'); + + const registry = new AddonConfigurationRegistry(projectRootPath); + + config = lessPlugin({ registry }).modifyWebpackConfig({ + env: { target: 'web', dev: 'dev' }, + webpackConfig: config, + webpackObject: webpack, + options: {}, + }); + + config = scssPlugin.modifyWebpackConfig({ + env: { target: 'web', dev: 'dev' }, + webpackConfig: config, + webpackObject: webpack, + options: { razzleOptions: {} }, + }); + + // Put the SVG loader on top and prevent the asset/resource rule + // from processing the app's SVGs + config.module.rules.unshift(SVGLOADER); + const fileLoaderRule = config.module.rules.find((rule) => + rule.test.test('.svg'), + ); + fileLoaderRule.exclude = /icons\/.*\.svg$/; + + config.plugins.unshift( + new webpack.DefinePlugin({ + __DEVELOPMENT__: true, + __CLIENT__: true, + __SERVER__: false, + }), + ); + + const resultConfig = { + ...config, + resolve: { + ...config.resolve, + alias: { ...config.resolve.alias, ...baseConfig.resolve.alias }, + fallback: { ...config.resolve.fallback, zlib: false }, + }, + }; + + // Add-ons have to be loaded with babel + const addonPaths = registry + .getAddons() + .map((addon) => fs.realpathSync(addon.modulePath)); + + resultConfig.module.rules[13].exclude = (input) => + // exclude every input from node_modules except from @plone/volto + /node_modules\/(?!(@plone\/volto)\/)/.test(input) && + // Storybook default exclusions + /storybook-config-entry\.js$/.test(input) && + /storybook-stories\.js$/.test(input) && + // If input is in an addon, DON'T exclude it + !addonPaths.some((p) => input.includes(p)); + + resultConfig.module.rules[13].include = [ + /preview\.jsx/, + ...resultConfig.module.rules[13].include, + ...addonPaths, + ]; + + const addonExtenders = registry.getAddonExtenders().map((m) => require(m)); + + const extendedConfig = addonExtenders.reduce( + (acc, extender) => + extender.modify(acc, { target: 'web', dev: 'dev' }, config), + resultConfig, + ); + + // Note: we don't actually support razzle plugins, which are also a feature + // of the razzle.extend.js addons file. Those features are probably + // provided in a different manner by Storybook plugins (for example scss + // loaders). + + return extendedConfig; + }, +}; diff --git a/frontend/.storybook/preview.jsx b/frontend/.storybook/preview.jsx new file mode 100644 index 00000000..1d2ac84b --- /dev/null +++ b/frontend/.storybook/preview.jsx @@ -0,0 +1,26 @@ +import '@plone/volto/config'; // This is the bootstrap for the global config - client side +import React from 'react'; +import { StaticRouter } from 'react-router-dom'; +import { IntlProvider } from 'react-intl'; +import enMessages from '@root/../locales/en.json'; + +import '@root/theme'; + +export const parameters = { + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, + }, + }, +}; + +export const decorators = [ + (Story) => ( + + + + + + ), +]; diff --git a/frontend/.stylelintrc b/frontend/.stylelintrc new file mode 100644 index 00000000..09d4a276 --- /dev/null +++ b/frontend/.stylelintrc @@ -0,0 +1,32 @@ +{ + "extends": [ + "stylelint-config-idiomatic-order" + ], + "plugins": [ + "stylelint-prettier" + ], + "overrides": [ + { + "files": [ + "**/*.less" + ], + "customSyntax": "postcss-less" + }, + { + "files": [ + "**/*.overrides" + ], + "customSyntax": "postcss-less" + }, + { + "files": [ + "**/*.scss" + ], + "customSyntax": "postcss-scss" + } + ], + "rules": { + "prettier/prettier": true, + "order/properties-alphabetical-order": null + } +} diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 00000000..65ebe77d --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,24 @@ +# syntax=docker/dockerfile:1 +ARG VOLTO_VERSION +FROM plone/frontend-builder:${VOLTO_VERSION} as builder + +COPY --chown=node packages/volto-searchkit-block /app/packages/volto-searchkit-block +COPY --chown=node volto.config.js /app/ +COPY --chown=node package.json /app/package.json.temp + +RUN --mount=type=cache,id=pnpm,target=/app/.pnpm-store,uid=1000 < Start Docker-based Plone Backend$(RESET)" + docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) + +## Storybook +.PHONY: storybook-start +storybook-start: ## Start Storybook server on port 6006 + @echo "$(GREEN)==> Start Storybook$(RESET)" + pnpm run storybook + +.PHONY: storybook-build +storybook-build: ## Build Storybook + @echo "$(GREEN)==> Build Storybook$(RESET)" + mkdir -p $(CURRENT_DIR)/.storybook-build + pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build + +## Acceptance +.PHONY: acceptance-frontend-dev-start +acceptance-frontend-dev-start: ## Start acceptance frontend in development mode + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + +.PHONY: acceptance-frontend-prod-start +acceptance-frontend-prod-start: ## Start acceptance frontend in production mode + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + +.PHONY: acceptance-backend-start +acceptance-backend-start: ## Start backend acceptance server + docker run -it --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + +.PHONY: ci-acceptance-backend-start +ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI + docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + +.PHONY: acceptance-test +acceptance-test: ## Start Cypress in interactive mode + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' + +.PHONY: ci-acceptance-test +ci-acceptance-test: ## Run cypress tests in headless mode for CI + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' + +.PHONY: build-image +build-image: ## Build Docker Image + @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME):$(IMAGE_TAG) -f Dockerfile --build-arg VOLTO_VERSION=$(VOLTO_VERSION) diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 00000000..679fd333 --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,203 @@ +# Searchkit Block (volto-searchkit-block) + +A new project using Plone 6. + +[![npm](https://img.shields.io/npm/v/volto-searchkit-block)](https://www.npmjs.com/package/volto-searchkit-block) +[![](https://img.shields.io/badge/-Storybook-ff4785?logo=Storybook&logoColor=white&style=flat-square)](https://rohberg.github.io/volto-searchkit-block/) +[![Code analysis checks](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml) +[![Unit tests](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml) + +## Features + + + +## Installation + +To install your project, you must choose the method appropriate to your version of Volto. + + +### Volto 17 and earlier + +Create a new Volto project (you can skip this step if you already have one): + +``` +npm install -g yo @plone/generator-volto +yo @plone/volto my-volto-project --addon volto-searchkit-block +cd my-volto-project +``` + +Add `volto-searchkit-block` to your package.json: + +```JSON +"addons": [ + "volto-searchkit-block" +], + +"dependencies": { + "volto-searchkit-block": "*" +} +``` + +Download and install the new add-on by running: + +``` +yarn install +``` + +Start volto with: + +``` +yarn start +``` + +### Volto 18 and later + +Add `volto-searchkit-block` to your `package.json`: + +```json +"dependencies": { + "volto-searchkit-block": "*" +} +``` + +Add `volto-searchkit-block` to your `volto.config.js`: + +```javascript +const addons = ['volto-searchkit-block']; +``` + +If this package provides a Volto theme, and you want to activate it, then add the following to your `volto.config.js`: + +```javascript +const theme = 'volto-searchkit-block'; +``` + +## Test installation + +Visit http://localhost:3000/ in a browser, login, and check the awesome new features. + + +## Development + +The development of this add-on is done in isolation using a new approach using pnpm workspaces and latest `mrs-developer` and other Volto core improvements. +For this reason, it only works with pnpm and Volto 18 (currently in alpha). + + +### Pre-requisites + +- [Node.js](https://6.docs.plone.org/install/create-project.html#node-js) +- [Make](https://6.docs.plone.org/install/create-project.html#make) +- [Docker](https://6.docs.plone.org/install/create-project.html#docker) + + +### Make convenience commands + +Run `make help` to list the available commands. + +```text +help Show this help +install Installs the add-on in a development environment +start Starts Volto, allowing reloading of the add-on during development +build Build a production bundle for distribution of the project with the add-on +i18n Sync i18n +ci-i18n Check if i18n is not synced +format Format codebase +lint Lint, or catch and remove problems, in code base +release Release the add-on on npmjs.org +release-dry-run Dry-run the release of the add-on on npmjs.org +test Run unit tests +ci-test Run unit tests in CI +backend-docker-start Starts a Docker-based backend for development +storybook-start Start Storybook server on port 6006 +storybook-build Build Storybook +acceptance-frontend-dev-start Start acceptance frontend in development mode +acceptance-frontend-prod-start Start acceptance frontend in production mode +acceptance-backend-start Start backend acceptance server +ci-acceptance-backend-start Start backend acceptance server in headless mode for CI +acceptance-test Start Cypress in interactive mode +ci-acceptance-test Run cypress tests in headless mode for CI +``` + +### Development environment set up + +Install package requirements. + +```shell +make install +``` + +### Start developing + +Start the backend. + +```shell +make backend-docker-start +``` + +In a separate terminal session, start the frontend. + +```shell +make start +``` + +### Lint code + +Run ESlint, Prettier, and Stylelint in analyze mode. + +```shell +make lint +``` + +### Format code + +Run ESlint, Prettier, and Stylelint in fix mode. + +```shell +make format +``` + +### i18n + +Extract the i18n messages to locales. + +```shell +make i18n +``` + +### Unit tests + +Run unit tests. + +```shell +make test +``` + +### Run Cypress tests + +Run each of these steps in separate terminal sessions. + +In the first session, start the frontend in development mode. + +```shell +make acceptance-frontend-dev-start +``` + +In the second session, start the backend acceptance server. + +```shell +make acceptance-backend-start +``` + +In the third session, start the Cypress interactive test runner. + +```shell +make acceptance-test +``` + +## License + +The project is licensed under the MIT license. + +## Credits and Acknowledgements 🙏 + +Crafted with care by **This was generated by [cookiecutter-volto](https://github.com/plone/cookiecutter-volto/frontend_addon) on 2024-10-26 11:06:19**. A special thanks to all contributors and supporters! diff --git a/acceptance/cypress.config.js b/frontend/cypress.config.js similarity index 57% rename from acceptance/cypress.config.js rename to frontend/cypress.config.js index d841d7ab..dba4b580 100644 --- a/acceptance/cypress.config.js +++ b/frontend/cypress.config.js @@ -2,8 +2,12 @@ const { defineConfig } = require('cypress'); module.exports = defineConfig({ viewportWidth: 1280, + viewportHeight: 1280, + retries: { + runMode: 3, + }, e2e: { baseUrl: 'http://localhost:3000', - specPattern: 'cypress/tests/*.cy.{js,jsx}', + specPattern: 'cypress/tests/**/*.cy.{js,jsx,ts,tsx}', }, }); diff --git a/frontend/cypress/.gitkeep b/frontend/cypress/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/frontend/cypress/support/commands.js b/frontend/cypress/support/commands.js new file mode 100644 index 00000000..6a44064f --- /dev/null +++ b/frontend/cypress/support/commands.js @@ -0,0 +1 @@ +import '@plone/volto/cypress/add-commands'; diff --git a/acceptance/cypress/support/e2e.js b/frontend/cypress/support/e2e.js similarity index 69% rename from acceptance/cypress/support/e2e.js rename to frontend/cypress/support/e2e.js index 48912f7f..4ff23d6d 100644 --- a/acceptance/cypress/support/e2e.js +++ b/frontend/cypress/support/e2e.js @@ -1,7 +1,8 @@ import 'cypress-axe'; import 'cypress-file-upload'; import './commands'; -import { setup, teardown } from './reset-fixture'; +import 'cypress-axe'; +import { setup, teardown } from '@plone/volto/cypress/support/reset-fixture'; beforeEach(function () { cy.log('Setting up API fixture'); diff --git a/frontend/cypress/tests/.gitkeep b/frontend/cypress/tests/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/frontend/cypress/tests/example.cy.js b/frontend/cypress/tests/example.cy.js new file mode 100644 index 00000000..f3a1fadf --- /dev/null +++ b/frontend/cypress/tests/example.cy.js @@ -0,0 +1,20 @@ +context('Example Acceptance Tests', () => { + describe('Visit a page', () => { + beforeEach(() => { + // Given a logged in editor + cy.viewport('macbook-16'); + cy.createContent({ + contentType: 'Document', + contentId: 'document', + contentTitle: 'Test document', + }); + cy.autologin(); + }); + + it('As editor I can add edit a Page', function () { + cy.visit('/document'); + cy.navigate('/document/edit'); + cy.get('#toolbar-save').click(); + }); + }); +}); diff --git a/frontend/jest-addon.config.js b/frontend/jest-addon.config.js new file mode 100644 index 00000000..984c267e --- /dev/null +++ b/frontend/jest-addon.config.js @@ -0,0 +1,17 @@ +module.exports = { + roots: ['../../../packages'], + testMatch: ['/../../../../**/?(*.)+(spec|test).[jt]s?(x)'], + collectCoverageFrom: [ + 'src/addons/**/src/**/*.{js,jsx,ts,tsx}', + '!src/**/*.d.ts', + ], + transformIgnorePatterns: ['node_modules/(?!(volto-slate|@plone/volto)/)'], + coverageThreshold: { + global: { + branches: 5, + functions: 5, + lines: 5, + statements: 5, + }, + }, +}; diff --git a/frontend/mrs.developer.json b/frontend/mrs.developer.json new file mode 100644 index 00000000..650e3e1c --- /dev/null +++ b/frontend/mrs.developer.json @@ -0,0 +1,9 @@ +{ + "core": { + "output": "./", + "package": "@plone/volto", + "url": "git@github.com:plone/volto.git", + "https": "https://github.com/plone/volto.git", + "tag": "18.0.0-alpha.46" + } +} diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 00000000..e4f96d2c --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,44 @@ +{ + "name": "volto-searchkit-block-dev", + "version": "1.0.0-alpha.0", + "description": "A new project using Plone 6.", + "author": "Plone Foundation", + "homepage": "https://github.com/rohberg/volto-searchkit-block", + "license": "MIT", + "keywords": [ + "volto-addon", + "volto", + "plone", + "react" + ], + "scripts": { + "preinstall": "npx only-allow pnpm", + "start": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto start", + "start:prod": "pnpm --filter @plone/volto start:prod", + "build": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto build", + "build:deps": "pnpm --filter @plone/registry --filter @plone/components build", + "i18n": "pnpm --filter volto-searchkit-block i18n && VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n", + "test": "RAZZLE_JEST_CONFIG=$(pwd)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests", + "lint": "VOLTOCONFIG=$(pwd)/volto.config.js eslint --max-warnings=0 'packages/**/src/**/*.{js,jsx,ts,tsx}'", + "lint:fix": "VOLTOCONFIG=$(pwd)/volto.config.js eslint --fix 'packages/**/src/**/*.{js,jsx,ts,tsx}'", + "prettier": "prettier --check 'packages/**/src/**/*.{js,jsx,ts,tsx}'", + "prettier:fix": "prettier --write 'packages/**/src/**/*.{js,jsx,ts,tsx}' ", + "stylelint": "stylelint 'packages/**/src/**/*.{css,scss,less}' --allow-empty-input", + "stylelint:fix": "stylelint 'packages/**/src/**/*.{css,scss,less}' --fix --allow-empty-input", + "dry-release": "pnpm --filter volto-searchkit-block dry-release", + "release": "pnpm --filter volto-searchkit-block release", + "release-major-alpha": "pnpm --filter volto-searchkit-block release-major-alpha", + "release-alpha": "pnpm --filter volto-searchkit-block release-alpha", + "storybook": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto storybook dev -p 6006 -c $(pwd)/.storybook", + "storybook-build": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto build-storybook -c $(pwd)/.storybook" + }, + "dependencies": { + "@plone/volto": "workspace:*", + "@plone/registry": "workspace:*", + "volto-searchkit-block": "workspace:*" + }, + "devDependencies": { + "mrs-developer": "^2.2.0" + }, + "packageManager": "pnpm@9.1.1" +} diff --git a/frontend/packages/volto-searchkit-block/.gitignore b/frontend/packages/volto-searchkit-block/.gitignore new file mode 100644 index 00000000..b462bc98 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/.gitignore @@ -0,0 +1,3 @@ +node_modules +build +README.md diff --git a/frontend/packages/volto-searchkit-block/.release-it.json b/frontend/packages/volto-searchkit-block/.release-it.json new file mode 100644 index 00000000..4cde54e6 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/.release-it.json @@ -0,0 +1,31 @@ +{ + "plugins": { + "../../core/packages/scripts/prepublish.js": {} + }, + "hooks": { + "after:bump": [ + "pipx run towncrier build --draft --yes --version ${version} > .changelog.draft", + "pipx run towncrier build --yes --version ${version}", + "cp ../../README.md ./ && cp CHANGELOG.md ../../CHANGELOG.md", + "python3 -c 'import json; data = json.load(open(\"../../package.json\")); data[\"version\"] = \"${version}\"; json.dump(data, open(\"../../package.json\", \"w\"), indent=2)'", + "git add ../../CHANGELOG.md ../../package.json" + ], + "after:release": "rm .changelog.draft README.md" + }, + "npm": { + "publish": false + }, + "git": { + "changelog": "pipx run towncrier build --draft --yes --version 0.0.0", + "requireUpstream": false, + "requireCleanWorkingDir": false, + "commitMessage": "Release ${version}", + "tagName": "${version}", + "tagAnnotation": "Release ${version}" + }, + "github": { + "release": true, + "releaseName": "${version}", + "releaseNotes": "cat .changelog.draft" + } +} diff --git a/frontend/packages/volto-searchkit-block/CHANGELOG.md b/frontend/packages/volto-searchkit-block/CHANGELOG.md new file mode 100644 index 00000000..e24f3a8e --- /dev/null +++ b/frontend/packages/volto-searchkit-block/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + + + + diff --git a/babel.config.js b/frontend/packages/volto-searchkit-block/babel.config.js similarity index 100% rename from babel.config.js rename to frontend/packages/volto-searchkit-block/babel.config.js diff --git a/frontend/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po b/frontend/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po new file mode 100644 index 00000000..796f3cf1 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po @@ -0,0 +1,12 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language: de\n" +"Language-Team: \n" +"Content-Type: \n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" diff --git a/frontend/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po b/frontend/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po new file mode 100644 index 00000000..38c369ef --- /dev/null +++ b/frontend/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po @@ -0,0 +1,12 @@ +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: \n" +"PO-Revision-Date: \n" +"Last-Translator: \n" +"Language: en\n" +"Language-Team: \n" +"Content-Type: \n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" diff --git a/frontend/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po b/frontend/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po new file mode 100644 index 00000000..7288b050 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po @@ -0,0 +1,19 @@ +msgid "" +msgstr "" +"Project-Id-Version: Plone\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-05-09 11:45-0400\n" +"PO-Revision-Date: 2023-05-10 11:34-0400\n" +"Last-Translator: Leonardo J. Caballero G. \n" +"Language: es\n" +"Language-Team: ES \n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Preferred-Encodings: utf-8\n" +"MIME-Version: 1.0\n" +"Language-Code: es\n" +"Language-Name: Español\n" +"Domain: volto\n" +"X-Is-Fallback-For: es-ar es-bo es-cl es-co es-cr es-do es-ec es-es es-sv es-gt es-hn es-mx es-ni es-pa es-py es-pe es-pr es-us es-uy es-ve\n" +"X-Generator: Poedit 2.2.1\n" diff --git a/frontend/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po b/frontend/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po new file mode 100644 index 00000000..e01604d6 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po @@ -0,0 +1,17 @@ +msgid "" +msgstr "" +"Project-Id-Version: Plone\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-04-06T16:01:32.969Z\n" +"PO-Revision-Date: \n" +"Last-Translator: Plone i18n \n" +"Language: \n" +"Language-Team: Plone i18n \n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Language-Code: pt_BR\n" +"Language-Name: Português do Brasil\n" +"Preferred-Encodings: utf-8\n" +"Domain: volto\n" diff --git a/frontend/packages/volto-searchkit-block/locales/volto.pot b/frontend/packages/volto-searchkit-block/locales/volto.pot new file mode 100644 index 00000000..ea538b12 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/locales/volto.pot @@ -0,0 +1,14 @@ +msgid "" +msgstr "" +"Project-Id-Version: Plone\n" +"POT-Creation-Date: 2024-03-22T12:43:34.158Z\n" +"Last-Translator: Plone i18n \n" +"Language-Team: Plone i18n \n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8\n" +"Domain: volto\n" diff --git a/frontend/packages/volto-searchkit-block/news/.gitkeep b/frontend/packages/volto-searchkit-block/news/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/frontend/packages/volto-searchkit-block/package.json b/frontend/packages/volto-searchkit-block/package.json new file mode 100644 index 00000000..25bb8271 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/package.json @@ -0,0 +1,38 @@ +{ + "name": "volto-searchkit-block", + "version": "1.0.0-alpha.0", + "description": "A new project using Plone 6.", + "main": "src/index.js", + "license": "MIT", + "keywords": [ + "volto-addon", + "volto", + "plone", + "react" + ], + "author": "Plone Foundation", + "homepage": "https://github.com/rohberg/volto-searchkit-block#readme", + "repository": { + "type": "git", + "url": "git@github.com:rohberg/volto-searchkit-block.git" + }, + "publishConfig": { + "access": "public" + }, + "scripts": { + "i18n": "rm -rf build/messages && NODE_ENV=production i18n --addon", + "dry-release": "release-it --dry-run", + "release": "release-it", + "release-major-alpha": "release-it major --preRelease=alpha", + "release-alpha": "release-it --preRelease=alpha" + }, + "dependencies": {}, + "peerDependencies": { + "react": "18.2.0", + "react-dom": "18.2.0" + }, + "devDependencies": { + "@plone/scripts": "^3.6.1", + "release-it": "^17.1.1" + } +} diff --git a/frontend/packages/volto-searchkit-block/public/.gitkeep b/frontend/packages/volto-searchkit-block/public/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/frontend/packages/volto-searchkit-block/src/components/.gitkeep b/frontend/packages/volto-searchkit-block/src/components/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/frontend/packages/volto-searchkit-block/src/index.js b/frontend/packages/volto-searchkit-block/src/index.js new file mode 100644 index 00000000..6318a604 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/src/index.js @@ -0,0 +1,11 @@ +const applyConfig = (config) => { + config.settings = { + ...config.settings, + isMultilingual: false, + supportedLanguages: ['en'], + defaultLanguage: 'en', + }; + return config; +}; + +export default applyConfig; \ No newline at end of file diff --git a/frontend/packages/volto-searchkit-block/towncrier.toml b/frontend/packages/volto-searchkit-block/towncrier.toml new file mode 100644 index 00000000..f7c7a5f3 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/towncrier.toml @@ -0,0 +1,33 @@ +[tool.towncrier] +filename = "CHANGELOG.md" +directory = "news/" +title_format = "## {version} ({project_date})" +underlines = ["", "", ""] +template = "./node_modules/@plone/scripts/templates/towncrier_template.jinja" +start_string = "\n" +issue_format = "[#{issue}](https://github.com/rohberg/volto-searchkit-block/issue/{issue})" + +[[tool.towncrier.type]] +directory = "breaking" +name = "Breaking" +showcontent = true + +[[tool.towncrier.type]] +directory = "feature" +name = "Feature" +showcontent = true + +[[tool.towncrier.type]] +directory = "bugfix" +name = "Bugfix" +showcontent = true + +[[tool.towncrier.type]] +directory = "internal" +name = "Internal" +showcontent = true + +[[tool.towncrier.type]] +directory = "documentation" +name = "Documentation" +showcontent = true diff --git a/frontend/packages/volto-searchkit-block/tsconfig.json b/frontend/packages/volto-searchkit-block/tsconfig.json new file mode 100644 index 00000000..7e096693 --- /dev/null +++ b/frontend/packages/volto-searchkit-block/tsconfig.json @@ -0,0 +1,30 @@ +{ + "compilerOptions": { + "esModuleInterop": true, + "skipLibCheck": true, + "target": "es2022", + "allowJs": true, + "resolveJsonModule": true, + "moduleDetection": "force", + "isolatedModules": true, + "verbatimModuleSyntax": true, + "module": "preserve", + "noEmit": true, + "lib": ["es2022", "dom", "dom.iterable"], + "jsx": "react-jsx", + "paths": { + "@plone/volto/*": ["../../core/packages/volto/src/*"], + "volto-searchkit-block/*": ["./src/*"] + } + }, + "include": ["**/*.ts", "**/*.tsx"], + "exclude": [ + "node_modules", + "build", + "public", + "coverage", + "**/*.test.{js,jsx,ts,tsx}", + "**/*.spec.{js,jsx,ts,tsx}", + "**/*.stories.{js,jsx,ts,tsx}" + ] +} diff --git a/frontend/pnpm-workspace.yaml b/frontend/pnpm-workspace.yaml new file mode 100644 index 00000000..f9c04858 --- /dev/null +++ b/frontend/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +packages: + # all packages in direct subdirs of packages/ + - 'core/packages/*' + - 'packages/*' diff --git a/frontend/volto.config.js b/frontend/volto.config.js new file mode 100644 index 00000000..247eba3a --- /dev/null +++ b/frontend/volto.config.js @@ -0,0 +1,7 @@ +const addons = ['volto-searchkit-block']; +const theme = ''; + +module.exports = { + addons, + theme +}; diff --git a/jest-addon.config.js b/jest-addon.config.js deleted file mode 100644 index f66acd49..00000000 --- a/jest-addon.config.js +++ /dev/null @@ -1,33 +0,0 @@ -module.exports = { - testMatch: ['**/src/addons/**/?(*.)+(spec|test).[jt]s?(x)'], - collectCoverageFrom: [ - 'src/addons/**/src/**/*.{js,jsx,ts,tsx}', - '!src/**/*.d.ts', - ], - transformIgnorePatterns: ['node_modules/(?!(volto-slate|@plone/volto)/)'], - moduleNameMapper: { - '@plone/volto/cypress': '/node_modules/@plone/volto/cypress', - '@plone/volto/babel': '/node_modules/@plone/volto/babel', - '@plone/volto/(.*)$': '/node_modules/@plone/volto/src/$1', - '@package/(.*)$': '/src/$1', - '@root/(.*)$': '/src/$1', - '~/(.*)$': '/src/$1', - 'load-volto-addons': - '/node_modules/@plone/volto/jest-addons-loader.js', - '\\.(css|less|scss|sass)$': 'identity-obj-proxy', - }, - transform: { - '^.+\\.js(x)?$': 'babel-jest', - '^.+\\.(png)$': 'jest-file', - '^.+\\.(jpg)$': 'jest-file', - '^.+\\.(svg)$': './node_modules/@plone/volto/jest-svgsystem-transform.js', - }, - coverageThreshold: { - global: { - branches: 5, - functions: 5, - lines: 5, - statements: 5, - }, - }, -}; diff --git a/locales/de/LC_MESSAGES/volto.po b/locales/de/LC_MESSAGES/volto.po deleted file mode 100644 index 8eb20265..00000000 --- a/locales/de/LC_MESSAGES/volto.po +++ /dev/null @@ -1,153 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language: \n" -"Language-Team: \n" -"Content-Type: \n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. Default: "Add search section" -#: components/Blocks/SearchSectionsWidget -msgid "Add search section" -msgstr "Füge Suchsektion hinzu" - -#. Default: "Check the configuration of your searchkit block!" -#: components/Searchkit/Error -msgid "Check the configuration of your searchkit block!" -msgstr "Prüfe Block-Einstellungen!" - -#. Default: "Content" -#: messages -msgid "Content" -msgstr "Inhalt" - -#. Default: "Date" -#: components/Views/FacetedSearch -msgid "Date" -msgstr "Datum" - -#. Default: "Description" -#: messages -msgid "Description" -msgstr "Beschreibung" - -#. Default: "Deselect all" -#: components/Views/FacetedSearch -msgid "Deselect all" -msgstr "keine" - -#. Default: "Facet" -#: messages -msgid "Facet" -msgstr "Facette" - -#. Default: "Facet widget" -#: messages -msgid "Facet widget" -msgstr "Facetten-Widget" - -#. Default: "Facets" -#: messages -msgid "Facets" -msgstr "Facetten" - -#. Default: "Field" -#: messages -msgid "Field" -msgstr "Feld" - -#. Default: "Label" -#: messages -msgid "Label" -msgstr "Label" - -#. Default: "Meta data" -#: messages -msgid "Meta data" -msgstr "Metadaten" - -#. Default: "Multiple choices?" -#: messages -msgid "Multiple choices?" -msgstr "Multiple Choices?" - -#. Default: "No results" -#: components/Views/FacetedSearch -msgid "No results" -msgstr "Keine Resultate" - -#. Default: "Relevance" -#: components/Views/FacetedSearch -msgid "Relevance" -msgstr "Relevanz" - -#. Default: "Search block" -#: messages -msgid "Search block" -msgstr "Such-Block" - -#. Default: "Search result" -#: messages -msgid "Search result" -msgstr "Suchergebnis" - -#. Default: "Search results" -#: messages -msgid "Search results" -msgstr "Suchergebnisse" - -#. Default: "Search section" -#: components/Blocks/SearchSectionsWidget -msgid "Search section" -msgstr "Suche in Sektion" - -#. Default: "Search section label" -#: components/Blocks/SearchSectionsWidget -msgid "Search section label" -msgstr "Label Such-Sektion" - -#. Default: "Searchkit" -#: messages -msgid "Searchkit" -msgstr "Searchkit" - -#. Default: "Select all" -#: components/Views/FacetedSearch -msgid "Select all" -msgstr "Wähle alle" - -#. Default: "Show filter" -#: components/Blocks/SearchSectionsWidget -msgid "Show filters" -msgstr "Zeige Filter" - -#. Default: "Sort by:" -#: components/Views/FacetedSearch -msgid "Sort By:" -msgstr "Sortiere nach:" - -#. Default: "Tags" -#: components/Views/FacetedSearch -#: messages -msgid "Tags" -msgstr "Tags" - -#. Default: "Title" -#: messages -msgid "Title" -msgstr "Titel" - -#. Default: "reset search" -#: components/Views/FacetedSearch -msgid "reset search" -msgstr "Suche zurücksetzen" - -#. Default: "search" -#: messages -msgid "search" -msgstr "suchen" diff --git a/locales/en/LC_MESSAGES/volto.po b/locales/en/LC_MESSAGES/volto.po deleted file mode 100644 index 7161fde5..00000000 --- a/locales/en/LC_MESSAGES/volto.po +++ /dev/null @@ -1,153 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language: \n" -"Language-Team: \n" -"Content-Type: \n" -"Content-Transfer-Encoding: \n" -"Plural-Forms: \n" - -#. Default: "Add search section" -#: components/Blocks/SearchSectionsWidget -msgid "Add search section" -msgstr "" - -#. Default: "Check the configuration of your searchkit block!" -#: components/Searchkit/Error -msgid "Check the configuration of your searchkit block!" -msgstr "" - -#. Default: "Content" -#: messages -msgid "Content" -msgstr "" - -#. Default: "Date" -#: components/Views/FacetedSearch -msgid "Date" -msgstr "" - -#. Default: "Description" -#: messages -msgid "Description" -msgstr "" - -#. Default: "Deselect all" -#: components/Views/FacetedSearch -msgid "Deselect all" -msgstr "" - -#. Default: "Facet" -#: messages -msgid "Facet" -msgstr "" - -#. Default: "Facet widget" -#: messages -msgid "Facet widget" -msgstr "" - -#. Default: "Facets" -#: messages -msgid "Facets" -msgstr "" - -#. Default: "Field" -#: messages -msgid "Field" -msgstr "" - -#. Default: "Label" -#: messages -msgid "Label" -msgstr "" - -#. Default: "Meta data" -#: messages -msgid "Meta data" -msgstr "" - -#. Default: "Multiple choices?" -#: messages -msgid "Multiple choices?" -msgstr "" - -#. Default: "No results" -#: components/Views/FacetedSearch -msgid "No results" -msgstr "" - -#. Default: "Relevance" -#: components/Views/FacetedSearch -msgid "Relevance" -msgstr "" - -#. Default: "Search block" -#: messages -msgid "Search block" -msgstr "" - -#. Default: "Search result" -#: messages -msgid "Search result" -msgstr "" - -#. Default: "Search results" -#: messages -msgid "Search results" -msgstr "" - -#. Default: "Search section" -#: components/Blocks/SearchSectionsWidget -msgid "Search section" -msgstr "" - -#. Default: "Search section label" -#: components/Blocks/SearchSectionsWidget -msgid "Search section label" -msgstr "" - -#. Default: "Searchkit" -#: messages -msgid "Searchkit" -msgstr "" - -#. Default: "Select all" -#: components/Views/FacetedSearch -msgid "Select all" -msgstr "" - -#. Default: "Show filter" -#: components/Blocks/SearchSectionsWidget -msgid "Show filters" -msgstr "" - -#. Default: "Sort by:" -#: components/Views/FacetedSearch -msgid "Sort By:" -msgstr "" - -#. Default: "Tags" -#: components/Views/FacetedSearch -#: messages -msgid "Tags" -msgstr "" - -#. Default: "Title" -#: messages -msgid "Title" -msgstr "" - -#. Default: "reset search" -#: components/Views/FacetedSearch -msgid "reset search" -msgstr "" - -#. Default: "search" -#: messages -msgid "search" -msgstr "" diff --git a/locales/volto.pot b/locales/volto.pot deleted file mode 100644 index eac6d645..00000000 --- a/locales/volto.pot +++ /dev/null @@ -1,155 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: Plone\n" -"POT-Creation-Date: 2024-03-08T12:35:25.144Z\n" -"Last-Translator: Plone i18n \n" -"Language-Team: Plone i18n \n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0;\n" -"MIME-Version: 1.0\n" -"Language-Code: en\n" -"Language-Name: English\n" -"Preferred-Encodings: utf-8\n" -"Domain: volto\n" - -#. Default: "Add search section" -#: components/Blocks/SearchSectionsWidget -msgid "Add search section" -msgstr "" - -#. Default: "Check the configuration of your searchkit block!" -#: components/Searchkit/Error -msgid "Check the configuration of your searchkit block!" -msgstr "" - -#. Default: "Content" -#: messages -msgid "Content" -msgstr "" - -#. Default: "Date" -#: components/Views/FacetedSearch -msgid "Date" -msgstr "" - -#. Default: "Description" -#: messages -msgid "Description" -msgstr "" - -#. Default: "Deselect all" -#: components/Views/FacetedSearch -msgid "Deselect all" -msgstr "" - -#. Default: "Facet" -#: messages -msgid "Facet" -msgstr "" - -#. Default: "Facet widget" -#: messages -msgid "Facet widget" -msgstr "" - -#. Default: "Facets" -#: messages -msgid "Facets" -msgstr "" - -#. Default: "Field" -#: messages -msgid "Field" -msgstr "" - -#. Default: "Label" -#: messages -msgid "Label" -msgstr "" - -#. Default: "Meta data" -#: messages -msgid "Meta data" -msgstr "" - -#. Default: "Multiple choices?" -#: messages -msgid "Multiple choices?" -msgstr "" - -#. Default: "No results" -#: components/Views/FacetedSearch -msgid "No results" -msgstr "" - -#. Default: "Relevance" -#: components/Views/FacetedSearch -msgid "Relevance" -msgstr "" - -#. Default: "Search block" -#: messages -msgid "Search block" -msgstr "" - -#. Default: "Search result" -#: messages -msgid "Search result" -msgstr "" - -#. Default: "Search results" -#: messages -msgid "Search results" -msgstr "" - -#. Default: "Search section" -#: components/Blocks/SearchSectionsWidget -msgid "Search section" -msgstr "" - -#. Default: "Search section label" -#: components/Blocks/SearchSectionsWidget -msgid "Search section label" -msgstr "" - -#. Default: "Searchkit" -#: messages -msgid "Searchkit" -msgstr "" - -#. Default: "Select all" -#: components/Views/FacetedSearch -msgid "Select all" -msgstr "" - -#. Default: "Show filter" -#: components/Blocks/SearchSectionsWidget -msgid "Show filters" -msgstr "" - -#. Default: "Sort by:" -#: components/Views/FacetedSearch -msgid "Sort By:" -msgstr "" - -#. Default: "Tags" -#: components/Views/FacetedSearch -#: messages -msgid "Tags" -msgstr "" - -#. Default: "Title" -#: messages -msgid "Title" -msgstr "" - -#. Default: "reset search" -#: components/Views/FacetedSearch -msgid "reset search" -msgstr "" - -#. Default: "search" -#: messages -msgid "search" -msgstr "" diff --git a/news/15.internal b/news/15.internal deleted file mode 100644 index 67092be9..00000000 --- a/news/15.internal +++ /dev/null @@ -1 +0,0 @@ -Add tests. @ksuess \ No newline at end of file diff --git a/package.json b/package.json deleted file mode 100644 index 4b23029f..00000000 --- a/package.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "name": "@rohberg/volto-searchkit-block", - "version": "0.3.3", - "description": "Find content. Pardon typos. Allow search queries with and provide results with compound words.", - "main": "src/index.js", - "author": "Katja Süss, https://github.com/rohberg", - "license": "MIT", - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "homepage": "https://github.com/rohberg/volto-searchkit-block", - "keywords": [ - "volto-addon", - "volto", - "plone", - "react", - "search", - "find", - "opensearch", - "elasticsearch" - ], - "repository": { - "type": "git", - "url": "git@github.com:rohberg/volto-searchkit-block.git" - }, - "bugs": { - "url": "https://github.com/rohberg/volto-searchkit-block/issues" - }, - "scripts": { - "i18n": "rm -rf build/messages && NODE_ENV=production i18n --addon", - "dry-release": "release-it --dry-run", - "release": "release-it", - "release-major-alpha": "release-it major --preRelease=alpha", - "release-alpha": "release-it --preRelease=alpha", - "release-rc": "release-it --preRelease=rc" - }, - "addons": [ - "@eeacms/volto-matomo" - ], - "dependencies": { - "@eeacms/volto-matomo": "*", - "react-overridable": "^0.0.3", - "react-searchkit": "v2.2.0" - }, - "devDependencies": { - "@babel/eslint-parser": "7.22.15", - "@plone/scripts": "^3.3.2", - "eslint": "8.49.0", - "eslint-config-prettier": "9.0.0", - "eslint-config-react-app": "7.0.1", - "eslint-plugin-flowtype": "8.0.3", - "eslint-plugin-import": "2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-prettier": "5.0.0", - "eslint-plugin-react": "7.33.2", - "eslint-plugin-react-hooks": "4.6.0", - "postcss-less": "6.0.0", - "postcss-scss": "4.0.8", - "prettier": "3.0.3", - "release-it": "^16.1.5", - "stylelint": "15.10.3", - "stylelint-config-idiomatic-order": "9.0.0", - "stylelint-config-sass-guidelines": "10.0.0", - "stylelint-prettier": "4.0.2" - } -} diff --git a/pm2.config.js b/pm2.config.js deleted file mode 100644 index 13bd2e88..00000000 --- a/pm2.config.js +++ /dev/null @@ -1,14 +0,0 @@ -let apps = [ - { - name: 'searchkit_backend', - script: 'venv/bin/runwsgi instance/etc/zope.ini', - cwd: './backend', - }, - { - name: 'searchkit_frontend', - script: 'yarn build && yarn start:prod', - cwd: './frontend', - }, -]; - -module.exports = { apps: apps }; diff --git a/public/configuration.png b/public/configuration.png deleted file mode 100644 index 91513c7f265cbb51dad6d5bb2f5c104f19cfa29d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57903 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 iH<L4=$F{)@tr{MTn$*rzb? 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

CyC(=#d`!eS&ow^# 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 E0`$8{lK=n! diff --git a/src/components/Blocks/DownloadFiltersMapping.jsx b/src/components/Blocks/DownloadFiltersMapping.jsx deleted file mode 100644 index 92e568e0..00000000 --- a/src/components/Blocks/DownloadFiltersMapping.jsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import { useSelector } from 'react-redux'; -import { Button } from 'semantic-ui-react'; - -const FooComponent = ({ data }) => { - const vocabularies = useSelector((state) => state.querystring?.indexes); - function exportFiltersMapping(data) { - const filternames = data.facet_fields.map((el) => { - return el.field.value; - }); - let ff = {}; - filternames.forEach((fname) => { - let foo = vocabularies[fname].values; - Object.keys(foo).forEach((el) => { - ff[el] = foo[el].title; - }); - }); - let map = { - facet_fields: ff, - search_sections: Object.fromEntries( - data.search_sections.items.map((el) => { - return [el.section, el.label]; - }), - ), - }; - const fileData = JSON.stringify(map); - const blob = new Blob([fileData], { type: 'text/plain' }); - const url = URL.createObjectURL(blob); - const link = document.createElement('a'); - link.download = 'filter-mapping.json'; - link.href = url; - link.click(); - } - - return ( - - ); -}; - -export default FooComponent; diff --git a/src/components/Blocks/FacetedSearchBlockEdit.jsx b/src/components/Blocks/FacetedSearchBlockEdit.jsx deleted file mode 100644 index 591ca2b8..00000000 --- a/src/components/Blocks/FacetedSearchBlockEdit.jsx +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react'; -import { Container, Segment } from 'semantic-ui-react'; -import { SidebarPortal } from '@plone/volto/components'; - -import Sidebar from './Sidebar'; -import FacetedSearch from '../Views/FacetedSearch'; -import DownloadFiltersMapping from './DownloadFiltersMapping'; - -const Edit = ({ data, onChangeBlock, block, selected }) => { - return ( -
- - - - - - - - - -
- -
-
- ); -}; - -export default Edit; diff --git a/src/components/Blocks/FacetedSearchBlockView.jsx b/src/components/Blocks/FacetedSearchBlockView.jsx deleted file mode 100644 index 14b27a2e..00000000 --- a/src/components/Blocks/FacetedSearchBlockView.jsx +++ /dev/null @@ -1,13 +0,0 @@ -import React from 'react'; - -import FacetedSearch from '../Views/FacetedSearch'; - -const View = ({ data }) => { - return ( -
- -
- ); -}; - -export default View; diff --git a/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx b/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx deleted file mode 100644 index 111774b9..00000000 --- a/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; -import { SidebarPortal } from '@plone/volto/components'; - -import Sidebar from '../Sidebar'; -// import FacetedSearch from '../Views/FacetedSearch'; - -const Edit = ({ data, onChangeBlock, block, selected }) => { - return ( -
- - - - -

Search with bucket aggregation of ElasticSearch

-

Reference with react-searchkit defaults

-
- ); -}; - -export default Edit; diff --git a/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx b/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx deleted file mode 100644 index 38d12acf..00000000 --- a/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; - -import FacetedSearch from '../../Views/FacetedSearch'; - -const View = ({ data }) => { - return ( -
- -
- ); -}; - -export default View; diff --git a/src/components/Blocks/Reference/index.js b/src/components/Blocks/Reference/index.js deleted file mode 100644 index b1c77d4b..00000000 --- a/src/components/Blocks/Reference/index.js +++ /dev/null @@ -1,4 +0,0 @@ -import ReferenceSearchBlockEdit from './ReferenceSearchBlockEdit'; -import ReferenceSearchBlockView from './ReferenceSearchBlockView'; - -export { ReferenceSearchBlockEdit, ReferenceSearchBlockView }; diff --git a/src/components/Blocks/SearchSectionsWidget.jsx b/src/components/Blocks/SearchSectionsWidget.jsx deleted file mode 100644 index 81372829..00000000 --- a/src/components/Blocks/SearchSectionsWidget.jsx +++ /dev/null @@ -1,66 +0,0 @@ -import React from 'react'; -import { defineMessages } from 'react-intl'; - -import ObjectListWidget from '@plone/volto/components/manage/Widgets/ObjectListWidget'; - -const messages = defineMessages({ - searchSection: { - id: 'Search section', - defaultMessage: 'Search section', - }, - searchSectionLabel: { - id: 'Search section label', - defaultMessage: 'Search section label', - }, - addSearchSection: { - id: 'Add search section', - defaultMessage: 'Add search section', - }, - showFilter: { - id: 'Show filters', - defaultMessage: 'Show filter', - }, -}); - -const ItemSchema = ({ intl }) => { - return { - title: intl.formatMessage(messages.searchSection), - addMessage: intl.formatMessage(messages.addSearchSection), - properties: { - section: { - title: intl.formatMessage(messages.searchSection), - }, - label: { - title: intl.formatMessage(messages.searchSectionLabel), - }, - show_filter: { - title: intl.formatMessage(messages.showFilter), - type: 'boolean', - default: true, - }, - }, - fieldsets: [ - { - id: 'default', - title: 'History-Eintrag', - fields: ['section', 'label', 'show_filter'], - }, - ], - required: [], - }; -}; - -// TODO defaultData -const SearchSectionsWidget = (props) => { - // TODO intl - return ( - props.onChange(id, { items: value })} - /> - ); -}; - -export default SearchSectionsWidget; diff --git a/src/components/Blocks/Sidebar.jsx b/src/components/Blocks/Sidebar.jsx deleted file mode 100644 index 39a0e262..00000000 --- a/src/components/Blocks/Sidebar.jsx +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import { useIntl } from 'react-intl'; -import { SearchBlockSchema } from './schema'; -import InlineForm from '@plone/volto/components/manage/Form/InlineForm'; - -const Sidebar = ({ data, block, onChangeBlock }) => { - const intl = useIntl(); - let schema = SearchBlockSchema({ data, intl }); - return ( - { - onChangeBlock(block, { - ...data, - [id]: value, - }); - }} - formData={data} - /> - ); -}; - -export default Sidebar; diff --git a/src/components/Blocks/schema.js b/src/components/Blocks/schema.js deleted file mode 100644 index d0764695..00000000 --- a/src/components/Blocks/schema.js +++ /dev/null @@ -1,186 +0,0 @@ -import { - hasNonValueOperation, - hasDateOperation, -} from '@plone/volto/components/manage/Blocks/Search/utils'; -import messages from '../../messages'; - -const FacetSchema = ({ intl }) => ({ - title: intl.formatMessage(messages.facet), - fieldsets: [ - { - id: 'default', - title: 'Default', - fields: ['title', 'field'], - }, - ], - properties: { - title: { - title: intl.formatMessage(messages.label), - }, - field: { - title: intl.formatMessage(messages.field), - widget: 'select_querystring_field', - vocabulary: { '@id': 'plone.app.vocabularies.MetadataFields' }, - filterOptions: (options) => { - // Only allow indexes that provide simple, fixed vocabularies. - // This should be improved, together with the facets. The querystring - // widget implementation should serve as inspiration for those dynamic - // types of facets. - return Object.assign( - {}, - ...Object.keys(options).map((k) => - Object.keys(options[k].values || {}).length || - hasNonValueOperation(options[k].operations) || - hasDateOperation(options[k].operations) - ? { [k]: options[k] } - : {}, - ), - ); - }, - }, - }, - required: ['field'], -}); - -export const SearchBlockSchema = ({ data = {}, intl }) => { - return { - title: intl.formatMessage(messages.searchBlock), - fieldsets: [ - { - id: 'default', - title: 'API', - fields: [ - 'elastic_search_api_url', - 'elastic_search_api_index', - 'backend_url', - 'frontend_url', - ], - }, - { - id: 'facets', - title: 'Facets', - fields: [ - 'search_sections', - 'allow_search_excluded_sections', - 'show_filter_for_excluded_sections', - 'facet_fields', - 'filterLayout', - ], - }, - { - id: 'search', - title: 'Search', - fields: [ - 'allowed_content_types', - 'allowed_review_states', - 'searchedFields', - ], - }, - { - id: 'results', - title: 'Results', - fields: ['extrainfo_fields', 'subjectsFieldname'], - }, - { - id: 'divers', - title: 'Divers', - fields: ['relocation'], - }, - ], - properties: { - elastic_search_api_url: { - title: - '(deprected) (Set in collective.elastic environment variable) Elastic Search API URL', - default: 'http://localhost:9200', - }, - elastic_search_api_index: { - title: - '(deprected) (Set in collective.elastic environment variable) Elastic Search API Index', - default: 'esploneindex', - }, - backend_url: { - title: 'Backend URL', - default: 'http://localhost:8080/Plone', - }, - frontend_url: { - title: 'Frontend URL', - default: 'http://localhost:3000', - }, - search_sections: { - title: 'Search in sections', - description: 'Search can be restricted by sections / paths', - type: 'dict', - factory: 'JSONField', - widget: 'searchsectionswidget', - }, - allow_search_excluded_sections: { - title: 'Allow search everywhere except in sections', - type: 'boolean', - }, - show_filter_for_excluded_sections: { - title: 'Show filter for excluded sections', - type: 'boolean', - default: true, - }, - allowed_content_types: { - title: 'Types', - description: 'Restrict types to display.', - type: 'array', - widget: 'array', - items: { - vocabulary: { '@id': 'plone.app.vocabularies.UserFriendlyTypes' }, - }, - }, - allowed_review_states: { - title: 'States', - description: 'Restrict review states.', - type: 'array', - widget: 'array', - items: { - vocabulary: { '@id': 'plone.app.vocabularies.WorkflowStates' }, - }, - }, - searchedFields: { - title: 'Searchable fields with boosting', - description: - 'Type fieldnames to search in field names. Type title^1.4 to boost the title 40%.', - type: 'array', - creatable: true, - default: ['title^1.4', 'description^1.2'], - }, - facet_fields: { - title: 'Facets', - description: 'Fields to filter on.', - widget: 'object_list', - schema: FacetSchema({ intl }), - }, - filterLayout: { - title: intl.formatMessage(messages.facetWidget), - // widget: SelectWidget, - choices: [ - ['dropdown', 'Dropdown'], - ['checkboxes', 'Checkboxes'], - ], - default: 'dropdown', - }, - extrainfo_fields: { - title: intl.formatMessage(messages.metadata), - widget: 'object_list', - schema: FacetSchema({ intl }), - }, - subjectsFieldname: { - title: 'Field name of tags field', - description: - 'Show tags to search for. Let the field empty to not show tags.', - default: '', - }, - relocation: { - title: 'Relocation', - description: - 'CSS selector for relocation of search bar. Leave empty to keep search bar in block.', - default: '', - }, - }, - required: ['backend_url', 'frontend_url'], - }; -}; diff --git a/src/components/Searchkit/CustomESRequestSerializer.jsx b/src/components/Searchkit/CustomESRequestSerializer.jsx deleted file mode 100644 index c35b03d0..00000000 --- a/src/components/Searchkit/CustomESRequestSerializer.jsx +++ /dev/null @@ -1,423 +0,0 @@ -import { extend, isEmpty, keyBy, trim } from 'lodash'; -import { getObjectFromObjectList } from '../helpers.jsx'; - -export class CustomESRequestSerializer { - constructor(config) { - this.reviewstatemapping = config.reviewstatemapping; - this.searchedFields = config.searchedFields; - this.facet_fields = getObjectFromObjectList(config.facet_fields); - this.allowed_content_types = config.allowed_content_types; - this.allowed_review_states = config.allowed_review_states; - this.search_sections = config.search_sections; - } - /** - * Convert Array of filters to Object of filters - * @param {Array} filters Array of filters - * @return {Object} Object of filters - * input: [ - * [ 'type_agg', 'value1' ] - * [ 'type_agg', 'value2', [ 'subtype_agg', 'a value' ] ] - * ] - * output: { - * type_agg: ['value1', 'value2'] - * subtype_agg: [ 'a value' ] - * } - */ - getFilters = (filters) => { - const aggValueObj = {}; - - const getChildFilter = (filter) => { - const aggName = filter[0]; - const fieldValue = filter[1]; - if (aggName in aggValueObj) { - aggValueObj[aggName].push(fieldValue); - } else { - aggValueObj[aggName] = [fieldValue]; - } - const hasChild = filter.length === 3; - if (hasChild) { - getChildFilter(filter[2]); - } - }; - - filters.forEach((filterObj) => { - getChildFilter(filterObj); - }); - return aggValueObj; - }; - - /** - * Return a serialized version of the app state `query` for the API backend. - * @param {object} stateQuery the `query` state to serialize - */ - serialize = (stateQuery) => { - const { queryString, sortBy, sortOrder, page, size, filters } = stateQuery; - const bodyParams = {}; - const force_fuzzy = true; // search for `${word}` and `${word}~` - - let qs_tailored_should_notexact = []; - let qs_tailored_should_exact = []; - let qs_tailored_must_notexact = []; - let qs_tailored_must_exact = []; - let qs_tailored_mustNot_exact = []; - - const _remove_orphan_leading_or_trailing_quotmarks = (word) => { - let word_without_plus_or_minus = trim(word, '+'); - word_without_plus_or_minus = trim(word_without_plus_or_minus, '-'); - if ( - !( - word_without_plus_or_minus.startsWith('"') && - word_without_plus_or_minus.endsWith('"') - ) && - !( - !word_without_plus_or_minus.startsWith('"') && - !word_without_plus_or_minus.endsWith('"') - ) - ) { - return word.replace('"', ''); - } - return word; - }; - - const _removeQuotationMarks = (word) => { - word.replace('"', ''); - word.replace("'", ''); - return word; - }; - - const _make_fuzzy_and_enrich_with_word_parts = (word) => { - // EXCLUDE - if (word.startsWith('-')) { - qs_tailored_mustNot_exact.push(_removeQuotationMarks(word.slice(1))); - return; - } - // MUST - if (word.startsWith('+')) { - if (word.includes('"') || word.includes('*') || word.includes('?')) { - qs_tailored_must_exact.push(word.slice(1)); - } else { - qs_tailored_must_notexact.push(word.slice(1)); - } - return; - } - - // WILDCARD - if (word.includes('*') || word.includes('?')) { - qs_tailored_should_exact.push(_removeQuotationMarks(word)); - return; - } - // EXACT - if (word.includes('"')) { - qs_tailored_should_exact.push(word); - return; - } - - // Words with hyphen - let word_new; - let wordpartlist = word.split('-'); // common hyphens - if (wordpartlist.length > 1) { - // word with hyphen - let resultlist = []; - wordpartlist.push(word); - wordpartlist.forEach((el) => { - if (force_fuzzy) { - resultlist.push(`${el} ${el}~`); - } else { - resultlist.push(el); - } - }); - word_new = resultlist.join(' '); - } else { - // word without hyphen - word_new = force_fuzzy ? `${word} ${word}~` : `${word}`; - } - qs_tailored_should_notexact.push(word_new); - return; - }; - - if (!isEmpty(queryString)) { - // - search fuzzy - // - search also for word parts (LSR-Lehrbetrieb: search also for LSR and Lehrbetrieb) - let words = queryString.trim().split(' '); - words = words - // filter out spaces, orphan ", "AND", and "OR" - .filter((word) => !['', '"', 'AND', 'OR', 'NOT'].includes(word)); - - words.forEach((word) => { - word = _remove_orphan_leading_or_trailing_quotmarks(word); - _make_fuzzy_and_enrich_with_word_parts(word); - }); - - let searchedFields = [...this.searchedFields]; - let searchedFields_exact = [...this.searchedFields]; - searchedFields_exact = searchedFields_exact.map((fld) => { - const fieldname = fld.split('^')[0]; - return fld.replace(fieldname, `${fieldname}.exact`); - }); - - // Construction of query - let shouldList = []; - let mustList = []; - let must_notList = []; - - qs_tailored_should_notexact.forEach((element) => { - shouldList.push({ - query_string: { - query: element, - fields: searchedFields, - }, - }); - }); - qs_tailored_should_exact.forEach((element) => { - shouldList.push({ - query_string: { - query: element, - fields: searchedFields_exact, - }, - }); - }); - - qs_tailored_must_notexact.forEach((el) => { - mustList.push({ - query_string: { - query: el, - fields: searchedFields, - }, - }); - }); - qs_tailored_must_exact.forEach((element) => { - mustList.push({ - query_string: { - query: element, - fields: searchedFields_exact, - }, - }); - }); - qs_tailored_mustNot_exact.forEach((element) => { - must_notList.push({ - query_string: { - query: element, - fields: searchedFields_exact, - }, - }); - }); - - bodyParams['query'] = { - bool: { - should: shouldList, - must: mustList, - must_not: must_notList, - }, - }; - - bodyParams['highlight'] = { - number_of_fragments: 20, - fields: [ - { - title: { - matched_fields: ['title', 'title.exact'], - type: 'fvh', - }, - }, - { - description: { - matched_fields: ['description', 'description.exact'], - type: 'fvh', - }, - }, - { - blocks_plaintext: { - matched_fields: ['blocks_plaintext', 'blocks_plaintext.exact'], - type: 'fvh', - }, - }, - ], - }; - } - - if (sortBy !== 'bestmatch') { - bodyParams['sort'] = bodyParams['sort'] || []; - const sortObj = {}; - sortObj[sortBy] = sortOrder && sortOrder === 'desc' ? 'desc' : 'asc'; - bodyParams['sort'].push(sortObj); - } - - if (size > 0) { - bodyParams['size'] = size; // batch size - } - - if (page > 0) { - const s = size > 0 ? size : 0; - const from = (page - 1) * s; - bodyParams['from'] = from; - } - - const getFieldnameFromAgg = (agg) => { - return agg.replace('_agg', ''); - }; - - // Generate terms of global filters - let terms = []; - this.allowed_content_types?.length > 0 && terms.push({ - terms: { - portal_type: this.allowed_content_types, - }, - }); - this.allowed_review_states?.length > 0 && terms.push({ - terms: { - review_state: this.allowed_review_states, - }, - }); - - const filters_dict = keyBy(filters, (e) => { - return e[0]; - }); - const section = filters_dict['section']; - - // Generate terms of selected options - let terms_of_selected_options = []; - if (filters.length) { - // Convert to object. - const aggValueObj = this.getFilters(filters); - - terms_of_selected_options = Object.keys(aggValueObj).reduce( - (accumulator, aggName) => { - const obj = {}; - const fieldName = getFieldnameFromAgg(aggName); - if (fieldName === 'subjects') { - obj['subjects.keyword'] = aggValueObj[aggName]; - } else { - obj[fieldName] = aggValueObj[aggName]; - } - if ( - aggName !== 'section' || - JSON.stringify(aggValueObj[aggName]) !== '["others"]' - ) { - accumulator.push({ terms: obj }); - } - return accumulator; - }, - [], - ); - } - - /** - * ES post_filter - */ - - const post_filter = { - bool: { must: terms.concat(terms_of_selected_options) }, - }; - - // Exclude sections - if (section && section[1] === 'others') { - post_filter['bool']['must_not'] = [ - { - terms: { - section: this.search_sections.items.map((el) => { - return el.section; - }), - }, - }, - ]; - } - - bodyParams['post_filter'] = post_filter; - - /** - * Aggregations - */ - const filter = (fieldName) => { - let myAggsFilter = terms; - // Add selected filters - const terms_of_selected_options_without_self = - terms_of_selected_options.filter( - (el) => !Object.keys(el.terms).includes(fieldName), - ); - myAggsFilter = myAggsFilter.concat( - terms_of_selected_options_without_self, - ); - - // So far - let res = myAggsFilter - ? { - bool: { - must: myAggsFilter, - }, - } - : null; - - if (fieldName !== 'section') { - if (section) { - if (section[1] === 'others') { - res = res || { - bool: {}, - }; - res.bool.must_not = [ - { - terms: { - section: this.search_sections.items.map((el) => { - return el.section; - }), - }, - }, - ]; - } else { - // // Must section - // res = res || { - // bool: { - // must: [], - // }, - // }; - // res.bool.must.push([section[1]]); - } - } - } - - return res; - }; - - bodyParams['aggs'] = {}; - let aggregations = Object.keys(this.facet_fields); - aggregations.push('section'); - aggregations.forEach((fieldName) => { - let aggName = `${fieldName}_agg`; - let field = fieldName; - if (fieldName === 'Subject') { - field = 'subjects.keyword'; - aggName = 'subjects_agg'; - } - if (fieldName === 'section') { - field = 'section'; - } - let aggBucketTermsComponent = { - [aggName]: { - aggs: { - [aggName]: { - terms: { - field: `${field}`, - order: { - _key: 'asc', - }, - size: 500, // number of buckets - }, - }, - somemoredatafromelasticsearch: { - top_hits: { - size: 1, - _source: { includes: [field] }, - }, - }, - }, - }, - }; - const filter_fieldname = filter(fieldName); - if (filter_fieldname) { - aggBucketTermsComponent[aggName].filter = filter_fieldname; - } - extend(bodyParams['aggs'], aggBucketTermsComponent); - }); - - return bodyParams; - }; -} diff --git a/src/components/Searchkit/CustomESResponseSerializer.jsx b/src/components/Searchkit/CustomESResponseSerializer.jsx deleted file mode 100644 index 07cdfbee..00000000 --- a/src/components/Searchkit/CustomESResponseSerializer.jsx +++ /dev/null @@ -1,48 +0,0 @@ -function _pimpedAggregations(aggregations) { - let result = Object.assign({}, aggregations); - let buckets = []; - Object.keys(result).forEach((element) => { - if (result[element] && result[element][element].buckets) { - result[element].buckets = result[element][element].buckets; - buckets = result[element].buckets; - } else { - buckets = []; - } - buckets && - buckets.forEach((bucket) => { - bucket.label = - bucket.somemoredatafromelasticsearch?.hits.hits[0]._source.title ?? - bucket.key; - }); - }); - - return result; -} - -export class CustomESResponseSerializer { - constructor(config) { - this.serialize = this.serialize.bind(this); - this.backend_url = config.backend_url; - this.frontend_url = config.frontend_url; - } - - /** - * Return a serialized version of the API backend response for the app state `results`. - * @param {object} payload the backend response payload - */ - - serialize(payload) { - const { aggregations, hits } = payload; - const foo = { - aggregations: _pimpedAggregations(aggregations) || {}, - hits: - hits?.hits.map((hit) => { - // TODO Replace hack: Add highlights to _source data - hit._source['highlight'] = hit.highlight; - return hit._source; - }) || [], - total: hits?.total.value < 11 ? hits.hits.length : hits?.total.value || 0, - }; - return foo; - } -} diff --git a/src/components/Searchkit/ESSearchApi.jsx b/src/components/Searchkit/ESSearchApi.jsx deleted file mode 100644 index 8de9f63c..00000000 --- a/src/components/Searchkit/ESSearchApi.jsx +++ /dev/null @@ -1,78 +0,0 @@ -import _get from 'lodash/get'; -import _hasIn from 'lodash/hasIn'; -import { CustomESRequestSerializer } from './CustomESRequestSerializer'; -import { CustomESResponseSerializer } from './CustomESResponseSerializer'; - -export class PloneSearchApi { - constructor(config) { - this.fetchConfig = _get(config, 'fetchPayload', {}); - this.validateFetchConfig(); - this.initSerializers(config); - this.search = this.search.bind(this); - this.elastic_search_api_url = config.elastic_search_api_url; - this.elastic_search_api_index = config.elastic_search_api_index; - } - - validateFetchConfig() { - if (!_hasIn(this.fetchConfig, 'url')) { - throw new Error('PloneSearchApi config: `url` is required.'); - } - } - - initSerializers(config) { - const requestSerializerCls = _get( - config, - 'es.requestSerializer', - CustomESRequestSerializer, - ); - const responseSerializerCls = _get( - config, - 'es.responseSerializer', - CustomESResponseSerializer, - ); - - this.requestSerializer = new requestSerializerCls({ - searchedFields: config.searchedFields, - facet_fields: config.facet_fields, - allowed_content_types: config.allowed_content_types, - allowed_review_states: config.allowed_review_states, - search_sections: config.search_sections, - }); - this.responseSerializer = new responseSerializerCls({ - backend_url: config.backend_url, - frontend_url: config.frontend_url, - }); - } - - /** - * Perform the backend request to search and return the serialized list of results for the app state `results`. - * @param {string} stateQuery the `query` state with the user input - */ - async search(stateQuery) { - const payload = this.requestSerializer.serialize(stateQuery); - // Extend paylod with url and index to address elasticsearch server - try { - const response = await fetch(this.fetchConfig.url, { - method: 'POST', - headers: this.fetchConfig.headers, - body: JSON.stringify({ - elasticsearch_payload: payload, - elasticsearch_url: this.elastic_search_api_url, - elasticsearch_index: this.elastic_search_api_index, - }), - }); - // let results = await this.responseSerializer.serialize(response.data); - let results = await response.json(); - if (results.message) { - throw results - // throw new Error(`${results.type} ${results.message}`); - } - results = this.responseSerializer.serialize(results); - return results; - } catch (error) { - console.debug('ESSearchApi. error:'); - console.debug(error); - throw error; - } - } -} diff --git a/src/components/Searchkit/ElasticSearchHighlights.jsx b/src/components/Searchkit/ElasticSearchHighlights.jsx deleted file mode 100644 index c948b2c0..00000000 --- a/src/components/Searchkit/ElasticSearchHighlights.jsx +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Component to show matches per document - * fragment_size is set in CustomESRequestSerializer - */ -import React from 'react'; -import { useIntl } from 'react-intl'; -import messages from '../../messages'; - -export const ElasticSearchHighlights = ({ highlight, indexResult }) => { - const [toggleDetails, setToggleDetails] = React.useState(false); - - const intl = useIntl(); - - let fieldmapping = { - title: intl.formatMessage(messages.title), - description: intl.formatMessage(messages.description), - subjects: intl.formatMessage(messages.tags), - freemanualtags_searchable: intl.formatMessage(messages.tags), - blocks_plaintext: intl.formatMessage(messages.content), - manualfilecontent: intl.formatMessage(messages.content), - }; - - const showDetails = () => { - setToggleDetails(!toggleDetails); - }; - - const fragments = getFragments(highlight); - if (highlight) { - return !toggleDetails ? ( -
- {fragments.slice(0, 3).map((el, index) => { - return
; - })} -
- ) : ( -
- {Object.keys(highlight) - .reverse() - .map((fld) => { - return ( -
-
- Matches in {fieldmapping[fld] || fld}: -
-
    - {highlight[fld].map((el, index) => { - return ( -
  • - ); - })} -
-
- ); - })} -
- ); - } else { - return null; - } -}; - -/** - * Get fragments of matches in a document - * @param {Object} highlight. part of response of Elasticsearch query - * @returns {Array} Array of strings - */ -export const getFragments = (highlight) => { - let fragments = []; - highlight && - Object.keys(highlight) - .reverse() - .forEach((fld) => { - highlight[fld].forEach((mtch) => { - fragments.push(mtch); - }); - }); - return fragments; -}; - -/** - * Get matches in a document - * @param {Object} highlight. part of response of Elasticsearch query - * @returns {Array} Array of strings - */ -export const getMatches = (highlight) => { - const regex = /(.*?)<\/em>/gm; - let fragments = getFragments(highlight); - let matches = []; - fragments.forEach((fragment) => { - const fragmentmatches = [...fragment.matchAll(regex)]; - matches = matches.concat(fragmentmatches.map((match) => match[1])); - }); - matches = [...new Set(matches)]; - return matches; -}; - -export const ElasticSearchMatches = ({ highlight, indexResult }) => { - const matches = getMatches(highlight); - return ( -
- {matches.join(' | ')} -
-
- ); -}; diff --git a/src/components/Searchkit/Error.jsx b/src/components/Searchkit/Error.jsx deleted file mode 100644 index 97e756d7..00000000 --- a/src/components/Searchkit/Error.jsx +++ /dev/null @@ -1,22 +0,0 @@ -import { useSelector } from 'react-redux'; -import { Header, Segment } from 'semantic-ui-react'; -import { FormattedMessage } from 'react-intl'; - -const Error = ({ error }) => { - - return error?.type ? ( - -
-

- -

-
- {error?.type}: {error?.message} -
- ) : null; -}; - -export default Error; diff --git a/src/components/Searchkit/Error.test.js b/src/components/Searchkit/Error.test.js deleted file mode 100644 index 7d54361b..00000000 --- a/src/components/Searchkit/Error.test.js +++ /dev/null @@ -1,31 +0,0 @@ -import React from 'react'; -import renderer from 'react-test-renderer'; -import configureStore from 'redux-mock-store'; -import { Provider } from 'react-intl-redux'; -import { MemoryRouter } from 'react-router-dom'; - -import Error from './Error'; - -beforeAll(() => {}); - -const mockStore = configureStore(); - -describe('Generic Error', () => { - it('renders a simple error component', () => { - const store = mockStore({ - intl: { - locale: 'en', - messages: {}, - }, - }); - const component = renderer.create( - - - - - , - ); - const json = component.toJSON(); - expect(json).toMatchSnapshot(); - }); -}); diff --git a/src/components/Searchkit/LICENSE_Cern_react-searchkit.md b/src/components/Searchkit/LICENSE_Cern_react-searchkit.md deleted file mode 100644 index 19aa587f..00000000 --- a/src/components/Searchkit/LICENSE_Cern_react-searchkit.md +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (C) 2015-2019 CERN. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/src/components/Searchkit/README.md b/src/components/Searchkit/README.md deleted file mode 100644 index 1893527b..00000000 --- a/src/components/Searchkit/README.md +++ /dev/null @@ -1,3 +0,0 @@ -`volto-searchkit-block` is an integration of `react-searchkit` in `Volto / Plone 6`. - -`react-searchkit` Copyright (C) 2015-2019 CERN diff --git a/src/components/Searchkit/Results.js b/src/components/Searchkit/Results.js deleted file mode 100644 index 71b535bd..00000000 --- a/src/components/Searchkit/Results.js +++ /dev/null @@ -1,89 +0,0 @@ -import React, { Component } from 'react'; -import { Grid } from 'semantic-ui-react'; -import { - Count, - Pagination, - ResultsMultiLayout, - Sort, - withState, -} from 'react-searchkit'; - -import config from '@plone/volto/registry'; - -// TODO conditional Matomo tracking: catch case if app has not volto-matomo installed -import { trackSiteSearch } from '@eeacms/volto-matomo/utils'; - -import { scrollToTarget } from '../helpers'; - -class Results extends Component { - componentDidMount() { - // Dispatch event (on query change), other add-ons can subscribe to. - var evt = new CustomEvent('searchkitQueryChanged', {}); - window && window.dispatchEvent(evt); - if ( - config.settings.searchkitblock.trackVoltoMatomo && - this.props.currentQueryState.queryString - ) { - let options = { - keyword: this.props.currentQueryState.queryString, - category: 'Suche in Dokumentation', // optional - // count: 4, // optional - documentTitle: 'Suche in Dokumentation', // optional - href: '/search', // optional - count: this.props.currentResultsState.data.total, - // customDimensions: [ - // { - // id: 1, - // value: 'loggedIn', - // }, - // ], // optional - }; - trackSiteSearch(options); - } - } - - render() { - const { total } = this.props.currentResultsState.data; - return total ? ( -
- - - - - - <> {cmp}} - overridableId="volto" - /> - - - - - - - - -
- ) : null; - } -} - -Results.propTypes = {}; - -Results.defaultProps = {}; - -const MyResults = (props) => { - // Add scroll to input field search - React.useEffect(() => { - const el = document.querySelector('.searchkitsearch'); - if (el) { - scrollToTarget(el); - } - }, []); - - return ; -}; - -export const OnResults = withState(MyResults); diff --git a/src/components/Searchkit/SearchBarSection.jsx b/src/components/Searchkit/SearchBarSection.jsx deleted file mode 100644 index 81939111..00000000 --- a/src/components/Searchkit/SearchBarSection.jsx +++ /dev/null @@ -1,51 +0,0 @@ -import { useIntl } from 'react-intl'; -import { Icon as IconSemantic } from 'semantic-ui-react'; -import { onQueryChanged, SearchBar, withState } from 'react-searchkit'; - -import messages from '../../messages'; - -const _SearchBarSection = (props) => { - const intl = useIntl(); - - const payloadOfReset = { - searchQuery: { - sortBy: 'bestmatch', - sortOrder: 'asc', - layout: 'list', - page: 1, - size: 10, - queryString: '', - }, - }; - - const onResetHandler = (event) => { - onQueryChanged(payloadOfReset); - }; - - return ( -
- - onResetHandler(event)} - /> -
- ); -}; - -export default withState(_SearchBarSection); diff --git a/src/components/Searchkit/SectionsSearch.jsx b/src/components/Searchkit/SectionsSearch.jsx deleted file mode 100644 index 133ad80c..00000000 --- a/src/components/Searchkit/SectionsSearch.jsx +++ /dev/null @@ -1,156 +0,0 @@ -import React from 'react'; -import { isEmpty, keyBy } from 'lodash'; -import { withState } from 'react-searchkit'; -import { BodyClass } from '@plone/volto/helpers'; -// import StateLogger from '../StateLogger'; - -const _SectionsSearch = (props) => { - const { - allow_search_excluded_sections, - show_filter_for_excluded_sections, - search_sections, - currentQueryState, - updateQueryState, - } = props; - - // State - const [activeSection, setActiveSection] = React.useState('all'); - - // Helpers - const search_sections_dict = keyBy(search_sections?.items || [], (el) => { - return el.section; - }); - - let doc_count_others = 0; - let doc_count_all = 0; - - if ( - props.currentResultsState.data.aggregations.section_agg?.section_agg - ?.buckets - ) { - const buckets = - props.currentResultsState.data.aggregations.section_agg?.section_agg - ?.buckets; - let bucket_dict = {}; - buckets.forEach((el) => { - bucket_dict[el.key] = el.doc_count; - }); - - // calculate doc_counts of others and all - let count_others = 0; - let count_all = 0; - Object.keys(bucket_dict).forEach((el) => { - if (!Object.keys(search_sections_dict).includes(el)) { - count_others = count_others + bucket_dict[el]; - } - }); - Object.keys(bucket_dict).forEach((el) => { - count_all = count_all + bucket_dict[el]; - }); - doc_count_others = count_others; - doc_count_all = count_all; - } - - React.useEffect(() => { - const filters_dictionary = keyBy(currentQueryState.filters, (el) => { - return el[0]; - }); - setActiveSection( - filters_dictionary.section ? filters_dictionary.section[1] : 'all', - ); - }, [currentQueryState]); - - const restrictSearchToSection = (section) => { - setActiveSection(section); - let kitquerystate = { - sortBy: 'modified', - sortOrder: 'desc', - layout: 'list', - page: 1, - size: 10, - filters: currentQueryState.filters, - }; - if (currentQueryState.queryString) { - kitquerystate.queryString = currentQueryState.queryString; - } - - // Empty filters for sections without filter - if ( - (search_sections_dict[section] && - !search_sections_dict[section].show_filter) || - (section === 'others' && !show_filter_for_excluded_sections) - ) { - kitquerystate.filters = []; - } - // Replace filter 'section' - kitquerystate.filters = kitquerystate.filters.filter((el) => { - return el[0] !== 'section'; - }); - if (section === 'all') { - // pass - } else if (section === 'others') { - kitquerystate.filters.push(['section', section]); - } else { - kitquerystate.filters.push(['section', section]); - } - // Do search! - updateQueryState(kitquerystate); - }; - - return isEmpty(props.currentResultsState.error) ? ( - <> - -
- {search_sections?.items?.length > 0 ? ( - - ) : null} - {search_sections?.items?.length > 0 && - allow_search_excluded_sections ? ( - - ) : null} - {search_sections - ? search_sections.items.map((el) => { - return ( - - ); - }) - : null} -
- {/* */} - - ) : null; -}; - -export default withState(_SectionsSearch); diff --git a/src/components/Searchkit/__snapshots__/Error.test.js.snap b/src/components/Searchkit/__snapshots__/Error.test.js.snap deleted file mode 100644 index a78b8382..00000000 --- a/src/components/Searchkit/__snapshots__/Error.test.js.snap +++ /dev/null @@ -1,23 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`Generic Error renders a simple error component 1`] = ` -
-
-

- Check the configuration of your searchkit block! -

-
- - ConnectionError - : - - - - Service pipapo not found. - -
-`; diff --git a/src/components/StateLogger.jsx b/src/components/StateLogger.jsx deleted file mode 100644 index c8590d83..00000000 --- a/src/components/StateLogger.jsx +++ /dev/null @@ -1,23 +0,0 @@ -import React from 'react'; -import { withState } from 'react-searchkit'; - -class _StateLogger extends React.Component { - render() { - return ( -
-
-

Current results state

-
{JSON.stringify(this.props.currentResultsState, null, 2)}
-
-
-

Current query state

-
{JSON.stringify(this.props.currentQueryState, null, 2)}
-
-
- ); - } -} - -const StateLogger = withState(_StateLogger); - -export default StateLogger; diff --git a/src/components/Views/FacetedSearch.jsx b/src/components/Views/FacetedSearch.jsx deleted file mode 100644 index 0c8ec0a0..00000000 --- a/src/components/Views/FacetedSearch.jsx +++ /dev/null @@ -1,800 +0,0 @@ -import React from 'react'; -import { compact, truncate } from 'lodash'; -import cx from 'classnames'; -import Cookies from 'universal-cookie'; -import { useSelector } from 'react-redux'; -import { Link } from 'react-router-dom'; -import { FormattedMessage, useIntl } from 'react-intl'; -import { Portal } from 'react-portal'; -import { OverridableContext } from 'react-overridable'; - -import { - Button, - Container, - Dropdown, - Grid, - Header, - Icon as IconSemantic, - Item, - Label, - Pagination as Paginator, - Segment, -} from 'semantic-ui-react'; -import { - BucketAggregation, - EmptyResults, - onQueryChanged, - ReactSearchKit, - ResultsLoader, - withState, - Error as ErrorCp, -} from 'react-searchkit'; - -import { expandToBackendURL } from '@plone/volto/helpers'; -import { Icon } from '@plone/volto/components'; -import leftAngle from '@plone/volto/icons/left-key.svg'; -import rightAngle from '@plone/volto/icons/right-key.svg'; -import firstAngle from '@plone/volto/icons/first.svg'; -import lastAngle from '@plone/volto/icons/last.svg'; -import clearSVG from '@plone/volto/icons/clear.svg'; - -import messages from '../../messages'; -import { flattenESUrlToPath, getObjectFromObjectList } from '../helpers'; - -import { PloneSearchApi } from '../Searchkit/ESSearchApi'; -import { CustomESRequestSerializer } from '../Searchkit/CustomESRequestSerializer'; -import { CustomESResponseSerializer } from '../Searchkit/CustomESResponseSerializer'; -import { OnResults } from '../Searchkit/Results'; -import SectionsSearch from '../Searchkit/SectionsSearch'; -import SearchBarSection from '../Searchkit/SearchBarSection'; - -import { ElasticSearchHighlights } from '../Searchkit/ElasticSearchHighlights'; -import ErrorComponent from '../Searchkit/Error'; -// import StateLogger from '../StateLogger'; - -import './less/springisnow-volto-searchkit-block.less'; - -import config from '@plone/volto/registry'; - -// TODO Make reviewstatemapping configurable -export const ploneSearchApi = (data) => { - const cookies = new Cookies(); - const authToken = cookies.get('auth_token'); - return new PloneSearchApi({ - fetchPayload: { - url: expandToBackendURL('/@kitsearch'), - timeout: 5000, - headers: { - // TODO Fix CORS - // Host: localhost:55001 - // Origin: http://localhost:3000 - Accept: 'application/json', - Authorization: `Bearer ${authToken}`, - }, - }, - es: { - requestSerializer: CustomESRequestSerializer, - responseSerializer: CustomESResponseSerializer, - }, - searchedFields: data.searchedFields, - facet_fields: data.facet_fields, - allowed_content_types: data.allowed_content_types, - allowed_review_states: data.allowed_review_states, - search_sections: data.search_sections, - backend_url: data.backend_url, - frontend_url: data.frontend_url, - elastic_search_api_url: data.elastic_search_api_url, - elastic_search_api_index: data.elastic_search_api_index, - }); -}; - -const _ExtraInfo = (props) => { - const { result } = props; - - const extrainfo_fields = getObjectFromObjectList( - props.currentQueryState.data.extrainfo_fields, - ); - const facet_fields = getObjectFromObjectList( - props.currentQueryState.data.facet_fields, - ); - let subjectsFieldname = props.currentQueryState.data?.subjectsFieldname; // "subjects"; - - const querystringindexes = useSelector( - (state) => state.query?.data?.querystringindexes, - ); - - const translate = (key, fieldname) => { - let label = key; - if (querystringindexes || querystringindexes[fieldname]) { - label = querystringindexes[fieldname]?.values[key]?.title || key; - } - return label; - }; - - return ( - - {Object.keys(extrainfo_fields).map((extrainfo_key, idx) => { - if (!result[extrainfo_key]) { - return null; - } - const extrainfo_value = Array.isArray(result[extrainfo_key]) - ? result[extrainfo_key] - : [result[extrainfo_key]]; - - return Object.keys(facet_fields).includes(extrainfo_key) ? ( - - {extrainfo_fields[extrainfo_key]}: - {extrainfo_value?.map((item, index) => { - let tito = translate(item, extrainfo_key); - let payloadOfFilter = { - searchQuery: { - sortBy: 'bestmatch', - sortOrder: 'asc', - layout: 'list', - page: 1, - size: 10, - filters: [[`${extrainfo_key}_agg`, item]], - }, - }; - return ( - - ); - })} - {idx < Object.keys(extrainfo_fields).length - 1 && ( - | - )} - - ) : ( - - {extrainfo_fields[extrainfo_key]}: - {extrainfo_value?.map((item, index) => { - let tito = item.title || item.token || item; - return ( - - {tito} - {index < extrainfo_value.length - 1 ? ',' : null} - - ); - })} - {idx < Object.keys(extrainfo_fields).length - 1 && ( - | - )} - - ); - })} - - {Array.isArray(result[subjectsFieldname]) && - result[subjectsFieldname]?.length > 0 ? ( -
- - : - - {result[subjectsFieldname]?.map((item, index) => { - let tito = item; - let payloadOfTag = { - searchQuery: { - sortBy: 'bestmatch', - sortOrder: 'asc', - layout: 'list', - page: 1, - size: 10, - queryString: tito, - }, - }; - return ( - - ); - })} -
- ) : null} -
- ); -}; - -const ExtraInfo = withState(_ExtraInfo); - -const _CustomResultsListItem = (props) => { - const { result, index } = props; - const backend_url = props.currentQueryState.data?.backend_url; - const is_external_content = !result['@id'].includes(backend_url); - const item_url = result['@id'].includes(backend_url) - ? flattenESUrlToPath(result['@id']) - : result['@id']; - const querystringindexes = useSelector( - (state) => state.query?.data?.querystringindexes, - ); - - const translate = (key) => { - let label = key; - if (querystringindexes?.informationtype) { - label = querystringindexes.informationtype.values[key]?.title || key; - } - return label; - }; - - return ( - - - {Array.isArray(result.informationtype) && - result.informationtype?.length > 0 ? ( - - {result.informationtype?.map((item, index) => { - let tito = translate(item); - const payload = { - searchQuery: { - sortBy: 'bestmatch', - sortOrder: 'asc', - layout: 'list', - page: 1, - size: 10, - filters: [['informationtype_agg', item]], - }, - }; - return ( - - ); - })} - - ) : null} - {is_external_content ? ( - -
- {result.title} - - - - {truncate(result.description, { length: 200 })} - - - - ) : ( - - - {result.title} - - - - {truncate(result.description, { length: 200 })} - - - - )} - - - - - ); -}; - -const CustomResultsListItem = withState(_CustomResultsListItem); - -const MyCountElement = ({ totalResults }) => { - const intl = useIntl(); - let labelSearchResults = intl.formatMessage(messages.searchresult); - let labelSearchResultsPlural = intl.formatMessage(messages.searchresults); - return ( -
- {totalResults}{' '} - {totalResults === 1 ? labelSearchResults : labelSearchResultsPlural} -
- ); -}; - -const myActiveFiltersElement = (props) => { - const { filters, removeActiveFilter, getLabel } = props; - return ( - <> - {filters.map((filter, index) => { - const { label, activeFilter } = getLabel(filter); - return ( - - ); - })} - - ); -}; - -/** - * CustomBucketAggregationElement - * One single Filter of Faceted Navigation - * props.agg.field: field name - */ -const CustomBucketAggregationElement = (props) => { - const { title, containerCmp, updateQueryFilters } = props; - const fieldname = props.agg.field; - const querystringindexes = useSelector( - (state) => state.query?.data?.querystringindexes, - ); - - /** - * Translate labels according vocabulary - * @param {*} bucks - * @returns - */ - const translate = (bucks) => { - if (querystringindexes[fieldname]) { - bucks.forEach((element) => { - element.label = - querystringindexes[fieldname].values[element.key]?.title || - element.key; - }); - } - return bucks; - }; - - // Get label from token - let buckets = containerCmp.props.buckets; - buckets = translate(buckets); - let filter_labels_dict = Object.fromEntries( - Array.from(buckets, (x) => [x.key, x.label]), // TODO Translate label - ); - // List of labels of selected options - let selectedFilters = containerCmp.props.selectedFilters - .map((el) => el[1]) - .map((token) => filter_labels_dict[token]); - selectedFilters = compact(selectedFilters); - // List of all available options - let all_filters = containerCmp.props.buckets.map((el) => { - return [containerCmp.props.aggName, el.key]; - }); - - const removeAggFilters = (event) => { - if (containerCmp.props.selectedFilters.length) { - updateQueryFilters(containerCmp.props.selectedFilters); - } - event.preventDefault(); - event.stopPropagation(); - }; - - const selectAllAggFilters = (event) => { - // toggle! updateQueryFilters toggles filter selection - if (containerCmp.props.selectedFilters.length) { - updateQueryFilters(containerCmp.props.selectedFilters); - } - updateQueryFilters(all_filters); - - event.preventDefault(); - event.stopPropagation(); - }; - - const dropdowntitle = - title + (selectedFilters.length > 0 ? ` [${selectedFilters.length}]` : ''); - - return containerCmp ? ( -
- 9, - })} - > - - - selectAllAggFilters(e)} - onKeyDown={(e) => selectAllAggFilters(e)} - role="option" - aria-selected="false" - tabIndex="0" - className="select_all" - > - - {' '} - /{' '} - removeAggFilters(e)} - onKeyDown={(e) => removeAggFilters(e)} - role="option" - aria-selected="false" - tabIndex="0" - className="deselect_all" - > - {' '} - - - - {containerCmp} - - - {/* removeAggFilters(e)} - /> */} -
- ) : null; -}; - -function choicesSorter(a, b) { - const titleA = a.props.bucket.label; - const titleB = b.props.bucket.label; - if (titleA < titleB) { - return -1; - } else if (titleA > titleB) { - return 1; - } - return 0; -} -const CustomBucketAggregationContainerElement = ({ valuesCmp }) => { - let foo = valuesCmp; - foo.sort(choicesSorter); - return <>{foo}; -}; - -const CustomBucketAggregationValuesElement = (props) => { - const { - bucket, - keyField, - isSelected, - onFilterClicked, - childAggCmps, - // updateQueryState, - // currentQueryState, - } = props; - const label = bucket.label - ? `${bucket.label} (${bucket.doc_count})` - : `${keyField} (${bucket.doc_count})`; - - const onFilterClickedCustom = (filter, event) => { - onFilterClicked(filter); - - event.preventDefault(); - event.stopPropagation(); - }; - - return ( - - {isSelected ? ( - onFilterClickedCustom(bucket.key, event)} - className={isSelected ? 'isSelected right floated' : 'right floated'} - key={`${bucket.key}-description`} - > - - - ) : null} - onFilterClickedCustom(bucket.key, event)} - className={isSelected ? 'isSelected' : ''} - key={bucket.key} - > - {label} - - {childAggCmps} - - ); -}; - -const customEmpytResultsElement = (props) => { - const { resetQuery } = props; - return ( - -
- -
- -
- ); -}; - -const customSort = ({ - currentSortBy, - currentSortOrder, - options, - onValueChange, -}) => { - const selected = currentSortBy.concat('-', currentSortOrder); - return ( -
- - - {' '} - - -
- ); -}; - -const customPaginationElement = (props) => { - const { currentPage, currentSize, totalResults, onPageChange, options} = - props; - const pages = Math.ceil(totalResults / currentSize); - const boundaryRangeCount = options.boundaryRangeCount; - const siblingRangeCount = options.siblingRangeCount; - const showEllipsis = options.showEllipsis; - const showFirst = options.showFirst; - const showLast = options.showLast; - const showPrev = options.showPrev; - const showNext = options.showNext; - const size = options.size || 'massive'; - const _onPageChange = (event, { activePage }) => { - onPageChange(activePage); - }; - - return pages > 1 ? ( - , - icon: true, - } - : null - } - firstItem={ - showFirst - ? { - content: , - icon: true, - } - : null - } - lastItem={ - showLast - ? { - content: , - icon: true, - } - : null - } - prevItem={ - showPrev - ? { - content: , - icon: true, - } - : null - } - nextItem={ - showNext - ? { - content: , - icon: true, - } - : null - } - size={size} - /> - ) : null; -}; - -const sortValues = [ - { - text: 'Relevanz', - sortBy: 'bestmatch', - sortOrder: 'asc', - }, - { - text: 'Neueste', - sortBy: 'modified', - sortOrder: 'desc', - }, - // { - // text: 'Alphabetisch', - // sortBy: 'sortable_title.keyword', - // sortOrder: 'asc', - // }, -]; - -const initialState = { - sortBy: 'bestmatch', - sortOrder: 'asc', - // sortBy: 'modified', - // sortOrder: 'desc', - queryString: '', - layout: 'list', - page: 1, - size: 10, -}; - -const defaultOverriddenComponents = { - 'ResultsList.item.elasticsearch': CustomResultsListItem, - 'Count.element': MyCountElement, - 'ActiveFilters.element': myActiveFiltersElement, - 'EmptyResults.element': customEmpytResultsElement, - 'Sort.element.volto': customSort, - 'Pagination.element': customPaginationElement, - 'Error.element': ErrorComponent, -}; - -const dropdownOverriddenComponents = { - 'BucketAggregation.element': CustomBucketAggregationElement, - 'BucketAggregationContainer.element': CustomBucketAggregationContainerElement, - 'BucketAggregationValues.element': withState( - CustomBucketAggregationValuesElement, - ), -}; - -/** - * FacetedSearch - * @param {string} filterLayout default 'dropdown' - * @param {object} overriddenComponents Override with custom components, ignore to stay with default 'dropdown' or step back to react-searchkit default components with value {} - * @returns - */ -const FacetedSearch = ({ data, overriddenComponents }) => { - const { - facet_fields, - allow_search_excluded_sections, - show_filter_for_excluded_sections, - relocation, - filterLayout, - search_sections, - } = data; - - const querystringindexes = useSelector((state) => state.querystring?.indexes); - - let facet_fields_object = getObjectFromObjectList(facet_fields); - if ('Subject' in facet_fields_object) { - facet_fields_object.subjects = facet_fields_object.Subject; - delete facet_fields_object.Subject; - } - - overriddenComponents = { - ...defaultOverriddenComponents, - ...(filterLayout === 'dropdown' && dropdownOverriddenComponents), - ...(config.settings.searchkitblock.overriddenComponents && - config.settings.searchkitblock.overriddenComponents), - }; - - // TODO Check if check on client could be made simpler - const [isClient, setIsClient] = React.useState(null); - React.useEffect(() => setIsClient(true), []); - - return ( - - {isClient && ( - - - - {typeof document !== 'undefined' && relocation?.length > 0 ? ( - - - - ) : ( - - - - - - - - )} - - - - - - - - - -
- {Object.keys(facet_fields_object)?.map((facet) => ( - - ))} -
-
-
- - - - - - - - {/* */} - - -
-
-
-
- )} -
- ); -}; - -export default FacetedSearch; diff --git a/src/components/Views/TestSearchkitQuerystrings.jsx b/src/components/Views/TestSearchkitQuerystrings.jsx deleted file mode 100644 index 0d5e3148..00000000 --- a/src/components/Views/TestSearchkitQuerystrings.jsx +++ /dev/null @@ -1,214 +0,0 @@ -import React from 'react'; -import { useIntl } from 'react-intl'; -import { Container, Header, Segment } from 'semantic-ui-react'; -import { Link, useLocation } from 'react-router-dom'; -import { useDispatch, useSelector } from 'react-redux'; -import { OverridableContext } from 'react-overridable'; -import { getControlpanel } from '@plone/volto/actions'; -import { Icon as IconNext } from '@plone/volto/components'; -import backSVG from '@plone/volto/icons/back.svg'; - -import { - onQueryChanged, - ReactSearchKit, - SearchBar, - withState, - ResultsMultiLayout, - Count, -} from 'react-searchkit'; -import { flattenESUrlToPath } from '../helpers'; -import { ploneSearchApi } from './FacetedSearch'; -import { ElasticSearchMatches } from '../Searchkit/ElasticSearchHighlights'; -import messages from '../../messages'; - -const sort_caseinsensitive = (a, b) => { - var nameA = a.toUpperCase(); // Groß-/Kleinschreibung ignorieren - var nameB = b.toUpperCase(); // Groß-/Kleinschreibung ignorieren - if (nameA < nameB) { - return -1; - } - if (nameA > nameB) { - return 1; - } - return 0; -}; - -const _OnHighlights = (props) => { - let location = useLocation(); - let highlights = props.currentResultsState; - let hits = highlights.data.hits; - - const regex = /(.*?)<\/em>/gm; - let fragments = []; - hits.map((hit) => { - hit.highlight = hit.highlight || []; - Object.keys(hit.highlight).forEach((fld) => { - hit.highlight[fld].forEach((highlightfragment) => { - fragments.push(highlightfragment); - }); - }); - return null; - }); - let matches = new Set(); - fragments.forEach((txt) => { - let result = [...txt.matchAll(regex)]; - result.forEach((match) => { - matches.add(match[1]); - }); - }); - let matches_sorted = Array.from(matches); - matches_sorted.sort(sort_caseinsensitive); - return ( -
-
Found {matches_sorted.length} matches.
- {matches_sorted.map((match) => ( - - ))} -
- ); -}; -const OnHighlights = withState(_OnHighlights); - -const OnResults = withState(ResultsMultiLayout); - -const CustomResultsListItem = ({ result, index }) => { - return ( -
-
- - {result.title} - -
- -
- ); -}; - -const DocumentsCount = ({ totalResults }) => { - return
Found {totalResults} documents.
; -}; - -const overriddenComponents = { - 'ResultsList.item': CustomResultsListItem, - 'Count.element': DocumentsCount, -}; - -const TestSearchkitQuerystrings = (props) => { - const intl = useIntl(); - const dispatch = useDispatch(); - const searchkitblock_controlpanel = useSelector( - (state) => state.controlpanels.controlpanel?.data, - ); - const searchconfig = searchkitblock_controlpanel - ? { - elastic_search_api_url: - searchkitblock_controlpanel?.testsearch_elasticsearch_url, - elastic_search_api_index: - searchkitblock_controlpanel?.testsearch_elasticsearch_index, - - searchedFields: [], - facet_fields: [], - allowed_content_types: - searchkitblock_controlpanel?.allowed_content_types, - allowed_review_states: - searchkitblock_controlpanel?.allowed_review_states, - backend_url: searchkitblock_controlpanel?.testsearch_backend, - frontend_url: searchkitblock_controlpanel?.testsearch_frontend, - } - : {}; - - const initialState = { - sortBy: 'bestmatch', - sortOrder: 'asc', - // sortBy: 'modified', - // sortOrder: 'desc', - queryString: '', - layout: 'list', - page: 1, - size: 50, - }; - - const onchangehandler = (event, data) => { - let searchQuery = { - ...initialState, - queryString: data.value, - }; - onQueryChanged({ searchQuery: searchQuery }); - return; - }; - - const [isClient, setIsClient] = React.useState(null); - React.useEffect(() => setIsClient(true), []); - - React.useEffect(() => { - dispatch(getControlpanel('volto_searchkit_block_control_panel')); - }, [dispatch]); - - return ( - - -
- Matches -
-
- {isClient && searchkitblock_controlpanel && ( - - - <> - - {/* { - onchangehandler(event, data); - }} - /> */} - { - onchangehandler(event, data); - }} - /> - - - - -
Documents with title and matches
- -
- -
-
- )} - - - -
- ); -}; - -export default TestSearchkitQuerystrings; diff --git a/src/components/Views/less/springisnow-volto-searchkit-block.less b/src/components/Views/less/springisnow-volto-searchkit-block.less deleted file mode 100644 index 7e3ce2ba..00000000 --- a/src/components/Views/less/springisnow-volto-searchkit-block.less +++ /dev/null @@ -1,291 +0,0 @@ -/* - * @rohberg/volto-searchkit-block - * springisnow-volto-searchkit-block.less - */ - -@type: 'extra'; -@element: 'custom'; - -@import (multiple) '../../theme.config'; - -.fnresults .ui.items > .item { - &.private > .content > a.header { - color: red; - } - - button, - .ui.button { - padding: 0; - border: none; - margin: 0.25rem 0.1rem 0.25rem 0em; - background-color: transparent; - color: rgba(0, 0, 0, 0.6); - cursor: pointer; - font-weight: bold; - - &:hover { - background-color: transparent; - } - } - - .extra { - color: @textColor; - - .label { - margin-right: 0.5em; - } - } -} - -.searchbar-wrapper { - display: flex; - align-items: stretch; - - .ui.fluid.action.input { - width: 50%; - @media only screen and (max-width: 767px) { - width: 100%; - } - - & > input { - width: unset !important; - flex: 1; - border-color: rgba(0, 0, 0, 0.13) !important; - border-radius: 0; - - &:focus { - border-color: #85b7d9 !important; - } - } - } - - .button { - border-radius: 0; - } - // Search button - .ui.action.input > button.ui.button { - display: none; - } - - .icon.delete { - display: flex; - width: 3rem; - min-width: 3rem; - height: 3rem; - align-items: center; - justify-content: center; - margin: 0; - background-color: #878686; - color: #fff; - cursor: pointer; - font-size: 1.2rem; - font-weight: 700; - - &.unselected { - opacity: 0; - } - } -} - -// .ui.grid > .row > .column.facetedsearch_filter { -.facetedsearch_filter { - opacity: 1; - transition: - opacity 1s, - visibility 1s; - visibility: visible; - - &.cards { - display: flex; - flex-direction: row; - flex-wrap: wrap; - align-items: baseline; - justify-content: space-evenly; - - .ui.card { - margin: 1em 0.5em 1em 0em; - } - } - - &.dropdown { - .bucketaggregations { - display: grid; - width: 100%; - gap: 10px; - grid-template-columns: 1fr 1fr; - @media only screen and (max-width: 767px) { - grid-template-columns: 1fr; - } - - .bucketAE { - display: flex; - flex-direction: row; - align-items: flex-start; - justify-content: space-between; - // width: 50%; - .ui.dropdown.fnfilter { - display: flex; - min-height: 3rem; - align-items: center; - justify-content: space-between; - // padding: 0 0 0 .3rem; - padding: 0.7rem 1rem 0.4rem 1rem; - margin: 0; - background-color: #edf1f2; - font-family: @fontName; - font-size: 1rem; - - & > .dropdown.icon { - font-size: 1rem; - } - - &.selected { - background-color: #c4d5da; - color: @black; - - .text { - max-width: 95%; - } - } - - .menu { - width: 100%; - border: none; - background-color: #edf1f2; - box-shadow: none; - - & > .item { - padding: 0.4rem 1.4rem 0.4rem 1rem !important; - line-height: 1.4em; - // color: @white; - & .item.isSelected { - font-weight: bold; - - svg { - stroke: currentColor; - stroke-width: 3px; - } - } - } - } - - div.visible .menu { - display: block !important; - visibility: visible !important; - } - - // Hack for dropdown with scrollbar - &.scrolloptions { - .menu > .item { - padding-right: 0.9rem !important; - } - } - } - - .deleteFilter { - display: flex; - width: 3rem; - min-width: 3rem; - height: 3rem; - align-items: center; - justify-content: center; - margin: 0; - background-color: #878686; - color: #fff; - cursor: pointer; - font-size: 1.2rem; - font-weight: 700; - - &.unselected { - opacity: 0; - } - } - } - } - } -} -// No filter according to block configuration -body.section_without_filter .facetedsearch_filter { - opacity: 0; - visibility: hidden; -} - -.searchsections { - display: flex; - gap: 20px; - - button { - padding: 0.7rem 1rem 0.7rem 1rem; - border: none; - background-color: #f3f1f1; - color: #6e6a6a; - cursor: pointer; - - &.active { - background-color: #dfd8d8; - } - } -} -// Mobile -@media only screen and (max-width: 767px) { - .searchsections { - flex-direction: column; - gap: 0.5rem; - - button { - display: inline-block; - } - } -} - -.countlabel { - font-weight: bold; -} - -.sortby { - display: flex; - align-items: baseline; - gap: 5px; - - .ui.button { - padding: 0; - background-color: transparent; - color: rgba(70, 92, 98, 0.77); - font-weight: normal; - - &.button-active { - color: @textColor; - font-weight: bold; - } - - &:hover { - background-color: transparent; - color: @textColor; - } - } -} - -// No results -.ui.placeholder.segment .search.icon { - display: none; -} - -.highlight { - margin-top: 0.5rem; - cursor: zoom-in; - - div { - margin-bottom: 0.5rem; - } - - em { - background-color: #e6f2ce; - } -} - -// debug -body.section-test-searchkit-querystrings { - .ui.segment.top-wrapper { - display: none; - } -} diff --git a/src/components/helpers.jsx b/src/components/helpers.jsx deleted file mode 100644 index 919dffa5..00000000 --- a/src/components/helpers.jsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; - -class NoSSR extends React.Component { - state = { - isClient: false, - }; - componentDidMount() { - this.setState({ isClient: true }); - } - render() { - const { isClient } = this.state; - const { children } = this.props; - return isClient ? children : null; - } -} - -// TODO replace ugly flattenESUrlToPath hack. Problem Elastic responds with backend Plone Zeo client url. -function flattenESUrlToPath(url) { - var pathArray = url.split('/'); - var newPathname = ''; - for (let i = 4; i < pathArray.length; i++) { - newPathname += '/'; - newPathname += pathArray[i]; - } - return newPathname; -} - -const scrollToTarget = (target, offsetHeight = 0) => { - const bodyRect = document.body.getBoundingClientRect().top; - const targetRect = target.getBoundingClientRect().top; - const targetPosition = targetRect - bodyRect - offsetHeight; - - return window.scrollTo({ - top: targetPosition, - behavior: 'smooth', - }); -}; - -/** - * @param {Array} objlst array of Objects with ... - * @returns Object with fieldname as key and title as value - */ -function getObjectFromObjectList(objlst) { - let obj = {}; - if (!objlst) { - return {}; - } - objlst.forEach((listitem) => { - if (listitem.field) { - obj[listitem.field.value] = listitem.title; - } - }); - return obj; -} - -export { NoSSR, flattenESUrlToPath, scrollToTarget, getObjectFromObjectList }; diff --git a/src/components/index.js b/src/components/index.js deleted file mode 100644 index 73016cda..00000000 --- a/src/components/index.js +++ /dev/null @@ -1,9 +0,0 @@ -import FacetedSearchBlockEdit from './Blocks/FacetedSearchBlockEdit'; -import FacetedSearchBlockView from './Blocks/FacetedSearchBlockView'; -import TestSearchkitQuerystrings from './Views/TestSearchkitQuerystrings'; - -export { - FacetedSearchBlockEdit, - FacetedSearchBlockView, - TestSearchkitQuerystrings, -}; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 058e3fca..00000000 --- a/src/index.js +++ /dev/null @@ -1,106 +0,0 @@ -import zoomSVG from '@plone/volto/icons/zoom.svg'; -import { getQuerystring } from '@plone/volto/actions'; - -import { - FacetedSearchBlockEdit, - FacetedSearchBlockView, - TestSearchkitQuerystrings, -} from './components'; -import { - ReferenceSearchBlockEdit, - ReferenceSearchBlockView, -} from './components/Blocks/Reference'; - -import SearchSectionsWidget from './components/Blocks/SearchSectionsWidget'; - -const applyConfig = (config) => { - config.settings.searchkitblock = { - trackVoltoMatomo: false, - }; - - config.blocks.blocksConfig.searchkitblock = { - id: 'searchkitblock', - title: 'Searchkit', - edit: FacetedSearchBlockEdit, - view: FacetedSearchBlockView, - icon: zoomSVG, - group: 'common', - restricted: false, - mostUsed: false, - sidebarTab: 1, - security: { - addPermission: [], - view: [], - }, - }; - - config.widgets.widget.searchsectionswidget = SearchSectionsWidget; - - /** - * A reference block with default components from react-searchkit - * TODO set permission to restrict to admin as soon as addPermission is implemented in Volto. For now: set restricted to true. - */ - config.blocks.blocksConfig.referencesearchkitblock = { - id: 'referencesearchkitblock', - title: 'Search Reference', - edit: ReferenceSearchBlockEdit, - view: ReferenceSearchBlockView, - icon: zoomSVG, - group: 'text', - restricted: true, - mostUsed: true, - sidebarTab: 1, - security: { - addPermission: [], - view: [], - }, - }; - - // Test some querystrings - config.settings.controlpanels = [ - ...(config.settings.controlpanels || []), - { - '@id': '/test-searchkit-querystrings', - group: 'Add-on Configuration', - title: 'Test searchkit querystrings', - }, - ]; - - config.addonRoutes = [ - ...config.addonRoutes, - { - path: '/controlpanel/test-searchkit-querystrings', - component: TestSearchkitQuerystrings, - }, - ]; - - // Fetch querystring indexes. - // See /effective-volto/addons/asyncconnect - config.settings.asyncPropsExtenders = [ - ...(config.settings.asyncPropsExtenders || []), - { - path: '/', - extend: (dispatchActions) => { - const action = { - key: 'querystringindexes', - promise: ({ store }) => { - const state = store.getState(); - if (state.querystring?.indexes?.Title) { - return; - } - const myaction = getQuerystring(); - return store.dispatch(myaction).catch((e) => { - // eslint-disable-next-line no-console - console.error('Fetch of getQuerystring failed'); - }); - }, - }; - return [...dispatchActions, action]; - }, - }, - ]; - - return config; -}; - -export default applyConfig; diff --git a/src/messages.js b/src/messages.js deleted file mode 100644 index 25069d0e..00000000 --- a/src/messages.js +++ /dev/null @@ -1,72 +0,0 @@ -import { defineMessages } from 'react-intl'; - -const messages = defineMessages({ - // block title translation for slash menu - blocktitle: { - id: 'Searchkit', - defaultMessage: 'Searchkit', - }, - searchBlock: { - id: 'Search block', - defaultMessage: 'Search block', - }, - search: { - id: 'search', - defaultMessage: 'search', - }, - facets: { - id: 'Facets', - defaultMessage: 'Facets', - }, - facet: { - id: 'Facet', - defaultMessage: 'Facet', - }, - label: { - id: 'Label', - defaultMessage: 'Label', - }, - field: { - id: 'Field', - defaultMessage: 'Field', - }, - multipleChoices: { - id: 'Multiple choices?', - defaultMessage: 'Multiple choices?', - }, - facetWidget: { - id: 'Facet widget', - defaultMessage: 'Facet widget', - }, - metadata: { - id: 'Meta data', - defaultMessage: 'Meta data', - }, - searchresult: { - id: 'Search result', - defaultMessage: 'Search result', - }, - searchresults: { - id: 'Search results', - defaultMessage: 'Search results', - }, - // highlights - title: { - id: 'Title', - defaultMessage: 'Title', - }, - description: { - id: 'Description', - defaultMessage: 'Description', - }, - tags: { - id: 'Tags', - defaultMessage: 'Tags', - }, - content: { - id: 'Content', - defaultMessage: 'Content', - }, -}); - -export default messages; diff --git a/variables.mk b/variables.mk deleted file mode 100644 index b71ccaa5..00000000 --- a/variables.mk +++ /dev/null @@ -1,7 +0,0 @@ -PLONE_VERSION=6.0 -VOLTO_VERSION=17.15.2 - -ADDON_NAME='@rohberg/volto-searchkit-block' -ADDON_PATH='volto-searchkit-block' -KGS=plone.restapi==9.4.2 plone.volto==4.3.0 plone.rest==4.1.3 -TESTING_ADDONS=plone.app.robotframework==2.1.2 plone.app.testing==7.0.2 \ No newline at end of file diff --git a/version.txt b/version.txt new file mode 100644 index 00000000..3eefcb9d --- /dev/null +++ b/version.txt @@ -0,0 +1 @@ +1.0.0 diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index 655b2948..00000000 --- a/webpack.config.js +++ /dev/null @@ -1,9 +0,0 @@ -const path = require('path'); - -module.exports = { - entry: './src/index.js', - output: { - filename: 'main.js', - path: path.resolve(__dirname, 'dist'), - }, -}; From 8e0c3ee6b36aba15e5c91290b80360e5f76943f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 26 Oct 2024 13:25:44 +0200 Subject: [PATCH 02/98] New add-on structure with cookieplone: add-on --- .editorconfig | 35 -- frontend/.eslintrc.js => .eslintrc.js | 0 .github/workflows/acceptance.yml | 102 ++++++ .github/workflows/backend.yml | 158 -------- .github/workflows/changelog.yml | 58 +++ .github/workflows/code.yml | 47 +++ .github/workflows/frontend.yml | 145 -------- .github/workflows/i18n.yml | 47 +++ .github/workflows/storybook.yml | 57 +++ .github/workflows/unit.yml | 47 +++ .gitignore | 14 +- frontend/.npmignore => .npmignore | 0 frontend/.npmrc => .npmrc | 0 .pre-commit-config.yaml | 39 +- frontend/.prettierignore => .prettierignore | 0 frontend/.prettierrc => .prettierrc | 0 {frontend/.storybook => .storybook}/main.js | 0 .../.storybook => .storybook}/preview.jsx | 0 frontend/.stylelintrc => .stylelintrc | 0 .vscode/settings.json | 7 - CHANGELOG.md | 5 - Makefile | 280 ++++++--------- README.md | 205 ++++++++--- backend/.dockerignore | 14 - backend/.editorconfig | 54 --- backend/.flake8 | 22 -- backend/.gitignore | 51 --- backend/.pre-commit-config.yaml | 94 ----- backend/CHANGES.md | 10 - backend/CONTRIBUTORS.md | 3 - backend/Dockerfile | 41 --- backend/Dockerfile.acceptance | 43 --- backend/LICENSE.GPL | 339 ------------------ backend/LICENSE.md | 15 - backend/MANIFEST.in | 20 -- backend/Makefile | 139 ------- backend/README.md | 33 -- backend/constraints.txt | 1 - backend/instance.yaml | 3 - backend/mx.ini | 17 - backend/news/.changelog_template.jinja | 15 - backend/news/.gitkeep | 1 - backend/pyproject.toml | 170 --------- backend/requirements-docker.txt | 1 - backend/requirements.txt | 1 - backend/scripts/create_site.py | 70 ---- backend/setup.py | 77 ---- backend/src/searchkit/__init__.py | 1 - backend/src/searchkit/block/__init__.py | 12 - backend/src/searchkit/block/configure.zcml | 22 -- .../src/searchkit/block/content/__init__.py | 0 .../searchkit/block/controlpanel/__init__.py | 0 .../block/controlpanel/configure.zcml | 8 - backend/src/searchkit/block/dependencies.zcml | 7 - .../src/searchkit/block/indexers/__init__.py | 0 .../searchkit/block/indexers/configure.zcml | 5 - backend/src/searchkit/block/interfaces.py | 7 - .../src/searchkit/block/locales/__init__.py | 0 .../locales/en/LC_MESSAGES/searchkit.block.po | 15 - .../block/locales/searchkit.block.pot | 18 - backend/src/searchkit/block/locales/update.py | 79 ---- backend/src/searchkit/block/profiles.zcml | 41 --- .../block/profiles/default/browserlayer.xml | 6 - .../block/profiles/default/catalog.xml | 13 - .../block/profiles/default/controlpanel.xml | 4 - .../block/profiles/default/diff_tool.xml | 6 - .../block/profiles/default/metadata.xml | 7 - ...se.interfaces.controlpanel.IMailSchema.xml | 9 - ...se.interfaces.controlpanel.ISiteSchema.xml | 9 - .../plone.i18n.interfaces.ILanguageSchema.xml | 12 - .../block/profiles/default/repositorytool.xml | 6 - .../block/profiles/default/rolemap.xml | 6 - .../block/profiles/default/theme.xml | 5 - .../block/profiles/default/types.xml | 10 - .../block/profiles/initial/metadata.xml | 4 - .../block/profiles/uninstall/browserlayer.xml | 6 - .../searchkit/block/serializers/__init__.py | 0 .../block/serializers/configure.zcml | 10 - .../searchkit/block/serializers/summary.py | 10 - .../searchkit/block/setuphandlers/__init__.py | 11 - .../examplecontent/content/__metadata__.json | 40 --- .../data.json | 56 --- .../image/plone-foundation.png | Bin 50737 -> 0 bytes .../data.json | 98 ----- .../content/plone_site_root/data.json | 267 -------------- .../examplecontent/discussions.json | 1 - .../examplecontent/portlets.json | 1 - .../examplecontent/principals.json | 4 - .../examplecontent/redirects.json | 1 - .../examplecontent/relations.json | 1 - .../examplecontent/translations.json | 1 - .../searchkit/block/setuphandlers/initial.py | 16 - backend/src/searchkit/block/testing.py | 49 --- .../src/searchkit/block/upgrades/__init__.py | 0 .../searchkit/block/upgrades/configure.zcml | 19 - .../searchkit/block/vocabularies/__init__.py | 0 .../block/vocabularies/configure.zcml | 3 - backend/tests/conftest.py | 18 - backend/tests/setup/test_setup_install.py | 17 - backend/tests/setup/test_setup_uninstall.py | 19 - backend/tox.ini | 212 ----------- backend/version.txt | 1 - .../cypress.config.js => cypress.config.js | 0 {backend/docs => cypress}/.gitkeep | 0 .../cypress => cypress}/support/commands.js | 0 {frontend/cypress => cypress}/support/e2e.js | 0 .../registry => cypress/tests}/.gitkeep | 0 .../cypress => cypress}/tests/example.cy.js | 0 dependabot.yml | 8 - devops/README-GITLAB.md | 61 ---- devops/stacks/searchkit-block.example.com.yml | 173 --------- docker-compose.yml | 106 ------ frontend/.dockerignore | 6 - frontend/.gitignore | 13 - frontend/.pre-commit-config.yaml | 27 -- frontend/Dockerfile | 24 -- frontend/Makefile | 142 -------- frontend/README.md | 203 ----------- frontend/cypress/tests/.gitkeep | 0 .../volto-searchkit-block/news/.gitkeep | 0 .../volto-searchkit-block/public/.gitkeep | 0 .../src/components/.gitkeep | 0 .../volto-searchkit-block/src/index.js | 11 - ...st-addon.config.js => jest-addon.config.js | 0 .../mrs.developer.json => mrs.developer.json | 0 frontend/package.json => package.json | 4 +- .../volto-searchkit-block/.gitignore | 0 .../volto-searchkit-block/.release-it.json | 0 .../volto-searchkit-block/CHANGELOG.md | 0 .../volto-searchkit-block/babel.config.js | 0 .../locales/de/LC_MESSAGES/volto.po | 0 .../locales/en/LC_MESSAGES/volto.po | 0 .../locales/es/LC_MESSAGES/volto.po | 0 .../locales/pt_BR/LC_MESSAGES/volto.po | 0 .../volto-searchkit-block/locales/volto.pot | 0 .../volto-searchkit-block/news}/.gitkeep | 0 .../volto-searchkit-block/package.json | 4 +- .../volto-searchkit-block/public}/.gitkeep | 0 .../src/components}/.gitkeep | 0 packages/volto-searchkit-block/src/index.js | 5 + .../volto-searchkit-block/towncrier.toml | 0 .../volto-searchkit-block/tsconfig.json | 0 ...pnpm-workspace.yaml => pnpm-workspace.yaml | 0 version.txt | 1 - frontend/volto.config.js => volto.config.js | 2 +- 145 files changed, 656 insertions(+), 3787 deletions(-) delete mode 100644 .editorconfig rename frontend/.eslintrc.js => .eslintrc.js (100%) create mode 100644 .github/workflows/acceptance.yml delete mode 100644 .github/workflows/backend.yml create mode 100644 .github/workflows/changelog.yml create mode 100644 .github/workflows/code.yml delete mode 100644 .github/workflows/frontend.yml create mode 100644 .github/workflows/i18n.yml create mode 100644 .github/workflows/storybook.yml create mode 100644 .github/workflows/unit.yml rename frontend/.npmignore => .npmignore (100%) rename frontend/.npmrc => .npmrc (100%) rename frontend/.prettierignore => .prettierignore (100%) rename frontend/.prettierrc => .prettierrc (100%) rename {frontend/.storybook => .storybook}/main.js (100%) rename {frontend/.storybook => .storybook}/preview.jsx (100%) rename frontend/.stylelintrc => .stylelintrc (100%) delete mode 100644 .vscode/settings.json delete mode 100644 CHANGELOG.md delete mode 100644 backend/.dockerignore delete mode 100644 backend/.editorconfig delete mode 100644 backend/.flake8 delete mode 100644 backend/.gitignore delete mode 100644 backend/.pre-commit-config.yaml delete mode 100644 backend/CHANGES.md delete mode 100644 backend/CONTRIBUTORS.md delete mode 100644 backend/Dockerfile delete mode 100644 backend/Dockerfile.acceptance delete mode 100644 backend/LICENSE.GPL delete mode 100644 backend/LICENSE.md delete mode 100644 backend/MANIFEST.in delete mode 100644 backend/Makefile delete mode 100644 backend/README.md delete mode 100644 backend/constraints.txt delete mode 100644 backend/instance.yaml delete mode 100644 backend/mx.ini delete mode 100644 backend/news/.changelog_template.jinja delete mode 100644 backend/news/.gitkeep delete mode 100644 backend/pyproject.toml delete mode 100644 backend/requirements-docker.txt delete mode 100644 backend/requirements.txt delete mode 100644 backend/scripts/create_site.py delete mode 100644 backend/setup.py delete mode 100644 backend/src/searchkit/__init__.py delete mode 100644 backend/src/searchkit/block/__init__.py delete mode 100644 backend/src/searchkit/block/configure.zcml delete mode 100644 backend/src/searchkit/block/content/__init__.py delete mode 100644 backend/src/searchkit/block/controlpanel/__init__.py delete mode 100644 backend/src/searchkit/block/controlpanel/configure.zcml delete mode 100644 backend/src/searchkit/block/dependencies.zcml delete mode 100644 backend/src/searchkit/block/indexers/__init__.py delete mode 100644 backend/src/searchkit/block/indexers/configure.zcml delete mode 100644 backend/src/searchkit/block/interfaces.py delete mode 100644 backend/src/searchkit/block/locales/__init__.py delete mode 100644 backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po delete mode 100644 backend/src/searchkit/block/locales/searchkit.block.pot delete mode 100644 backend/src/searchkit/block/locales/update.py delete mode 100644 backend/src/searchkit/block/profiles.zcml delete mode 100644 backend/src/searchkit/block/profiles/default/browserlayer.xml delete mode 100644 backend/src/searchkit/block/profiles/default/catalog.xml delete mode 100644 backend/src/searchkit/block/profiles/default/controlpanel.xml delete mode 100644 backend/src/searchkit/block/profiles/default/diff_tool.xml delete mode 100644 backend/src/searchkit/block/profiles/default/metadata.xml delete mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml delete mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml delete mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml delete mode 100644 backend/src/searchkit/block/profiles/default/repositorytool.xml delete mode 100644 backend/src/searchkit/block/profiles/default/rolemap.xml delete mode 100644 backend/src/searchkit/block/profiles/default/theme.xml delete mode 100644 backend/src/searchkit/block/profiles/default/types.xml delete mode 100644 backend/src/searchkit/block/profiles/initial/metadata.xml delete mode 100644 backend/src/searchkit/block/profiles/uninstall/browserlayer.xml delete mode 100644 backend/src/searchkit/block/serializers/__init__.py delete mode 100644 backend/src/searchkit/block/serializers/configure.zcml delete mode 100644 backend/src/searchkit/block/serializers/summary.py delete mode 100644 backend/src/searchkit/block/setuphandlers/__init__.py delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a720393b3c0240e5bd27c43fcd2cfd1e/data.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/plone_site_root/data.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/discussions.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/portlets.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/principals.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/redirects.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/relations.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/translations.json delete mode 100644 backend/src/searchkit/block/setuphandlers/initial.py delete mode 100644 backend/src/searchkit/block/testing.py delete mode 100644 backend/src/searchkit/block/upgrades/__init__.py delete mode 100644 backend/src/searchkit/block/upgrades/configure.zcml delete mode 100644 backend/src/searchkit/block/vocabularies/__init__.py delete mode 100644 backend/src/searchkit/block/vocabularies/configure.zcml delete mode 100644 backend/tests/conftest.py delete mode 100644 backend/tests/setup/test_setup_install.py delete mode 100644 backend/tests/setup/test_setup_uninstall.py delete mode 100644 backend/tox.ini delete mode 100644 backend/version.txt rename frontend/cypress.config.js => cypress.config.js (100%) rename {backend/docs => cypress}/.gitkeep (100%) rename {frontend/cypress => cypress}/support/commands.js (100%) rename {frontend/cypress => cypress}/support/e2e.js (100%) rename {backend/src/searchkit/block/profiles/default/registry => cypress/tests}/.gitkeep (100%) rename {frontend/cypress => cypress}/tests/example.cy.js (100%) delete mode 100644 dependabot.yml delete mode 100644 devops/README-GITLAB.md delete mode 100644 devops/stacks/searchkit-block.example.com.yml delete mode 100644 docker-compose.yml delete mode 100644 frontend/.dockerignore delete mode 100644 frontend/.gitignore delete mode 100644 frontend/.pre-commit-config.yaml delete mode 100644 frontend/Dockerfile delete mode 100644 frontend/Makefile delete mode 100644 frontend/README.md delete mode 100644 frontend/cypress/tests/.gitkeep delete mode 100644 frontend/packages/volto-searchkit-block/news/.gitkeep delete mode 100644 frontend/packages/volto-searchkit-block/public/.gitkeep delete mode 100644 frontend/packages/volto-searchkit-block/src/components/.gitkeep delete mode 100644 frontend/packages/volto-searchkit-block/src/index.js rename frontend/jest-addon.config.js => jest-addon.config.js (100%) rename frontend/mrs.developer.json => mrs.developer.json (100%) rename frontend/package.json => package.json (96%) rename {frontend/packages => packages}/volto-searchkit-block/.gitignore (100%) rename {frontend/packages => packages}/volto-searchkit-block/.release-it.json (100%) rename {frontend/packages => packages}/volto-searchkit-block/CHANGELOG.md (100%) rename {frontend/packages => packages}/volto-searchkit-block/babel.config.js (100%) rename {frontend/packages => packages}/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po (100%) rename {frontend/packages => packages}/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po (100%) rename {frontend/packages => packages}/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po (100%) rename {frontend/packages => packages}/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po (100%) rename {frontend/packages => packages}/volto-searchkit-block/locales/volto.pot (100%) rename {backend/src/searchkit/block/profiles/default/types => packages/volto-searchkit-block/news}/.gitkeep (100%) rename {frontend/packages => packages}/volto-searchkit-block/package.json (91%) rename {backend/src/searchkit/block/setuphandlers/examplecontent => packages/volto-searchkit-block/public}/.gitkeep (100%) rename {frontend/cypress => packages/volto-searchkit-block/src/components}/.gitkeep (100%) create mode 100644 packages/volto-searchkit-block/src/index.js rename {frontend/packages => packages}/volto-searchkit-block/towncrier.toml (100%) rename {frontend/packages => packages}/volto-searchkit-block/tsconfig.json (100%) rename frontend/pnpm-workspace.yaml => pnpm-workspace.yaml (100%) delete mode 100644 version.txt rename frontend/volto.config.js => volto.config.js (91%) diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index f8ae1e55..00000000 --- a/.editorconfig +++ /dev/null @@ -1,35 +0,0 @@ - -# EditorConfig Configurtaion file, for more details see: -# https://EditorConfig.org -# EditorConfig is a convention description, that could be interpreted -# by multiple editors to enforce common coding conventions for specific -# file types - -# top-most EditorConfig file: -# Will ignore other EditorConfig files in Home directory or upper tree level. -root = true - - -[*] # For All Files -# Unix-style newlines with a newline ending every file -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true -# Set default charset -charset = utf-8 -# Indent style default -indent_style = space - -[*.{py,cfg,ini}] -# 4 space indentation -indent_size = 4 - -[*.{html,dtml,pt,zpt,xml,zcml,js,json,ts,less,scss,css,sass,yml,yaml}] -# 2 space indentation -indent_size = 2 - -[{Makefile,.gitmodules}] -# Tab indentation (no size specified, but view as 4 spaces) -indent_style = tab -indent_size = unset -tab_width = unset diff --git a/frontend/.eslintrc.js b/.eslintrc.js similarity index 100% rename from frontend/.eslintrc.js rename to .eslintrc.js diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml new file mode 100644 index 00000000..574f1ae6 --- /dev/null +++ b/.github/workflows/acceptance.yml @@ -0,0 +1,102 @@ +name: Acceptance tests +on: + push: + paths: + - "*.js" + - "*.json" + - "*.yaml" + - "cypress/**" + - "packages/**" + - ".github/workflows/acceptance.yml" + +env: + NODE_VERSION: 20.x + CYPRESS_RETRIES: 2 + +jobs: + + acceptance: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Cache Cypress Binary + id: cache-cypress-binary + uses: actions/cache@v4 + with: + path: ~/.cache/Cypress + key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }} + + - name: Install dependencies + run: make install + + - name: Install Cypress if not in cache + if: steps.cache-cypress-binary.outputs.cache-hit != 'true' + working-directory: core/packages/volto + run: make cypress-install + + - uses: JarvusInnovations/background-action@v1 + name: Start Servers + with: + run: | + make ci-acceptance-backend-start & + make acceptance-frontend-prod-start & + # your step-level and job-level environment variables are available to your commands as-is + # npm install will count towards the wait-for timeout + # whenever possible, move unrelated scripts to a different step + # to background multiple processes: add & to the end of the command + + wait-on: | + http-get://localhost:55001/plone + http://localhost:3000 + # IMPORTANT: to use environment variables in wait-on, you must use this form: ${{ env.VAR }} + # See wait-on section below for all resource types and prefixes + + tail: true # true = stderr,stdout + # This will allow you to monitor the progress live + + log-output-resume: stderr + # Eliminates previosuly output stderr log entries from post-run output + + wait-for: 10m + + log-output: stderr,stdout # same as true + + log-output-if: failure + + - run: make ci-acceptance-test + + # Upload Cypress screenshots + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-screenshots-acceptance + path: acceptance/cypress/screenshots + + # Upload Cypress videos + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-videos-acceptance + path: acceptance/cypress/videos diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml deleted file mode 100644 index 6a5af533..00000000 --- a/.github/workflows/backend.yml +++ /dev/null @@ -1,158 +0,0 @@ -name: Backend CI - -on: - push: - paths: - - "backend/**" - - ".github/workflows/backend.yml" - workflow_dispatch: - -env: - IMAGE_NAME_PREFIX: ghcr.io/rohberg/searchkit-block - IMAGE_NAME_SUFFIX: backend - PYTHON_VERSION: "3.11" - -jobs: - - meta: - runs-on: ubuntu-latest - outputs: - PLONE_VERSION: ${{ steps.vars.outputs.PLONE_VERSION }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set Env Vars - id: vars - run: | - echo "PLONE_VERSION=$(cat backend/version.txt)" >> $GITHUB_OUTPUT - - black: - runs-on: ubuntu-latest - steps: - - name: Checkout codebase - uses: actions/checkout@v4 - - - name: Run check - uses: plone/code-analysis-action@v2 - with: - base_dir: 'backend' - check: 'black' - - flake8: - runs-on: ubuntu-latest - steps: - - name: Checkout codebase - uses: actions/checkout@v4 - - - name: Run check - uses: plone/code-analysis-action@v2 - with: - base_dir: 'backend' - check: 'flake8' - - isort: - runs-on: ubuntu-latest - steps: - - name: Checkout codebase - uses: actions/checkout@v4 - - - name: Run check - uses: plone/code-analysis-action@v2 - with: - base_dir: 'backend' - check: 'isort' - - zpretty: - runs-on: ubuntu-latest - steps: - - name: Checkout codebase - uses: actions/checkout@v4 - - - name: Run check - uses: plone/code-analysis-action@v2 - with: - base_dir: 'backend' - check: 'zpretty' - - tests: - runs-on: ubuntu-latest - needs: - - meta - defaults: - run: - working-directory: ./backend - - steps: - - uses: actions/checkout@v4 - - - name: Setup Plone ${{ needs.meta.outputs.PLONE_VERSION }} with Python ${{ env.PYTHON_VERSION }} - uses: plone/setup-plone@v2.0.0 - with: - python-version: ${{ env.PYTHON_VERSION }} - plone-version: ${{ needs.meta.outputs.PLONE_VERSION }} - - - name: Install package - run: | - pip install mxdev - mxdev -c mx.ini - pip install -r requirements-mxdev.txt - - - name: Run tests - run: | - pytest --disable-warnings tests - - release: - runs-on: ubuntu-latest - needs: - - black - - flake8 - - isort - - zpretty - - tests - permissions: - contents: read - packages: write - - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: | - ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }} - labels: | - org.label-schema.docker.cmd=docker run -d -p 8080:8080 ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }}:latest - flavor: - latest=false - tags: | - type=ref,event=branch - type=sha - type=raw,value=latest,enable={{is_default_branch}} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v5 - with: - platforms: linux/amd64 - context: backend - file: backend/Dockerfile - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml new file mode 100644 index 00000000..afc44097 --- /dev/null +++ b/.github/workflows/changelog.yml @@ -0,0 +1,58 @@ +name: Changelog check +on: + pull_request: + types: [assigned, opened, synchronize, reopened, labeled, unlabeled] + branches: + - main + +env: + NODE_VERSION: 20.x + ADDON_NAME: volto-searchkit-block + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + # Fetch all history + fetch-depth: '0' + + - name: Install pipx + run: pip install towncrier + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: | + make install + + - name: Check for presence of a Change Log fragment (only pull requests) + run: | + # Fetch the pull request' base branch so towncrier will be able to + # compare the current branch with the base branch. + # Source: https://github.com/actions/checkout/#fetch-all-branches. + git fetch --no-tags origin ${BASE_BRANCH} + towncrier check --dir packages/${ADDON_NAME} + env: + BASE_BRANCH: ${{ github.base_ref }} + if: github.event_name == 'pull_request' diff --git a/.github/workflows/code.yml b/.github/workflows/code.yml new file mode 100644 index 00000000..79f96f43 --- /dev/null +++ b/.github/workflows/code.yml @@ -0,0 +1,47 @@ +name: Code analysis checks +on: + push: + paths: + - "*.js" + - "*.json" + - "*.yaml" + - "packages/**" + - ".github/workflows/code.yml" + +env: + NODE_VERSION: 20.x + +jobs: + codeanalysis: + runs-on: ubuntu-latest + + steps: + - name: Main checkout + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: make install + + - name: Linting + run: make lint diff --git a/.github/workflows/frontend.yml b/.github/workflows/frontend.yml deleted file mode 100644 index b8deece1..00000000 --- a/.github/workflows/frontend.yml +++ /dev/null @@ -1,145 +0,0 @@ -name: Frontend CI - -on: - push: - paths: - - "frontend/**" - - ".github/workflows/frontend.yml" - workflow_dispatch: - -env: - IMAGE_NAME_PREFIX: ghcr.io/rohberg/searchkit-block - IMAGE_NAME_SUFFIX: frontend - NODE_VERSION: 20.x - -defaults: - run: - working-directory: ./frontend - -jobs: - meta: - runs-on: ubuntu-latest - outputs: - BASE_TAG: ${{ steps.vars.outputs.BASE_TAG }} - VOLTO_VERSION: ${{ steps.vars.outputs.VOLTO_VERSION }} - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Compute several vars needed for the build - id: vars - run: | - echo 'BASE_TAG=sha-$(git rev-parse --short HEAD)' >> $GITHUB_OUTPUT - python3 -c 'import json; data = json.load(open("./mrs.developer.json")); print("VOLTO_VERSION=" + (data["core"].get("tag") or "latest"))' >> $GITHUB_OUTPUT - - name: Test vars - run: | - echo 'BASE_TAG=${{ steps.vars.outputs.BASE_TAG }}' - echo 'VOLTO_VERSION=${{ steps.vars.outputs.VOLTO_VERSION }}' - - code-analysis: - runs-on: ubuntu-latest - steps: - - name: Checkout codebase - uses: actions/checkout@v4 - - - name: Use Node.js ${{ env.node-version }} - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Enable corepack - run: corepack enable - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: make install - - - name: Linting - id: lint - if: ${{ success() || failure() }} - run: make lint - - - name: i18n sync - id: i18n - if: ${{ success() || failure() }} - run: make ci-i18n - - - name: Unit Tests - id: unit - if: ${{ success() || failure() }} - run: make test - - - name: Report - if: ${{ success() || failure() }} - run: | - echo '# Code Analysis' >> $GITHUB_STEP_SUMMARY - echo '| Test | Status |' >> $GITHUB_STEP_SUMMARY - echo '| --- | --- |' >> $GITHUB_STEP_SUMMARY - echo '| Lint | ${{ steps.lint.conclusion == 'failure' && '❌' || ' ✅' }} |' >> $GITHUB_STEP_SUMMARY - echo '| i18n | ${{ steps.i18n.conclusion == 'failure' && '❌' || ' ✅' }} |' >> $GITHUB_STEP_SUMMARY - echo '| Unit Tests | ${{ steps.unit.conclusion == 'failure' && '❌' || ' ✅' }} |' >> $GITHUB_STEP_SUMMARY - - release: - runs-on: ubuntu-latest - needs: - - meta - - code-analysis - permissions: - contents: read - packages: write - - steps: - - - name: Checkout - uses: actions/checkout@v4 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: | - ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }} - labels: | - org.label-schema.docker.cmd=docker run -d -p 3000:3000 ${{ env.IMAGE_NAME_PREFIX }}-${{ env.IMAGE_NAME_SUFFIX }}:latest - flavor: - latest=false - tags: | - type=ref,event=branch - type=sha - type=raw,value=latest,enable={{is_default_branch}} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Login to Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v5 - with: - platforms: linux/amd64 - context: frontend/ - file: frontend/Dockerfile - push: ${{ github.event_name != 'pull_request' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - build-args: | - VOLTO_VERSION=${{ needs.meta.outputs.VOLTO_VERSION }} diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml new file mode 100644 index 00000000..c8e463b1 --- /dev/null +++ b/.github/workflows/i18n.yml @@ -0,0 +1,47 @@ +name: i18n +on: + push: + paths: + - "*.js" + - "*.json" + - "*.yaml" + - "packages/**" + - ".github/workflows/i18n.yml" + +env: + NODE_VERSION: 20.x + +jobs: + unit: + runs-on: ubuntu-latest + + steps: + - name: Main checkout + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: make install + + - name: test i18n command + run: make i18n diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml new file mode 100644 index 00000000..32a8b60f --- /dev/null +++ b/.github/workflows/storybook.yml @@ -0,0 +1,57 @@ +name: Storybook +on: + push: + paths: + - "*.js" + - "*.json" + - "*.yaml" + - "packages/**" + - ".github/workflows/storybook.yml" + +env: + NODE_VERSION: 20.x + +permissions: + contents: write + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: make install + + - name: Generate Storybook + run: | + make storybook-build + + - name: Deploy to GitHub pages + uses: JamesIves/github-pages-deploy-action@v4 + if: ${{ github.ref == 'refs/heads/main' }} + with: + branch: gh-pages + folder: .storybook-build diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml new file mode 100644 index 00000000..0de7eba1 --- /dev/null +++ b/.github/workflows/unit.yml @@ -0,0 +1,47 @@ +name: Unit Tests +on: + push: + paths: + - "*.js" + - "*.json" + - "*.yaml" + - "packages/**" + - ".github/workflows/unit.yml" + +env: + NODE_VERSION: 20.x + +jobs: + unit: + runs-on: ubuntu-latest + + steps: + - name: Main checkout + uses: actions/checkout@v4 + + - name: Use Node.js + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: make install + + - name: Unit tests + run: make test-ci diff --git a/.gitignore b/.gitignore index 90993858..cdcd9372 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,13 @@ -!.vscode +.*project +.settings/ +.vscode +*~ +acceptance/cypress/videos/ +acceptance/node_modules +.storybook-build +build +core node_modules -/core +results +yarn.lock /public -*.mo diff --git a/frontend/.npmignore b/.npmignore similarity index 100% rename from frontend/.npmignore rename to .npmignore diff --git a/frontend/.npmrc b/.npmrc similarity index 100% rename from frontend/.npmrc rename to .npmrc diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d933aa8c..3c7d331c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,16 +1,27 @@ repos: - - repo: https://github.com/ddanier/sub-pre-commit.git - rev: v3.7.1 # MUST match your pre-commit version + - repo: local hooks: - - id: sub-pre-commit - alias: backend - name: "pre-commit for backend/" - args: ["-p", "backend/"] - files: "^backend/.*" - stages: ["commit"] - - id: sub-pre-commit - alias: frontend - name: "pre-commit for frontend" - args: ["-p", "frontend"] - files: "^frontend/.*" - stages: ["commit"] + - id: prettier + name: prettier + entry: pnpm exec prettier --write + language: system + files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' + types: [file] + - id: eslint + name: eslint + entry: bash -c "VOLTOCONFIG=$(pwd)/volto.config.js pnpm exec eslint --max-warnings=0 --fix" + language: system + files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' + types: [file] + - id: stylelint + name: stylelint + entry: pnpm exec stylelint --fix + language: system + files: '^packages/.*/src/.*/?.*.(css|scss|less)$' + types: [file] + - id: i18n + name: i18n + entry: make ci-i18n + language: system + files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' + types: [file] diff --git a/frontend/.prettierignore b/.prettierignore similarity index 100% rename from frontend/.prettierignore rename to .prettierignore diff --git a/frontend/.prettierrc b/.prettierrc similarity index 100% rename from frontend/.prettierrc rename to .prettierrc diff --git a/frontend/.storybook/main.js b/.storybook/main.js similarity index 100% rename from frontend/.storybook/main.js rename to .storybook/main.js diff --git a/frontend/.storybook/preview.jsx b/.storybook/preview.jsx similarity index 100% rename from frontend/.storybook/preview.jsx rename to .storybook/preview.jsx diff --git a/frontend/.stylelintrc b/.stylelintrc similarity index 100% rename from frontend/.stylelintrc rename to .stylelintrc diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 17446662..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "eslint.workingDirectories": ["./frontend"], - "flake8.cwd": "${workspaceFolder}/backend", - "flake8.args": ["--config=pyproject.toml"], - "black-formatter.cwd": "${workspaceFolder}/backend", - "isort.args": ["--settings-path=${workspaceFolder}/backend/pyproject.toml"] -} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index 70e09c90..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,5 +0,0 @@ -# Changes - -## 1.0.0 (2024-10-26) - -- Initial version [rohberg] diff --git a/Makefile b/Makefile index 723a465c..2e658d00 100644 --- a/Makefile +++ b/Makefile @@ -2,22 +2,15 @@ # https://tech.davis-hansson.com/p/make/ SHELL:=bash .ONESHELL: -.SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c +.SHELLFLAGS:=-eu -o pipefail -c .SILENT: .DELETE_ON_ERROR: MAKEFLAGS+=--warn-undefined-variables MAKEFLAGS+=--no-builtin-rules CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) -GIT_FOLDER=$(CURRENT_DIR)/.git - -PROJECT_NAME=searchkit-block -STACK_NAME=searchkit-block-example-com - -VOLTO_VERSION = $(shell cat frontend/mrs.developer.json | python -c "import sys, json; print(json.load(sys.stdin)['core']['tag'])") -PLONE_VERSION=$(shell cat backend/version.txt) -PRE_COMMIT=pipx run --spec 'pre-commit==3.7.1' pre-commit +# Recipe snippets for reuse # We like colors # From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects @@ -26,189 +19,122 @@ GREEN=`tput setaf 2` RESET=`tput sgr0` YELLOW=`tput setaf 3` -.PHONY: all -all: install +GIT_FOLDER=$(CURRENT_DIR)/.git +PRE_COMMIT=pipx run --spec 'pre-commit==3.7.1' pre-commit + +PLONE_VERSION=6 +DOCKER_IMAGE=plone/server-dev:${PLONE_VERSION} +DOCKER_IMAGE_ACCEPTANCE=plone/server-acceptance:${PLONE_VERSION} + +ADDON_NAME='volto-searchkit-block' -# Add the following 'help' target to your Makefile -# And add help text after each target name starting with '\#\#' .PHONY: help -help: ## This help message - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' - -########################################### -# Frontend -########################################### -.PHONY: frontend-install -frontend-install: ## Install React Frontend - $(MAKE) -C "./frontend/" install - -.PHONY: frontend-build -frontend-build: ## Build React Frontend - $(MAKE) -C "./frontend/" build - -.PHONY: frontend-start -frontend-start: ## Start React Frontend - $(MAKE) -C "./frontend/" start - -.PHONY: frontend-test -frontend-test: ## Test frontend codebase - @echo "Test frontend" - $(MAKE) -C "./frontend/" test - -########################################### -# Backend -########################################### -.PHONY: backend-install -backend-install: ## Create virtualenv and install Plone - $(MAKE) -C "./backend/" install - $(MAKE) backend-create-site - -.PHONY: backend-build -backend-build: ## Build Backend - $(MAKE) -C "./backend/" install - -.PHONY: backend-create-site -backend-create-site: ## Create a Plone site with default content - $(MAKE) -C "./backend/" create-site - -.PHONY: backend-update-example-content -backend-update-example-content: ## Export example content inside package - $(MAKE) -C "./backend/" update-example-content - -.PHONY: backend-start -backend-start: ## Start Plone Backend - $(MAKE) -C "./backend/" start - -.PHONY: backend-test -backend-test: ## Test backend codebase - @echo "Test backend" - $(MAKE) -C "./backend/" test +help: ## Show this help + @echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)" + +# Dev Helpers .PHONY: install -install: ## Install - @echo "Install Backend & Frontend" +install: ## Installs the add-on in a development environment + @echo "$(GREEN)Install$(RESET)" if [ -d $(GIT_FOLDER) ]; then $(PRE_COMMIT) install; else echo "$(RED) Not installing pre-commit$(RESET)";fi - $(MAKE) backend-install - $(MAKE) frontend-install + pnpm dlx mrs-developer missdev --no-config --fetch-https + pnpm i + make build-deps .PHONY: start -start: ## Start - @echo "Starting application" - $(MAKE) backend-start - $(MAKE) frontend-start - -.PHONY: clean -clean: ## Clean installation - @echo "Clean installation" - $(MAKE) -C "./backend/" clean - $(MAKE) -C "./frontend/" clean - -.PHONY: check -check: ## Lint and Format codebase - @echo "Lint and Format codebase" - $(PRE_COMMIT) run -a +start: ## Starts Volto, allowing reloading of the add-on during development + pnpm start + +.PHONY: build +build: ## Build a production bundle for distribution of the project with the add-on + pnpm build + +core/packages/registry/dist: $(shell find core/packages/registry/src -type f) + pnpm --filter @plone/registry build + +core/packages/components/dist: $(shell find core/packages/components/src -type f) + pnpm --filter @plone/components build + +.PHONY: build-deps +build-deps: core/packages/registry/dist core/packages/components/dist ## Build dependencies .PHONY: i18n -i18n: ## Update locales - @echo "Update locales" - $(MAKE) -C "./backend/" i18n - $(MAKE) -C "./frontend/" i18n +i18n: ## Sync i18n + pnpm --filter $(ADDON_NAME) i18n + +.PHONY: ci-i18n +ci-i18n: ## Check if i18n is not synced + pnpm --filter $(ADDON_NAME) i18n && git diff -G'^[^\"POT]' --exit-code + +.PHONY: format +format: ## Format codebase + pnpm prettier:fix + pnpm lint:fix + pnpm stylelint:fix + +.PHONY: lint +lint: ## Lint, or catch and remove problems, in code base + pnpm lint + pnpm prettier + pnpm stylelint --allow-empty-input + +.PHONY: release +release: ## Release the add-on on npmjs.org + pnpm release + +.PHONY: release-dry-run +release-dry-run: ## Dry-run the release of the add-on on npmjs.org + pnpm release .PHONY: test -test: backend-test frontend-test ## Test codebase - -.PHONY: build-images -build-images: ## Build docker images - @echo "Build" - $(MAKE) -C "./backend/" build-image - $(MAKE) -C "./frontend/" build-image - -## Docker stack -.PHONY: stack-start -stack-start: ## Local Stack: Start Services - @echo "Start local Docker stack" - VOLTO_VERSION=$(VOLTO_VERSION) PLONE_VERSION=$(PLONE_VERSION) docker compose -f docker-compose.yml up -d --build - @echo "Now visit: http://searchkit-block.localhost" - -.PHONY: start-stack -stack-create-site: ## Local Stack: Create a new site - @echo "Create a new site in the local Docker stack" - @docker compose -f docker-compose.yml exec backend ./docker-entrypoint.sh create-site - -.PHONY: start-ps -stack-status: ## Local Stack: Check Status - @echo "Check the status of the local Docker stack" - @docker compose -f docker-compose.yml ps - -.PHONY: stack-stop -stack-stop: ## Local Stack: Stop Services - @echo "Stop local Docker stack" - @docker compose -f docker-compose.yml stop - -.PHONY: stack-rm -stack-rm: ## Local Stack: Remove Services and Volumes - @echo "Remove local Docker stack" - @docker compose -f docker-compose.yml down - @echo "Remove local volume data" - @docker volume rm $(PROJECT_NAME)_vol-site-data +test: ## Run unit tests + pnpm test + +.PHONY: test-ci +ci-test: ## Run unit tests in CI + # Unit Tests need the i18n to be built + VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n + CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests + +.PHONY: backend-docker-start +backend-docker-start: ## Starts a Docker-based backend for development + @echo "$(GREEN)==> Start Docker-based Plone Backend$(RESET)" + docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) + +## Storybook +.PHONY: storybook-start +storybook-start: ## Start Storybook server on port 6006 + @echo "$(GREEN)==> Start Storybook$(RESET)" + pnpm run storybook + +.PHONY: storybook-build +storybook-build: ## Build Storybook + @echo "$(GREEN)==> Build Storybook$(RESET)" + mkdir -p $(CURRENT_DIR)/.storybook-build + pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build ## Acceptance -.PHONY: acceptance-backend-dev-start -acceptance-backend-dev-start: - @echo "Start acceptance backend" - $(MAKE) -C "./backend/" acceptance-backend-start - .PHONY: acceptance-frontend-dev-start -acceptance-frontend-dev-start: - @echo "Start acceptance frontend" - $(MAKE) -C "./frontend/" acceptance-frontend-dev-start +acceptance-frontend-dev-start: ## Start acceptance frontend in development mode + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + +.PHONY: acceptance-frontend-prod-start +acceptance-frontend-prod-start: ## Start acceptance frontend in production mode + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + +.PHONY: acceptance-backend-start +acceptance-backend-start: ## Start backend acceptance server + docker run -it --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + +.PHONY: ci-acceptance-backend-start +ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI + docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) .PHONY: acceptance-test -acceptance-test: - @echo "Start acceptance tests in interactive mode" - $(MAKE) -C "./frontend/" acceptance-test - -# Build Docker images -.PHONY: acceptance-frontend-image-build -acceptance-frontend-image-build: - @echo "Build acceptance frontend image" - @docker build frontend -t rohberg/searchkit-block-frontend:acceptance -f frontend/Dockerfile --build-arg VOLTO_VERSION=$(VOLTO_VERSION) - -.PHONY: acceptance-backend-image-build -acceptance-backend-image-build: - @echo "Build acceptance backend image" - @docker build backend -t rohberg/searchkit-block-backend:acceptance -f backend/Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) - -.PHONY: acceptance-images-build -acceptance-images-build: ## Build Acceptance frontend/backend images - $(MAKE) acceptance-backend-image-build - $(MAKE) acceptance-frontend-image-build - -.PHONY: acceptance-frontend-container-start -acceptance-frontend-container-start: - @echo "Start acceptance frontend" - @docker run --rm -p 3000:3000 --name searchkit-block-frontend-acceptance --link searchkit-block-backend-acceptance:backend -e RAZZLE_API_PATH=http://localhost:55001/plone -e RAZZLE_INTERNAL_API_PATH=http://backend:55001/plone -d rohberg/searchkit-block-frontend:acceptance - -.PHONY: acceptance-backend-container-start -acceptance-backend-container-start: - @echo "Start acceptance backend" - @docker run --rm -p 55001:55001 --name searchkit-block-backend-acceptance -d rohberg/searchkit-block-backend:acceptance - -.PHONY: acceptance-containers-start -acceptance-containers-start: ## Start Acceptance containers - $(MAKE) acceptance-backend-container-start - $(MAKE) acceptance-frontend-container-start - -.PHONY: acceptance-containers-stop -acceptance-containers-stop: ## Stop Acceptance containers - @echo "Stop acceptance containers" - @docker stop searchkit-block-frontend-acceptance - @docker stop searchkit-block-backend-acceptance +acceptance-test: ## Start Cypress in interactive mode + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' .PHONY: ci-acceptance-test -ci-acceptance-test: - @echo "Run acceptance tests in CI mode" - $(MAKE) acceptance-containers-start - pnpm dlx wait-on --httpTimeout 20000 http-get://localhost:55001/plone http://localhost:3000 - $(MAKE) -C "./frontend/" ci-acceptance-test - $(MAKE) acceptance-containers-stop +ci-acceptance-test: ## Run cypress tests in headless mode for CI + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' diff --git a/README.md b/README.md index 89358f8b..0dcc38bd 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,203 @@ -# Searchkit Block 🚀 +# Searchkit Block (volto-searchkit-block) -[![Built with Cookieplone](https://img.shields.io/badge/built%20with-Cookieplone-0083be.svg?logo=cookiecutter)](https://github.com/plone/cookiecutter-plone/) -[![Black code style](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black) -[![Backend Tests](https://github.com/rohberg/searchkit-block/actions/workflows/backend.yml/badge.svg)](https://github.com/rohberg/searchkit-block/actions/workflows/backend.yml) -[![Frontend Tests](https://github.com/rohberg/searchkit-block/actions/workflows/frontend.yml/badge.svg)](https://github.com/rohberg/searchkit-block/actions/workflows/frontend.yml) +Searching with OpenSearch -A new project using Plone 6. +[![npm](https://img.shields.io/npm/v/volto-searchkit-block)](https://www.npmjs.com/package/volto-searchkit-block) +[![](https://img.shields.io/badge/-Storybook-ff4785?logo=Storybook&logoColor=white&style=flat-square)](https://rohberg.github.io/volto-searchkit-block/) +[![Code analysis checks](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml) +[![Unit tests](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml) -## Quick Start 🏁 +## Features -### Prerequisites ✅ + -Ensure you have the following installed: +## Installation -- Python 3.11 🐍 -- Node 20 🟩 -- pnpm 🧶 -- Docker 🐳 +To install your project, you must choose the method appropriate to your version of Volto. -### Installation 🔧 -1. Clone the repository: +### Volto 17 and earlier + +Create a new Volto project (you can skip this step if you already have one): -```shell -git clone git@github.com:rohberg/searchkit-block.git -cd searchkit-block +``` +npm install -g yo @plone/generator-volto +yo @plone/volto my-volto-project --addon volto-searchkit-block +cd my-volto-project ``` -2. Install both Backend and Frontend: +Add `volto-searchkit-block` to your package.json: -```shell -make install +```JSON +"addons": [ + "volto-searchkit-block" +], + +"dependencies": { + "volto-searchkit-block": "*" +} +``` + +Download and install the new add-on by running: + +``` +yarn install +``` + +Start volto with: + +``` +yarn start +``` + +### Volto 18 and later + +Add `volto-searchkit-block` to your `package.json`: + +```json +"dependencies": { + "volto-searchkit-block": "*" +} +``` + +Add `volto-searchkit-block` to your `volto.config.js`: + +```javascript +const addons = ['volto-searchkit-block']; +``` + +If this package provides a Volto theme, and you want to activate it, then add the following to your `volto.config.js`: + +```javascript +const theme = 'volto-searchkit-block'; +``` + +## Test installation + +Visit http://localhost:3000/ in a browser, login, and check the awesome new features. + + +## Development + +The development of this add-on is done in isolation using a new approach using pnpm workspaces and latest `mrs-developer` and other Volto core improvements. +For this reason, it only works with pnpm and Volto 18 (currently in alpha). + + +### Pre-requisites + +- [Node.js](https://6.docs.plone.org/install/create-project.html#node-js) +- [Make](https://6.docs.plone.org/install/create-project.html#make) +- [Docker](https://6.docs.plone.org/install/create-project.html#docker) + + +### Make convenience commands + +Run `make help` to list the available commands. + +```text +help Show this help +install Installs the add-on in a development environment +start Starts Volto, allowing reloading of the add-on during development +build Build a production bundle for distribution of the project with the add-on +i18n Sync i18n +ci-i18n Check if i18n is not synced +format Format codebase +lint Lint, or catch and remove problems, in code base +release Release the add-on on npmjs.org +release-dry-run Dry-run the release of the add-on on npmjs.org +test Run unit tests +ci-test Run unit tests in CI +backend-docker-start Starts a Docker-based backend for development +storybook-start Start Storybook server on port 6006 +storybook-build Build Storybook +acceptance-frontend-dev-start Start acceptance frontend in development mode +acceptance-frontend-prod-start Start acceptance frontend in production mode +acceptance-backend-start Start backend acceptance server +ci-acceptance-backend-start Start backend acceptance server in headless mode for CI +acceptance-test Start Cypress in interactive mode +ci-acceptance-test Run cypress tests in headless mode for CI ``` -### Fire Up the Servers 🔥 +### Development environment set up -1. Create a new Plone site on your first run: +Install package requirements. ```shell -make backend-create-site +make install ``` -2. Start the Backend at [http://localhost:8080/](http://localhost:8080/): +### Start developing + +Start the backend. ```shell -make backend-start +make backend-docker-start ``` -3. In a new terminal, start the Frontend at [http://localhost:3000/](http://localhost:3000/): +In a separate terminal session, start the frontend. ```shell -make frontend-start +make start ``` -Voila! Your Plone site should be live and kicking! 🎉 +### Lint code -### Local Stack Deployment 📦 +Run ESlint, Prettier, and Stylelint in analyze mode. -Deploy a local `Docker Compose` environment that includes: +```shell +make lint +``` -- Docker images for Backend and Frontend 🖼️ -- A stack with a Traefik router and a Postgres database 🗃️ -- Accessible at [http://searchkit-block.localhost](http://searchkit-block.localhost) 🌐 +### Format code -Execute the following: +Run ESlint, Prettier, and Stylelint in fix mode. ```shell -make stack-start -make stack-create-site +make format ``` -And... you're all set! Your Plone site is up and running locally! 🚀 +### i18n -## Project Structure 🏗️ +Extract the i18n messages to locales. -This monorepo consists of three distinct sections: `backend`, `frontend`, and `devops`. +```shell +make i18n +``` -- **backend**: Houses the API and Plone installation, utilizing pip instead of buildout, and includes a policy package named searchkit.block. -- **frontend**: Contains the React (Volto) package. -- **devops**: Encompasses Docker Stack, Ansible playbooks, and Cache settings. +### Unit tests -### Why This Structure? 🤔 +Run unit tests. -- All necessary codebases to run the site are contained within the repo (excluding existing addons for Plone and React). -- Specific GitHub Workflows are triggered based on changes in each codebase (refer to .github/workflows). -- Simplifies the creation of Docker images for each codebase. -- Demonstrates Plone installation/setup without buildout. +```shell +make test +``` -## Code Quality Assurance 🧐 +### Run Cypress tests -To automatically format your code and ensure it adheres to quality standards, execute: +Run each of these steps in separate terminal sessions. + +In the first session, start the frontend in development mode. ```shell -make check +make acceptance-frontend-dev-start ``` -Linters can be run individually within the `backend` or `frontend` folders. +In the second session, start the backend acceptance server. -## Internationalization 🌐 +```shell +make acceptance-backend-start +``` -Generate translation files for Plone and Volto with ease: +In the third session, start the Cypress interactive test runner. ```shell -make i18n +make acceptance-test ``` +## License + +The project is licensed under the MIT license. + ## Credits and Acknowledgements 🙏 -Crafted with care by **Generated using [Cookieplone (0.7.1)](https://github.com/plone/cookieplone) and [cookiecutter-plone (6f17615)](https://github.com/plone/cookiecutter-plone/commit/6f1761520019010ae3799dfa0c6b999b533d59a7) on 2024-10-26 13:04:00.309419**. A special thanks to all contributors and supporters! +Crafted with care by **Generated using [Cookieplone (0.7.1)](https://github.com/plone/cookieplone) and [cookiecutter-plone (6f17615)](https://github.com/plone/cookiecutter-plone/commit/6f1761520019010ae3799dfa0c6b999b533d59a7) on 2024-10-26 13:17:25.419878**. A special thanks to all contributors and supporters! diff --git a/backend/.dockerignore b/backend/.dockerignore deleted file mode 100644 index e9e94ffc..00000000 --- a/backend/.dockerignore +++ /dev/null @@ -1,14 +0,0 @@ -.editorconfig -.gitattributes -bin -Dockerfile -Dockerfile.acceptance -include -instance -instance.yaml -lib -lib64 -Makefile -pyvenv.cfg -var -.venv diff --git a/backend/.editorconfig b/backend/.editorconfig deleted file mode 100644 index 8ae05aaa..00000000 --- a/backend/.editorconfig +++ /dev/null @@ -1,54 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -# -# EditorConfig Configuration file, for more details see: -# http://EditorConfig.org -# EditorConfig is a convention description, that could be interpreted -# by multiple editors to enforce common coding conventions for specific -# file types - -# top-most EditorConfig file: -# Will ignore other EditorConfig files in Home directory or upper tree level. -root = true - - -[*] # For All Files -# Unix-style newlines with a newline ending every file -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true -# Set default charset -charset = utf-8 -# Indent style default -indent_style = space -# Max Line Length - a hard line wrap, should be disabled -max_line_length = off - -[*.{py,cfg,ini}] -# 4 space indentation -indent_size = 4 - -[*.{yml,zpt,pt,dtml,zcml}] -# 2 space indentation -indent_size = 2 - -[*.{json,jsonl,js,jsx,ts,tsx,css,less,scss,html}] # Frontend development -# 2 space indentation -indent_size = 2 -max_line_length = 80 - -[{Makefile,.gitmodules}] -# Tab indentation (no size specified, but view as 4 spaces) -indent_style = tab -indent_size = unset -tab_width = unset - - -## -# Add extra configuration options in .meta.toml: -# [editorconfig] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/.flake8 b/backend/.flake8 deleted file mode 100644 index 7ef4f64d..00000000 --- a/backend/.flake8 +++ /dev/null @@ -1,22 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -[flake8] -doctests = 1 -ignore = - # black takes care of line length - E501, - # black takes care of where to break lines - W503, - # black takes care of spaces within slicing (list[:]) - E203, - # black takes care of spaces after commas - E231, - -## -# Add extra configuration options in .meta.toml: -# [flake8] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/.gitignore b/backend/.gitignore deleted file mode 100644 index 6a1e51f3..00000000 --- a/backend/.gitignore +++ /dev/null @@ -1,51 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -# python related -*.egg-info -*.pyc -*.pyo - -# tools related -build/ -.coverage -coverage.xml -dist/ -docs/_build -__pycache__/ -.tox -.vscode/ -node_modules/ - -# venv / buildout related -bin/ -develop-eggs/ -eggs/ -.eggs/ -etc/ -.installed.cfg -include/ -lib/ -lib64 -.mr.developer.cfg -parts/ -pyvenv.cfg -var/ - -# mxdev -/instance/ -/.make-sentinels/ -/*-mxdev.txt -/reports/ -/sources/ -/venv/ -.installed.txt -.lock - -## -# Add extra configuration options in .meta.toml: -# [gitignore] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/.pre-commit-config.yaml b/backend/.pre-commit-config.yaml deleted file mode 100644 index b6eb0432..00000000 --- a/backend/.pre-commit-config.yaml +++ /dev/null @@ -1,94 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -ci: - autofix_prs: false - autoupdate_schedule: monthly - -repos: -- repo: https://github.com/asottile/pyupgrade - rev: v3.14.0 - hooks: - - id: pyupgrade - args: [--py38-plus] -- repo: https://github.com/pycqa/isort - rev: 5.12.0 - hooks: - - id: isort -- repo: https://github.com/psf/black - rev: 23.9.1 - hooks: - - id: black -- repo: https://github.com/collective/zpretty - rev: 3.1.0 - hooks: - - id: zpretty - -## -# Add extra configuration options in .meta.toml: -# [pre_commit] -# zpretty_extra_lines = """ -# _your own configuration lines_ -# """ -## -- repo: https://github.com/PyCQA/flake8 - rev: 6.1.0 - hooks: - - id: flake8 - -## -# Add extra configuration options in .meta.toml: -# [pre_commit] -# flake8_extra_lines = """ -# _your own configuration lines_ -# """ -## -- repo: https://github.com/codespell-project/codespell - rev: v2.2.6 - hooks: - - id: codespell - additional_dependencies: - - tomli - -## -# Add extra configuration options in .meta.toml: -# [pre_commit] -# codespell_extra_lines = """ -# _your own configuration lines_ -# """ -## -- repo: https://github.com/mgedmin/check-manifest - rev: "0.49" - hooks: - - id: check-manifest -- repo: https://github.com/regebro/pyroma - rev: "4.2" - hooks: - - id: pyroma -- repo: https://github.com/mgedmin/check-python-versions - rev: "0.21.3" - hooks: - - id: check-python-versions - args: ['--only', 'setup.py,pyproject.toml'] -- repo: https://github.com/collective/i18ndude - rev: "6.1.0" - hooks: - - id: i18ndude - - -## -# Add extra configuration options in .meta.toml: -# [pre_commit] -# i18ndude_extra_lines = """ -# _your own configuration lines_ -# """ -## - - -## -# Add extra configuration options in .meta.toml: -# [pre_commit] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/CHANGES.md b/backend/CHANGES.md deleted file mode 100644 index 3020bae6..00000000 --- a/backend/CHANGES.md +++ /dev/null @@ -1,10 +0,0 @@ -# Changelog - - - - diff --git a/backend/CONTRIBUTORS.md b/backend/CONTRIBUTORS.md deleted file mode 100644 index 5a1aabd6..00000000 --- a/backend/CONTRIBUTORS.md +++ /dev/null @@ -1,3 +0,0 @@ -# Contributors - -- Plone Foundation [collective@plone.org] diff --git a/backend/Dockerfile b/backend/Dockerfile deleted file mode 100644 index 99da983f..00000000 --- a/backend/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -# syntax=docker/dockerfile:1 -ARG PLONE_VERSION=6.0.13 -FROM plone/server-builder:${PLONE_VERSION} as builder - -WORKDIR /app - - -# Add local code -COPY scripts/ scripts/ -COPY . src - -# Install local requirements and pre-compile mo files -RUN < - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/backend/LICENSE.md b/backend/LICENSE.md deleted file mode 100644 index 1de10762..00000000 --- a/backend/LICENSE.md +++ /dev/null @@ -1,15 +0,0 @@ -searchkit.block Copyright 2023, Plone Foundation - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 2 -as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, -MA 02111-1307 USA. diff --git a/backend/MANIFEST.in b/backend/MANIFEST.in deleted file mode 100644 index 45aae324..00000000 --- a/backend/MANIFEST.in +++ /dev/null @@ -1,20 +0,0 @@ -graft src/searchkit -graft docs -graft news -graft tests -graft scripts -include *.acceptance -include .coveragerc -include .dockerignore -include .editorconfig -include *.txt -include *.yml -include *.md -exclude *-mxdev.txt -exclude Dockerfile -exclude mx.ini -exclude Makefile -recursive-exclude frontend * -exclude instance.yaml -global-exclude *.pyc -global-exclude .DS_Store diff --git a/backend/Makefile b/backend/Makefile deleted file mode 100644 index 088d5fe4..00000000 --- a/backend/Makefile +++ /dev/null @@ -1,139 +0,0 @@ -### Defensive settings for make: -# https://tech.davis-hansson.com/p/make/ -SHELL:=bash -.ONESHELL: -.SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c -.SILENT: -.DELETE_ON_ERROR: -MAKEFLAGS+=--warn-undefined-variables -MAKEFLAGS+=--no-builtin-rules - -# We like colors -# From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects -RED=`tput setaf 1` -GREEN=`tput setaf 2` -RESET=`tput sgr0` -YELLOW=`tput setaf 3` - -IMAGE_NAME_PREFIX=ghcr.io/rohberg/searchkit-block -IMAGE_TAG=latest - -# Python checks -PYTHON?=python3 - -# installed? -ifeq (, $(shell which $(PYTHON) )) - $(error "PYTHON=$(PYTHON) not found in $(PATH)") -endif - -# version ok? -PYTHON_VERSION_MIN=3.8 -PYTHON_VERSION_OK=$(shell $(PYTHON) -c "import sys; print((int(sys.version_info[0]), int(sys.version_info[1])) >= tuple(map(int, '$(PYTHON_VERSION_MIN)'.split('.'))))") -ifeq ($(PYTHON_VERSION_OK),0) - $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)") -endif - -PLONE_SITE_ID=Plone -BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) -PLONE_VERSION=$(shell cat $(BACKEND_FOLDER)/version.txt) -EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/searchkit/block/setuphandlers/examplecontent - -GIT_FOLDER=$(BACKEND_FOLDER)/.git -VENV_FOLDER=$(BACKEND_FOLDER)/.venv -BIN_FOLDER=$(VENV_FOLDER)/bin - - -all: build - -# Add the following 'help' target to your Makefile -# And add help text after each target name starting with '\#\#' -.PHONY: help -help: ## This help message - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' - -$(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: - @echo "$(GREEN)==> Setup Virtual Env$(RESET)" - $(PYTHON) -m venv $(VENV_FOLDER) - $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" - if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi - -instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration - @echo "$(GREEN)==> Create instance configuration$(RESET)" - $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance - -.PHONY: config -config: instance/etc/zope.ini - -.PHONY: build-dev -build-dev: config ## Install Plone packages - @echo "$(GREEN)==> Setup Build$(RESET)" - $(BIN_FOLDER)/mxdev -c mx.ini - $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt - -.PHONY: install -install: build-dev ## Install Plone - -.PHONY: build -build: build-dev ## Install Plone - -.PHONY: clean -clean: ## Clean environment - @echo "$(RED)==> Cleaning environment and build$(RESET)" - rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache - -.PHONY: start -start: ## Start a Plone instance on localhost:8080 - PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini - -.PHONY: console -console: instance/etc/zope.ini ## Start a console into a Plone instance - PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf - -.PHONY: create-site -create-site: instance/etc/zope.ini ## Create a new site from scratch - PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py - -# Example Content -.PHONY: update-example-content -update-example-content: $(BIN_FOLDER)/tox ## Export example content inside package - @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER) $(RESET)" - if [ -d $(EXAMPLE_CONTENT_FOLDER)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER)/* ;fi - $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID) $(EXAMPLE_CONTENT_FOLDER) - -.PHONY: check -check: $(BIN_FOLDER)/tox ## Check and fix code base according to Plone standards - @echo "$(GREEN)==> Format codebase$(RESET)" - $(BIN_FOLDER)/tox -e lint - -# i18n -$(BIN_FOLDER)/i18ndude: $(BIN_FOLDER)/pip - @echo "$(GREEN)==> Install translation tools$(RESET)" - $(BIN_FOLDER)/uv pip install i18ndude - -.PHONY: i18n -i18n: $(BIN_FOLDER)/i18ndude ## Update locales - @echo "$(GREEN)==> Updating locales$(RESET)" - $(BIN_FOLDER)/update_locale - -# Tests -.PHONY: test -test: $(BIN_FOLDER)/tox ## run tests - $(BIN_FOLDER)/tox -e test - -.PHONY: test-coverage -test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage - $(BIN_FOLDER)/tox -e coverage - -# Build Docker images -.PHONY: build-image -build-image: ## Build Docker Images - @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) - -# Acceptance tests -.PHONY: acceptance-backend-start -acceptance-backend-start: ## Start backend acceptance server - ZSERVER_HOST=0.0.0.0 ZSERVER_PORT=55001 LISTEN_PORT=55001 APPLY_PROFILES="searchkit/block:default" CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,searchkit/block" $(BIN_FOLDER)/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING - -.PHONY: acceptance-image-build -acceptance-image-build: ## Build Docker Images - @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) diff --git a/backend/README.md b/backend/README.md deleted file mode 100644 index 33c6f3a2..00000000 --- a/backend/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# searchkit.block - -A new project using Plone 6. - -## Features - -TODO: List our awesome features - -## Installation - -Install searchkit.block with `pip`: - -```shell -pip install searchkit.block -``` -And to create the Plone site: - -```shell -make create_site -``` - -## Contribute - -- [Issue Tracker](https://github.com/rohberg/searchkit.block/issues) -- [Source Code](https://github.com/rohberg/searchkit.block/) - -## License - -The project is licensed under GPLv2. - -## Credits and Acknowledgements 🙏 - -Crafted with care by **This was generated by [cookiecutter-plone](https://github.com/plone/cookieplone-templates/backend_addon) on 2024-10-26 11:06:16**. A special thanks to all contributors and supporters! diff --git a/backend/constraints.txt b/backend/constraints.txt deleted file mode 100644 index 3bb2e326..00000000 --- a/backend/constraints.txt +++ /dev/null @@ -1 +0,0 @@ --c https://dist.plone.org/release/6.0.13/constraints.txt diff --git a/backend/instance.yaml b/backend/instance.yaml deleted file mode 100644 index ad0b2a1f..00000000 --- a/backend/instance.yaml +++ /dev/null @@ -1,3 +0,0 @@ -default_context: - initial_user_password: 'admin' - zcml_package_includes: 'searchkit.block' \ No newline at end of file diff --git a/backend/mx.ini b/backend/mx.ini deleted file mode 100644 index 9fccb995..00000000 --- a/backend/mx.ini +++ /dev/null @@ -1,17 +0,0 @@ -; This is a mxdev configuration file -; it can be used to override versions of packages already defined in the -; constraints files and to add new packages from VCS like git. -; to learn more about mxdev visit https://pypi.org/project/mxdev/ - -[settings] -main-package = -e .[test] -; example how to override a package version -; version-overrides = -; example.package==2.1.0a2 - -; example section to use packages from git -; [example.contenttype] -; url = https://github.com/collective/example.contenttype.git -; pushurl = git@github.com:collective/example.contenttype.git -; extras = test -; branch = feature-7 diff --git a/backend/news/.changelog_template.jinja b/backend/news/.changelog_template.jinja deleted file mode 100644 index 678bfa10..00000000 --- a/backend/news/.changelog_template.jinja +++ /dev/null @@ -1,15 +0,0 @@ -{% if sections[] %} -{% for category, val in definitions.items() if category in sections[] %} - -### {{ definitions[category]['name'] }} - -{% for text, values in sections[][category].items() %} -- {{ text }} {{ values|join(', ') }} -{% endfor %} - -{% endfor %} -{% else %} -No significant changes. - - -{% endif %} diff --git a/backend/news/.gitkeep b/backend/news/.gitkeep deleted file mode 100644 index 8b137891..00000000 --- a/backend/news/.gitkeep +++ /dev/null @@ -1 +0,0 @@ - diff --git a/backend/pyproject.toml b/backend/pyproject.toml deleted file mode 100644 index c982aa92..00000000 --- a/backend/pyproject.toml +++ /dev/null @@ -1,170 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/main/config/default -# See the inline comments on how to expand/tweak this configuration file -[build-system] -requires = ["setuptools>=68.2"] - -[tool.towncrier] -directory = "news/" -filename = "CHANGES.md" -start_string = "\n" -title_format = "## {version} ({project_date})" -template = "news/.changelog_template.jinja" -underlines = ["", "", ""] - -[[tool.towncrier.type]] -directory = "breaking" -name = "Breaking changes:" -showcontent = true - -[[tool.towncrier.type]] -directory = "feature" -name = "New features:" -showcontent = true - -[[tool.towncrier.type]] -directory = "bugfix" -name = "Bug fixes:" -showcontent = true - -[[tool.towncrier.type]] -directory = "internal" -name = "Internal:" -showcontent = true - -[[tool.towncrier.type]] -directory = "documentation" -name = "Documentation:" -showcontent = true - -[[tool.towncrier.type]] -directory = "tests" -name = "Tests" -showcontent = true - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# towncrier_extra_lines = """ -# extra_configuration -# """ -## - -[tool.isort] -profile = "plone" - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# isort_extra_lines = """ -# extra_configuration -# """ -## - -[tool.black] -target-version = ["py38"] - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# black_extra_lines = """ -# extra_configuration -# """ -## - -[tool.codespell] -ignore-words-list = "discreet,vew" -skip = "*.po,*.min.js" -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# codespell_ignores = "foo,bar" -# codespell_skip = "*.po,*.map,package-lock.json" -## - -[tool.dependencychecker] -Zope = [ - # Zope own provided namespaces - 'App', 'OFS', 'Products.Five', 'Products.OFSP', 'Products.PageTemplates', - 'Products.SiteAccess', 'Shared', 'Testing', 'ZPublisher', 'ZTUtils', - 'Zope2', 'webdav', 'zmi', - # ExtensionClass own provided namespaces - 'ExtensionClass', 'ComputedAttribute', 'MethodObject', - # Zope dependencies - 'AccessControl', 'Acquisition', 'AuthEncoding', 'beautifulsoup4', 'BTrees', - 'cffi', 'Chameleon', 'DateTime', 'DocumentTemplate', - 'MultiMapping', 'multipart', 'PasteDeploy', 'Persistence', 'persistent', - 'pycparser', 'python-gettext', 'pytz', 'RestrictedPython', 'roman', - 'soupsieve', 'transaction', 'waitress', 'WebOb', 'WebTest', 'WSGIProxy2', - 'z3c.pt', 'zc.lockfile', 'ZConfig', 'zExceptions', 'ZODB', 'zodbpickle', - 'zope.annotation', 'zope.browser', 'zope.browsermenu', 'zope.browserpage', - 'zope.browserresource', 'zope.cachedescriptors', 'zope.component', - 'zope.configuration', 'zope.container', 'zope.contentprovider', - 'zope.contenttype', 'zope.datetime', 'zope.deferredimport', - 'zope.deprecation', 'zope.dottedname', 'zope.event', 'zope.exceptions', - 'zope.filerepresentation', 'zope.globalrequest', 'zope.hookable', - 'zope.i18n', 'zope.i18nmessageid', 'zope.interface', 'zope.lifecycleevent', - 'zope.location', 'zope.pagetemplate', 'zope.processlifetime', 'zope.proxy', - 'zope.ptresource', 'zope.publisher', 'zope.schema', 'zope.security', - 'zope.sequencesort', 'zope.site', 'zope.size', 'zope.structuredtext', - 'zope.tal', 'zope.tales', 'zope.testbrowser', 'zope.testing', - 'zope.traversing', 'zope.viewlet' -] -'Products.CMFCore' = [ - 'docutils', 'five.localsitemanager', 'Missing', 'Products.BTreeFolder2', - 'Products.GenericSetup', 'Products.MailHost', 'Products.PythonScripts', - 'Products.StandardCacheManagers', 'Products.ZCatalog', 'Record', - 'zope.sendmail', 'Zope' -] -'plone.base' = [ - 'plone.batching', 'plone.registry', 'plone.schema','plone.z3cform', - 'Products.CMFCore', 'Products.CMFDynamicViewFTI', -] -python-dateutil = ['dateutil'] -pytest-plone = ['pytest', 'plone.testing', 'plone.app.testing'] -ignore-packages = ['plone.app.iterate', 'plone.app.upgrade', 'plone.volto', 'zestreleaser.towncrier', 'zest.releaser', 'pytest-cov'] - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# dependencies_ignores = "['zestreleaser.towncrier']" -# dependencies_mappings = [ -# "gitpython = ['git']", -# "pygithub = ['github']", -# ] -## - -[tool.check-manifest] -ignore = [ - ".editorconfig", - ".flake8", - ".meta.toml", - ".pre-commit-config.yaml", - "dependabot.yml", - "mx.ini", - "tox.ini", - -] - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# check_manifest_ignores = """ -# "*.map.js", -# "*.pyc", -# """ -# check_manifest_extra_lines = """ -# ignore-bad-ideas = [ -# "some/test/file/PKG-INFO", -# ] -# """ -## - - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/requirements-docker.txt b/backend/requirements-docker.txt deleted file mode 100644 index da443200..00000000 --- a/backend/requirements-docker.txt +++ /dev/null @@ -1 +0,0 @@ --c constraints.txt diff --git a/backend/requirements.txt b/backend/requirements.txt deleted file mode 100644 index da443200..00000000 --- a/backend/requirements.txt +++ /dev/null @@ -1 +0,0 @@ --c constraints.txt diff --git a/backend/scripts/create_site.py b/backend/scripts/create_site.py deleted file mode 100644 index 3e296327..00000000 --- a/backend/scripts/create_site.py +++ /dev/null @@ -1,70 +0,0 @@ -from AccessControl.SecurityManagement import newSecurityManager -from Products.CMFPlone.factory import _DEFAULT_PROFILE -from Products.CMFPlone.factory import addPloneSite -from Products.GenericSetup.tool import SetupTool -from searchkit.block.interfaces import IBrowserLayer -from Testing.makerequest import makerequest -from zope.interface import directlyProvidedBy -from zope.interface import directlyProvides - -import os -import transaction - - -truthy = frozenset(("t", "true", "y", "yes", "on", "1")) - - -def asbool(s): - """Return the boolean value ``True`` if the case-lowered value of string - input ``s`` is a :term:`truthy string`. If ``s`` is already one of the - boolean values ``True`` or ``False``, return it.""" - if s is None: - return False - if isinstance(s, bool): - return s - s = str(s).strip() - return s.lower() in truthy - - -DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) -EXAMPLE_CONTENT = asbool( - os.getenv("EXAMPLE_CONTENT", "1") -) # Create example content by default - -app = makerequest(globals()["app"]) - -request = app.REQUEST - -ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) - -directlyProvides(request, *ifaces) - -admin = app.acl_users.getUserById("admin") -admin = admin.__of__(app.acl_users) -newSecurityManager(None, admin) - -site_id = "Plone" -payload = { - "title": "Searchkit Block", - "profile_id": _DEFAULT_PROFILE, - "extension_ids": [ - "searchkit.block:default", - ], - "setup_content": False, - "default_language": "en", - "portal_timezone": "UTC", -} - -if site_id in app.objectIds() and DELETE_EXISTING: - app.manage_delObjects([site_id]) - transaction.commit() - app._p_jar.sync() - -if site_id not in app.objectIds(): - site = addPloneSite(app, site_id, **payload) - transaction.commit() - if EXAMPLE_CONTENT: - portal_setup: SetupTool = site.portal_setup - portal_setup.runAllImportStepsFromProfile("searchkit.block:initial") - transaction.commit() - app._p_jar.sync() diff --git a/backend/setup.py b/backend/setup.py deleted file mode 100644 index 46788caa..00000000 --- a/backend/setup.py +++ /dev/null @@ -1,77 +0,0 @@ -"""Installer for the searchkit.block package.""" - -from pathlib import Path -from setuptools import find_packages -from setuptools import setup - - -long_description = f""" -{Path("README.md").read_text()}\n -{Path("CONTRIBUTORS.md").read_text()}\n -{Path("CHANGES.md").read_text()}\n -""" - - -setup( - name="searchkit.block", - version="1.0.0a0", - description="A new project using Plone 6.", - long_description=long_description, - long_description_content_type="text/markdown", - classifiers=[ - "Development Status :: 3 - Alpha", - "Environment :: Web Environment", - "Framework :: Plone", - "Framework :: Plone :: Addon", - "Framework :: Plone :: 6.0", - "Programming Language :: Python", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Operating System :: OS Independent", - "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", - ], - keywords="Python Plone CMS", - author="Plone Foundation", - author_email="collective@plone.org", - url="https://github.com/rohberg/searchkit.block", - project_urls={ - "PyPI": "https://pypi.org/project/searchkit.block", - "Source": "https://github.com/rohberg/searchkit.block", - "Tracker": "https://github.com/rohberg/searchkit.block/issues", - }, - license="GPL version 2", - packages=find_packages("src", exclude=["ez_setup"]), - namespace_packages=["searchkit"], - package_dir={"": "src"}, - include_package_data=True, - zip_safe=False, - python_requires=">=3.8", - install_requires=[ - "setuptools", - "Plone", - "plone.api", - "plone.restapi", - "plone.volto", - "plone.exportimport", - ], - extras_require={ - "test": [ - "zest.releaser[recommended]", - "zestreleaser.towncrier", - "plone.app.testing", - "plone.restapi[test]", - "pytest", - "pytest-cov", - "pytest-plone>=0.5.0", - ], - }, - entry_points=""" - [z3c.autoinclude.plugin] - target = plone - [console_scripts] - update_locale = searchkit.block.locales.update:update_locale - """, -) diff --git a/backend/src/searchkit/__init__.py b/backend/src/searchkit/__init__.py deleted file mode 100644 index 5284146e..00000000 --- a/backend/src/searchkit/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__("pkg_resources").declare_namespace(__name__) diff --git a/backend/src/searchkit/block/__init__.py b/backend/src/searchkit/block/__init__.py deleted file mode 100644 index e60d2c13..00000000 --- a/backend/src/searchkit/block/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -"""Init and utils.""" - -from zope.i18nmessageid import MessageFactory - -import logging - - -PACKAGE_NAME = "searchkit.block" - -_ = MessageFactory(PACKAGE_NAME) - -logger = logging.getLogger(PACKAGE_NAME) diff --git a/backend/src/searchkit/block/configure.zcml b/backend/src/searchkit/block/configure.zcml deleted file mode 100644 index 25d130b2..00000000 --- a/backend/src/searchkit/block/configure.zcml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/backend/src/searchkit/block/content/__init__.py b/backend/src/searchkit/block/content/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/controlpanel/__init__.py b/backend/src/searchkit/block/controlpanel/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/controlpanel/configure.zcml b/backend/src/searchkit/block/controlpanel/configure.zcml deleted file mode 100644 index e0cd9f05..00000000 --- a/backend/src/searchkit/block/controlpanel/configure.zcml +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/backend/src/searchkit/block/dependencies.zcml b/backend/src/searchkit/block/dependencies.zcml deleted file mode 100644 index b8d35ae5..00000000 --- a/backend/src/searchkit/block/dependencies.zcml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/backend/src/searchkit/block/indexers/__init__.py b/backend/src/searchkit/block/indexers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/indexers/configure.zcml b/backend/src/searchkit/block/indexers/configure.zcml deleted file mode 100644 index bad8247b..00000000 --- a/backend/src/searchkit/block/indexers/configure.zcml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/backend/src/searchkit/block/interfaces.py b/backend/src/searchkit/block/interfaces.py deleted file mode 100644 index 7e2f2884..00000000 --- a/backend/src/searchkit/block/interfaces.py +++ /dev/null @@ -1,7 +0,0 @@ -"""Module where all interfaces, events and exceptions live.""" - -from zope.publisher.interfaces.browser import IDefaultBrowserLayer - - -class IBrowserLayer(IDefaultBrowserLayer): - """Marker interface that defines a browser layer.""" diff --git a/backend/src/searchkit/block/locales/__init__.py b/backend/src/searchkit/block/locales/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po b/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po deleted file mode 100644 index 0cadc3fe..00000000 --- a/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po +++ /dev/null @@ -1,15 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2022-05-25 17:12+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0\n" -"Language-Code: en\n" -"Language-Name: English\n" -"Preferred-Encodings: utf-8 latin1\n" -"Domain: DOMAIN\n" diff --git a/backend/src/searchkit/block/locales/searchkit.block.pot b/backend/src/searchkit/block/locales/searchkit.block.pot deleted file mode 100644 index c4a3da19..00000000 --- a/backend/src/searchkit/block/locales/searchkit.block.pot +++ /dev/null @@ -1,18 +0,0 @@ -#--- PLEASE EDIT THE LINES BELOW CORRECTLY --- -#SOME DESCRIPTIVE TITLE. -#FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2022-05-25 17:12+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0\n" -"Language-Code: en\n" -"Language-Name: English\n" -"Preferred-Encodings: utf-8 latin1\n" -"Domain: searchkit.block\n" diff --git a/backend/src/searchkit/block/locales/update.py b/backend/src/searchkit/block/locales/update.py deleted file mode 100644 index 42e4dee3..00000000 --- a/backend/src/searchkit/block/locales/update.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Update locales.""" - -from pathlib import Path - -import logging -import re -import subprocess - - -logger = logging.getLogger("i18n") -logger.setLevel(logging.DEBUG) - - -PATTERN = r"^[a-z]{2}.*" -domains = ("searchkit.block",) -cwd = Path.cwd() -target_path = Path(__file__).parent.parent.resolve() -locale_path = target_path / "locales" - -i18ndude = cwd / "bin" / "i18ndude" -if not i18ndude.exists(): - i18ndude = cwd / "i18ndude" - -# ignore node_modules files resulting in errors -excludes = '"*.html *json-schema*.xml"' - - -def locale_folder_setup(domain: str): - languages = [path for path in locale_path.glob("*") if path.is_dir()] - for lang_folder in languages: - lc_messages_path = lang_folder / "LC_MESSAGES" - lang = lang_folder.name - if lc_messages_path.exists(): - continue - elif re.match(PATTERN, lang): - lc_messages_path.mkdir() - cmd = ( - f"msginit --locale={lang} " - f"--input={locale_path}/{domain}.pot " - f"--output={locale_path}/{lang}/LC_MESSAGES/{domain}.po" - ) - subprocess.call( - cmd, - shell=True, - ) - - -def _rebuild(domain: str): - cmd = ( - f"{i18ndude} rebuild-pot --pot {locale_path}/{domain}.pot " - f"--exclude {excludes} " - f"--create {domain} {target_path}" - ) - subprocess.call( - cmd, - shell=True, - ) - - -def _sync(domain: str): - cmd = ( - f"{i18ndude} sync --pot {locale_path}/{domain}.pot " - f"{locale_path}/*/LC_MESSAGES/{domain}.po" - ) - subprocess.call( - cmd, - shell=True, - ) - - -def update_locale(): - if i18ndude.exists(): - for domain in domains: - logger.info(f"Updating translations for {domain}") - locale_folder_setup(domain) - _rebuild(domain) - _sync(domain) - else: - logger.error("Not able to find i18ndude") diff --git a/backend/src/searchkit/block/profiles.zcml b/backend/src/searchkit/block/profiles.zcml deleted file mode 100644 index 7cae67f0..00000000 --- a/backend/src/searchkit/block/profiles.zcml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/browserlayer.xml b/backend/src/searchkit/block/profiles/default/browserlayer.xml deleted file mode 100644 index 58b6e1be..00000000 --- a/backend/src/searchkit/block/profiles/default/browserlayer.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/profiles/default/catalog.xml b/backend/src/searchkit/block/profiles/default/catalog.xml deleted file mode 100644 index 9558132b..00000000 --- a/backend/src/searchkit/block/profiles/default/catalog.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/backend/src/searchkit/block/profiles/default/controlpanel.xml b/backend/src/searchkit/block/profiles/default/controlpanel.xml deleted file mode 100644 index a75d00ca..00000000 --- a/backend/src/searchkit/block/profiles/default/controlpanel.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/profiles/default/diff_tool.xml b/backend/src/searchkit/block/profiles/default/diff_tool.xml deleted file mode 100644 index 6a1c5f4e..00000000 --- a/backend/src/searchkit/block/profiles/default/diff_tool.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/metadata.xml b/backend/src/searchkit/block/profiles/default/metadata.xml deleted file mode 100644 index eec40a34..00000000 --- a/backend/src/searchkit/block/profiles/default/metadata.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 1000 - - profile-plone.volto:default - - diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml deleted file mode 100644 index ea77c18f..00000000 --- a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Searchkit Block - - diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml deleted file mode 100644 index e8fd7a43..00000000 --- a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Searchkit Block - - diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml deleted file mode 100644 index cd2730fc..00000000 --- a/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - en - - en - - diff --git a/backend/src/searchkit/block/profiles/default/repositorytool.xml b/backend/src/searchkit/block/profiles/default/repositorytool.xml deleted file mode 100644 index 4f674d65..00000000 --- a/backend/src/searchkit/block/profiles/default/repositorytool.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/rolemap.xml b/backend/src/searchkit/block/profiles/default/rolemap.xml deleted file mode 100644 index 71ca5838..00000000 --- a/backend/src/searchkit/block/profiles/default/rolemap.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/theme.xml b/backend/src/searchkit/block/profiles/default/theme.xml deleted file mode 100644 index 7f916aad..00000000 --- a/backend/src/searchkit/block/profiles/default/theme.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - barceloneta - true - diff --git a/backend/src/searchkit/block/profiles/default/types.xml b/backend/src/searchkit/block/profiles/default/types.xml deleted file mode 100644 index bed2b0d4..00000000 --- a/backend/src/searchkit/block/profiles/default/types.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/profiles/initial/metadata.xml b/backend/src/searchkit/block/profiles/initial/metadata.xml deleted file mode 100644 index f768b5a7..00000000 --- a/backend/src/searchkit/block/profiles/initial/metadata.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 1000 - diff --git a/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml b/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml deleted file mode 100644 index d007dd37..00000000 --- a/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/serializers/__init__.py b/backend/src/searchkit/block/serializers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/serializers/configure.zcml b/backend/src/searchkit/block/serializers/configure.zcml deleted file mode 100644 index edc2fdd1..00000000 --- a/backend/src/searchkit/block/serializers/configure.zcml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/backend/src/searchkit/block/serializers/summary.py b/backend/src/searchkit/block/serializers/summary.py deleted file mode 100644 index 4e0605fe..00000000 --- a/backend/src/searchkit/block/serializers/summary.py +++ /dev/null @@ -1,10 +0,0 @@ -from plone.restapi.interfaces import IJSONSummarySerializerMetadata -from zope.interface import implementer - - -@implementer(IJSONSummarySerializerMetadata) -class JSONSummarySerializerMetadata: - """Additional metadata to be exposed on listings.""" - - def default_metadata_fields(self): - return {"image_field", "image_scales", "effective", "Subject"} diff --git a/backend/src/searchkit/block/setuphandlers/__init__.py b/backend/src/searchkit/block/setuphandlers/__init__.py deleted file mode 100644 index 580bd2c5..00000000 --- a/backend/src/searchkit/block/setuphandlers/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from Products.CMFPlone.interfaces import INonInstallable -from zope.interface import implementer - - -@implementer(INonInstallable) -class HiddenProfiles: - def getNonInstallableProfiles(self): - """Hide uninstall profile from site-creation and quickinstaller.""" - return [ - "searchkit.block:uninstall", - ] diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json deleted file mode 100644 index 7281b504..00000000 --- a/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "__version__": "1.0.0", - "_blob_files_": [ - "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png" - ], - "_data_files_": [ - "plone_site_root/data.json", - "a720393b3c0240e5bd27c43fcd2cfd1e/data.json", - "a58ccead718140c1baa98d43595fc3e6/data.json" - ], - "default_page": {}, - "local_roles": { - "a58ccead718140c1baa98d43595fc3e6": { - "local_roles": { - "admin": [ - "Owner" - ] - } - }, - "a720393b3c0240e5bd27c43fcd2cfd1e": { - "local_roles": { - "admin": [ - "Owner" - ] - } - }, - "plone_site_root": { - "local_roles": { - "admin": [ - "Owner" - ] - } - } - }, - "ordering": { - "a58ccead718140c1baa98d43595fc3e6": 0, - "a720393b3c0240e5bd27c43fcd2cfd1e": 42 - }, - "relations": [] -} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json deleted file mode 100644 index 08dbccf1..00000000 --- a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "@id": "/images/plone-foundation.png", - "@type": "Image", - "UID": "a58ccead718140c1baa98d43595fc3e6", - "allow_discussion": false, - "contributors": [], - "created": "2024-05-27T03:23:37+00:00", - "creators": [ - "admin" - ], - "description": "", - "effective": null, - "exclude_from_nav": false, - "expires": null, - "exportimport.constrains": {}, - "exportimport.conversation": [], - "exportimport.versions": {}, - "id": "plone-foundation.png", - "image": { - "blob_path": "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png", - "content-type": "image/png", - "filename": "plone-foundation.png", - "height": 439, - "size": 50737, - "width": 2000 - }, - "is_folderish": false, - "language": "##DEFAULT##", - "layout": "image_view", - "lock": {}, - "modified": "2024-05-27T03:24:00+00:00", - "parent": { - "@id": "/images", - "@type": "Document", - "Subject": [], - "UID": "a720393b3c0240e5bd27c43fcd2cfd1e", - "description": "Site images", - "effective": "1969-12-31T03:00:00+00:00", - "image_field": null, - "image_scales": {}, - "review_state": "private", - "title": "Images", - "type_title": "Page" - }, - "review_state": null, - "rights": "", - "subjects": [ - "Plone" - ], - "title": "Plone Foundation Logo", - "type_title": "Image", - "version": "current", - "workflow_history": {}, - "working_copy": null, - "working_copy_of": null -} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png deleted file mode 100644 index 9516c4c6392f24444bec95824f40fcf6bf3a0631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50737 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 z 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 - - - - diff --git a/backend/src/searchkit/block/vocabularies/__init__.py b/backend/src/searchkit/block/vocabularies/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/vocabularies/configure.zcml b/backend/src/searchkit/block/vocabularies/configure.zcml deleted file mode 100644 index fb8b7931..00000000 --- a/backend/src/searchkit/block/vocabularies/configure.zcml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py deleted file mode 100644 index 006e9842..00000000 --- a/backend/tests/conftest.py +++ /dev/null @@ -1,18 +0,0 @@ -from pytest_plone import fixtures_factory -from searchkit.block.testing import ACCEPTANCE_TESTING -from searchkit.block.testing import FUNCTIONAL_TESTING -from searchkit.block.testing import INTEGRATION_TESTING - - -pytest_plugins = ["pytest_plone"] - - -globals().update( - fixtures_factory( - ( - (ACCEPTANCE_TESTING, "acceptance"), - (FUNCTIONAL_TESTING, "functional"), - (INTEGRATION_TESTING, "integration"), - ) - ) -) diff --git a/backend/tests/setup/test_setup_install.py b/backend/tests/setup/test_setup_install.py deleted file mode 100644 index 9a5bcb92..00000000 --- a/backend/tests/setup/test_setup_install.py +++ /dev/null @@ -1,17 +0,0 @@ -from searchkit.block import PACKAGE_NAME - - -class TestSetupInstall: - def test_addon_installed(self, installer): - """Test if searchkit.block is installed.""" - assert installer.is_product_installed(PACKAGE_NAME) is True - - def test_browserlayer(self, browser_layers): - """Test that IBrowserLayer is registered.""" - from searchkit.block.interfaces import IBrowserLayer - - assert IBrowserLayer in browser_layers - - def test_latest_version(self, profile_last_version): - """Test latest version of default profile.""" - assert profile_last_version(f"{PACKAGE_NAME}:default") == "1000" diff --git a/backend/tests/setup/test_setup_uninstall.py b/backend/tests/setup/test_setup_uninstall.py deleted file mode 100644 index 77a6a8f2..00000000 --- a/backend/tests/setup/test_setup_uninstall.py +++ /dev/null @@ -1,19 +0,0 @@ -from searchkit.block import PACKAGE_NAME - -import pytest - - -class TestSetupUninstall: - @pytest.fixture(autouse=True) - def uninstalled(self, installer): - installer.uninstall_product(PACKAGE_NAME) - - def test_addon_uninstalled(self, installer): - """Test if searchkit.block is uninstalled.""" - assert installer.is_product_installed(PACKAGE_NAME) is False - - def test_browserlayer_not_registered(self, browser_layers): - """Test that IBrowserLayer is not registered.""" - from searchkit.block.interfaces import IBrowserLayer - - assert IBrowserLayer not in browser_layers diff --git a/backend/tox.ini b/backend/tox.ini deleted file mode 100644 index 842da822..00000000 --- a/backend/tox.ini +++ /dev/null @@ -1,212 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -[tox] -# We need 4.4.0 for constrain_package_deps. -min_version = 4.4.0 -envlist = - lint - test - dependencies - - -## -# Add extra configuration options in .meta.toml: -# [tox] -# envlist_lines = """ -# my_other_environment -# """ -# config_lines = """ -# my_extra_top_level_tox_configuration_lines -# """ -## - -[testenv] -skip_install = true -allowlist_externals = - echo - false -# Make sure typos like `tox -e formaat` are caught instead of silently doing nothing. -# See https://github.com/tox-dev/tox/issues/2858. -commands = - echo "Unrecognized environment name {envname}" - false - -[testenv:init] -description = Prepare environment -skip_install = true -deps = - mxdev -commands = - mxdev -c mx.ini - echo "Initial setup for mxdev" - - -[testenv:format] -description = automatically reformat code -skip_install = true -deps = - pre-commit -commands = - pre-commit run -a pyupgrade - pre-commit run -a isort - pre-commit run -a black - pre-commit run -a zpretty - -[testenv:lint] -description = run linters that will help improve the code style -skip_install = true -deps = - pre-commit -commands = - # Run pre-commit without chdir to the root of the git repository - python -c "from pre_commit import main; main._adjust_args_and_chdir = lambda args: None; raise SystemExit(main.main())" run -a - -[testenv:dependencies] -description = check if the package defines all its dependencies -skip_install = true -deps = - build - z3c.dependencychecker==2.11 -commands = - python -m build --sdist --no-isolation - dependencychecker - -[testenv:dependencies-graph] -description = generate a graph out of the dependencies of the package -skip_install = false -allowlist_externals = - sh -deps = - pipdeptree==2.5.1 - graphviz # optional dependency of pipdeptree -commands = - sh -c 'pipdeptree --exclude setuptools,wheel,pipdeptree,zope.interface,zope.component --graph-output svg > dependencies.svg' - -[testenv:test] -description = run the distribution tests -use_develop = true -skip_install = false -constrain_package_deps = true -set_env = - ROBOT_BROWSER=headlesschrome - -## -# Specify extra test environment variables in .meta.toml: -# [tox] -# test_environment_variables = """ -# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ -# """ -# -# Set constrain_package_deps .meta.toml: -# [tox] -# constrain_package_deps = false -## -deps = - pytest-plone - pytest - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -## -# Specify additional deps in .meta.toml: -# [tox] -# test_deps_additional = """ -# -esources/plonegovbr.portal_base[test] -# """ -# -# Specify a custom constraints file in .meta.toml: -# [tox] -# constraints_file = "https://my-server.com/constraints.txt" -## -commands = - pytest --disable-warnings {posargs} {toxinidir}/tests -extras = - test - - -[testenv:coverage] -description = get a test coverage report -use_develop = true -skip_install = false -constrain_package_deps = true -set_env = - ROBOT_BROWSER=headlesschrome - -## -# Specify extra test environment variables in .meta.toml: -# [tox] -# test_environment_variables = """ -# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ -# """ -# -# Set constrain_package_deps .meta.toml: -# [tox] -# constrain_package_deps = "false" -## -deps = - pytest-plone - pytest - coverage - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -commands = - coverage run --source searchkit.block -m pytest {posargs} --disable-warnings {toxinidir}/tests - coverage report -m --format markdown - coverage xml -extras = - test - - -[testenv:release-check] -description = ensure that the distribution is ready to release -skip_install = true -deps = - twine - build - towncrier - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -commands = - # fake version to not have to install the package - # we build the change log as news entries might break - # the README that is displayed on PyPI - towncrier build --version=100.0.0 --yes - python -m build --sdist --no-isolation - twine check dist/* - -[testenv:circular] -description = ensure there are no cyclic dependencies -use_develop = true -skip_install = false -set_env = - -## -# Specify extra test environment variables in .meta.toml: -# [tox] -# test_environment_variables = """ -# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ -# """ -## -allowlist_externals = - sh -deps = - pipdeptree - pipforester - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -commands = - # Generate the full dependency tree - sh -c 'pipdeptree -j > forest.json' - # Generate a DOT graph with the circular dependencies, if any - pipforester -i forest.json -o forest.dot --cycles - # Report if there are any circular dependencies, i.e. error if there are any - pipforester -i forest.json --check-cycles -o /dev/null - - -## -# Add extra configuration options in .meta.toml: -# [tox] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/version.txt b/backend/version.txt deleted file mode 100644 index dd6bb261..00000000 --- a/backend/version.txt +++ /dev/null @@ -1 +0,0 @@ -6.0.13 diff --git a/frontend/cypress.config.js b/cypress.config.js similarity index 100% rename from frontend/cypress.config.js rename to cypress.config.js diff --git a/backend/docs/.gitkeep b/cypress/.gitkeep similarity index 100% rename from backend/docs/.gitkeep rename to cypress/.gitkeep diff --git a/frontend/cypress/support/commands.js b/cypress/support/commands.js similarity index 100% rename from frontend/cypress/support/commands.js rename to cypress/support/commands.js diff --git a/frontend/cypress/support/e2e.js b/cypress/support/e2e.js similarity index 100% rename from frontend/cypress/support/e2e.js rename to cypress/support/e2e.js diff --git a/backend/src/searchkit/block/profiles/default/registry/.gitkeep b/cypress/tests/.gitkeep similarity index 100% rename from backend/src/searchkit/block/profiles/default/registry/.gitkeep rename to cypress/tests/.gitkeep diff --git a/frontend/cypress/tests/example.cy.js b/cypress/tests/example.cy.js similarity index 100% rename from frontend/cypress/tests/example.cy.js rename to cypress/tests/example.cy.js diff --git a/dependabot.yml b/dependabot.yml deleted file mode 100644 index df4d15b3..00000000 --- a/dependabot.yml +++ /dev/null @@ -1,8 +0,0 @@ -version: 2 -updates: - - - package-ecosystem: "github-actions" - directory: "/" - schedule: - # Check for updates to GitHub Actions every week - interval: "weekly" diff --git a/devops/README-GITLAB.md b/devops/README-GITLAB.md deleted file mode 100644 index 6408b1dc..00000000 --- a/devops/README-GITLAB.md +++ /dev/null @@ -1,61 +0,0 @@ -# DevOps pipelines in GitLab CI/CD 🚀 - -Welcome to the DevOps pipelines guide for deploying your project using GitLab pipelines! -This README provides step-by-step instructions to set up your GitLab repository and initiate manual deployment pipelines. -Follow each step carefully to correctly configure your environment and secrets. - -## Repository setup 🛠️ - -See [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/). - -### Step 1: Add the deployment environment variables - -1. Visit [GitLab](https://gitlab.com/), or your organization's GitLab instance, and log in with your credentials. -2. Go to your repository at [rohberg/searchkit-block](https://gitlab.com/rohberg/searchkit-block). - Note that you might need to adjust the URL's host name to your organization's. -3. Click on `Settings` at the left menu and select `CI/CD`. -4. Expand the `Variables`. -5. Add all variables and their corresponding values, copying them from the `.env` file. - This file is not commited into the repository, and that's why we need to add them here. - -### Step 2: Add deployment's host SSH key as a known host - -1. Run `ssh-keyscan -t ed25519 DEPLOY_HOST` in a terminal, where you substitute `DEPLOY_HOST` with the address of the host, as in the `.env` file. -2. Copy the prompted value, and add it as a `Variable` in the GitLab web interface, like in the previous step. - Name the variable `SSH_KNOWN_HOSTS`. - -See [Use SSH keys to communicate with GitLab](https://docs.gitlab.com/ee/user/ssh.html). - -### Step 3: Add an SSH deployment key - -1. Create a new SSH key that will be used by GitLab CI/CD to connect to your host. - You can create it in your terminal with the command `ssh-keygen -t ed25519`. -2. Copy the public key to the `DEPLOY_HOST`'s user's `~/.ssh/authorized_keys` file. - Check your `DEPLOY_HOST` and `DEPLOY_USER` in the `.env` file. -3. Copy the private key as a `Variable` like in the previous step. - Name the variable `DEPLOY_SSH_PRIVATE_KEY`. - -*Note:* instead of creating a new key, you can use the one that this template creates for you when you run `make server-setup`. -Check the section "Server Setup" in the file `README.md` in the same folder as this file for details. -Be aware that the key generated by this template will not be added to your git repository because it is explicitly excluded by the `.gitignore` file. - -## Automatic deployment 🚀 - -The deployment is executed automatically on each commit to `main` branch. - -You may want to adapt your development workflow to that, and use a `develop` branch to develop and create merge requests for deployments. - -## Manual deployment 🚀 - -If you want to do manual deployments, you can enable the `when: manual` option of the `.gitlab-ci.yml` file. -By default it is commented. - -## Deployment with an auxiliary docker image - -The provided configuration tries to mimic the `Makefile` deployment flow. -It uses the same commands as you would use when deploying from your computer. - -If you want, you can use an [auxiliary docker image](https://github.com/kitconcept/docker-stack-deploy/), which does the deployment for you instead of using the `Makefile`. -This Docker image is used if you configure the deployments in GitHub. - -Check the commented section of the `.gitlab-ci.yml` file for an example. diff --git a/devops/stacks/searchkit-block.example.com.yml b/devops/stacks/searchkit-block.example.com.yml deleted file mode 100644 index 8eb18102..00000000 --- a/devops/stacks/searchkit-block.example.com.yml +++ /dev/null @@ -1,173 +0,0 @@ ---- -version: '3.8' - -services: - traefik: - image: traefik:v2.10 - - ports: - - 80:80 - - 443:443 - - deploy: - replicas: 1 - update_config: - parallelism: 1 - delay: 5s - order: start-first - labels: - - traefik.enable=true - - traefik.constraint-label=public - - traefik.http.services.traefik-public.loadbalancer.server.port=8000 - ## Basic Authentication - ### Note: all dollar signs in the hash need to be doubled for escaping. - ### To create user:password pair, it's possible to use this command: - ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g - ### Defaults to admin:admin - #- traefik.http.middlewares.admin-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 - #- traefik.http.routers.traefik-public-https.rule=Host(`traefik-searchkit-block.example.com`) - #- traefik.http.routers.traefik-public-https.entrypoints=https - #- traefik.http.routers.traefik-public-https.tls=true - #- traefik.http.routers.traefik-public-https.service=api@internal - #- traefik.http.routers.traefik-public-https.middlewares=admin-auth - - # GENERIC MIDDLEWARES - - traefik.http.middlewares.https-redirect.redirectscheme.scheme=https - - traefik.http.middlewares.https-redirect.redirectscheme.permanent=true - - traefik.http.middlewares.gzip.compress=true - - traefik.http.middlewares.gzip.compress.excludedcontenttypes=image/png, image/jpeg, font/woff2 - - # GENERIC ROUTERS - - traefik.http.routers.generic-https-redirect.entrypoints=http - - traefik.http.routers.generic-https-redirect.rule=HostRegexp(`{host:.*}`) - - traefik.http.routers.generic-https-redirect.priority=1 - - traefik.http.routers.generic-https-redirect.middlewares=https-redirect - - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro - - vol-traefik-certs:/certificates - - command: - - --providers.docker - - --providers.docker.constraints=Label(`traefik.constraint-label`, `public`) - - --providers.docker.exposedbydefault=false - - --providers.docker.swarmmode - - --providers.docker.network=searchkit-block-example-com_nw-internal - - --entrypoints.http.address=:80 - - --entrypoints.https.address=:443 - - --certificatesresolvers.le.acme.email=collective@plone.org - - --certificatesresolvers.le.acme.storage=/certificates/acme.json - - --certificatesresolvers.le.acme.tlschallenge=true - - --accesslog - - --log - - --log.level=INFO - - --api - - networks: - - nw-internal - - frontend: - image: ghcr.io/rohberg/searchkit-block-frontend:${STACK_PARAM:-latest} - environment: - RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone - RAZZLE_API_PATH: https://searchkit-block.example.com - depends_on: - - backend - networks: - - nw-internal - deploy: - replicas: 2 - update_config: - parallelism: 1 - delay: 5s - order: start-first - labels: - - traefik.enable=true - - traefik.constraint-label=public - # Service - - traefik.http.services.svc-frontend.loadbalancer.server.port=3000 - # Routers - ## / - - traefik.http.routers.rt-frontend.rule=Host(`searchkit-block.example.com`) - - traefik.http.routers.rt-frontend.entrypoints=https - - traefik.http.routers.rt-frontend.tls=true - - traefik.http.routers.rt-frontend.tls.certresolver=le - - traefik.http.routers.rt-frontend.service=svc-frontend - - traefik.http.routers.rt-frontend.middlewares=gzip - - backend: - image: ghcr.io/rohberg/searchkit-block-backend:${STACK_PARAM:-latest} - environment: - RELSTORAGE_DSN: "dbname='${DB_NAME:-plone}' user='${DB_USER:-plone}' host='${DB_HOST:-db}' password='${DB_PASSWORD:-aiaWltFxzwYy}' port='${DB_PORT:-5432}'" - depends_on: - - db - networks: - - nw-internal - deploy: - replicas: 2 - update_config: - parallelism: 1 - delay: 5s - order: start-first - labels: - - traefik.enable=true - - traefik.constraint-label=public - # Services - - traefik.http.services.svc-backend.loadbalancer.server.port=8080 - # Middlewares - ## VHM rewrite /++api++/ - - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.regex=^/\\+\\+api\\+\\+($$|/.*)" - - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.replacement=/VirtualHostBase/https/searchkit-block.example.com/Plone/++api++/VirtualHostRoot$$1" - ## VHM rewrite /ClassicUI/ - - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.regex=^/ClassicUI($$|/.*)" - - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.replacement=/VirtualHostBase/https/searchkit-block.example.com/Plone/VirtualHostRoot/_vh_ClassicUI$$1" - ## Basic Authentication - ### Note: all dollar signs in the hash need to be doubled for escaping. - ### To create user:password pair, it's possible to use this command: - ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g - ### Defaults to admin:admin - - traefik.http.middlewares.mw-backend-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 - - # Routes - ## /++api++ - - traefik.http.routers.rt-backend-api.rule=Host(`searchkit-block.example.com`) && PathPrefix(`/++api++`) - - traefik.http.routers.rt-backend-api.entrypoints=https - - traefik.http.routers.rt-backend-api.tls=true - - traefik.http.routers.rt-backend-api.service=svc-backend - - traefik.http.routers.rt-backend-api.middlewares=gzip,mw-backend-vhm-api - ## /ClassicUI - - traefik.http.routers.rt-backend-classic.rule=Host(`searchkit-block.example.com`) && PathPrefix(`/ClassicUI`) - - traefik.http.routers.rt-backend-classic.entrypoints=https - - traefik.http.routers.rt-backend-classic.tls=true - - traefik.http.routers.rt-backend-classic.service=svc-backend - - traefik.http.routers.rt-backend-classic.middlewares=gzip,mw-backend-auth,mw-backend-vhm-classic - - db: - image: postgres:14 - environment: - POSTGRES_USER: plone - POSTGRES_PASSWORD: aiaWltFxzwYy - POSTGRES_DB: plone - deploy: - replicas: 1 - update_config: - parallelism: 1 - delay: 1s - order: stop-first - volumes: - - vol-site-data:/var/lib/postgresql/data - networks: - - nw-internal - -volumes: - vol-traefik-certs: {} - vol-site-data: - driver_opts: - type: none - device: "${DEPLOY_FOLDER:/srv/searchkit-block/data}" - o: bind - -networks: - nw-internal: - internal: true - driver: overlay diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index dc477c66..00000000 --- a/docker-compose.yml +++ /dev/null @@ -1,106 +0,0 @@ ---- -name: searchkit-block - -services: - traefik: - image: traefik:v2.10 - - ports: - - 80:80 - - labels: - - traefik.enable=true - - traefik.constraint-label=public - - traefik.http.routers.traefik-public-http.rule=Host(`traefik.searchkit-block.localhost`) - - traefik.http.routers.traefik-public-http.entrypoints=http - - traefik.http.routers.traefik-public-http.service=api@internal - - traefik.http.services.traefik-public.loadbalancer.server.port=8000 - - # GENERIC MIDDLEWARES - - traefik.http.middlewares.gzip.compress=true - - traefik.http.middlewares.gzip.compress.excludedcontenttypes=image/png, image/jpeg, font/woff2 - - volumes: - - /var/run/docker.sock:/var/run/docker.sock:ro - - command: - - --providers.docker - - --providers.docker.constraints=Label(`traefik.constraint-label`, `public`) - - --providers.docker.exposedbydefault=false - - --entrypoints.http.address=:80 - - --accesslog - - --log - - --api - frontend: - build: - context: ./frontend - args: - - VOLTO_VERSION=${VOLTO_VERSION} - environment: - RAZZLE_INTERNAL_API_PATH: http://backend:8080/Plone - depends_on: - - backend - labels: - - traefik.enable=true - - traefik.constraint-label=public - # Service - - traefik.http.services.svc-frontend.loadbalancer.server.port=3000 - # Routers - ## / - - traefik.http.routers.rt-frontend.rule=Host(`searchkit-block.localhost`) - - traefik.http.routers.rt-frontend.entrypoints=http - - traefik.http.routers.rt-frontend.service=svc-frontend - - traefik.http.routers.rt-frontend.middlewares=gzip - - backend: - build: - context: ./backend - args: - - PLONE_VERSION=${PLONE_VERSION} - environment: - RELSTORAGE_DSN: "dbname='${DB_NAME:-plone}' user='${DB_NAME:-plone}' host='${DB_HOST:-db}' password='${DB_PASSWORD:-aiaWltFxzwYy}' port='${DB_PORT:-5432}'" - depends_on: - - db - labels: - - traefik.enable=true - - traefik.constraint-label=public - # Services - - traefik.http.services.svc-backend.loadbalancer.server.port=8080 - - # Middlewares - ## VHM rewrite /++api++/ - - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.regex=^/\\+\\+api\\+\\+($$|/.*)" - - "traefik.http.middlewares.mw-backend-vhm-api.replacepathregex.replacement=/VirtualHostBase/http/searchkit-block.localhost/Plone/++api++/VirtualHostRoot$$1" - - ## VHM rewrite /ClassicUI/ - - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.regex=^/ClassicUI($$|/.*)" - - "traefik.http.middlewares.mw-backend-vhm-classic.replacepathregex.replacement=/VirtualHostBase/http/searchkit-block.localhost/Plone/VirtualHostRoot/_vh_ClassicUI$$1" - - ## Basic Authentication - ### Note: all dollar signs in the hash need to be doubled for escaping. - ### To create user:password pair, it's possible to use this command: - ### echo $(htpasswd -nb user password) | sed -e s/\\$/\\$\\$/g - ### Defaults to admin:admin - - traefik.http.middlewares.mw-backend-auth.basicauth.users=admin:$$apr1$$uZPT5Fgu$$AmlIdamxT5ipBvPlsdfD70 - # Routers - - traefik.http.routers.rt-backend-api.rule=Host(`searchkit-block.localhost`) && (PathPrefix(`/++api++`)) - - traefik.http.routers.rt-backend-api.entrypoints=http - - traefik.http.routers.rt-backend-api.service=svc-backend - - traefik.http.routers.rt-backend-api.middlewares=gzip,mw-backend-vhm-api - ## /ClassicUI - - traefik.http.routers.rt-backend-classic.rule=Host(`searchkit-block.localhost`) && PathPrefix(`/ClassicUI`) - - traefik.http.routers.rt-backend-classic.entrypoints=http - - traefik.http.routers.rt-backend-classic.service=svc-backend - - traefik.http.routers.rt-backend-classic.middlewares=gzip,mw-backend-auth,mw-backend-vhm-classic - - db: - image: postgres:14 - environment: - POSTGRES_USER: plone - POSTGRES_PASSWORD: aiaWltFxzwYy - POSTGRES_DB: plone - volumes: - - vol-site-data:/var/lib/postgresql/data - -volumes: - vol-site-data: {} diff --git a/frontend/.dockerignore b/frontend/.dockerignore deleted file mode 100644 index 71a9d07b..00000000 --- a/frontend/.dockerignore +++ /dev/null @@ -1,6 +0,0 @@ -*.log -build -cache -cypress -Dockerfile -node_modules diff --git a/frontend/.gitignore b/frontend/.gitignore deleted file mode 100644 index cdcd9372..00000000 --- a/frontend/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -.*project -.settings/ -.vscode -*~ -acceptance/cypress/videos/ -acceptance/node_modules -.storybook-build -build -core -node_modules -results -yarn.lock -/public diff --git a/frontend/.pre-commit-config.yaml b/frontend/.pre-commit-config.yaml deleted file mode 100644 index 3c7d331c..00000000 --- a/frontend/.pre-commit-config.yaml +++ /dev/null @@ -1,27 +0,0 @@ -repos: - - repo: local - hooks: - - id: prettier - name: prettier - entry: pnpm exec prettier --write - language: system - files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' - types: [file] - - id: eslint - name: eslint - entry: bash -c "VOLTOCONFIG=$(pwd)/volto.config.js pnpm exec eslint --max-warnings=0 --fix" - language: system - files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' - types: [file] - - id: stylelint - name: stylelint - entry: pnpm exec stylelint --fix - language: system - files: '^packages/.*/src/.*/?.*.(css|scss|less)$' - types: [file] - - id: i18n - name: i18n - entry: make ci-i18n - language: system - files: '^packages/.*/src/.*/?.*.(js|jsx|ts|tsx)$' - types: [file] diff --git a/frontend/Dockerfile b/frontend/Dockerfile deleted file mode 100644 index 65ebe77d..00000000 --- a/frontend/Dockerfile +++ /dev/null @@ -1,24 +0,0 @@ -# syntax=docker/dockerfile:1 -ARG VOLTO_VERSION -FROM plone/frontend-builder:${VOLTO_VERSION} as builder - -COPY --chown=node packages/volto-searchkit-block /app/packages/volto-searchkit-block -COPY --chown=node volto.config.js /app/ -COPY --chown=node package.json /app/package.json.temp - -RUN --mount=type=cache,id=pnpm,target=/app/.pnpm-store,uid=1000 < Start Docker-based Plone Backend$(RESET)" - docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) - -## Storybook -.PHONY: storybook-start -storybook-start: ## Start Storybook server on port 6006 - @echo "$(GREEN)==> Start Storybook$(RESET)" - pnpm run storybook - -.PHONY: storybook-build -storybook-build: ## Build Storybook - @echo "$(GREEN)==> Build Storybook$(RESET)" - mkdir -p $(CURRENT_DIR)/.storybook-build - pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build - -## Acceptance -.PHONY: acceptance-frontend-dev-start -acceptance-frontend-dev-start: ## Start acceptance frontend in development mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start - -.PHONY: acceptance-frontend-prod-start -acceptance-frontend-prod-start: ## Start acceptance frontend in production mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod - -.PHONY: acceptance-backend-start -acceptance-backend-start: ## Start backend acceptance server - docker run -it --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) - -.PHONY: ci-acceptance-backend-start -ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI - docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) - -.PHONY: acceptance-test -acceptance-test: ## Start Cypress in interactive mode - pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' - -.PHONY: ci-acceptance-test -ci-acceptance-test: ## Run cypress tests in headless mode for CI - pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' - -.PHONY: build-image -build-image: ## Build Docker Image - @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME):$(IMAGE_TAG) -f Dockerfile --build-arg VOLTO_VERSION=$(VOLTO_VERSION) diff --git a/frontend/README.md b/frontend/README.md deleted file mode 100644 index 679fd333..00000000 --- a/frontend/README.md +++ /dev/null @@ -1,203 +0,0 @@ -# Searchkit Block (volto-searchkit-block) - -A new project using Plone 6. - -[![npm](https://img.shields.io/npm/v/volto-searchkit-block)](https://www.npmjs.com/package/volto-searchkit-block) -[![](https://img.shields.io/badge/-Storybook-ff4785?logo=Storybook&logoColor=white&style=flat-square)](https://rohberg.github.io/volto-searchkit-block/) -[![Code analysis checks](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml) -[![Unit tests](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml) - -## Features - - - -## Installation - -To install your project, you must choose the method appropriate to your version of Volto. - - -### Volto 17 and earlier - -Create a new Volto project (you can skip this step if you already have one): - -``` -npm install -g yo @plone/generator-volto -yo @plone/volto my-volto-project --addon volto-searchkit-block -cd my-volto-project -``` - -Add `volto-searchkit-block` to your package.json: - -```JSON -"addons": [ - "volto-searchkit-block" -], - -"dependencies": { - "volto-searchkit-block": "*" -} -``` - -Download and install the new add-on by running: - -``` -yarn install -``` - -Start volto with: - -``` -yarn start -``` - -### Volto 18 and later - -Add `volto-searchkit-block` to your `package.json`: - -```json -"dependencies": { - "volto-searchkit-block": "*" -} -``` - -Add `volto-searchkit-block` to your `volto.config.js`: - -```javascript -const addons = ['volto-searchkit-block']; -``` - -If this package provides a Volto theme, and you want to activate it, then add the following to your `volto.config.js`: - -```javascript -const theme = 'volto-searchkit-block'; -``` - -## Test installation - -Visit http://localhost:3000/ in a browser, login, and check the awesome new features. - - -## Development - -The development of this add-on is done in isolation using a new approach using pnpm workspaces and latest `mrs-developer` and other Volto core improvements. -For this reason, it only works with pnpm and Volto 18 (currently in alpha). - - -### Pre-requisites - -- [Node.js](https://6.docs.plone.org/install/create-project.html#node-js) -- [Make](https://6.docs.plone.org/install/create-project.html#make) -- [Docker](https://6.docs.plone.org/install/create-project.html#docker) - - -### Make convenience commands - -Run `make help` to list the available commands. - -```text -help Show this help -install Installs the add-on in a development environment -start Starts Volto, allowing reloading of the add-on during development -build Build a production bundle for distribution of the project with the add-on -i18n Sync i18n -ci-i18n Check if i18n is not synced -format Format codebase -lint Lint, or catch and remove problems, in code base -release Release the add-on on npmjs.org -release-dry-run Dry-run the release of the add-on on npmjs.org -test Run unit tests -ci-test Run unit tests in CI -backend-docker-start Starts a Docker-based backend for development -storybook-start Start Storybook server on port 6006 -storybook-build Build Storybook -acceptance-frontend-dev-start Start acceptance frontend in development mode -acceptance-frontend-prod-start Start acceptance frontend in production mode -acceptance-backend-start Start backend acceptance server -ci-acceptance-backend-start Start backend acceptance server in headless mode for CI -acceptance-test Start Cypress in interactive mode -ci-acceptance-test Run cypress tests in headless mode for CI -``` - -### Development environment set up - -Install package requirements. - -```shell -make install -``` - -### Start developing - -Start the backend. - -```shell -make backend-docker-start -``` - -In a separate terminal session, start the frontend. - -```shell -make start -``` - -### Lint code - -Run ESlint, Prettier, and Stylelint in analyze mode. - -```shell -make lint -``` - -### Format code - -Run ESlint, Prettier, and Stylelint in fix mode. - -```shell -make format -``` - -### i18n - -Extract the i18n messages to locales. - -```shell -make i18n -``` - -### Unit tests - -Run unit tests. - -```shell -make test -``` - -### Run Cypress tests - -Run each of these steps in separate terminal sessions. - -In the first session, start the frontend in development mode. - -```shell -make acceptance-frontend-dev-start -``` - -In the second session, start the backend acceptance server. - -```shell -make acceptance-backend-start -``` - -In the third session, start the Cypress interactive test runner. - -```shell -make acceptance-test -``` - -## License - -The project is licensed under the MIT license. - -## Credits and Acknowledgements 🙏 - -Crafted with care by **This was generated by [cookiecutter-volto](https://github.com/plone/cookiecutter-volto/frontend_addon) on 2024-10-26 11:06:19**. A special thanks to all contributors and supporters! diff --git a/frontend/cypress/tests/.gitkeep b/frontend/cypress/tests/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/packages/volto-searchkit-block/news/.gitkeep b/frontend/packages/volto-searchkit-block/news/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/packages/volto-searchkit-block/public/.gitkeep b/frontend/packages/volto-searchkit-block/public/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/packages/volto-searchkit-block/src/components/.gitkeep b/frontend/packages/volto-searchkit-block/src/components/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/frontend/packages/volto-searchkit-block/src/index.js b/frontend/packages/volto-searchkit-block/src/index.js deleted file mode 100644 index 6318a604..00000000 --- a/frontend/packages/volto-searchkit-block/src/index.js +++ /dev/null @@ -1,11 +0,0 @@ -const applyConfig = (config) => { - config.settings = { - ...config.settings, - isMultilingual: false, - supportedLanguages: ['en'], - defaultLanguage: 'en', - }; - return config; -}; - -export default applyConfig; \ No newline at end of file diff --git a/frontend/jest-addon.config.js b/jest-addon.config.js similarity index 100% rename from frontend/jest-addon.config.js rename to jest-addon.config.js diff --git a/frontend/mrs.developer.json b/mrs.developer.json similarity index 100% rename from frontend/mrs.developer.json rename to mrs.developer.json diff --git a/frontend/package.json b/package.json similarity index 96% rename from frontend/package.json rename to package.json index e4f96d2c..047a94c3 100644 --- a/frontend/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "volto-searchkit-block-dev", "version": "1.0.0-alpha.0", - "description": "A new project using Plone 6.", - "author": "Plone Foundation", + "description": "Searching with OpenSearch", + "author": "Katja Süss", "homepage": "https://github.com/rohberg/volto-searchkit-block", "license": "MIT", "keywords": [ diff --git a/frontend/packages/volto-searchkit-block/.gitignore b/packages/volto-searchkit-block/.gitignore similarity index 100% rename from frontend/packages/volto-searchkit-block/.gitignore rename to packages/volto-searchkit-block/.gitignore diff --git a/frontend/packages/volto-searchkit-block/.release-it.json b/packages/volto-searchkit-block/.release-it.json similarity index 100% rename from frontend/packages/volto-searchkit-block/.release-it.json rename to packages/volto-searchkit-block/.release-it.json diff --git a/frontend/packages/volto-searchkit-block/CHANGELOG.md b/packages/volto-searchkit-block/CHANGELOG.md similarity index 100% rename from frontend/packages/volto-searchkit-block/CHANGELOG.md rename to packages/volto-searchkit-block/CHANGELOG.md diff --git a/frontend/packages/volto-searchkit-block/babel.config.js b/packages/volto-searchkit-block/babel.config.js similarity index 100% rename from frontend/packages/volto-searchkit-block/babel.config.js rename to packages/volto-searchkit-block/babel.config.js diff --git a/frontend/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po similarity index 100% rename from frontend/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po rename to packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po diff --git a/frontend/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po similarity index 100% rename from frontend/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po rename to packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po diff --git a/frontend/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po similarity index 100% rename from frontend/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po rename to packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po diff --git a/frontend/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po similarity index 100% rename from frontend/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po rename to packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po diff --git a/frontend/packages/volto-searchkit-block/locales/volto.pot b/packages/volto-searchkit-block/locales/volto.pot similarity index 100% rename from frontend/packages/volto-searchkit-block/locales/volto.pot rename to packages/volto-searchkit-block/locales/volto.pot diff --git a/backend/src/searchkit/block/profiles/default/types/.gitkeep b/packages/volto-searchkit-block/news/.gitkeep similarity index 100% rename from backend/src/searchkit/block/profiles/default/types/.gitkeep rename to packages/volto-searchkit-block/news/.gitkeep diff --git a/frontend/packages/volto-searchkit-block/package.json b/packages/volto-searchkit-block/package.json similarity index 91% rename from frontend/packages/volto-searchkit-block/package.json rename to packages/volto-searchkit-block/package.json index 25bb8271..812bae9f 100644 --- a/frontend/packages/volto-searchkit-block/package.json +++ b/packages/volto-searchkit-block/package.json @@ -1,7 +1,7 @@ { "name": "volto-searchkit-block", "version": "1.0.0-alpha.0", - "description": "A new project using Plone 6.", + "description": "Searching with OpenSearch", "main": "src/index.js", "license": "MIT", "keywords": [ @@ -10,7 +10,7 @@ "plone", "react" ], - "author": "Plone Foundation", + "author": "Katja Süss", "homepage": "https://github.com/rohberg/volto-searchkit-block#readme", "repository": { "type": "git", diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep b/packages/volto-searchkit-block/public/.gitkeep similarity index 100% rename from backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep rename to packages/volto-searchkit-block/public/.gitkeep diff --git a/frontend/cypress/.gitkeep b/packages/volto-searchkit-block/src/components/.gitkeep similarity index 100% rename from frontend/cypress/.gitkeep rename to packages/volto-searchkit-block/src/components/.gitkeep diff --git a/packages/volto-searchkit-block/src/index.js b/packages/volto-searchkit-block/src/index.js new file mode 100644 index 00000000..cb042f0d --- /dev/null +++ b/packages/volto-searchkit-block/src/index.js @@ -0,0 +1,5 @@ +const applyConfig = (config) => { + return config; +}; + +export default applyConfig; diff --git a/frontend/packages/volto-searchkit-block/towncrier.toml b/packages/volto-searchkit-block/towncrier.toml similarity index 100% rename from frontend/packages/volto-searchkit-block/towncrier.toml rename to packages/volto-searchkit-block/towncrier.toml diff --git a/frontend/packages/volto-searchkit-block/tsconfig.json b/packages/volto-searchkit-block/tsconfig.json similarity index 100% rename from frontend/packages/volto-searchkit-block/tsconfig.json rename to packages/volto-searchkit-block/tsconfig.json diff --git a/frontend/pnpm-workspace.yaml b/pnpm-workspace.yaml similarity index 100% rename from frontend/pnpm-workspace.yaml rename to pnpm-workspace.yaml diff --git a/version.txt b/version.txt deleted file mode 100644 index 3eefcb9d..00000000 --- a/version.txt +++ /dev/null @@ -1 +0,0 @@ -1.0.0 diff --git a/frontend/volto.config.js b/volto.config.js similarity index 91% rename from frontend/volto.config.js rename to volto.config.js index 247eba3a..a38ab9a7 100644 --- a/frontend/volto.config.js +++ b/volto.config.js @@ -3,5 +3,5 @@ const theme = ''; module.exports = { addons, - theme + theme, }; From caf886343dbdbc7f93a0ff8659aa7c4889e12277 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 26 Oct 2024 13:26:40 +0200 Subject: [PATCH 03/98] Add backend --- backend/.dockerignore | 14 + backend/.editorconfig | 54 +++ backend/.flake8 | 22 ++ backend/.gitignore | 51 +++ backend/.pre-commit-config.yaml | 94 +++++ backend/CHANGES.md | 10 + backend/CONTRIBUTORS.md | 3 + backend/Dockerfile | 41 +++ backend/Dockerfile.acceptance | 43 +++ backend/LICENSE.GPL | 339 ++++++++++++++++++ backend/LICENSE.md | 15 + backend/MANIFEST.in | 20 ++ backend/Makefile | 139 +++++++ backend/README.md | 33 ++ backend/constraints.txt | 1 + backend/docs/.gitkeep | 0 backend/instance.yaml | 3 + backend/mx.ini | 17 + backend/news/.changelog_template.jinja | 15 + backend/news/.gitkeep | 1 + backend/pyproject.toml | 170 +++++++++ backend/requirements-docker.txt | 1 + backend/requirements.txt | 1 + backend/scripts/create_site.py | 70 ++++ backend/setup.py | 77 ++++ backend/src/searchkit/__init__.py | 1 + backend/src/searchkit/block/__init__.py | 12 + backend/src/searchkit/block/configure.zcml | 22 ++ .../src/searchkit/block/content/__init__.py | 0 .../searchkit/block/controlpanel/__init__.py | 0 .../block/controlpanel/configure.zcml | 8 + backend/src/searchkit/block/dependencies.zcml | 7 + .../src/searchkit/block/indexers/__init__.py | 0 .../searchkit/block/indexers/configure.zcml | 5 + backend/src/searchkit/block/interfaces.py | 7 + .../src/searchkit/block/locales/__init__.py | 0 .../locales/en/LC_MESSAGES/searchkit.block.po | 15 + .../block/locales/searchkit.block.pot | 18 + backend/src/searchkit/block/locales/update.py | 79 ++++ backend/src/searchkit/block/profiles.zcml | 41 +++ .../block/profiles/default/browserlayer.xml | 6 + .../block/profiles/default/catalog.xml | 13 + .../block/profiles/default/controlpanel.xml | 4 + .../block/profiles/default/diff_tool.xml | 6 + .../block/profiles/default/metadata.xml | 7 + .../block/profiles/default/registry/.gitkeep | 0 ...se.interfaces.controlpanel.IMailSchema.xml | 9 + ...se.interfaces.controlpanel.ISiteSchema.xml | 9 + .../plone.i18n.interfaces.ILanguageSchema.xml | 12 + .../block/profiles/default/repositorytool.xml | 6 + .../block/profiles/default/rolemap.xml | 6 + .../block/profiles/default/theme.xml | 5 + .../block/profiles/default/types.xml | 10 + .../block/profiles/default/types/.gitkeep | 0 .../block/profiles/initial/metadata.xml | 4 + .../block/profiles/uninstall/browserlayer.xml | 6 + .../searchkit/block/serializers/__init__.py | 0 .../block/serializers/configure.zcml | 10 + .../searchkit/block/serializers/summary.py | 10 + .../searchkit/block/setuphandlers/__init__.py | 11 + .../setuphandlers/examplecontent/.gitkeep | 0 .../examplecontent/content/__metadata__.json | 40 +++ .../data.json | 56 +++ .../image/plone-foundation.png | Bin 0 -> 50737 bytes .../data.json | 98 +++++ .../content/plone_site_root/data.json | 267 ++++++++++++++ .../examplecontent/discussions.json | 1 + .../examplecontent/portlets.json | 1 + .../examplecontent/principals.json | 4 + .../examplecontent/redirects.json | 1 + .../examplecontent/relations.json | 1 + .../examplecontent/translations.json | 1 + .../searchkit/block/setuphandlers/initial.py | 16 + backend/src/searchkit/block/testing.py | 49 +++ .../src/searchkit/block/upgrades/__init__.py | 0 .../searchkit/block/upgrades/configure.zcml | 19 + .../searchkit/block/vocabularies/__init__.py | 0 .../block/vocabularies/configure.zcml | 3 + backend/tests/conftest.py | 18 + backend/tests/setup/test_setup_install.py | 17 + backend/tests/setup/test_setup_uninstall.py | 19 + backend/tox.ini | 212 +++++++++++ backend/version.txt | 1 + 83 files changed, 2407 insertions(+) create mode 100644 backend/.dockerignore create mode 100644 backend/.editorconfig create mode 100644 backend/.flake8 create mode 100644 backend/.gitignore create mode 100644 backend/.pre-commit-config.yaml create mode 100644 backend/CHANGES.md create mode 100644 backend/CONTRIBUTORS.md create mode 100644 backend/Dockerfile create mode 100644 backend/Dockerfile.acceptance create mode 100644 backend/LICENSE.GPL create mode 100644 backend/LICENSE.md create mode 100644 backend/MANIFEST.in create mode 100644 backend/Makefile create mode 100644 backend/README.md create mode 100644 backend/constraints.txt create mode 100644 backend/docs/.gitkeep create mode 100644 backend/instance.yaml create mode 100644 backend/mx.ini create mode 100644 backend/news/.changelog_template.jinja create mode 100644 backend/news/.gitkeep create mode 100644 backend/pyproject.toml create mode 100644 backend/requirements-docker.txt create mode 100644 backend/requirements.txt create mode 100644 backend/scripts/create_site.py create mode 100644 backend/setup.py create mode 100644 backend/src/searchkit/__init__.py create mode 100644 backend/src/searchkit/block/__init__.py create mode 100644 backend/src/searchkit/block/configure.zcml create mode 100644 backend/src/searchkit/block/content/__init__.py create mode 100644 backend/src/searchkit/block/controlpanel/__init__.py create mode 100644 backend/src/searchkit/block/controlpanel/configure.zcml create mode 100644 backend/src/searchkit/block/dependencies.zcml create mode 100644 backend/src/searchkit/block/indexers/__init__.py create mode 100644 backend/src/searchkit/block/indexers/configure.zcml create mode 100644 backend/src/searchkit/block/interfaces.py create mode 100644 backend/src/searchkit/block/locales/__init__.py create mode 100644 backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po create mode 100644 backend/src/searchkit/block/locales/searchkit.block.pot create mode 100644 backend/src/searchkit/block/locales/update.py create mode 100644 backend/src/searchkit/block/profiles.zcml create mode 100644 backend/src/searchkit/block/profiles/default/browserlayer.xml create mode 100644 backend/src/searchkit/block/profiles/default/catalog.xml create mode 100644 backend/src/searchkit/block/profiles/default/controlpanel.xml create mode 100644 backend/src/searchkit/block/profiles/default/diff_tool.xml create mode 100644 backend/src/searchkit/block/profiles/default/metadata.xml create mode 100644 backend/src/searchkit/block/profiles/default/registry/.gitkeep create mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml create mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml create mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml create mode 100644 backend/src/searchkit/block/profiles/default/repositorytool.xml create mode 100644 backend/src/searchkit/block/profiles/default/rolemap.xml create mode 100644 backend/src/searchkit/block/profiles/default/theme.xml create mode 100644 backend/src/searchkit/block/profiles/default/types.xml create mode 100644 backend/src/searchkit/block/profiles/default/types/.gitkeep create mode 100644 backend/src/searchkit/block/profiles/initial/metadata.xml create mode 100644 backend/src/searchkit/block/profiles/uninstall/browserlayer.xml create mode 100644 backend/src/searchkit/block/serializers/__init__.py create mode 100644 backend/src/searchkit/block/serializers/configure.zcml create mode 100644 backend/src/searchkit/block/serializers/summary.py create mode 100644 backend/src/searchkit/block/setuphandlers/__init__.py create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a720393b3c0240e5bd27c43fcd2cfd1e/data.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/plone_site_root/data.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/discussions.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/portlets.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/principals.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/redirects.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/relations.json create mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/translations.json create mode 100644 backend/src/searchkit/block/setuphandlers/initial.py create mode 100644 backend/src/searchkit/block/testing.py create mode 100644 backend/src/searchkit/block/upgrades/__init__.py create mode 100644 backend/src/searchkit/block/upgrades/configure.zcml create mode 100644 backend/src/searchkit/block/vocabularies/__init__.py create mode 100644 backend/src/searchkit/block/vocabularies/configure.zcml create mode 100644 backend/tests/conftest.py create mode 100644 backend/tests/setup/test_setup_install.py create mode 100644 backend/tests/setup/test_setup_uninstall.py create mode 100644 backend/tox.ini create mode 100644 backend/version.txt diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 00000000..e9e94ffc --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,14 @@ +.editorconfig +.gitattributes +bin +Dockerfile +Dockerfile.acceptance +include +instance +instance.yaml +lib +lib64 +Makefile +pyvenv.cfg +var +.venv diff --git a/backend/.editorconfig b/backend/.editorconfig new file mode 100644 index 00000000..8ae05aaa --- /dev/null +++ b/backend/.editorconfig @@ -0,0 +1,54 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +# +# EditorConfig Configuration file, for more details see: +# http://EditorConfig.org +# EditorConfig is a convention description, that could be interpreted +# by multiple editors to enforce common coding conventions for specific +# file types + +# top-most EditorConfig file: +# Will ignore other EditorConfig files in Home directory or upper tree level. +root = true + + +[*] # For All Files +# Unix-style newlines with a newline ending every file +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +# Set default charset +charset = utf-8 +# Indent style default +indent_style = space +# Max Line Length - a hard line wrap, should be disabled +max_line_length = off + +[*.{py,cfg,ini}] +# 4 space indentation +indent_size = 4 + +[*.{yml,zpt,pt,dtml,zcml}] +# 2 space indentation +indent_size = 2 + +[*.{json,jsonl,js,jsx,ts,tsx,css,less,scss,html}] # Frontend development +# 2 space indentation +indent_size = 2 +max_line_length = 80 + +[{Makefile,.gitmodules}] +# Tab indentation (no size specified, but view as 4 spaces) +indent_style = tab +indent_size = unset +tab_width = unset + + +## +# Add extra configuration options in .meta.toml: +# [editorconfig] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/.flake8 b/backend/.flake8 new file mode 100644 index 00000000..7ef4f64d --- /dev/null +++ b/backend/.flake8 @@ -0,0 +1,22 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +[flake8] +doctests = 1 +ignore = + # black takes care of line length + E501, + # black takes care of where to break lines + W503, + # black takes care of spaces within slicing (list[:]) + E203, + # black takes care of spaces after commas + E231, + +## +# Add extra configuration options in .meta.toml: +# [flake8] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/.gitignore b/backend/.gitignore new file mode 100644 index 00000000..6a1e51f3 --- /dev/null +++ b/backend/.gitignore @@ -0,0 +1,51 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +# python related +*.egg-info +*.pyc +*.pyo + +# tools related +build/ +.coverage +coverage.xml +dist/ +docs/_build +__pycache__/ +.tox +.vscode/ +node_modules/ + +# venv / buildout related +bin/ +develop-eggs/ +eggs/ +.eggs/ +etc/ +.installed.cfg +include/ +lib/ +lib64 +.mr.developer.cfg +parts/ +pyvenv.cfg +var/ + +# mxdev +/instance/ +/.make-sentinels/ +/*-mxdev.txt +/reports/ +/sources/ +/venv/ +.installed.txt +.lock + +## +# Add extra configuration options in .meta.toml: +# [gitignore] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/.pre-commit-config.yaml b/backend/.pre-commit-config.yaml new file mode 100644 index 00000000..b6eb0432 --- /dev/null +++ b/backend/.pre-commit-config.yaml @@ -0,0 +1,94 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +ci: + autofix_prs: false + autoupdate_schedule: monthly + +repos: +- repo: https://github.com/asottile/pyupgrade + rev: v3.14.0 + hooks: + - id: pyupgrade + args: [--py38-plus] +- repo: https://github.com/pycqa/isort + rev: 5.12.0 + hooks: + - id: isort +- repo: https://github.com/psf/black + rev: 23.9.1 + hooks: + - id: black +- repo: https://github.com/collective/zpretty + rev: 3.1.0 + hooks: + - id: zpretty + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# zpretty_extra_lines = """ +# _your own configuration lines_ +# """ +## +- repo: https://github.com/PyCQA/flake8 + rev: 6.1.0 + hooks: + - id: flake8 + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# flake8_extra_lines = """ +# _your own configuration lines_ +# """ +## +- repo: https://github.com/codespell-project/codespell + rev: v2.2.6 + hooks: + - id: codespell + additional_dependencies: + - tomli + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# codespell_extra_lines = """ +# _your own configuration lines_ +# """ +## +- repo: https://github.com/mgedmin/check-manifest + rev: "0.49" + hooks: + - id: check-manifest +- repo: https://github.com/regebro/pyroma + rev: "4.2" + hooks: + - id: pyroma +- repo: https://github.com/mgedmin/check-python-versions + rev: "0.21.3" + hooks: + - id: check-python-versions + args: ['--only', 'setup.py,pyproject.toml'] +- repo: https://github.com/collective/i18ndude + rev: "6.1.0" + hooks: + - id: i18ndude + + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# i18ndude_extra_lines = """ +# _your own configuration lines_ +# """ +## + + +## +# Add extra configuration options in .meta.toml: +# [pre_commit] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/CHANGES.md b/backend/CHANGES.md new file mode 100644 index 00000000..3020bae6 --- /dev/null +++ b/backend/CHANGES.md @@ -0,0 +1,10 @@ +# Changelog + + + + diff --git a/backend/CONTRIBUTORS.md b/backend/CONTRIBUTORS.md new file mode 100644 index 00000000..5a1aabd6 --- /dev/null +++ b/backend/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +# Contributors + +- Plone Foundation [collective@plone.org] diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 00000000..99da983f --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,41 @@ +# syntax=docker/dockerfile:1 +ARG PLONE_VERSION=6.0.13 +FROM plone/server-builder:${PLONE_VERSION} as builder + +WORKDIR /app + + +# Add local code +COPY scripts/ scripts/ +COPY . src + +# Install local requirements and pre-compile mo files +RUN < + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/backend/LICENSE.md b/backend/LICENSE.md new file mode 100644 index 00000000..1de10762 --- /dev/null +++ b/backend/LICENSE.md @@ -0,0 +1,15 @@ +searchkit.block Copyright 2023, Plone Foundation + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License version 2 +as published by the Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, +MA 02111-1307 USA. diff --git a/backend/MANIFEST.in b/backend/MANIFEST.in new file mode 100644 index 00000000..45aae324 --- /dev/null +++ b/backend/MANIFEST.in @@ -0,0 +1,20 @@ +graft src/searchkit +graft docs +graft news +graft tests +graft scripts +include *.acceptance +include .coveragerc +include .dockerignore +include .editorconfig +include *.txt +include *.yml +include *.md +exclude *-mxdev.txt +exclude Dockerfile +exclude mx.ini +exclude Makefile +recursive-exclude frontend * +exclude instance.yaml +global-exclude *.pyc +global-exclude .DS_Store diff --git a/backend/Makefile b/backend/Makefile new file mode 100644 index 00000000..088d5fe4 --- /dev/null +++ b/backend/Makefile @@ -0,0 +1,139 @@ +### Defensive settings for make: +# https://tech.davis-hansson.com/p/make/ +SHELL:=bash +.ONESHELL: +.SHELLFLAGS:=-xeu -o pipefail -O inherit_errexit -c +.SILENT: +.DELETE_ON_ERROR: +MAKEFLAGS+=--warn-undefined-variables +MAKEFLAGS+=--no-builtin-rules + +# We like colors +# From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects +RED=`tput setaf 1` +GREEN=`tput setaf 2` +RESET=`tput sgr0` +YELLOW=`tput setaf 3` + +IMAGE_NAME_PREFIX=ghcr.io/rohberg/searchkit-block +IMAGE_TAG=latest + +# Python checks +PYTHON?=python3 + +# installed? +ifeq (, $(shell which $(PYTHON) )) + $(error "PYTHON=$(PYTHON) not found in $(PATH)") +endif + +# version ok? +PYTHON_VERSION_MIN=3.8 +PYTHON_VERSION_OK=$(shell $(PYTHON) -c "import sys; print((int(sys.version_info[0]), int(sys.version_info[1])) >= tuple(map(int, '$(PYTHON_VERSION_MIN)'.split('.'))))") +ifeq ($(PYTHON_VERSION_OK),0) + $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)") +endif + +PLONE_SITE_ID=Plone +BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) +PLONE_VERSION=$(shell cat $(BACKEND_FOLDER)/version.txt) +EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/searchkit/block/setuphandlers/examplecontent + +GIT_FOLDER=$(BACKEND_FOLDER)/.git +VENV_FOLDER=$(BACKEND_FOLDER)/.venv +BIN_FOLDER=$(VENV_FOLDER)/bin + + +all: build + +# Add the following 'help' target to your Makefile +# And add help text after each target name starting with '\#\#' +.PHONY: help +help: ## This help message + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +$(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: + @echo "$(GREEN)==> Setup Virtual Env$(RESET)" + $(PYTHON) -m venv $(VENV_FOLDER) + $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" + if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi + +instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration + @echo "$(GREEN)==> Create instance configuration$(RESET)" + $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance + +.PHONY: config +config: instance/etc/zope.ini + +.PHONY: build-dev +build-dev: config ## Install Plone packages + @echo "$(GREEN)==> Setup Build$(RESET)" + $(BIN_FOLDER)/mxdev -c mx.ini + $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt + +.PHONY: install +install: build-dev ## Install Plone + +.PHONY: build +build: build-dev ## Install Plone + +.PHONY: clean +clean: ## Clean environment + @echo "$(RED)==> Cleaning environment and build$(RESET)" + rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache + +.PHONY: start +start: ## Start a Plone instance on localhost:8080 + PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini + +.PHONY: console +console: instance/etc/zope.ini ## Start a console into a Plone instance + PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf + +.PHONY: create-site +create-site: instance/etc/zope.ini ## Create a new site from scratch + PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py + +# Example Content +.PHONY: update-example-content +update-example-content: $(BIN_FOLDER)/tox ## Export example content inside package + @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER) $(RESET)" + if [ -d $(EXAMPLE_CONTENT_FOLDER)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER)/* ;fi + $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID) $(EXAMPLE_CONTENT_FOLDER) + +.PHONY: check +check: $(BIN_FOLDER)/tox ## Check and fix code base according to Plone standards + @echo "$(GREEN)==> Format codebase$(RESET)" + $(BIN_FOLDER)/tox -e lint + +# i18n +$(BIN_FOLDER)/i18ndude: $(BIN_FOLDER)/pip + @echo "$(GREEN)==> Install translation tools$(RESET)" + $(BIN_FOLDER)/uv pip install i18ndude + +.PHONY: i18n +i18n: $(BIN_FOLDER)/i18ndude ## Update locales + @echo "$(GREEN)==> Updating locales$(RESET)" + $(BIN_FOLDER)/update_locale + +# Tests +.PHONY: test +test: $(BIN_FOLDER)/tox ## run tests + $(BIN_FOLDER)/tox -e test + +.PHONY: test-coverage +test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage + $(BIN_FOLDER)/tox -e coverage + +# Build Docker images +.PHONY: build-image +build-image: ## Build Docker Images + @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) + +# Acceptance tests +.PHONY: acceptance-backend-start +acceptance-backend-start: ## Start backend acceptance server + ZSERVER_HOST=0.0.0.0 ZSERVER_PORT=55001 LISTEN_PORT=55001 APPLY_PROFILES="searchkit/block:default" CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,searchkit/block" $(BIN_FOLDER)/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING + +.PHONY: acceptance-image-build +acceptance-image-build: ## Build Docker Images + @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 00000000..33c6f3a2 --- /dev/null +++ b/backend/README.md @@ -0,0 +1,33 @@ +# searchkit.block + +A new project using Plone 6. + +## Features + +TODO: List our awesome features + +## Installation + +Install searchkit.block with `pip`: + +```shell +pip install searchkit.block +``` +And to create the Plone site: + +```shell +make create_site +``` + +## Contribute + +- [Issue Tracker](https://github.com/rohberg/searchkit.block/issues) +- [Source Code](https://github.com/rohberg/searchkit.block/) + +## License + +The project is licensed under GPLv2. + +## Credits and Acknowledgements 🙏 + +Crafted with care by **This was generated by [cookiecutter-plone](https://github.com/plone/cookieplone-templates/backend_addon) on 2024-10-26 11:06:16**. A special thanks to all contributors and supporters! diff --git a/backend/constraints.txt b/backend/constraints.txt new file mode 100644 index 00000000..3bb2e326 --- /dev/null +++ b/backend/constraints.txt @@ -0,0 +1 @@ +-c https://dist.plone.org/release/6.0.13/constraints.txt diff --git a/backend/docs/.gitkeep b/backend/docs/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/instance.yaml b/backend/instance.yaml new file mode 100644 index 00000000..ad0b2a1f --- /dev/null +++ b/backend/instance.yaml @@ -0,0 +1,3 @@ +default_context: + initial_user_password: 'admin' + zcml_package_includes: 'searchkit.block' \ No newline at end of file diff --git a/backend/mx.ini b/backend/mx.ini new file mode 100644 index 00000000..9fccb995 --- /dev/null +++ b/backend/mx.ini @@ -0,0 +1,17 @@ +; This is a mxdev configuration file +; it can be used to override versions of packages already defined in the +; constraints files and to add new packages from VCS like git. +; to learn more about mxdev visit https://pypi.org/project/mxdev/ + +[settings] +main-package = -e .[test] +; example how to override a package version +; version-overrides = +; example.package==2.1.0a2 + +; example section to use packages from git +; [example.contenttype] +; url = https://github.com/collective/example.contenttype.git +; pushurl = git@github.com:collective/example.contenttype.git +; extras = test +; branch = feature-7 diff --git a/backend/news/.changelog_template.jinja b/backend/news/.changelog_template.jinja new file mode 100644 index 00000000..678bfa10 --- /dev/null +++ b/backend/news/.changelog_template.jinja @@ -0,0 +1,15 @@ +{% if sections[] %} +{% for category, val in definitions.items() if category in sections[] %} + +### {{ definitions[category]['name'] }} + +{% for text, values in sections[][category].items() %} +- {{ text }} {{ values|join(', ') }} +{% endfor %} + +{% endfor %} +{% else %} +No significant changes. + + +{% endif %} diff --git a/backend/news/.gitkeep b/backend/news/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/backend/news/.gitkeep @@ -0,0 +1 @@ + diff --git a/backend/pyproject.toml b/backend/pyproject.toml new file mode 100644 index 00000000..c982aa92 --- /dev/null +++ b/backend/pyproject.toml @@ -0,0 +1,170 @@ +# Generated from: +# https://github.com/plone/meta/tree/main/config/default +# See the inline comments on how to expand/tweak this configuration file +[build-system] +requires = ["setuptools>=68.2"] + +[tool.towncrier] +directory = "news/" +filename = "CHANGES.md" +start_string = "\n" +title_format = "## {version} ({project_date})" +template = "news/.changelog_template.jinja" +underlines = ["", "", ""] + +[[tool.towncrier.type]] +directory = "breaking" +name = "Breaking changes:" +showcontent = true + +[[tool.towncrier.type]] +directory = "feature" +name = "New features:" +showcontent = true + +[[tool.towncrier.type]] +directory = "bugfix" +name = "Bug fixes:" +showcontent = true + +[[tool.towncrier.type]] +directory = "internal" +name = "Internal:" +showcontent = true + +[[tool.towncrier.type]] +directory = "documentation" +name = "Documentation:" +showcontent = true + +[[tool.towncrier.type]] +directory = "tests" +name = "Tests" +showcontent = true + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# towncrier_extra_lines = """ +# extra_configuration +# """ +## + +[tool.isort] +profile = "plone" + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# isort_extra_lines = """ +# extra_configuration +# """ +## + +[tool.black] +target-version = ["py38"] + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# black_extra_lines = """ +# extra_configuration +# """ +## + +[tool.codespell] +ignore-words-list = "discreet,vew" +skip = "*.po,*.min.js" +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# codespell_ignores = "foo,bar" +# codespell_skip = "*.po,*.map,package-lock.json" +## + +[tool.dependencychecker] +Zope = [ + # Zope own provided namespaces + 'App', 'OFS', 'Products.Five', 'Products.OFSP', 'Products.PageTemplates', + 'Products.SiteAccess', 'Shared', 'Testing', 'ZPublisher', 'ZTUtils', + 'Zope2', 'webdav', 'zmi', + # ExtensionClass own provided namespaces + 'ExtensionClass', 'ComputedAttribute', 'MethodObject', + # Zope dependencies + 'AccessControl', 'Acquisition', 'AuthEncoding', 'beautifulsoup4', 'BTrees', + 'cffi', 'Chameleon', 'DateTime', 'DocumentTemplate', + 'MultiMapping', 'multipart', 'PasteDeploy', 'Persistence', 'persistent', + 'pycparser', 'python-gettext', 'pytz', 'RestrictedPython', 'roman', + 'soupsieve', 'transaction', 'waitress', 'WebOb', 'WebTest', 'WSGIProxy2', + 'z3c.pt', 'zc.lockfile', 'ZConfig', 'zExceptions', 'ZODB', 'zodbpickle', + 'zope.annotation', 'zope.browser', 'zope.browsermenu', 'zope.browserpage', + 'zope.browserresource', 'zope.cachedescriptors', 'zope.component', + 'zope.configuration', 'zope.container', 'zope.contentprovider', + 'zope.contenttype', 'zope.datetime', 'zope.deferredimport', + 'zope.deprecation', 'zope.dottedname', 'zope.event', 'zope.exceptions', + 'zope.filerepresentation', 'zope.globalrequest', 'zope.hookable', + 'zope.i18n', 'zope.i18nmessageid', 'zope.interface', 'zope.lifecycleevent', + 'zope.location', 'zope.pagetemplate', 'zope.processlifetime', 'zope.proxy', + 'zope.ptresource', 'zope.publisher', 'zope.schema', 'zope.security', + 'zope.sequencesort', 'zope.site', 'zope.size', 'zope.structuredtext', + 'zope.tal', 'zope.tales', 'zope.testbrowser', 'zope.testing', + 'zope.traversing', 'zope.viewlet' +] +'Products.CMFCore' = [ + 'docutils', 'five.localsitemanager', 'Missing', 'Products.BTreeFolder2', + 'Products.GenericSetup', 'Products.MailHost', 'Products.PythonScripts', + 'Products.StandardCacheManagers', 'Products.ZCatalog', 'Record', + 'zope.sendmail', 'Zope' +] +'plone.base' = [ + 'plone.batching', 'plone.registry', 'plone.schema','plone.z3cform', + 'Products.CMFCore', 'Products.CMFDynamicViewFTI', +] +python-dateutil = ['dateutil'] +pytest-plone = ['pytest', 'plone.testing', 'plone.app.testing'] +ignore-packages = ['plone.app.iterate', 'plone.app.upgrade', 'plone.volto', 'zestreleaser.towncrier', 'zest.releaser', 'pytest-cov'] + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# dependencies_ignores = "['zestreleaser.towncrier']" +# dependencies_mappings = [ +# "gitpython = ['git']", +# "pygithub = ['github']", +# ] +## + +[tool.check-manifest] +ignore = [ + ".editorconfig", + ".flake8", + ".meta.toml", + ".pre-commit-config.yaml", + "dependabot.yml", + "mx.ini", + "tox.ini", + +] + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# check_manifest_ignores = """ +# "*.map.js", +# "*.pyc", +# """ +# check_manifest_extra_lines = """ +# ignore-bad-ideas = [ +# "some/test/file/PKG-INFO", +# ] +# """ +## + + +## +# Add extra configuration options in .meta.toml: +# [pyproject] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/requirements-docker.txt b/backend/requirements-docker.txt new file mode 100644 index 00000000..da443200 --- /dev/null +++ b/backend/requirements-docker.txt @@ -0,0 +1 @@ +-c constraints.txt diff --git a/backend/requirements.txt b/backend/requirements.txt new file mode 100644 index 00000000..da443200 --- /dev/null +++ b/backend/requirements.txt @@ -0,0 +1 @@ +-c constraints.txt diff --git a/backend/scripts/create_site.py b/backend/scripts/create_site.py new file mode 100644 index 00000000..3e296327 --- /dev/null +++ b/backend/scripts/create_site.py @@ -0,0 +1,70 @@ +from AccessControl.SecurityManagement import newSecurityManager +from Products.CMFPlone.factory import _DEFAULT_PROFILE +from Products.CMFPlone.factory import addPloneSite +from Products.GenericSetup.tool import SetupTool +from searchkit.block.interfaces import IBrowserLayer +from Testing.makerequest import makerequest +from zope.interface import directlyProvidedBy +from zope.interface import directlyProvides + +import os +import transaction + + +truthy = frozenset(("t", "true", "y", "yes", "on", "1")) + + +def asbool(s): + """Return the boolean value ``True`` if the case-lowered value of string + input ``s`` is a :term:`truthy string`. If ``s`` is already one of the + boolean values ``True`` or ``False``, return it.""" + if s is None: + return False + if isinstance(s, bool): + return s + s = str(s).strip() + return s.lower() in truthy + + +DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) +EXAMPLE_CONTENT = asbool( + os.getenv("EXAMPLE_CONTENT", "1") +) # Create example content by default + +app = makerequest(globals()["app"]) + +request = app.REQUEST + +ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) + +directlyProvides(request, *ifaces) + +admin = app.acl_users.getUserById("admin") +admin = admin.__of__(app.acl_users) +newSecurityManager(None, admin) + +site_id = "Plone" +payload = { + "title": "Searchkit Block", + "profile_id": _DEFAULT_PROFILE, + "extension_ids": [ + "searchkit.block:default", + ], + "setup_content": False, + "default_language": "en", + "portal_timezone": "UTC", +} + +if site_id in app.objectIds() and DELETE_EXISTING: + app.manage_delObjects([site_id]) + transaction.commit() + app._p_jar.sync() + +if site_id not in app.objectIds(): + site = addPloneSite(app, site_id, **payload) + transaction.commit() + if EXAMPLE_CONTENT: + portal_setup: SetupTool = site.portal_setup + portal_setup.runAllImportStepsFromProfile("searchkit.block:initial") + transaction.commit() + app._p_jar.sync() diff --git a/backend/setup.py b/backend/setup.py new file mode 100644 index 00000000..46788caa --- /dev/null +++ b/backend/setup.py @@ -0,0 +1,77 @@ +"""Installer for the searchkit.block package.""" + +from pathlib import Path +from setuptools import find_packages +from setuptools import setup + + +long_description = f""" +{Path("README.md").read_text()}\n +{Path("CONTRIBUTORS.md").read_text()}\n +{Path("CHANGES.md").read_text()}\n +""" + + +setup( + name="searchkit.block", + version="1.0.0a0", + description="A new project using Plone 6.", + long_description=long_description, + long_description_content_type="text/markdown", + classifiers=[ + "Development Status :: 3 - Alpha", + "Environment :: Web Environment", + "Framework :: Plone", + "Framework :: Plone :: Addon", + "Framework :: Plone :: 6.0", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Operating System :: OS Independent", + "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", + ], + keywords="Python Plone CMS", + author="Plone Foundation", + author_email="collective@plone.org", + url="https://github.com/rohberg/searchkit.block", + project_urls={ + "PyPI": "https://pypi.org/project/searchkit.block", + "Source": "https://github.com/rohberg/searchkit.block", + "Tracker": "https://github.com/rohberg/searchkit.block/issues", + }, + license="GPL version 2", + packages=find_packages("src", exclude=["ez_setup"]), + namespace_packages=["searchkit"], + package_dir={"": "src"}, + include_package_data=True, + zip_safe=False, + python_requires=">=3.8", + install_requires=[ + "setuptools", + "Plone", + "plone.api", + "plone.restapi", + "plone.volto", + "plone.exportimport", + ], + extras_require={ + "test": [ + "zest.releaser[recommended]", + "zestreleaser.towncrier", + "plone.app.testing", + "plone.restapi[test]", + "pytest", + "pytest-cov", + "pytest-plone>=0.5.0", + ], + }, + entry_points=""" + [z3c.autoinclude.plugin] + target = plone + [console_scripts] + update_locale = searchkit.block.locales.update:update_locale + """, +) diff --git a/backend/src/searchkit/__init__.py b/backend/src/searchkit/__init__.py new file mode 100644 index 00000000..5284146e --- /dev/null +++ b/backend/src/searchkit/__init__.py @@ -0,0 +1 @@ +__import__("pkg_resources").declare_namespace(__name__) diff --git a/backend/src/searchkit/block/__init__.py b/backend/src/searchkit/block/__init__.py new file mode 100644 index 00000000..e60d2c13 --- /dev/null +++ b/backend/src/searchkit/block/__init__.py @@ -0,0 +1,12 @@ +"""Init and utils.""" + +from zope.i18nmessageid import MessageFactory + +import logging + + +PACKAGE_NAME = "searchkit.block" + +_ = MessageFactory(PACKAGE_NAME) + +logger = logging.getLogger(PACKAGE_NAME) diff --git a/backend/src/searchkit/block/configure.zcml b/backend/src/searchkit/block/configure.zcml new file mode 100644 index 00000000..25d130b2 --- /dev/null +++ b/backend/src/searchkit/block/configure.zcml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + diff --git a/backend/src/searchkit/block/content/__init__.py b/backend/src/searchkit/block/content/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/controlpanel/__init__.py b/backend/src/searchkit/block/controlpanel/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/controlpanel/configure.zcml b/backend/src/searchkit/block/controlpanel/configure.zcml new file mode 100644 index 00000000..e0cd9f05 --- /dev/null +++ b/backend/src/searchkit/block/controlpanel/configure.zcml @@ -0,0 +1,8 @@ + + + diff --git a/backend/src/searchkit/block/dependencies.zcml b/backend/src/searchkit/block/dependencies.zcml new file mode 100644 index 00000000..b8d35ae5 --- /dev/null +++ b/backend/src/searchkit/block/dependencies.zcml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/backend/src/searchkit/block/indexers/__init__.py b/backend/src/searchkit/block/indexers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/indexers/configure.zcml b/backend/src/searchkit/block/indexers/configure.zcml new file mode 100644 index 00000000..bad8247b --- /dev/null +++ b/backend/src/searchkit/block/indexers/configure.zcml @@ -0,0 +1,5 @@ + + + + + diff --git a/backend/src/searchkit/block/interfaces.py b/backend/src/searchkit/block/interfaces.py new file mode 100644 index 00000000..7e2f2884 --- /dev/null +++ b/backend/src/searchkit/block/interfaces.py @@ -0,0 +1,7 @@ +"""Module where all interfaces, events and exceptions live.""" + +from zope.publisher.interfaces.browser import IDefaultBrowserLayer + + +class IBrowserLayer(IDefaultBrowserLayer): + """Marker interface that defines a browser layer.""" diff --git a/backend/src/searchkit/block/locales/__init__.py b/backend/src/searchkit/block/locales/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po b/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po new file mode 100644 index 00000000..0cadc3fe --- /dev/null +++ b/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po @@ -0,0 +1,15 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2022-05-25 17:12+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8 latin1\n" +"Domain: DOMAIN\n" diff --git a/backend/src/searchkit/block/locales/searchkit.block.pot b/backend/src/searchkit/block/locales/searchkit.block.pot new file mode 100644 index 00000000..c4a3da19 --- /dev/null +++ b/backend/src/searchkit/block/locales/searchkit.block.pot @@ -0,0 +1,18 @@ +#--- PLEASE EDIT THE LINES BELOW CORRECTLY --- +#SOME DESCRIPTIVE TITLE. +#FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2022-05-25 17:12+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0\n" +"Language-Code: en\n" +"Language-Name: English\n" +"Preferred-Encodings: utf-8 latin1\n" +"Domain: searchkit.block\n" diff --git a/backend/src/searchkit/block/locales/update.py b/backend/src/searchkit/block/locales/update.py new file mode 100644 index 00000000..42e4dee3 --- /dev/null +++ b/backend/src/searchkit/block/locales/update.py @@ -0,0 +1,79 @@ +"""Update locales.""" + +from pathlib import Path + +import logging +import re +import subprocess + + +logger = logging.getLogger("i18n") +logger.setLevel(logging.DEBUG) + + +PATTERN = r"^[a-z]{2}.*" +domains = ("searchkit.block",) +cwd = Path.cwd() +target_path = Path(__file__).parent.parent.resolve() +locale_path = target_path / "locales" + +i18ndude = cwd / "bin" / "i18ndude" +if not i18ndude.exists(): + i18ndude = cwd / "i18ndude" + +# ignore node_modules files resulting in errors +excludes = '"*.html *json-schema*.xml"' + + +def locale_folder_setup(domain: str): + languages = [path for path in locale_path.glob("*") if path.is_dir()] + for lang_folder in languages: + lc_messages_path = lang_folder / "LC_MESSAGES" + lang = lang_folder.name + if lc_messages_path.exists(): + continue + elif re.match(PATTERN, lang): + lc_messages_path.mkdir() + cmd = ( + f"msginit --locale={lang} " + f"--input={locale_path}/{domain}.pot " + f"--output={locale_path}/{lang}/LC_MESSAGES/{domain}.po" + ) + subprocess.call( + cmd, + shell=True, + ) + + +def _rebuild(domain: str): + cmd = ( + f"{i18ndude} rebuild-pot --pot {locale_path}/{domain}.pot " + f"--exclude {excludes} " + f"--create {domain} {target_path}" + ) + subprocess.call( + cmd, + shell=True, + ) + + +def _sync(domain: str): + cmd = ( + f"{i18ndude} sync --pot {locale_path}/{domain}.pot " + f"{locale_path}/*/LC_MESSAGES/{domain}.po" + ) + subprocess.call( + cmd, + shell=True, + ) + + +def update_locale(): + if i18ndude.exists(): + for domain in domains: + logger.info(f"Updating translations for {domain}") + locale_folder_setup(domain) + _rebuild(domain) + _sync(domain) + else: + logger.error("Not able to find i18ndude") diff --git a/backend/src/searchkit/block/profiles.zcml b/backend/src/searchkit/block/profiles.zcml new file mode 100644 index 00000000..7cae67f0 --- /dev/null +++ b/backend/src/searchkit/block/profiles.zcml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/browserlayer.xml b/backend/src/searchkit/block/profiles/default/browserlayer.xml new file mode 100644 index 00000000..58b6e1be --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/browserlayer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/backend/src/searchkit/block/profiles/default/catalog.xml b/backend/src/searchkit/block/profiles/default/catalog.xml new file mode 100644 index 00000000..9558132b --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/catalog.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/backend/src/searchkit/block/profiles/default/controlpanel.xml b/backend/src/searchkit/block/profiles/default/controlpanel.xml new file mode 100644 index 00000000..a75d00ca --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/controlpanel.xml @@ -0,0 +1,4 @@ + + + + diff --git a/backend/src/searchkit/block/profiles/default/diff_tool.xml b/backend/src/searchkit/block/profiles/default/diff_tool.xml new file mode 100644 index 00000000..6a1c5f4e --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/diff_tool.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/metadata.xml b/backend/src/searchkit/block/profiles/default/metadata.xml new file mode 100644 index 00000000..eec40a34 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/metadata.xml @@ -0,0 +1,7 @@ + + + 1000 + + profile-plone.volto:default + + diff --git a/backend/src/searchkit/block/profiles/default/registry/.gitkeep b/backend/src/searchkit/block/profiles/default/registry/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml new file mode 100644 index 00000000..ea77c18f --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml @@ -0,0 +1,9 @@ + + + + Searchkit Block + + diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml new file mode 100644 index 00000000..e8fd7a43 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml @@ -0,0 +1,9 @@ + + + + Searchkit Block + + diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml new file mode 100644 index 00000000..cd2730fc --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml @@ -0,0 +1,12 @@ + + + + + en + + en + + diff --git a/backend/src/searchkit/block/profiles/default/repositorytool.xml b/backend/src/searchkit/block/profiles/default/repositorytool.xml new file mode 100644 index 00000000..4f674d65 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/repositorytool.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/rolemap.xml b/backend/src/searchkit/block/profiles/default/rolemap.xml new file mode 100644 index 00000000..71ca5838 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/rolemap.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/src/searchkit/block/profiles/default/theme.xml b/backend/src/searchkit/block/profiles/default/theme.xml new file mode 100644 index 00000000..7f916aad --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/theme.xml @@ -0,0 +1,5 @@ + + + barceloneta + true + diff --git a/backend/src/searchkit/block/profiles/default/types.xml b/backend/src/searchkit/block/profiles/default/types.xml new file mode 100644 index 00000000..bed2b0d4 --- /dev/null +++ b/backend/src/searchkit/block/profiles/default/types.xml @@ -0,0 +1,10 @@ + + + + diff --git a/backend/src/searchkit/block/profiles/default/types/.gitkeep b/backend/src/searchkit/block/profiles/default/types/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/profiles/initial/metadata.xml b/backend/src/searchkit/block/profiles/initial/metadata.xml new file mode 100644 index 00000000..f768b5a7 --- /dev/null +++ b/backend/src/searchkit/block/profiles/initial/metadata.xml @@ -0,0 +1,4 @@ + + + 1000 + diff --git a/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml b/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml new file mode 100644 index 00000000..d007dd37 --- /dev/null +++ b/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/backend/src/searchkit/block/serializers/__init__.py b/backend/src/searchkit/block/serializers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/serializers/configure.zcml b/backend/src/searchkit/block/serializers/configure.zcml new file mode 100644 index 00000000..edc2fdd1 --- /dev/null +++ b/backend/src/searchkit/block/serializers/configure.zcml @@ -0,0 +1,10 @@ + + + + + + + diff --git a/backend/src/searchkit/block/serializers/summary.py b/backend/src/searchkit/block/serializers/summary.py new file mode 100644 index 00000000..4e0605fe --- /dev/null +++ b/backend/src/searchkit/block/serializers/summary.py @@ -0,0 +1,10 @@ +from plone.restapi.interfaces import IJSONSummarySerializerMetadata +from zope.interface import implementer + + +@implementer(IJSONSummarySerializerMetadata) +class JSONSummarySerializerMetadata: + """Additional metadata to be exposed on listings.""" + + def default_metadata_fields(self): + return {"image_field", "image_scales", "effective", "Subject"} diff --git a/backend/src/searchkit/block/setuphandlers/__init__.py b/backend/src/searchkit/block/setuphandlers/__init__.py new file mode 100644 index 00000000..580bd2c5 --- /dev/null +++ b/backend/src/searchkit/block/setuphandlers/__init__.py @@ -0,0 +1,11 @@ +from Products.CMFPlone.interfaces import INonInstallable +from zope.interface import implementer + + +@implementer(INonInstallable) +class HiddenProfiles: + def getNonInstallableProfiles(self): + """Hide uninstall profile from site-creation and quickinstaller.""" + return [ + "searchkit.block:uninstall", + ] diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep b/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json new file mode 100644 index 00000000..7281b504 --- /dev/null +++ b/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json @@ -0,0 +1,40 @@ +{ + "__version__": "1.0.0", + "_blob_files_": [ + "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png" + ], + "_data_files_": [ + "plone_site_root/data.json", + "a720393b3c0240e5bd27c43fcd2cfd1e/data.json", + "a58ccead718140c1baa98d43595fc3e6/data.json" + ], + "default_page": {}, + "local_roles": { + "a58ccead718140c1baa98d43595fc3e6": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "a720393b3c0240e5bd27c43fcd2cfd1e": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "plone_site_root": { + "local_roles": { + "admin": [ + "Owner" + ] + } + } + }, + "ordering": { + "a58ccead718140c1baa98d43595fc3e6": 0, + "a720393b3c0240e5bd27c43fcd2cfd1e": 42 + }, + "relations": [] +} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json new file mode 100644 index 00000000..08dbccf1 --- /dev/null +++ b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json @@ -0,0 +1,56 @@ +{ + "@id": "/images/plone-foundation.png", + "@type": "Image", + "UID": "a58ccead718140c1baa98d43595fc3e6", + "allow_discussion": false, + "contributors": [], + "created": "2024-05-27T03:23:37+00:00", + "creators": [ + "admin" + ], + "description": "", + "effective": null, + "exclude_from_nav": false, + "expires": null, + "exportimport.constrains": {}, + "exportimport.conversation": [], + "exportimport.versions": {}, + "id": "plone-foundation.png", + "image": { + "blob_path": "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png", + "content-type": "image/png", + "filename": "plone-foundation.png", + "height": 439, + "size": 50737, + "width": 2000 + }, + "is_folderish": false, + "language": "##DEFAULT##", + "layout": "image_view", + "lock": {}, + "modified": "2024-05-27T03:24:00+00:00", + "parent": { + "@id": "/images", + "@type": "Document", + "Subject": [], + "UID": "a720393b3c0240e5bd27c43fcd2cfd1e", + "description": "Site images", + "effective": "1969-12-31T03:00:00+00:00", + "image_field": null, + "image_scales": {}, + "review_state": "private", + "title": "Images", + "type_title": "Page" + }, + "review_state": null, + "rights": "", + "subjects": [ + "Plone" + ], + "title": "Plone Foundation Logo", + "type_title": "Image", + "version": "current", + "workflow_history": {}, + "working_copy": null, + "working_copy_of": null +} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png new file mode 100644 index 0000000000000000000000000000000000000000..9516c4c6392f24444bec95824f40fcf6bf3a0631 GIT binary patch literal 50737 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 z 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 + + + + diff --git a/backend/src/searchkit/block/vocabularies/__init__.py b/backend/src/searchkit/block/vocabularies/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backend/src/searchkit/block/vocabularies/configure.zcml b/backend/src/searchkit/block/vocabularies/configure.zcml new file mode 100644 index 00000000..fb8b7931 --- /dev/null +++ b/backend/src/searchkit/block/vocabularies/configure.zcml @@ -0,0 +1,3 @@ + + + diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py new file mode 100644 index 00000000..006e9842 --- /dev/null +++ b/backend/tests/conftest.py @@ -0,0 +1,18 @@ +from pytest_plone import fixtures_factory +from searchkit.block.testing import ACCEPTANCE_TESTING +from searchkit.block.testing import FUNCTIONAL_TESTING +from searchkit.block.testing import INTEGRATION_TESTING + + +pytest_plugins = ["pytest_plone"] + + +globals().update( + fixtures_factory( + ( + (ACCEPTANCE_TESTING, "acceptance"), + (FUNCTIONAL_TESTING, "functional"), + (INTEGRATION_TESTING, "integration"), + ) + ) +) diff --git a/backend/tests/setup/test_setup_install.py b/backend/tests/setup/test_setup_install.py new file mode 100644 index 00000000..9a5bcb92 --- /dev/null +++ b/backend/tests/setup/test_setup_install.py @@ -0,0 +1,17 @@ +from searchkit.block import PACKAGE_NAME + + +class TestSetupInstall: + def test_addon_installed(self, installer): + """Test if searchkit.block is installed.""" + assert installer.is_product_installed(PACKAGE_NAME) is True + + def test_browserlayer(self, browser_layers): + """Test that IBrowserLayer is registered.""" + from searchkit.block.interfaces import IBrowserLayer + + assert IBrowserLayer in browser_layers + + def test_latest_version(self, profile_last_version): + """Test latest version of default profile.""" + assert profile_last_version(f"{PACKAGE_NAME}:default") == "1000" diff --git a/backend/tests/setup/test_setup_uninstall.py b/backend/tests/setup/test_setup_uninstall.py new file mode 100644 index 00000000..77a6a8f2 --- /dev/null +++ b/backend/tests/setup/test_setup_uninstall.py @@ -0,0 +1,19 @@ +from searchkit.block import PACKAGE_NAME + +import pytest + + +class TestSetupUninstall: + @pytest.fixture(autouse=True) + def uninstalled(self, installer): + installer.uninstall_product(PACKAGE_NAME) + + def test_addon_uninstalled(self, installer): + """Test if searchkit.block is uninstalled.""" + assert installer.is_product_installed(PACKAGE_NAME) is False + + def test_browserlayer_not_registered(self, browser_layers): + """Test that IBrowserLayer is not registered.""" + from searchkit.block.interfaces import IBrowserLayer + + assert IBrowserLayer not in browser_layers diff --git a/backend/tox.ini b/backend/tox.ini new file mode 100644 index 00000000..842da822 --- /dev/null +++ b/backend/tox.ini @@ -0,0 +1,212 @@ +# Generated from: +# https://github.com/plone/meta/tree/master/config/default +# See the inline comments on how to expand/tweak this configuration file +[tox] +# We need 4.4.0 for constrain_package_deps. +min_version = 4.4.0 +envlist = + lint + test + dependencies + + +## +# Add extra configuration options in .meta.toml: +# [tox] +# envlist_lines = """ +# my_other_environment +# """ +# config_lines = """ +# my_extra_top_level_tox_configuration_lines +# """ +## + +[testenv] +skip_install = true +allowlist_externals = + echo + false +# Make sure typos like `tox -e formaat` are caught instead of silently doing nothing. +# See https://github.com/tox-dev/tox/issues/2858. +commands = + echo "Unrecognized environment name {envname}" + false + +[testenv:init] +description = Prepare environment +skip_install = true +deps = + mxdev +commands = + mxdev -c mx.ini + echo "Initial setup for mxdev" + + +[testenv:format] +description = automatically reformat code +skip_install = true +deps = + pre-commit +commands = + pre-commit run -a pyupgrade + pre-commit run -a isort + pre-commit run -a black + pre-commit run -a zpretty + +[testenv:lint] +description = run linters that will help improve the code style +skip_install = true +deps = + pre-commit +commands = + # Run pre-commit without chdir to the root of the git repository + python -c "from pre_commit import main; main._adjust_args_and_chdir = lambda args: None; raise SystemExit(main.main())" run -a + +[testenv:dependencies] +description = check if the package defines all its dependencies +skip_install = true +deps = + build + z3c.dependencychecker==2.11 +commands = + python -m build --sdist --no-isolation + dependencychecker + +[testenv:dependencies-graph] +description = generate a graph out of the dependencies of the package +skip_install = false +allowlist_externals = + sh +deps = + pipdeptree==2.5.1 + graphviz # optional dependency of pipdeptree +commands = + sh -c 'pipdeptree --exclude setuptools,wheel,pipdeptree,zope.interface,zope.component --graph-output svg > dependencies.svg' + +[testenv:test] +description = run the distribution tests +use_develop = true +skip_install = false +constrain_package_deps = true +set_env = + ROBOT_BROWSER=headlesschrome + +## +# Specify extra test environment variables in .meta.toml: +# [tox] +# test_environment_variables = """ +# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ +# """ +# +# Set constrain_package_deps .meta.toml: +# [tox] +# constrain_package_deps = false +## +deps = + pytest-plone + pytest + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +## +# Specify additional deps in .meta.toml: +# [tox] +# test_deps_additional = """ +# -esources/plonegovbr.portal_base[test] +# """ +# +# Specify a custom constraints file in .meta.toml: +# [tox] +# constraints_file = "https://my-server.com/constraints.txt" +## +commands = + pytest --disable-warnings {posargs} {toxinidir}/tests +extras = + test + + +[testenv:coverage] +description = get a test coverage report +use_develop = true +skip_install = false +constrain_package_deps = true +set_env = + ROBOT_BROWSER=headlesschrome + +## +# Specify extra test environment variables in .meta.toml: +# [tox] +# test_environment_variables = """ +# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ +# """ +# +# Set constrain_package_deps .meta.toml: +# [tox] +# constrain_package_deps = "false" +## +deps = + pytest-plone + pytest + coverage + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +commands = + coverage run --source searchkit.block -m pytest {posargs} --disable-warnings {toxinidir}/tests + coverage report -m --format markdown + coverage xml +extras = + test + + +[testenv:release-check] +description = ensure that the distribution is ready to release +skip_install = true +deps = + twine + build + towncrier + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +commands = + # fake version to not have to install the package + # we build the change log as news entries might break + # the README that is displayed on PyPI + towncrier build --version=100.0.0 --yes + python -m build --sdist --no-isolation + twine check dist/* + +[testenv:circular] +description = ensure there are no cyclic dependencies +use_develop = true +skip_install = false +set_env = + +## +# Specify extra test environment variables in .meta.toml: +# [tox] +# test_environment_variables = """ +# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ +# """ +## +allowlist_externals = + sh +deps = + pipdeptree + pipforester + -c https://dist.plone.org/release/6.0-dev/constraints.txt + +commands = + # Generate the full dependency tree + sh -c 'pipdeptree -j > forest.json' + # Generate a DOT graph with the circular dependencies, if any + pipforester -i forest.json -o forest.dot --cycles + # Report if there are any circular dependencies, i.e. error if there are any + pipforester -i forest.json --check-cycles -o /dev/null + + +## +# Add extra configuration options in .meta.toml: +# [tox] +# extra_lines = """ +# _your own configuration lines_ +# """ +## diff --git a/backend/version.txt b/backend/version.txt new file mode 100644 index 00000000..dd6bb261 --- /dev/null +++ b/backend/version.txt @@ -0,0 +1 @@ +6.0.13 From cd54292ec9b4418635ddde2a2b0c43bd5a551dbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 26 Oct 2024 13:38:36 +0200 Subject: [PATCH 04/98] bring back volto-searchkit-block code --- .../src/components/.gitkeep | 0 .../Blocks/DownloadFiltersMapping.jsx | 48 + .../Blocks/FacetedSearchBlockEdit.jsx | 26 + .../Blocks/FacetedSearchBlockView.jsx | 11 + .../Reference/ReferenceSearchBlockEdit.jsx | 20 + .../Reference/ReferenceSearchBlockView.jsx | 17 + .../src/components/Blocks/Reference/index.js | 4 + .../Blocks/SearchSectionsWidget.jsx | 48 + .../src/components/Blocks/Sidebar.jsx | 26 + .../src/components/Blocks/schema.js | 212 +++++ .../Searchkit/CustomESRequestSerializer.jsx | 438 ++++++++++ .../Searchkit/CustomESResponseSerializer.jsx | 46 + .../src/components/Searchkit/ESSearchApi.jsx | 74 ++ .../Searchkit/ElasticSearchHighlights.jsx | 120 +++ .../src/components/Searchkit/Error.jsx | 20 + .../src/components/Searchkit/Error.test.js | 36 + .../Searchkit/LICENSE_Cern_react-searchkit.md | 21 + .../src/components/Searchkit/Results.js | 80 ++ .../components/Searchkit/ResultsLoader.jsx | 12 + .../components/Searchkit/SearchBarSection.jsx | 51 ++ .../components/Searchkit/SectionsSearch.jsx | 156 ++++ .../__snapshots__/Error.test.js.snap | 23 + .../src/components/StateLogger.jsx | 23 + .../src/components/Views/FacetedSearch.jsx | 826 ++++++++++++++++++ .../Views/TestSearchkitQuerystrings.jsx | 225 +++++ .../springisnow-volto-searchkit-block.less | 296 +++++++ .../src/components/helpers.js | 64 ++ .../src/components/helpers.test.js | 22 + .../src/components/index.js | 9 + packages/volto-searchkit-block/src/index.js | 141 +++ .../volto-searchkit-block/src/messages.js | 104 +++ 31 files changed, 3199 insertions(+) delete mode 100644 packages/volto-searchkit-block/src/components/.gitkeep create mode 100644 packages/volto-searchkit-block/src/components/Blocks/DownloadFiltersMapping.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockEdit.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockView.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/Reference/index.js create mode 100644 packages/volto-searchkit-block/src/components/Blocks/SearchSectionsWidget.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/Sidebar.jsx create mode 100644 packages/volto-searchkit-block/src/components/Blocks/schema.js create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/CustomESRequestSerializer.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/CustomESResponseSerializer.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/ESSearchApi.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/ElasticSearchHighlights.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/Error.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/Error.test.js create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/LICENSE_Cern_react-searchkit.md create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/Results.js create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/ResultsLoader.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/SearchBarSection.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/SectionsSearch.jsx create mode 100644 packages/volto-searchkit-block/src/components/Searchkit/__snapshots__/Error.test.js.snap create mode 100644 packages/volto-searchkit-block/src/components/StateLogger.jsx create mode 100644 packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx create mode 100644 packages/volto-searchkit-block/src/components/Views/TestSearchkitQuerystrings.jsx create mode 100644 packages/volto-searchkit-block/src/components/Views/less/springisnow-volto-searchkit-block.less create mode 100644 packages/volto-searchkit-block/src/components/helpers.js create mode 100644 packages/volto-searchkit-block/src/components/helpers.test.js create mode 100644 packages/volto-searchkit-block/src/components/index.js create mode 100644 packages/volto-searchkit-block/src/messages.js diff --git a/packages/volto-searchkit-block/src/components/.gitkeep b/packages/volto-searchkit-block/src/components/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/volto-searchkit-block/src/components/Blocks/DownloadFiltersMapping.jsx b/packages/volto-searchkit-block/src/components/Blocks/DownloadFiltersMapping.jsx new file mode 100644 index 00000000..a9f1f1f9 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/DownloadFiltersMapping.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { useSelector } from 'react-redux'; +import { Button } from 'semantic-ui-react'; + +const FooComponent = ({ data }) => { + const vocabularies = useSelector((state) => state.querystring?.indexes); + function exportFiltersMapping(data) { + const filternames = data.facet_fields?.map((el) => { + return el.field.value; + }); + let ff = {}; + filternames?.forEach((fname) => { + let foo = vocabularies[fname].values; + Object.keys(foo).forEach((el) => { + ff[el] = foo[el].title; + }); + }); + let map = { + facet_fields: ff, + search_sections: + data.search_sections && + Object.fromEntries( + data.search_sections.items.map((el) => { + return [el.section, el.label]; + }), + ), + }; + const fileData = JSON.stringify(map); + const blob = new Blob([fileData], { type: 'text/plain' }); + const url = URL.createObjectURL(blob); + const link = document.createElement('a'); + link.download = 'filter-mapping.json'; + link.href = url; + link.click(); + } + + return ( + + ); +}; + +export default FooComponent; diff --git a/packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockEdit.jsx b/packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockEdit.jsx new file mode 100644 index 00000000..cb2b8b33 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockEdit.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { Container, Segment } from 'semantic-ui-react'; +import { SidebarPortal } from '@plone/volto/components'; + +import Sidebar from './Sidebar'; +import FacetedSearchBlockView from './FacetedSearchBlockView'; +import DownloadFiltersMapping from './DownloadFiltersMapping'; + +const Edit = ({ data, onChangeBlock, block, selected }) => { + return ( +
+ + + + + + + + + + +
+ ); +}; + +export default Edit; diff --git a/packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockView.jsx b/packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockView.jsx new file mode 100644 index 00000000..6cc0e92d --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/FacetedSearchBlockView.jsx @@ -0,0 +1,11 @@ +import FacetedSearch from '../Views/FacetedSearch'; + +const View = ({ data }) => { + return ( +
+ +
+ ); +}; + +export default View; diff --git a/packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx b/packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx new file mode 100644 index 00000000..111774b9 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockEdit.jsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { SidebarPortal } from '@plone/volto/components'; + +import Sidebar from '../Sidebar'; +// import FacetedSearch from '../Views/FacetedSearch'; + +const Edit = ({ data, onChangeBlock, block, selected }) => { + return ( +
+ + + + +

Search with bucket aggregation of ElasticSearch

+

Reference with react-searchkit defaults

+
+ ); +}; + +export default Edit; diff --git a/packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx b/packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx new file mode 100644 index 00000000..38d12acf --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/Reference/ReferenceSearchBlockView.jsx @@ -0,0 +1,17 @@ +import React from 'react'; + +import FacetedSearch from '../../Views/FacetedSearch'; + +const View = ({ data }) => { + return ( +
+ +
+ ); +}; + +export default View; diff --git a/packages/volto-searchkit-block/src/components/Blocks/Reference/index.js b/packages/volto-searchkit-block/src/components/Blocks/Reference/index.js new file mode 100644 index 00000000..b1c77d4b --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/Reference/index.js @@ -0,0 +1,4 @@ +import ReferenceSearchBlockEdit from './ReferenceSearchBlockEdit'; +import ReferenceSearchBlockView from './ReferenceSearchBlockView'; + +export { ReferenceSearchBlockEdit, ReferenceSearchBlockView }; diff --git a/packages/volto-searchkit-block/src/components/Blocks/SearchSectionsWidget.jsx b/packages/volto-searchkit-block/src/components/Blocks/SearchSectionsWidget.jsx new file mode 100644 index 00000000..82646d57 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/SearchSectionsWidget.jsx @@ -0,0 +1,48 @@ +import React from 'react'; + +import ObjectListWidget from '@plone/volto/components/manage/Widgets/ObjectListWidget'; + +import messages from '../../messages'; + +const ItemSchema = ({ intl }) => { + return { + title: intl.formatMessage(messages.searchSection), + addMessage: intl.formatMessage(messages.add, { + type: intl.formatMessage(messages.searchSection), + }), + properties: { + section: { + title: intl.formatMessage(messages.searchSection), + }, + label: { + title: intl.formatMessage(messages.searchSectionLabel), + }, + show_filter: { + title: intl.formatMessage(messages.showFilter), + type: 'boolean', + default: true, + }, + }, + fieldsets: [ + { + id: 'default', + title: 'History-Eintrag', + fields: ['section', 'label', 'show_filter'], + }, + ], + required: [], + }; +}; + +const SearchSectionsWidget = (props) => { + return ( + props.onChange(id, { items: value })} + /> + ); +}; + +export default SearchSectionsWidget; diff --git a/packages/volto-searchkit-block/src/components/Blocks/Sidebar.jsx b/packages/volto-searchkit-block/src/components/Blocks/Sidebar.jsx new file mode 100644 index 00000000..c6741b6b --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/Sidebar.jsx @@ -0,0 +1,26 @@ +import React from 'react'; +import { useIntl } from 'react-intl'; +import { SearchBlockSchema } from './schema'; +import { BlockDataForm } from '@plone/volto/components'; + +const Sidebar = ({ data, block, onChangeBlock }) => { + const intl = useIntl(); + let schema = SearchBlockSchema({ data, intl }); + return ( + { + onChangeBlock(block, { + ...data, + [id]: value, + }); + }} + onChangeBlock={onChangeBlock} + formData={data} + block={block} + /> + ); +}; + +export default Sidebar; diff --git a/packages/volto-searchkit-block/src/components/Blocks/schema.js b/packages/volto-searchkit-block/src/components/Blocks/schema.js new file mode 100644 index 00000000..1fa7e576 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Blocks/schema.js @@ -0,0 +1,212 @@ +// TODO translations title and descriptions of fields +import { + hasNonValueOperation, + hasDateOperation, +} from '@plone/volto/components/manage/Blocks/Search/utils'; +import messages from '../../messages'; + +const FacetSchema = ({ intl }) => ({ + title: intl.formatMessage(messages.facet), + addMessage: intl.formatMessage(messages.add, { + type: intl.formatMessage(messages.facet), + }), + fieldsets: [ + { + id: 'default', + title: 'Default', + fields: ['title', 'field'], + }, + ], + properties: { + title: { + title: intl.formatMessage(messages.label), + }, + field: { + title: intl.formatMessage(messages.field), + widget: 'select_querystring_field', + vocabulary: { '@id': 'plone.app.vocabularies.MetadataFields' }, + filterOptions: (options) => { + // Only allow indexes that provide simple, fixed vocabularies. + // This should be improved, together with the facets. The querystring + // widget implementation should serve as inspiration for those dynamic + // types of facets. + return Object.assign( + {}, + ...Object.keys(options).map((k) => + Object.keys(options[k].values || {}).length || + hasNonValueOperation(options[k].operations) || + hasDateOperation(options[k].operations) + ? { [k]: options[k] } + : {}, + ), + ); + }, + }, + }, + required: ['field'], +}); +const ExtrainfoSchema = ({ intl }) => { + const facetschema = FacetSchema({ intl }); + const extrainfoschema = { + ...facetschema, + title: intl.formatMessage(messages.metadata), + addMessage: intl.formatMessage(messages.add, { + type: intl.formatMessage(messages.metadata), + }), + }; + return extrainfoschema; +}; + +export const SearchBlockSchema = ({ data = {}, intl }) => { + return { + title: intl.formatMessage(messages.searchBlock), + fieldsets: [ + { + id: 'default', + title: 'Search', + fields: [ + 'allowed_content_types', + 'allowed_review_states', + 'searchedFields', + 'batchSize', + ], + }, + { + id: 'facets', + title: intl.formatMessage(messages.facets), + fields: [ + 'facet_fields', + 'filterLayout', + 'search_sections', + 'allow_search_excluded_sections', + 'show_filter_for_excluded_sections', + ], + }, + { + id: 'results', + title: 'Results', + fields: [ + 'extrainfo_fields', + 'subjectsFieldname', + 'showNewsItemPublishedDate', + 'showEventStartDate', + ], + }, + { + id: 'divers', + title: 'Divers', + fields: ['relocation'], + }, + ], + properties: { + // elastic_search_api_url: { + // title: + // '(deprecated) (Set in collective.elastic environment variable) Elastic Search API URL', + // default: 'http://localhost:9200', + // }, + // elastic_search_api_index: { + // title: + // '(deprecated) (Set in collective.elastic environment variable) Elastic Search API Index', + // default: 'esploneindex', + // }, + search_sections: { + title: intl.formatMessage(messages.searchInSections), + description: intl.formatMessage(messages.searchInSectionsDescription), + type: 'dict', + factory: 'JSONField', + widget: 'searchsectionswidget', + }, + allow_search_excluded_sections: { + title: 'Allow search everywhere except in sections', + type: 'boolean', + }, + show_filter_for_excluded_sections: { + title: 'Show filter for excluded sections', + type: 'boolean', + default: true, + }, + allowed_content_types: { + title: 'Types', + description: 'Restrict types to display.', + type: 'array', + widget: 'array', + items: { + vocabulary: { '@id': 'plone.app.vocabularies.UserFriendlyTypes' }, + }, + }, + allowed_review_states: { + title: 'States', + description: 'Restrict review states.', + type: 'array', + widget: 'array', + items: { + vocabulary: { '@id': 'plone.app.vocabularies.WorkflowStates' }, + }, + }, + searchedFields: { + title: 'Searchable fields with boosting', + description: + 'Type fieldnames to search in field names. Type title^1.4 to boost the title 40%.', + type: 'array', + creatable: true, + default: ['title^1.4', 'description^1.2', 'blocks_plaintext'], + }, + batchSize: { + title: 'Batch size', + type: 'number', + default: 10, + }, + facet_fields: { + title: 'Facets', + description: 'Fields to filter on.', + widget: 'object_list', + schema: FacetSchema({ intl }), + }, + filterLayout: { + title: intl.formatMessage(messages.facetWidget), + // widget: SelectWidget, + choices: [ + ['dropdown', 'Dropdown'], + ['checkboxes', 'Checkboxes'], + ], + default: 'dropdown', + }, + extrainfo_fields: { + title: intl.formatMessage(messages.metadata), + widget: 'object_list', + schema: ExtrainfoSchema({ intl }), + }, + subjectsFieldname: { + title: 'Field name of tags field', + description: + 'Show tags to search for. Let the field empty to not show tags.', + default: 'subjects', + }, + showNewsItemPublishedDate: { + title: 'Show published date of news items', + type: 'array', + widget: 'array', + items: { + vocabulary: { '@id': 'plone.app.vocabularies.UserFriendlyTypes' }, + }, + default: ['News Item'], + }, + showEventStartDate: { + title: 'Show start date of events', + type: 'array', + widget: 'array', + items: { + vocabulary: { '@id': 'plone.app.vocabularies.UserFriendlyTypes' }, + }, + default: ['Event'], + }, + relocation: { + title: 'Relocation', + description: + 'CSS selector for relocation of search bar. Leave empty to keep search bar in block.', + default: '', + }, + }, + required: [], + }; +}; diff --git a/packages/volto-searchkit-block/src/components/Searchkit/CustomESRequestSerializer.jsx b/packages/volto-searchkit-block/src/components/Searchkit/CustomESRequestSerializer.jsx new file mode 100644 index 00000000..faad29d3 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/CustomESRequestSerializer.jsx @@ -0,0 +1,438 @@ +import { extend, isEmpty, keyBy, trim } from 'lodash'; +import { getObjectFromObjectList } from '../helpers'; + +import config from '@plone/volto/registry'; + +const volto_config = config; + +export class CustomESRequestSerializer { + constructor(config) { + this.reviewstatemapping = config.reviewstatemapping; + this.searchedFields = config.searchedFields; + this.facet_fields = getObjectFromObjectList(config.facet_fields); + this.allowed_content_types = config.allowed_content_types; + this.allowed_review_states = config.allowed_review_states; + this.search_sections = config.search_sections; + this.language = config.language; + } + /** + * Convert Array of filters to Object of filters + * @param {Array} filters Array of filters + * @return {Object} Object of filters + * input: [ + * [ 'type_agg', 'value1' ] + * [ 'type_agg', 'value2', [ 'subtype_agg', 'a value' ] ] + * ] + * output: { + * type_agg: ['value1', 'value2'] + * subtype_agg: [ 'a value' ] + * } + */ + getFilters = (filters) => { + const aggValueObj = {}; + + const getChildFilter = (filter) => { + const aggName = filter[0]; + const fieldValue = filter[1]; + if (aggName in aggValueObj) { + aggValueObj[aggName].push(fieldValue); + } else { + aggValueObj[aggName] = [fieldValue]; + } + const hasChild = filter.length === 3; + if (hasChild) { + getChildFilter(filter[2]); + } + }; + + filters.forEach((filterObj) => { + getChildFilter(filterObj); + }); + return aggValueObj; + }; + + /** + * Return a serialized version of the app state `query` for the API backend. + * @param {object} stateQuery the `query` state to serialize + */ + serialize = (stateQuery) => { + const { queryString, sortBy, sortOrder, page, size, filters } = stateQuery; + const bodyParams = {}; + const force_fuzzy = true; // search for `${word}` and `${word}~` + + let qs_tailored_should_notexact = []; + let qs_tailored_should_exact = []; + let qs_tailored_must_notexact = []; + let qs_tailored_must_exact = []; + let qs_tailored_mustNot_exact = []; + + const _remove_orphan_leading_or_trailing_quotmarks = (word) => { + let word_without_plus_or_minus = trim(word, '+'); + word_without_plus_or_minus = trim(word_without_plus_or_minus, '-'); + if ( + !( + word_without_plus_or_minus.startsWith('"') && + word_without_plus_or_minus.endsWith('"') + ) && + !( + !word_without_plus_or_minus.startsWith('"') && + !word_without_plus_or_minus.endsWith('"') + ) + ) { + return word.replace('"', ''); + } + return word; + }; + + const _removeQuotationMarks = (word) => { + word.replace('"', ''); + word.replace("'", ''); + return word; + }; + + const _make_fuzzy_and_enrich_with_word_parts = (word) => { + // EXCLUDE + if (word.startsWith('-')) { + qs_tailored_mustNot_exact.push(_removeQuotationMarks(word.slice(1))); + return; + } + // MUST + if (word.startsWith('+')) { + if (word.includes('"') || word.includes('*') || word.includes('?')) { + qs_tailored_must_exact.push(word.slice(1)); + } else { + qs_tailored_must_notexact.push(word.slice(1)); + } + return; + } + + // WILDCARD + if (word.includes('*') || word.includes('?')) { + qs_tailored_should_exact.push(_removeQuotationMarks(word)); + return; + } + // EXACT + if (word.includes('"')) { + qs_tailored_should_exact.push(word); + return; + } + + // Words with hyphen + let word_new; + let wordpartlist = word.split('-'); // common hyphens + if (wordpartlist.length > 1) { + // word with hyphen + let resultlist = []; + wordpartlist.push(word); + wordpartlist.forEach((el) => { + if (force_fuzzy) { + resultlist.push(`${el} ${el}~`); + } else { + resultlist.push(el); + } + }); + word_new = resultlist.join(' '); + } else { + // word without hyphen + word_new = force_fuzzy ? `${word} ${word}~` : `${word}`; + } + qs_tailored_should_notexact.push(word_new); + return; + }; + + if (!isEmpty(queryString)) { + // - search fuzzy + // - search also for word parts (LSR-Lehrbetrieb: search also for LSR and Lehrbetrieb) + let words = queryString.trim().split(' '); + words = words + // filter out spaces, orphan ", "AND", and "OR" + .filter((word) => !['', '"', 'AND', 'OR', 'NOT'].includes(word)); + + words.forEach((word) => { + word = _remove_orphan_leading_or_trailing_quotmarks(word); + _make_fuzzy_and_enrich_with_word_parts(word); + }); + + // fields with boosting + let searchedFields = [...this.searchedFields]; + + let searchedFields_simple = searchedFields.map((fld) => { + const fieldname = fld.split('^')[0]; + return fld.replace(fieldname, `${fieldname}.${this.language}`); + }); + + let searchedFields_exact = searchedFields.map((fld) => { + const fieldname = fld.split('^')[0]; + return fld.replace(fieldname, `${fieldname}.${this.language}_exact`); + }); + + // Construction of query + let shouldList = []; + let mustList = []; + let must_notList = []; + + qs_tailored_should_notexact.forEach((element) => { + shouldList.push({ + query_string: { + query: element, + fields: searchedFields_simple, + }, + }); + }); + qs_tailored_should_exact.forEach((element) => { + shouldList.push({ + query_string: { + query: element, + fields: searchedFields_exact, + }, + }); + }); + + qs_tailored_must_notexact.forEach((el) => { + mustList.push({ + query_string: { + query: el, + fields: searchedFields_simple, + }, + }); + }); + qs_tailored_must_exact.forEach((element) => { + mustList.push({ + query_string: { + query: element, + fields: searchedFields_exact, + }, + }); + }); + qs_tailored_mustNot_exact.forEach((element) => { + must_notList.push({ + query_string: { + query: element, + fields: searchedFields_exact, + }, + }); + }); + + bodyParams['query'] = { + bool: { + should: shouldList, + must: mustList, + must_not: must_notList, + }, + }; + + bodyParams['highlight'] = { + number_of_fragments: 20, + fields: ['title', 'description', 'blocks_plaintext'].map( + (fieldname) => { + return { + [fieldname]: { + matched_fields: [ + `${fieldname}.${this.language}`, + `${fieldname}.${this.language}_exact`, + ], + type: 'fvh', + }, + }; + }, + ), + }; + } + + if (sortBy !== 'bestmatch') { + bodyParams['sort'] = bodyParams['sort'] || []; + const sortObj = {}; + sortObj[sortBy] = sortOrder && sortOrder === 'desc' ? 'desc' : 'asc'; + bodyParams['sort'].push(sortObj); + } + + if (size > 0) { + bodyParams['size'] = size; // batch size + } + + if (page > 0) { + const s = size > 0 ? size : 0; + const from = (page - 1) * s; + bodyParams['from'] = from; + } + + const getFieldnameFromAgg = (agg) => { + return agg.replace('_agg', ''); + }; + + // Generate terms of global filters + let terms = []; + // If isMultilingual, search only in language + + this.language && + volto_config.settings.isMultilingual && + terms.push({ + terms: { + language: [this.language], + }, + }); + this.allowed_content_types?.length > 0 && + terms.push({ + terms: { + portal_type: this.allowed_content_types, + }, + }); + this.allowed_review_states?.length > 0 && + terms.push({ + terms: { + review_state: this.allowed_review_states, + }, + }); + + const filters_dict = keyBy(filters, (e) => { + return e[0]; + }); + const section = filters_dict['section']; + + // Generate terms of selected options + let terms_of_selected_options = []; + if (filters.length) { + // Convert to object. + const aggValueObj = this.getFilters(filters); + + terms_of_selected_options = Object.keys(aggValueObj).reduce( + (accumulator, aggName) => { + const obj = {}; + const fieldName = getFieldnameFromAgg(aggName); + if (fieldName === 'subjects') { + obj['subjects.keyword'] = aggValueObj[aggName]; + } else { + obj[fieldName] = aggValueObj[aggName]; + } + if ( + aggName !== 'section' || + JSON.stringify(aggValueObj[aggName]) !== '["others"]' + ) { + accumulator.push({ terms: obj }); + } + return accumulator; + }, + [], + ); + } + + /** + * ES post_filter + */ + + const post_filter = { + bool: { must: terms.concat(terms_of_selected_options) }, + }; + + // Exclude sections + if (section && section[1] === 'others') { + post_filter['bool']['must_not'] = [ + { + terms: { + section: this.search_sections.items.map((el) => { + return el.section; + }), + }, + }, + ]; + } + + bodyParams['post_filter'] = post_filter; + + /** + * Aggregations + */ + const filter = (fieldName) => { + let myAggsFilter = terms; + // Add selected filters + const terms_of_selected_options_without_self = + terms_of_selected_options.filter( + (el) => !Object.keys(el.terms).includes(fieldName), + ); + myAggsFilter = myAggsFilter.concat( + terms_of_selected_options_without_self, + ); + + // So far + let res = myAggsFilter + ? { + bool: { + must: myAggsFilter, + }, + } + : null; + + if (fieldName !== 'section') { + if (section) { + if (section[1] === 'others') { + res = res || { + bool: {}, + }; + res.bool.must_not = [ + { + terms: { + section: this.search_sections.items.map((el) => { + return el.section; + }), + }, + }, + ]; + } else { + // // Must section + // res = res || { + // bool: { + // must: [], + // }, + // }; + // res.bool.must.push([section[1]]); + } + } + } + + return res; + }; + + bodyParams['aggs'] = {}; + let aggregations = Object.keys(this.facet_fields); + aggregations.push('section'); + aggregations.forEach((fieldName) => { + let aggName = `${fieldName}_agg`; + let field = fieldName; + if (fieldName === 'Subject') { + field = 'subjects.keyword'; + aggName = 'subjects_agg'; + } + if (fieldName === 'section') { + field = 'section'; + } + let aggBucketTermsComponent = { + [aggName]: { + aggs: { + [aggName]: { + terms: { + field: `${field}`, + order: { + _key: 'asc', + }, + size: 500, // number of buckets + }, + }, + somemoredatafromelasticsearch: { + top_hits: { + size: 1, + _source: { includes: [field] }, + }, + }, + }, + }, + }; + const filter_fieldname = filter(fieldName); + if (filter_fieldname) { + aggBucketTermsComponent[aggName].filter = filter_fieldname; + } + extend(bodyParams['aggs'], aggBucketTermsComponent); + }); + + return bodyParams; + }; +} diff --git a/packages/volto-searchkit-block/src/components/Searchkit/CustomESResponseSerializer.jsx b/packages/volto-searchkit-block/src/components/Searchkit/CustomESResponseSerializer.jsx new file mode 100644 index 00000000..cf770b3d --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/CustomESResponseSerializer.jsx @@ -0,0 +1,46 @@ +function _pimpedAggregations(aggregations) { + let result = Object.assign({}, aggregations); + let buckets = []; + Object.keys(result).forEach((element) => { + if (result[element] && result[element][element].buckets) { + result[element].buckets = result[element][element].buckets; + buckets = result[element].buckets; + } else { + buckets = []; + } + buckets && + buckets.forEach((bucket) => { + bucket.label = + bucket.somemoredatafromelasticsearch?.hits.hits[0]._source.title ?? + bucket.key; + }); + }); + + return result; +} + +export class CustomESResponseSerializer { + constructor(config) { + this.serialize = this.serialize.bind(this); + } + + /** + * Return a serialized version of the API backend response for the app state `results`. + * @param {object} payload the backend response payload + */ + + serialize(payload) { + const { aggregations, hits } = payload; + const foo = { + aggregations: _pimpedAggregations(aggregations) || {}, + hits: + hits?.hits.map((hit) => { + // TODO Replace hack: Add highlights to _source data + hit._source['highlight'] = hit.highlight; + return hit._source; + }) || [], + total: hits?.total.value || 0, + }; + return foo; + } +} diff --git a/packages/volto-searchkit-block/src/components/Searchkit/ESSearchApi.jsx b/packages/volto-searchkit-block/src/components/Searchkit/ESSearchApi.jsx new file mode 100644 index 00000000..a9b20c1d --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/ESSearchApi.jsx @@ -0,0 +1,74 @@ +import _get from 'lodash/get'; +import _hasIn from 'lodash/hasIn'; +import { CustomESRequestSerializer } from './CustomESRequestSerializer'; +import { CustomESResponseSerializer } from './CustomESResponseSerializer'; + +export class PloneSearchApi { + constructor(config) { + this.fetchConfig = _get(config, 'fetchPayload', {}); + this.validateFetchConfig(); + this.initSerializers(config); + this.search = this.search.bind(this); + // this.elastic_search_api_url = config.elastic_search_api_url; + // this.elastic_search_api_index = config.elastic_search_api_index; + } + + validateFetchConfig() { + if (!_hasIn(this.fetchConfig, 'url')) { + throw new Error('PloneSearchApi config: `url` is required.'); + } + } + + initSerializers(config) { + const requestSerializerCls = _get( + config, + 'es.requestSerializer', + CustomESRequestSerializer, + ); + const responseSerializerCls = _get( + config, + 'es.responseSerializer', + CustomESResponseSerializer, + ); + + this.requestSerializer = new requestSerializerCls({ + searchedFields: config.searchedFields, + facet_fields: config.facet_fields, + allowed_content_types: config.allowed_content_types, + allowed_review_states: config.allowed_review_states, + search_sections: config.search_sections, + language: config.language, + }); + this.responseSerializer = new responseSerializerCls({}); + } + + /** + * Perform the backend request to search and return the serialized list of results for the app state `results`. + * @param {string} stateQuery the `query` state with the user input + */ + async search(stateQuery) { + const payload = this.requestSerializer.serialize(stateQuery); + // Extend paylod with url and index to address elasticsearch server + try { + const response = await fetch(this.fetchConfig.url, { + method: 'POST', + headers: this.fetchConfig.headers, + body: JSON.stringify({ + elasticsearch_payload: payload, + // elasticsearch_url: this.elastic_search_api_url, + // elasticsearch_index: this.elastic_search_api_index, + }), + }); + // let results = await this.responseSerializer.serialize(response.data); + let results = await response.json(); + if (results.message) { + throw results; + // throw new Error(`${results.type} ${results.message}`); + } + results = this.responseSerializer.serialize(results); + return results; + } catch (error) { + throw error; + } + } +} diff --git a/packages/volto-searchkit-block/src/components/Searchkit/ElasticSearchHighlights.jsx b/packages/volto-searchkit-block/src/components/Searchkit/ElasticSearchHighlights.jsx new file mode 100644 index 00000000..3099e628 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/ElasticSearchHighlights.jsx @@ -0,0 +1,120 @@ +/** + * Component to show matches per document + * fragment_size is set in CustomESRequestSerializer + */ +import React from 'react'; +import { useIntl } from 'react-intl'; +import messages from '../../messages'; + +export const ElasticSearchHighlights = ({ highlight }) => { + const [toggleDetails, setToggleDetails] = React.useState(false); + + const intl = useIntl(); + + let fieldmapping = { + title: intl.formatMessage(messages.title), + description: intl.formatMessage(messages.description), + subjects: intl.formatMessage(messages.tags), + freemanualtags_searchable: intl.formatMessage(messages.tags), + blocks_plaintext: intl.formatMessage(messages.content), + manualfilecontent: intl.formatMessage(messages.content), + }; + + const showDetails = () => { + setToggleDetails(!toggleDetails); + }; + + const fragments = getFragments(highlight); + if (highlight) { + return !toggleDetails ? ( +
+ {fragments.slice(0, 3).map((el, index) => { + return
; + })} +
+ ) : ( +
+ {Object.keys(highlight) + .reverse() + .map((fld) => { + return ( +
+
+ Matches in {fieldmapping[fld] || fld}: +
+
    + {highlight[fld].map((el, index) => { + return ( +
  • + ); + })} +
+
+ ); + })} +
+ ); + } else { + return null; + } +}; + +/** + * Get fragments of matches in a document + * @param {Object} highlight. part of response of Elasticsearch query + * @returns {Array} Array of strings + */ +export const getFragments = (highlight) => { + let fragments = []; + highlight && + Object.keys(highlight) + .reverse() + .forEach((fld) => { + highlight[fld].forEach((mtch) => { + fragments.push(mtch); + }); + }); + return fragments; +}; + +/** + * Get matches in a document + * @param {Object} highlight. part of response of Elasticsearch query + * @returns {Array} Array of strings + */ +export const getMatches = (highlight) => { + const regex = /(.*?)<\/em>/gm; + let fragments = getFragments(highlight); + let matches = []; + fragments.forEach((fragment) => { + const fragmentmatches = [...fragment.matchAll(regex)]; + matches = matches.concat(fragmentmatches.map((match) => match[1])); + }); + matches = [...new Set(matches)]; + return matches; +}; + +export const ElasticSearchMatches = ({ highlight, indexResult }) => { + const matches = getMatches(highlight); + return ( +
+ {matches.length > 0 && matches: } + {matches.join(' | ')} +
+ ); +}; diff --git a/packages/volto-searchkit-block/src/components/Searchkit/Error.jsx b/packages/volto-searchkit-block/src/components/Searchkit/Error.jsx new file mode 100644 index 00000000..cf1ba620 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/Error.jsx @@ -0,0 +1,20 @@ +import { Header, Segment } from 'semantic-ui-react'; +import { FormattedMessage } from 'react-intl'; + +const Error = ({ error }) => { + return error?.type ? ( + +
+

+ +

+
+ {error?.type}: {error?.message} +
+ ) : null; +}; + +export default Error; diff --git a/packages/volto-searchkit-block/src/components/Searchkit/Error.test.js b/packages/volto-searchkit-block/src/components/Searchkit/Error.test.js new file mode 100644 index 00000000..2608ece0 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/Error.test.js @@ -0,0 +1,36 @@ +import React from 'react'; +import renderer from 'react-test-renderer'; +import configureStore from 'redux-mock-store'; +import { Provider } from 'react-intl-redux'; +import { MemoryRouter } from 'react-router-dom'; + +import Error from './Error'; + +beforeAll(() => {}); + +const mockStore = configureStore(); + +describe('Generic Error', () => { + it('renders a simple error component', () => { + const store = mockStore({ + intl: { + locale: 'en', + messages: {}, + }, + }); + const component = renderer.create( + + + + + , + ); + const json = component.toJSON(); + expect(json).toMatchSnapshot(); + }); +}); diff --git a/packages/volto-searchkit-block/src/components/Searchkit/LICENSE_Cern_react-searchkit.md b/packages/volto-searchkit-block/src/components/Searchkit/LICENSE_Cern_react-searchkit.md new file mode 100644 index 00000000..19aa587f --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/LICENSE_Cern_react-searchkit.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (C) 2015-2019 CERN. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/volto-searchkit-block/src/components/Searchkit/Results.js b/packages/volto-searchkit-block/src/components/Searchkit/Results.js new file mode 100644 index 00000000..0516f354 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/Results.js @@ -0,0 +1,80 @@ +import React, { Component } from 'react'; +import { Grid } from 'semantic-ui-react'; +import { + Count, + Pagination, + ResultsMultiLayout, + Sort, + withState, +} from 'react-searchkit'; + +import config from '@plone/volto/registry'; + +// TODO conditional Matomo tracking: catch case if app has not volto-matomo installed +import { trackSiteSearch } from '@eeacms/volto-matomo/utils'; + +import { scrollToTarget } from '../helpers'; + +class Results extends Component { + componentDidMount() { + // Dispatch event (on query change), other add-ons can subscribe to. + var evt = new CustomEvent('searchkitQueryChanged', {}); + window && window.dispatchEvent(evt); + if ( + config.settings.searchkitblock.trackVoltoMatomo && + this.props.currentQueryState.queryString + ) { + const options = { + ...config.settings.searchkitblock.trackSiteSearchOptions, + keyword: this.props.currentQueryState.queryString, + count: this.props.currentResultsState.data.total, + }; + trackSiteSearch(options); + } + } + + render() { + const { total } = this.props.currentResultsState.data; + return total ? ( +
+ + + + + + <> {cmp}} + overridableId="volto" + /> + + + + + + + + +
+ ) : null; + } +} + +Results.propTypes = {}; + +Results.defaultProps = {}; + +const MyResults = (props) => { + // Add scroll to search input field + React.useEffect(() => { + const el = document.querySelector('.searchkitsearch'); + if (el) { + scrollToTarget(el); + } + }, []); + + return ; +}; + +export const OnResults = withState(MyResults); diff --git a/packages/volto-searchkit-block/src/components/Searchkit/ResultsLoader.jsx b/packages/volto-searchkit-block/src/components/Searchkit/ResultsLoader.jsx new file mode 100644 index 00000000..64663564 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/ResultsLoader.jsx @@ -0,0 +1,12 @@ +import { Loader } from 'semantic-ui-react'; + +function ResultsLoaderComponent() { + return ( + <> + +
+ + ); +} + +export default ResultsLoaderComponent; diff --git a/packages/volto-searchkit-block/src/components/Searchkit/SearchBarSection.jsx b/packages/volto-searchkit-block/src/components/Searchkit/SearchBarSection.jsx new file mode 100644 index 00000000..7c4917d4 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/SearchBarSection.jsx @@ -0,0 +1,51 @@ +import { useIntl } from 'react-intl'; +import { Icon as IconSemantic } from 'semantic-ui-react'; +import { onQueryChanged, SearchBar, withState } from 'react-searchkit'; + +import messages from '../../messages'; + +const _SearchBarSection = (props) => { + const intl = useIntl(); + + const payloadOfReset = { + searchQuery: { + sortBy: 'bestmatch', + sortOrder: 'asc', + layout: 'list', + page: 1, + size: props.currentQueryState.data.batchSize, + queryString: '', + }, + }; + + const onResetHandler = (event) => { + onQueryChanged(payloadOfReset); + }; + + return ( +
+ + onResetHandler(event)} + /> +
+ ); +}; + +export default withState(_SearchBarSection); diff --git a/packages/volto-searchkit-block/src/components/Searchkit/SectionsSearch.jsx b/packages/volto-searchkit-block/src/components/Searchkit/SectionsSearch.jsx new file mode 100644 index 00000000..70b7b65d --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/SectionsSearch.jsx @@ -0,0 +1,156 @@ +import React from 'react'; +import { isEmpty, keyBy } from 'lodash'; +import { withState } from 'react-searchkit'; +import { BodyClass } from '@plone/volto/helpers'; +// import StateLogger from '../StateLogger'; + +const _SectionsSearch = (props) => { + const { + allow_search_excluded_sections, + show_filter_for_excluded_sections, + search_sections, + currentQueryState, + updateQueryState, + } = props; + + // State + const [activeSection, setActiveSection] = React.useState('all'); + + // Helpers + const search_sections_dict = keyBy(search_sections?.items || [], (el) => { + return el.section; + }); + + let doc_count_others = 0; + let doc_count_all = 0; + + if ( + props.currentResultsState.data.aggregations.section_agg?.section_agg + ?.buckets + ) { + const buckets = + props.currentResultsState.data.aggregations.section_agg?.section_agg + ?.buckets; + let bucket_dict = {}; + buckets.forEach((el) => { + bucket_dict[el.key] = el.doc_count; + }); + + // calculate doc_counts of others and all + let count_others = 0; + let count_all = 0; + Object.keys(bucket_dict).forEach((el) => { + if (!Object.keys(search_sections_dict).includes(el)) { + count_others = count_others + bucket_dict[el]; + } + }); + Object.keys(bucket_dict).forEach((el) => { + count_all = count_all + bucket_dict[el]; + }); + doc_count_others = count_others; + doc_count_all = count_all; + } + + React.useEffect(() => { + const filters_dictionary = keyBy(currentQueryState.filters, (el) => { + return el[0]; + }); + setActiveSection( + filters_dictionary.section ? filters_dictionary.section[1] : 'all', + ); + }, [currentQueryState]); + + const restrictSearchToSection = (section) => { + setActiveSection(section); + let kitquerystate = { + sortBy: 'modified', + sortOrder: 'desc', + layout: 'list', + page: 1, + size: props.currentQueryState.data.batchSize, + filters: currentQueryState.filters, + }; + if (currentQueryState.queryString) { + kitquerystate.queryString = currentQueryState.queryString; + } + + // Empty filters for sections without filter + if ( + (search_sections_dict[section] && + !search_sections_dict[section].show_filter) || + (section === 'others' && !show_filter_for_excluded_sections) + ) { + kitquerystate.filters = []; + } + // Replace filter 'section' + kitquerystate.filters = kitquerystate.filters.filter((el) => { + return el[0] !== 'section'; + }); + if (section === 'all') { + // pass + } else if (section === 'others') { + kitquerystate.filters.push(['section', section]); + } else { + kitquerystate.filters.push(['section', section]); + } + // Do search! + updateQueryState(kitquerystate); + }; + + return isEmpty(props.currentResultsState.error) ? ( + <> + +
+ {search_sections?.items?.length > 0 ? ( + + ) : null} + {search_sections?.items?.length > 0 && + allow_search_excluded_sections ? ( + + ) : null} + {search_sections + ? search_sections.items.map((el) => { + return ( + + ); + }) + : null} +
+ {/* */} + + ) : null; +}; + +export default withState(_SectionsSearch); diff --git a/packages/volto-searchkit-block/src/components/Searchkit/__snapshots__/Error.test.js.snap b/packages/volto-searchkit-block/src/components/Searchkit/__snapshots__/Error.test.js.snap new file mode 100644 index 00000000..a78b8382 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Searchkit/__snapshots__/Error.test.js.snap @@ -0,0 +1,23 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`Generic Error renders a simple error component 1`] = ` +
+
+

+ Check the configuration of your searchkit block! +

+
+ + ConnectionError + : + + + + Service pipapo not found. + +
+`; diff --git a/packages/volto-searchkit-block/src/components/StateLogger.jsx b/packages/volto-searchkit-block/src/components/StateLogger.jsx new file mode 100644 index 00000000..c8590d83 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/StateLogger.jsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { withState } from 'react-searchkit'; + +class _StateLogger extends React.Component { + render() { + return ( +
+
+

Current results state

+
{JSON.stringify(this.props.currentResultsState, null, 2)}
+
+
+

Current query state

+
{JSON.stringify(this.props.currentQueryState, null, 2)}
+
+
+ ); + } +} + +const StateLogger = withState(_StateLogger); + +export default StateLogger; diff --git a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx new file mode 100644 index 00000000..8096645a --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx @@ -0,0 +1,826 @@ +import React from 'react'; +import { compact, truncate } from 'lodash'; +import cx from 'classnames'; +import Cookies from 'universal-cookie'; +import { createPortal } from 'react-dom'; +import { useSelector } from 'react-redux'; +import { Link } from 'react-router-dom'; +import { FormattedMessage, useIntl } from 'react-intl'; + +import { OverridableContext } from 'react-overridable'; + +import { + Button, + Container, + Dropdown, + Grid, + Header, + Icon as IconSemantic, + Item, + Label, + Pagination as Paginator, + Segment, +} from 'semantic-ui-react'; +import { + BucketAggregation, + EmptyResults, + onQueryChanged, + ReactSearchKit, + ResultsLoader, + withState, + Error as ErrorCp, +} from 'react-searchkit'; + +import { expandToBackendURL } from '@plone/volto/helpers'; +import { FormattedDate, Icon } from '@plone/volto/components'; +import leftAngle from '@plone/volto/icons/left-key.svg'; +import rightAngle from '@plone/volto/icons/right-key.svg'; +import firstAngle from '@plone/volto/icons/first.svg'; +import lastAngle from '@plone/volto/icons/last.svg'; +import clearSVG from '@plone/volto/icons/clear.svg'; + +import messages from '../../messages'; +import { flattenESUrlToPath, getObjectFromObjectList } from '../helpers'; + +import { PloneSearchApi } from '../Searchkit/ESSearchApi'; +import { CustomESRequestSerializer } from '../Searchkit/CustomESRequestSerializer'; +import { CustomESResponseSerializer } from '../Searchkit/CustomESResponseSerializer'; +import { OnResults } from '../Searchkit/Results'; +import SectionsSearch from '../Searchkit/SectionsSearch'; +import SearchBarSection from '../Searchkit/SearchBarSection'; +import MyResultsLoaderElement from '../Searchkit/ResultsLoader'; + +import { ElasticSearchHighlights } from '../Searchkit/ElasticSearchHighlights'; +import ErrorComponent from '../Searchkit/Error'; +// import StateLogger from '../StateLogger'; + +import './less/springisnow-volto-searchkit-block.less'; + +import config from '@plone/volto/registry'; + +/** + * + * @param {Object} querystringindexes + * @param {String} fieldname One of the indexes + * @param {String} key to be translated + * @returns {String} + */ +const translate = (querystringindexes, fieldname, key) => { + let label = key; + if (querystringindexes && fieldname in querystringindexes) { + label = querystringindexes[fieldname].values[key]?.title || key; + } + return label; +}; + +// TODO Make reviewstatemapping configurable +export const ploneSearchApi = (data, language) => { + const cookies = new Cookies(); + const authToken = cookies.get('auth_token'); + + return new PloneSearchApi({ + fetchPayload: { + url: expandToBackendURL('/@kitsearch'), + timeout: 5000, + headers: { + Accept: 'application/json', + Authorization: `Bearer ${authToken}`, + }, + }, + es: { + requestSerializer: CustomESRequestSerializer, + responseSerializer: CustomESResponseSerializer, + }, + searchedFields: data.searchedFields || ['title'], + facet_fields: data.facet_fields, + allowed_content_types: data.allowed_content_types, + allowed_review_states: data.allowed_review_states, + search_sections: data.search_sections, + language: language, + // elastic_search_api_url: data.elastic_search_api_url, + // elastic_search_api_index: data.elastic_search_api_index, + }); +}; + +const _ExtraInfo = (props) => { + const { result } = props; + + const extrainfo_fields = getObjectFromObjectList( + props.currentQueryState.data.extrainfo_fields, + ); + const facet_fields = getObjectFromObjectList( + props.currentQueryState.data.facet_fields, + ); + let subjectsFieldname = props.currentQueryState.data?.subjectsFieldname; // "subjects"; + + const querystringindexes = useSelector( + (state) => state.query?.querystringindexes, + ); + + return ( + + {Object.keys(extrainfo_fields).map((extrainfo_key, idx) => { + if (!result[extrainfo_key]) { + return null; + } + const extrainfo_value = Array.isArray(result[extrainfo_key]) + ? result[extrainfo_key] + : [result[extrainfo_key]]; + + return Object.keys(facet_fields).includes(extrainfo_key) ? ( + + {extrainfo_fields[extrainfo_key]}: + {extrainfo_value?.map((item, index) => { + let tito = translate(querystringindexes, extrainfo_key, item); + let payloadOfFilter = { + searchQuery: { + sortBy: 'bestmatch', + sortOrder: 'asc', + layout: 'list', + page: 1, + size: props.currentQueryState.data.batchSize, + filters: [[`${extrainfo_key}_agg`, item]], + }, + }; + return ( + + ); + })} + {idx < Object.keys(extrainfo_fields).length - 1 && ( + | + )} + + ) : ( + + {extrainfo_fields[extrainfo_key]}: + {extrainfo_value?.map((item, index) => { + let tito = item.title || item.token || item; + return ( + + {tito} + {index < extrainfo_value.length - 1 ? ',' : null} + + ); + })} + {idx < Object.keys(extrainfo_fields).length - 1 && ( + | + )} + + ); + })} + + {Array.isArray(result[subjectsFieldname]) && + result[subjectsFieldname]?.length > 0 ? ( +
+ + : + + {result[subjectsFieldname]?.map((item, index) => { + let tito = item; + let payloadOfTag = { + searchQuery: { + sortBy: 'bestmatch', + sortOrder: 'asc', + layout: 'list', + page: 1, + size: props.currentQueryState.data.batchSize, + queryString: tito, + }, + }; + return ( + + ); + })} +
+ ) : null} +
+ ); +}; + +const ExtraInfo = withState(_ExtraInfo); + +const _CustomResultsListItem = (props) => { + const { result } = props; + const item_url = flattenESUrlToPath(result['@id']); + const is_external_content = item_url.startsWith('https'); + const locale = useSelector((state) => state.query?.locale); + const querystringindexes = useSelector( + (state) => state.query?.querystringindexes, + ); + const showNewsItemPublishedDate = useSelector( + (state) => state.query?.data.showNewsItemPublishedDate, + ); + const showEventStartDate = useSelector( + (state) => state.query?.data.showEventStartDate, + ); + + return ( + + + {Array.isArray(result.informationtype) && + result.informationtype?.length > 0 ? ( + + {result.informationtype?.map((item, index) => { + let tito = translate(querystringindexes, 'informationtype', item); + const payload = { + searchQuery: { + sortBy: 'bestmatch', + sortOrder: 'asc', + layout: 'list', + page: 1, + size: props.currentQueryState.data.batchSize, + filters: [['informationtype_agg', item]], + }, + }; + return ( + + ); + })} + + ) : null} + {result.head_title ? {result.head_title} : null} + {is_external_content ? ( + +
+ {result.title} + + {showNewsItemPublishedDate.includes(result.portal_type) && + result.effective ? ( + + + + ) : null} + {showEventStartDate.includes(result.portal_type) && result.start ? ( + + + + ) : null} + + + {truncate(result.description, { length: 200 })} + + + + ) : ( + + + {result.title} + + {showNewsItemPublishedDate?.includes(result.portal_type) && + result.effective ? ( + + + + ) : null} + {showEventStartDate?.includes(result.portal_type) && + result.start ? ( + + + + ) : null} + + + {truncate(result.description, { length: 200 })} + + + + )} + + + + + ); +}; + +const CustomResultsListItem = withState(_CustomResultsListItem); + +const MyCountElement = ({ totalResults }) => { + const intl = useIntl(); + let labelSearchResults = intl.formatMessage(messages.searchresult); + let labelSearchResultsPlural = intl.formatMessage(messages.searchresults); + return ( +
+ {totalResults}{' '} + {totalResults === 1 ? labelSearchResults : labelSearchResultsPlural} +
+ ); +}; + +const myActiveFiltersElement = (props) => { + const { filters, removeActiveFilter, getLabel } = props; + return ( + <> + {filters.map((filter, index) => { + const { label, activeFilter } = getLabel(filter); + return ( + + ); + })} + + ); +}; + +/** + * CustomBucketAggregationElement + * One single Filter of Faceted Navigation + * props.agg.field: field name + */ +const CustomBucketAggregationElement = (props) => { + const { title, containerCmp, updateQueryFilters } = props; + const fieldname = props.agg.field; + const querystringindexes = useSelector( + (state) => state.query?.querystringindexes, + ); + + /** + * Translate labels according vocabulary + * @param {*} bucks + * @returns + */ + const translateBuckets = (bucks) => { + if (querystringindexes && fieldname in querystringindexes) { + bucks.forEach((element) => { + element.label = + querystringindexes[fieldname].values[element.key]?.title || + element.key; + }); + } + return bucks; + }; + + // Get label from token + let buckets = containerCmp.props.buckets; + buckets = translateBuckets(buckets); + let filter_labels_dict = Object.fromEntries( + Array.from(buckets, (x) => [x.key, x.label]), // TODO Translate label + ); + // List of labels of selected options + let selectedFilters = containerCmp.props.selectedFilters + .map((el) => el[1]) + .map((token) => filter_labels_dict[token]); + selectedFilters = compact(selectedFilters); + // List of all available options + let all_filters = containerCmp.props.buckets.map((el) => { + return [containerCmp.props.aggName, el.key]; + }); + + const removeAggFilters = (event) => { + if (containerCmp.props.selectedFilters.length) { + updateQueryFilters(containerCmp.props.selectedFilters); + } + event.preventDefault(); + event.stopPropagation(); + }; + + const selectAllAggFilters = (event) => { + // toggle! updateQueryFilters toggles filter selection + if (containerCmp.props.selectedFilters.length) { + updateQueryFilters(containerCmp.props.selectedFilters); + } + updateQueryFilters(all_filters); + + event.preventDefault(); + event.stopPropagation(); + }; + + const dropdowntitle = + title || + fieldname + + (selectedFilters.length > 0 ? ` [${selectedFilters.length}]` : ''); + + return containerCmp ? ( +
+ 9, + })} + > + + + selectAllAggFilters(e)} + onKeyDown={(e) => selectAllAggFilters(e)} + role="option" + aria-selected="false" + tabIndex="0" + className="select_all" + > + + {' '} + /{' '} + removeAggFilters(e)} + onKeyDown={(e) => removeAggFilters(e)} + role="option" + aria-selected="false" + tabIndex="0" + className="deselect_all" + > + {' '} + + + + {containerCmp} + + + {/* removeAggFilters(e)} + /> */} +
+ ) : null; +}; + +function choicesSorter(a, b) { + const titleA = a.props.bucket.label; + const titleB = b.props.bucket.label; + if (titleA < titleB) { + return -1; + } else if (titleA > titleB) { + return 1; + } + return 0; +} +const CustomBucketAggregationContainerElement = ({ valuesCmp }) => { + let foo = valuesCmp; + foo.sort(choicesSorter); + return <>{foo}; +}; + +const CustomBucketAggregationValuesElement = (props) => { + const { + bucket, + keyField, + isSelected, + onFilterClicked, + childAggCmps, + // updateQueryState, + // currentQueryState, + } = props; + const label = bucket.label + ? `${bucket.label} (${bucket.doc_count})` + : `${keyField} (${bucket.doc_count})`; + + const onFilterClickedCustom = (filter, event) => { + onFilterClicked(filter); + + event.preventDefault(); + event.stopPropagation(); + }; + + return ( + + {isSelected ? ( + onFilterClickedCustom(bucket.key, event)} + className={isSelected ? 'isSelected right floated' : 'right floated'} + key={`${bucket.key}-description`} + > + + + ) : null} + onFilterClickedCustom(bucket.key, event)} + className={isSelected ? 'isSelected' : ''} + key={bucket.key} + > + {label} + + {childAggCmps} + + ); +}; + +const customEmpytResultsElement = (props) => { + const { resetQuery } = props; + return ( + +
+ +
+ +
+ ); +}; + +const customSort = ({ + currentSortBy, + currentSortOrder, + options, + onValueChange, +}) => { + const selected = currentSortBy.concat('-', currentSortOrder); + return ( +
+ + + {' '} + + +
+ ); +}; + +const customPaginationElement = (props) => { + const { currentPage, currentSize, totalResults, onPageChange, options } = + props; + const pages = Math.ceil(totalResults / currentSize); + const boundaryRangeCount = options.boundaryRangeCount; + const siblingRangeCount = options.siblingRangeCount; + const showEllipsis = options.showEllipsis; + const showFirst = options.showFirst; + const showLast = options.showLast; + const showPrev = options.showPrev; + const showNext = options.showNext; + const size = options.size || 'massive'; + const _onPageChange = (event, { activePage }) => { + onPageChange(activePage); + }; + + return pages > 1 ? ( + , + icon: true, + } + : null + } + firstItem={ + showFirst + ? { + content: , + icon: true, + } + : null + } + lastItem={ + showLast + ? { + content: , + icon: true, + } + : null + } + prevItem={ + showPrev + ? { + content: , + icon: true, + } + : null + } + nextItem={ + showNext + ? { + content: , + icon: true, + } + : null + } + size={size} + /> + ) : null; +}; + +const sortValues = [ + { + text: 'Relevanz', + sortBy: 'bestmatch', + sortOrder: 'asc', + }, + { + text: 'Neueste', + sortBy: 'modified', + sortOrder: 'desc', + }, + // { + // text: 'Alphabetisch', + // sortBy: 'sortable_title.keyword', + // sortOrder: 'asc', + // }, +]; + +/** + * FacetedSearch + * @param {string} filterLayout default 'dropdown' + * @param {object} overriddenComponents Override with custom components, ignore to stay with default 'dropdown' or step back to react-searchkit default components with value {} + * @returns + */ +const FacetedSearch = ({ data, overriddenComponents }) => { + const { + facet_fields, + allow_search_excluded_sections, + show_filter_for_excluded_sections, + relocation, + filterLayout, + search_sections, + } = data; + + const querystringindexes = useSelector((state) => state.querystring?.indexes); + + let facet_fields_object = getObjectFromObjectList(facet_fields); + if ('Subject' in facet_fields_object) { + facet_fields_object.subjects = facet_fields_object.Subject; + delete facet_fields_object.Subject; + } + + // TODO Get config from blocks data + const initialState = { + page: 1, + queryString: '', + sortBy: 'modified', + sortOrder: 'desc', + size: data.batchSize, + layout: 'list', + }; + + const defaultOverriddenComponents = { + 'ResultsList.item.elasticsearch': CustomResultsListItem, + 'Count.element': MyCountElement, + 'ActiveFilters.element': myActiveFiltersElement, + 'EmptyResults.element': customEmpytResultsElement, + 'Sort.element.volto': customSort, + 'Pagination.element': customPaginationElement, + 'Error.element': ErrorComponent, + 'ResultsLoader.element': MyResultsLoaderElement, + }; + + const dropdownOverriddenComponents = { + 'BucketAggregation.element': CustomBucketAggregationElement, + 'BucketAggregationContainer.element': + CustomBucketAggregationContainerElement, + 'BucketAggregationValues.element': withState( + CustomBucketAggregationValuesElement, + ), + }; + + overriddenComponents = { + ...defaultOverriddenComponents, + ...(filterLayout === 'dropdown' && dropdownOverriddenComponents), + ...(config.settings.searchkitblock.overriddenComponents && + config.settings.searchkitblock.overriddenComponents), + }; + + // TODO Check if check on client could be made simpler + const locale = useSelector((state) => state.intl.locale); + const [isClient, setIsClient] = React.useState(null); + React.useEffect(() => setIsClient(true), []); + + return ( + + {isClient && ( + + + + {typeof document !== 'undefined' && relocation?.length > 0 ? ( + createPortal( + , + true && + document.querySelectorAll(relocation) && + document.querySelectorAll(relocation)[0], + ) + ) : ( + + + + + + + + )} + + + + + + + + + +
+ {Object.keys(facet_fields_object)?.map((facet) => ( + + ))} +
+
+
+ + + + + + + + {/* */} + + +
+
+
+
+ )} +
+ ); +}; + +export default FacetedSearch; diff --git a/packages/volto-searchkit-block/src/components/Views/TestSearchkitQuerystrings.jsx b/packages/volto-searchkit-block/src/components/Views/TestSearchkitQuerystrings.jsx new file mode 100644 index 00000000..a772f2ed --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Views/TestSearchkitQuerystrings.jsx @@ -0,0 +1,225 @@ +import React from 'react'; +import { useIntl } from 'react-intl'; +import { createPortal } from 'react-dom'; +import { Container, Header, Segment } from 'semantic-ui-react'; +import { useHistory } from 'react-router'; +import { Link, useLocation } from 'react-router-dom'; +import { useSelector } from 'react-redux'; +import { OverridableContext } from 'react-overridable'; +import { Icon, Toolbar } from '@plone/volto/components'; +import { getParentUrl } from '@plone/volto/helpers'; +import backSVG from '@plone/volto/icons/back.svg'; + +import { + onQueryChanged, + ReactSearchKit, + SearchBar, + withState, + ResultsMultiLayout, + Count, +} from 'react-searchkit'; +import { flattenESUrlToPath } from '../helpers'; +import { ploneSearchApi } from './FacetedSearch'; +import { ElasticSearchMatches } from '../Searchkit/ElasticSearchHighlights'; +import messages from '../../messages'; + +import config from '@plone/volto/registry'; + +const sort_caseinsensitive = (a, b) => { + var nameA = a.toUpperCase(); // Groß-/Kleinschreibung ignorieren + var nameB = b.toUpperCase(); // Groß-/Kleinschreibung ignorieren + if (nameA < nameB) { + return -1; + } + if (nameA > nameB) { + return 1; + } + return 0; +}; + +const _OnHighlights = (props) => { + let location = useLocation(); + let highlights = props.currentResultsState; + let hits = highlights.data.hits; + + const regex = /(.*?)<\/em>/gm; + let fragments = []; + hits.map((hit) => { + hit.highlight = hit.highlight || []; + Object.keys(hit.highlight).forEach((fld) => { + hit.highlight[fld].forEach((highlightfragment) => { + fragments.push(highlightfragment); + }); + }); + return null; + }); + let matches = new Set(); + fragments.forEach((txt) => { + let result = [...txt.matchAll(regex)]; + result.forEach((match) => { + matches.add(match[1]); + }); + }); + let matches_sorted = Array.from(matches); + matches_sorted.sort(sort_caseinsensitive); + return ( +
+ {matches_sorted.length > 0 && ( +
{matches_sorted.length} matches found:
+ )} + {matches_sorted.map((match) => ( + + ))} +
+ ); +}; +const OnHighlights = withState(_OnHighlights); + +const OnResults = withState(ResultsMultiLayout); + +const CustomResultsListItem = ({ result, index }) => { + return ( + + ); +}; + +const DocumentsCount = ({ totalResults }) => { + return
{totalResults} documents found:
; +}; + +const overriddenComponents = { + 'ResultsList.item': CustomResultsListItem, + 'Count.element': DocumentsCount, +}; + +const TestSearchkitQuerystrings = (props) => { + const intl = useIntl(); + const history = useHistory(); + const location = useLocation(); + const searchconfig = config.blocks.blocksConfig.searchkitblock.searchconfig; + + const initialState = { + sortBy: 'bestmatch', + sortOrder: 'asc', + // sortBy: 'modified', + // sortOrder: 'desc', + queryString: '', + layout: 'list', + page: 1, + size: 50, + }; + + const onchangehandler = (event, data) => { + let searchQuery = { + ...initialState, + queryString: data.value, + }; + onQueryChanged({ searchQuery: searchQuery }); + return; + }; + + const locale = useSelector((state) => state.intl.locale); + const [isClient, setIsClient] = React.useState(null); + React.useEffect(() => setIsClient(true), []); + + return ( + + + +
+ Matches +
+
+ {isClient && ( + + + <> + + {/* { + onchangehandler(event, data); + }} + /> */} + { + onchangehandler(event, data); + }} + /> + + + + + + + + + + )} +
+ + {isClient && + createPortal( + { + history.push(getParentUrl(location.pathname)); + }} + > + + + } + />, + document.getElementById('toolbar'), + )} +
+ ); +}; + +export default TestSearchkitQuerystrings; diff --git a/packages/volto-searchkit-block/src/components/Views/less/springisnow-volto-searchkit-block.less b/packages/volto-searchkit-block/src/components/Views/less/springisnow-volto-searchkit-block.less new file mode 100644 index 00000000..d06a1ae1 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/Views/less/springisnow-volto-searchkit-block.less @@ -0,0 +1,296 @@ +/* + * @rohberg/volto-searchkit-block + * springisnow-volto-searchkit-block.less + */ + +@type: 'extra'; +@element: 'custom'; + +@import (multiple) '../../theme.config'; + +.fnresults .ui.items > .item { + &.private > .content > a.header { + color: red; + } + + button, + .ui.button { + padding: 0; + border: none; + margin: 0.25rem 0.1rem 0.25rem 0em; + background-color: transparent; + color: rgba(0, 0, 0, 0.6); + cursor: pointer; + font-weight: bold; + + &:hover { + background-color: transparent; + } + } + + .extra { + color: @textColor; + + .label { + margin-right: 0.5em; + } + } +} + +.searchbar-wrapper { + display: flex; + align-items: stretch; + + .ui.fluid.action.input { + width: 50%; + @media only screen and (max-width: 767px) { + width: 100%; + } + + & > input { + width: unset !important; + flex: 1; + border-color: rgba(0, 0, 0, 0.13) !important; + border-radius: 0; + + &:focus { + border-color: #85b7d9 !important; + } + } + } + + .button { + border-radius: 0; + } + // Search button + .ui.action.input > button.ui.button { + display: none; + } + + .icon.delete { + display: flex; + width: 3rem; + min-width: 3rem; + height: 3rem; + align-items: center; + justify-content: center; + margin: 0; + background-color: #878686; + color: #fff; + cursor: pointer; + font-size: 1.2rem; + font-weight: 700; + + &.unselected { + opacity: 0; + } + } +} + +// .ui.grid > .row > .column.facetedsearch_filter { +.facetedsearch_filter { + opacity: 1; + transition: + opacity 1s, + visibility 1s; + visibility: visible; + + &.cards { + display: flex; + flex-direction: row; + flex-wrap: wrap; + align-items: baseline; + justify-content: space-evenly; + + .ui.card { + margin: 1em 0.5em 1em 0em; + } + } + + &.dropdown { + .bucketaggregations { + display: grid; + width: 100%; + gap: 10px; + grid-template-columns: 1fr 1fr; + @media only screen and (max-width: 767px) { + grid-template-columns: 1fr; + } + + .bucketAE { + display: flex; + flex-direction: row; + align-items: flex-start; + justify-content: space-between; + // width: 50%; + .ui.dropdown.fnfilter { + display: flex; + min-height: 3rem; + align-items: center; + justify-content: space-between; + // padding: 0 0 0 .3rem; + padding: 0.7rem 1rem 0.4rem 1rem; + margin: 0; + background-color: #edf1f2; + font-family: @fontName; + font-size: 1rem; + + & > .dropdown.icon { + font-size: 1rem; + } + + &.selected { + background-color: #c4d5da; + color: @black; + + .text { + max-width: 95%; + } + } + + .menu { + width: 100%; + border: none; + background-color: #edf1f2; + box-shadow: none; + + & > .item { + padding: 0.4rem 1.4rem 0.4rem 1rem !important; + line-height: 1.4em; + // color: @white; + & .item.isSelected { + font-weight: bold; + + svg { + stroke: currentColor; + stroke-width: 3px; + } + } + } + } + + div.visible .menu { + display: block !important; + visibility: visible !important; + } + + // Hack for dropdown with scrollbar + &.scrolloptions { + .menu > .item { + padding-right: 0.9rem !important; + } + } + } + + .deleteFilter { + display: flex; + width: 3rem; + min-width: 3rem; + height: 3rem; + align-items: center; + justify-content: center; + margin: 0; + background-color: #878686; + color: #fff; + cursor: pointer; + font-size: 1.2rem; + font-weight: 700; + + &.unselected { + opacity: 0; + } + } + } + } + } +} +// No filter according to block configuration +body.section_without_filter .facetedsearch_filter { + opacity: 0; + visibility: hidden; +} + +.searchsections { + display: flex; + gap: 20px; + + button { + padding: 0.7rem 1rem 0.7rem 1rem; + border: none; + background-color: #f3f1f1; + color: #6e6a6a; + cursor: pointer; + + &.active { + background-color: #dfd8d8; + } + } +} +// Mobile +@media only screen and (max-width: 767px) { + .searchsections { + flex-direction: column; + gap: 0.5rem; + + button { + display: inline-block; + } + } +} + +.countlabel { + font-weight: bold; +} + +.sortby { + display: flex; + align-items: baseline; + gap: 5px; + + .ui.button { + padding: 0; + background-color: transparent; + color: rgba(70, 92, 98, 0.77); + font-weight: normal; + + &.button-active { + color: @textColor; + font-weight: bold; + } + + &:hover { + background-color: transparent; + color: @textColor; + } + } +} + +// No results +.ui.placeholder.segment .search.icon { + display: none; +} + +// Loading results +.resultsPlaceholder { + height: 10rem; +} + +.highlight { + margin-top: 0.5rem; + cursor: zoom-in; + + div { + margin-bottom: 0.5rem; + } + + em { + background-color: #e6f2ce; + } +} + +// debug +body.section-test-searchkit-querystrings { + .ui.segment.top-wrapper { + display: none; + } +} diff --git a/packages/volto-searchkit-block/src/components/helpers.js b/packages/volto-searchkit-block/src/components/helpers.js new file mode 100644 index 00000000..2afa3c84 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/helpers.js @@ -0,0 +1,64 @@ +import React from 'react'; + +class NoSSR extends React.Component { + state = { + isClient: false, + }; + componentDidMount() { + this.setState({ isClient: true }); + } + render() { + const { isClient } = this.state; + const { children } = this.props; + return isClient ? children : null; + } +} + +// TODO replace ugly flattenESUrlToPath hack. Problem Elastic responds with backend Plone url which is host.docker…. +/** + * flatten url to path if internal, else leave it as it is + * @param {String} url + * @returns path + * + * "http://host.docker.internal:17091/Plone/news/sprint-on-accessibility" + * -> + * "/news/sprint-on-accessibility" + */ +function flattenESUrlToPath(url) { + if (url.startsWith('https')) { + // external url + return url; + } + + const urlObj = new URL(url); + const urlArray = urlObj.pathname.split('/').reverse(); + urlArray.pop(); + urlArray.pop(); + const newPathname = `/${urlArray.reverse().join('/')}`; + return newPathname; +} + +const scrollToTarget = (target, offsetHeight = 0) => { + target.scrollIntoView({ + behavior: 'smooth', + }); +}; + +/** + * @param {Array} objlst array of Objects with ... + * @returns Object with fieldname as key and title as value + */ +function getObjectFromObjectList(objlst) { + let obj = {}; + if (!objlst) { + return {}; + } + objlst.forEach((listitem) => { + if (listitem.field) { + obj[listitem.field.value] = listitem.title; + } + }); + return obj; +} + +export { NoSSR, flattenESUrlToPath, scrollToTarget, getObjectFromObjectList }; diff --git a/packages/volto-searchkit-block/src/components/helpers.test.js b/packages/volto-searchkit-block/src/components/helpers.test.js new file mode 100644 index 00000000..1fa8b628 --- /dev/null +++ b/packages/volto-searchkit-block/src/components/helpers.test.js @@ -0,0 +1,22 @@ +import config from '@plone/volto/registry'; + +import { flattenESUrlToPath } from './helpers'; + +beforeEach(() => { + config.settings.legacyTraverse = false; +}); + +describe('helpers', () => { + describe('flattenESUrlToPath', () => { + it('flattens a given URL to the app URL', () => { + expect( + flattenESUrlToPath( + 'http://host.docker.internal:17091/Plone/news/sprint-on-accessibility', + ), + ).toBe('/news/sprint-on-accessibility'); + expect(flattenESUrlToPath('https://nzz.ch/arosa/piste')).toBe( + 'https://nzz.ch/arosa/piste', + ); + }); + }); +}); diff --git a/packages/volto-searchkit-block/src/components/index.js b/packages/volto-searchkit-block/src/components/index.js new file mode 100644 index 00000000..73016cda --- /dev/null +++ b/packages/volto-searchkit-block/src/components/index.js @@ -0,0 +1,9 @@ +import FacetedSearchBlockEdit from './Blocks/FacetedSearchBlockEdit'; +import FacetedSearchBlockView from './Blocks/FacetedSearchBlockView'; +import TestSearchkitQuerystrings from './Views/TestSearchkitQuerystrings'; + +export { + FacetedSearchBlockEdit, + FacetedSearchBlockView, + TestSearchkitQuerystrings, +}; diff --git a/packages/volto-searchkit-block/src/index.js b/packages/volto-searchkit-block/src/index.js index cb042f0d..5acfd4d0 100644 --- a/packages/volto-searchkit-block/src/index.js +++ b/packages/volto-searchkit-block/src/index.js @@ -1,4 +1,145 @@ +import zoomSVG from '@plone/volto/icons/zoom.svg'; +import { getQuerystring } from '@plone/volto/actions'; + +import { + FacetedSearchBlockEdit, + FacetedSearchBlockView, + TestSearchkitQuerystrings, +} from './components'; +import { + ReferenceSearchBlockEdit, + ReferenceSearchBlockView, +} from './components/Blocks/Reference'; + +import SearchSectionsWidget from './components/Blocks/SearchSectionsWidget'; + const applyConfig = (config) => { + // @eeacms/volto-matomo + config.settings.searchkitblock = { + trackVoltoMatomo: false, + trackSiteSearchOptions: { + category: 'Suche in Dokumentation', // optional + // count: 4, // optional + documentTitle: 'Suche in Dokumentation', // optional + href: '/suche', // optional + // customDimensions: [ + // { + // id: 1, + // value: 'loggedIn', + // }, + // ], // optional + }, + }; + + config.blocks.blocksConfig.searchkitblock = { + id: 'searchkitblock', + title: 'Searchkit', + edit: FacetedSearchBlockEdit, + view: FacetedSearchBlockView, + icon: zoomSVG, + group: 'common', + restricted: false, + mostUsed: false, + sidebarTab: 1, + security: { + addPermission: [], + view: [], + }, + }; + + config.widgets.widget.searchsectionswidget = SearchSectionsWidget; + + /** + * A reference block with default components from react-searchkit + * TODO set permission to restrict to admin as soon as addPermission is implemented in Volto. For now: set restricted to true. + */ + config.blocks.blocksConfig.referencesearchkitblock = { + id: 'referencesearchkitblock', + title: 'Search Reference', + edit: ReferenceSearchBlockEdit, + view: ReferenceSearchBlockView, + icon: zoomSVG, + group: 'text', + restricted: true, + mostUsed: true, + sidebarTab: 1, + security: { + addPermission: [], + view: [], + }, + }; + + // Test some querystrings + config.settings.controlpanels = [ + ...(config.settings.controlpanels || []), + { + '@id': '/test-searchkit-querystrings', + group: 'Add-on Configuration', + title: 'Test searchkit querystrings', + }, + ]; + config.addonRoutes = [ + ...config.addonRoutes, + { + path: '/controlpanel/test-searchkit-querystrings', + component: TestSearchkitQuerystrings, + }, + ]; + // Configure 'Test searchkit querystrings' controlpanel + config.blocks.blocksConfig.searchkitblock.searchconfig = { + searchedFields: [ + 'title^1.4', + 'description^1.2', + 'blocks_plaintext', + 'subjects^1.2', + ], + facet_fields: [], + allowed_content_types: ['Document', 'News Item', 'Event'], + allowed_review_states: [], + // backend_url: 'http://host.docker.internal:8080/Plone', + // frontend_url: 'http://localhost:3000', + }; + + // Fetch querystring indexes. + // See /effective-volto/addons/asyncconnect + config.settings.asyncPropsExtenders = [ + ...(config.settings.asyncPropsExtenders || []), + { + path: '/', + extend: (dispatchActions) => { + const action = { + key: 'querystringindexes', + promise: ({ store }) => { + const state = store.getState(); + if (state.querystring?.indexes?.Title) { + return; + } + const myaction = getQuerystring(); + return store.dispatch(myaction).catch((e) => { + // eslint-disable-next-line no-console + console.error('Fetch of getQuerystring failed'); + }); + }, + }; + return [...dispatchActions, action]; + }, + }, + ]; + + if (process.env.SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS === 'monolingual') { + config.settings.supportedLanguages = ['de']; + config.settings.defaultLanguage = 'de'; + } else if ( + process.env.SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS === 'multilingual' + ) { + config.settings.isMultilingual = true; + config.settings.supportedLanguages = ['en', 'de']; + config.settings.defaultLanguage = 'en'; + } + + // DEBUG + // Disable Matomo + config.settings.appExtras = []; return config; }; diff --git a/packages/volto-searchkit-block/src/messages.js b/packages/volto-searchkit-block/src/messages.js new file mode 100644 index 00000000..30a595c9 --- /dev/null +++ b/packages/volto-searchkit-block/src/messages.js @@ -0,0 +1,104 @@ +import { defineMessages } from 'react-intl'; + +const messages = defineMessages({ + // block title translation for slash menu + blocktitle: { + id: 'Searchkit', + defaultMessage: 'Searchkit', + }, + searchBlock: { + id: 'Search block', + defaultMessage: 'Search block', + }, + search: { + id: 'search', + defaultMessage: 'search', + }, + facets: { + id: 'Facets', + defaultMessage: 'Facets', + }, + facet: { + id: 'Facet', + defaultMessage: 'Facet', + }, + // item: { + // id: 'Item', + // defaultMessage: 'Item', + // }, + label: { + id: 'Label', + defaultMessage: 'Label', + }, + field: { + id: 'Field', + defaultMessage: 'Field', + }, + multipleChoices: { + id: 'Multiple choices?', + defaultMessage: 'Multiple choices?', + }, + facetWidget: { + id: 'Facet widget', + defaultMessage: 'Facet widget', + }, + metadata: { + id: 'Meta data', + defaultMessage: 'Meta data', + }, + searchresult: { + id: 'Search result', + defaultMessage: 'Search result', + }, + searchresults: { + id: 'Search results', + defaultMessage: 'Search results', + }, + searchInSections: { + id: 'Search in sections', + defaultMessage: 'Search in sections', + }, + searchInSectionsDescription: { + id: 'Search can be restricted by sections / paths', + defaultMessage: 'Search can be restricted by sections / paths', + }, + searchSection: { + id: 'Search section', + defaultMessage: 'section', + }, + searchSectionLabel: { + id: 'Search section label', + defaultMessage: 'Search section label', + }, + showFilter: { + id: 'Show filters', + defaultMessage: 'Show filter', + }, + // highlights + title: { + id: 'Title', + defaultMessage: 'Title', + }, + description: { + id: 'Description', + defaultMessage: 'Description', + }, + tags: { + id: 'Tags', + defaultMessage: 'Tags', + }, + content: { + id: 'Content', + defaultMessage: 'Content', + }, + cancel: { + id: 'Cancel', + defaultMessage: 'Cancel', + }, + add: { + id: 'Add {type}', + defaultMessage: 'Add {type}', + }, +}); + +export default messages; From ec1072a7b45648e1b5693c67ac0b5c4b63c713c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 26 Oct 2024 14:09:37 +0200 Subject: [PATCH 05/98] Create pnpm-lock.yaml --- pnpm-lock.yaml | 33346 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 33346 insertions(+) create mode 100644 pnpm-lock.yaml diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..b6cfaa81 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,33346 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@plone/registry': + specifier: workspace:* + version: link:core/packages/registry + '@plone/volto': + specifier: workspace:* + version: link:core/packages/volto + volto-searchkit-block: + specifier: workspace:* + version: link:packages/volto-searchkit-block + devDependencies: + mrs-developer: + specifier: ^2.2.0 + version: 2.2.0 + + core/packages/blocks: + dependencies: + react: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@parcel/packager-ts': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) + '@plone/registry': + specifier: workspace:* + version: link:../registry + '@plone/types': + specifier: workspace:* + version: link:../types + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + parcel: + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + release-it: + specifier: 17.1.1 + version: 17.1.1(typescript@5.4.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: 5.4.2 + version: 5.4.2 + vitest: + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + core/packages/client: + dependencies: + '@tanstack/react-query': + specifier: ^5.37.1 + version: 5.59.16(react@18.2.0) + axios: + specifier: ^1.6.7 + version: 1.7.7(debug@4.3.4) + debug: + specifier: 4.3.4 + version: 4.3.4(supports-color@8.1.1) + query-string: + specifier: ^9.0.0 + version: 9.1.1 + zod: + specifier: ^3.22.4 + version: 3.23.8 + devDependencies: + '@parcel/config-default': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + '@parcel/core': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13) + '@parcel/optimizer-terser': + specifier: 2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-ts': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-react-refresh-wrap': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) + '@plone/types': + specifier: 'workspace: *' + version: link:../types + '@testing-library/jest-dom': + specifier: 5.16.5 + version: 5.16.5 + '@testing-library/react': + specifier: 13.4.0 + version: 13.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 + '@types/react': + specifier: 18.2.27 + version: 18.2.27 + '@types/react-dom': + specifier: 18.2.12 + version: 18.2.12 + '@types/uuid': + specifier: ^9.0.2 + version: 9.0.8 + '@vitejs/plugin-react': + specifier: ^4.1.0 + version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@vitest/coverage-v8': + specifier: ^1.3.1 + version: 1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + glob: + specifier: 7.1.6 + version: 7.1.6 + jsdom: + specifier: ^21.1.1 + version: 21.1.2 + parcel: + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + release-it: + specifier: 17.1.1 + version: 17.1.1(typescript@5.4.2) + tsup: + specifier: ^8.0.2 + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2) + typescript: + specifier: 5.4.2 + version: 5.4.2 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + vite: + specifier: ^5.4.8 + version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-plugin-dts: + specifier: ^3.7.3 + version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + vitest: + specifier: ^2.1.2 + version: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + wait-on: + specifier: ^7.2.0 + version: 7.2.0(debug@4.3.4) + + core/packages/components: + dependencies: + '@react-aria/utils': + specifier: ^3.25.3 + version: 3.25.3(react@18.2.0) + '@react-spectrum/utils': + specifier: ^3.11.11 + version: 3.11.11(react@18.2.0) + '@storybook/test': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + clsx: + specifier: ^2.1.1 + version: 2.1.1 + react: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-aria-components: + specifier: ^1.4.0 + version: 1.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-dom: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@parcel/config-default': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + '@parcel/core': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13) + '@parcel/packager-ts': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-react-refresh-wrap': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) + '@plone/types': + specifier: 'workspace: *' + version: link:../types + '@react-types/shared': + specifier: ^3.22.0 + version: 3.25.0(react@18.2.0) + '@storybook/addon-essentials': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) + '@storybook/addon-interactions': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@storybook/addon-links': + specifier: ^8.0.4 + version: 8.3.6(react@18.2.0)(storybook@8.3.6) + '@storybook/addon-mdx-gfm': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@storybook/blocks': + specifier: ^8.0.4 + version: 8.3.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6) + '@storybook/manager-api': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@storybook/react': + specifier: ^8.0.4 + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/react-vite': + specifier: ^8.0.4 + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@storybook/theming': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@testing-library/jest-dom': + specifier: 6.4.2 + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@testing-library/react': + specifier: 14.2.1 + version: 14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/jest-axe': + specifier: ^3.5.7 + version: 3.5.9 + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + '@vitejs/plugin-react': + specifier: ^4.1.0 + version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@vitest/coverage-v8': + specifier: ^1.3.1 + version: 1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + browserslist: + specifier: ^4.23.0 + version: 4.24.2 + eslint-plugin-storybook: + specifier: ^0.8.0 + version: 0.8.0(eslint@8.57.1)(typescript@5.6.3) + jest-axe: + specifier: ^8.0.0 + version: 8.0.0 + jsdom: + specifier: ^22.1.0 + version: 22.1.0 + lightningcss: + specifier: ^1.24.0 + version: 1.27.0 + lightningcss-cli: + specifier: ^1.24.0 + version: 1.27.0 + parcel: + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + release-it: + specifier: 17.1.1 + version: 17.1.1(typescript@5.6.3) + storybook: + specifier: ^8.0.4 + version: 8.3.6 + typescript: + specifier: ^5.4.5 + version: 5.6.3 + vite: + specifier: ^5.4.8 + version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest: + specifier: ^2.1.2 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest-axe: + specifier: ^0.1.0 + version: 0.1.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + + core/packages/coresandbox: + dependencies: + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-intl: + specifier: 3.12.1 + version: 3.12.1(react@18.2.0) + react-redux: + specifier: 8.1.2 + version: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + semantic-ui-react: + specifier: 2.1.5 + version: 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + devDependencies: + '@plone/registry': + specifier: workspace:* + version: link:../registry + '@plone/types': + specifier: workspace:* + version: link:../types + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + '@types/react-redux': + specifier: ^7.1.33 + version: 7.1.34 + + core/packages/generator-volto: + dependencies: + ansi-escapes: + specifier: 2.0.0 + version: 2.0.0 + chalk: + specifier: ^2.1.0 + version: 2.4.2 + commander: + specifier: 2.9.0 + version: 2.9.0 + cross-spawn: + specifier: 5.1.0 + version: 5.1.0 + execa: + specifier: 0.6.3 + version: 0.6.3 + fs-extra: + specifier: 3.0.0 + version: 3.0.0 + gitly: + specifier: 2.0.3 + version: 2.0.3 + lodash: + specifier: 4.17.21 + version: 4.17.21 + mkdirp-then: + specifier: 1.2.0 + version: 1.2.0 + mz: + specifier: 2.6.0 + version: 2.6.0 + ora: + specifier: 1.2.0 + version: 1.2.0 + promise: + specifier: 7.1.1 + version: 7.1.1 + semver: + specifier: ^7.5.4 + version: 7.6.3 + update-notifier: + specifier: ^5.0.1 + version: 5.1.0 + yeoman-generator: + specifier: 5.10.0 + version: 5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3) + devDependencies: + coveralls: + specifier: ^3.0.7 + version: 3.1.1 + jest: + specifier: ^24.8.0 + version: 24.9.0 + release-it: + specifier: ^16.1.3 + version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) + yeoman-assert: + specifier: ^3.1.0 + version: 3.1.1 + yeoman-test: + specifier: ^6.1.0 + version: 6.3.0(mem-fs@2.3.0)(yeoman-environment@3.19.3)(yeoman-generator@5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3)) + + core/packages/helpers: + dependencies: + react: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@parcel/packager-ts': + specifier: 2.12.0 + version: 2.12.0(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: 2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) + '@plone/types': + specifier: workspace:* + version: link:../types + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + parcel: + specifier: 2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + release-it: + specifier: ^17.1.1 + version: 17.1.1(typescript@5.4.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: 5.4.2 + version: 5.4.2 + vitest: + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + core/packages/providers: + dependencies: + '@plone/client': + specifier: workspace:* + version: link:../client + '@plone/components': + specifier: workspace:* + version: link:../components + '@plone/registry': + specifier: workspace:* + version: link:../registry + react: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@parcel/config-default': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + '@parcel/core': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13) + '@parcel/packager-ts': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-react-refresh-wrap': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: ^2.12.0 + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2) + '@plone/types': + specifier: workspace:* + version: link:../types + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + parcel: + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + release-it: + specifier: 17.1.1 + version: 17.1.1(typescript@5.2.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: 5.2.2 + version: 5.2.2 + vitest: + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + core/packages/registry: + dependencies: + crypto-random-string: + specifier: 3.2.0 + version: 3.2.0 + debug: + specifier: 4.3.2 + version: 4.3.2 + dependency-graph: + specifier: 0.10.0 + version: 0.10.0 + glob: + specifier: 7.1.6 + version: 7.1.6 + devDependencies: + '@parcel/packager-ts': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) + '@plone/types': + specifier: workspace:* + version: link:../types + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + parcel: + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + release-it: + specifier: 16.2.1 + version: 16.2.1(encoding@0.1.13)(typescript@5.4.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: 5.4.2 + version: 5.4.2 + vitest: + specifier: ^2.1.2 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + core/packages/scripts: + dependencies: + '@babel/core': + specifier: ^7.0.0 + version: 7.26.0 + babel-plugin-react-intl: + specifier: 5.1.17 + version: 5.1.17 + babel-preset-razzle: + specifier: 4.2.17 + version: 4.2.17 + chalk: + specifier: '4' + version: 4.1.2 + commander: + specifier: 8.2.0 + version: 8.2.0 + comment-json: + specifier: ^4.2.3 + version: 4.2.5 + execa: + specifier: 0.6.3 + version: 0.6.3 + find-parent-dir: + specifier: ^0.3.1 + version: 0.3.1 + fs-extra: + specifier: 10.1.0 + version: 10.1.0 + git-url-parse: + specifier: ^13.1.0 + version: 13.1.1 + glob: + specifier: 7.1.6 + version: 7.1.6 + lodash: + specifier: 4.17.21 + version: 4.17.21 + mrs-developer: + specifier: ^2.1.1 + version: 2.2.0 + pofile: + specifier: 1.0.10 + version: 1.0.10 + wait-on: + specifier: ^7.2.0 + version: 7.2.0 + devDependencies: + release-it: + specifier: ^16.1.3 + version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) + + core/packages/slots: + dependencies: + '@plone/providers': + specifier: workspace:* + version: link:../providers + '@plone/registry': + specifier: workspace:* + version: link:../registry + react: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0 + react-dom: + specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@parcel/packager-ts': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13) + '@parcel/transformer-typescript-types': + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2) + '@plone/types': + specifier: workspace:* + version: link:../types + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + parcel: + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + release-it: + specifier: 17.1.1 + version: 17.1.1(typescript@5.2.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: 5.2.2 + version: 5.2.2 + vitest: + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + core/packages/tsconfig: {} + + core/packages/types: + devDependencies: + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + history: + specifier: ^5.3.0 + version: 5.3.0 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + react-intl: + specifier: 3.12.1 + version: 3.12.1(react@18.2.0) + release-it: + specifier: ^17.1.1 + version: 17.1.1(typescript@5.4.2) + tsconfig: + specifier: workspace:* + version: link:../tsconfig + typescript: + specifier: 5.4.2 + version: 5.4.2 + + core/packages/volto: + dependencies: + '@loadable/component': + specifier: 5.14.1 + version: 5.14.1(react@18.2.0) + '@loadable/server': + specifier: 5.14.0 + version: 5.14.0(@loadable/component@5.14.1(react@18.2.0))(react@18.2.0) + '@plone/registry': + specifier: workspace:* + version: link:../registry + '@plone/scripts': + specifier: workspace:* + version: link:../scripts + '@plone/volto-slate': + specifier: workspace:* + version: link:../volto-slate + '@redux-devtools/extension': + specifier: ^3.3.0 + version: 3.3.0(redux@4.2.1) + classnames: + specifier: 2.2.6 + version: 2.2.6 + connected-react-router: + specifier: 6.8.0 + version: 6.8.0(history@4.10.1)(immutable@3.8.2)(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router@5.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1)(seamless-immutable@7.1.4) + debug: + specifier: 4.3.2 + version: 4.3.2 + decorate-component-with-props: + specifier: 1.2.1 + version: 1.2.1(react@18.2.0) + dependency-graph: + specifier: 0.10.0 + version: 0.10.0 + detect-browser: + specifier: 5.1.0 + version: 5.1.0 + diff: + specifier: 3.5.0 + version: 3.5.0 + express: + specifier: 4.19.2 + version: 4.19.2 + filesize: + specifier: '6' + version: 6.4.0 + github-slugger: + specifier: 1.4.0 + version: 1.4.0 + history: + specifier: 4.10.1 + version: 4.10.1 + hoist-non-react-statics: + specifier: 3.3.2 + version: 3.3.2 + http-proxy-middleware: + specifier: 2.0.1 + version: 2.0.1(debug@4.3.2) + image-extensions: + specifier: 1.1.0 + version: 1.1.0 + immutable: + specifier: '3' + version: 3.8.2 + is-hotkey: + specifier: 0.2.0 + version: 0.2.0 + is-url: + specifier: 1.2.4 + version: 1.2.4 + jotai: + specifier: 2.0.3 + version: 2.0.3(react@18.2.0) + jwt-decode: + specifier: 2.2.0 + version: 2.2.0 + linkify-it: + specifier: 3.0.2 + version: 3.0.2 + locale: + specifier: 0.1.0 + version: 0.1.0 + lodash: + specifier: 4.17.21 + version: 4.17.21 + lodash-move: + specifier: 1.1.1 + version: 1.1.1 + moment: + specifier: 2.29.4 + version: 2.29.4 + object-assign: + specifier: 4.1.1 + version: 4.1.1 + prepend-http: + specifier: '2' + version: 2.0.0 + pretty-bytes: + specifier: 5.3.0 + version: 5.3.0 + prismjs: + specifier: 1.27.0 + version: 1.27.0 + process: + specifier: ^0.11.10 + version: 0.11.10 + promise-file-reader: + specifier: 1.0.2 + version: 1.0.2 + prop-types: + specifier: 15.7.2 + version: 15.7.2 + query-string: + specifier: 7.1.0 + version: 7.1.0 + rc-time-picker: + specifier: 3.7.3 + version: 3.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react: + specifier: 18.2.0 + version: 18.2.0 + react-anchor-link-smooth-scroll: + specifier: 1.0.12 + version: 1.0.12 + react-animate-height: + specifier: 2.0.17 + version: 2.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-beautiful-dnd: + specifier: 13.0.0 + version: 13.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-cookie: + specifier: 4.1.1 + version: 4.1.1(react@18.2.0) + react-dates: + specifier: 21.5.1 + version: 21.5.1(@babel/runtime@7.20.6)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + react-detect-click-outside: + specifier: 1.1.1 + version: 1.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-dnd: + specifier: 5.0.0 + version: 5.0.0(react@18.2.0) + react-dnd-html5-backend: + specifier: 5.0.1 + version: 5.0.1 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-dropzone: + specifier: 11.1.0 + version: 11.1.0(react@18.2.0) + react-fast-compare: + specifier: 2.0.4 + version: 2.0.4 + react-image-gallery: + specifier: 1.2.7 + version: 1.2.7(react@18.2.0) + react-intersection-observer: + specifier: 9.1.0 + version: 9.1.0(react@18.2.0) + react-intl: + specifier: 3.12.1 + version: 3.12.1(react@18.2.0) + react-intl-redux: + specifier: 2.3.0 + version: 2.3.0(@babel/runtime@7.20.6)(prop-types@15.7.2)(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react@18.2.0) + react-medium-image-zoom: + specifier: 3.0.15 + version: 3.0.15(prop-types@15.7.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-popper: + specifier: ^2.3.0 + version: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-redux: + specifier: 8.1.2 + version: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + react-router: + specifier: 5.2.0 + version: 5.2.0(react@18.2.0) + react-router-config: + specifier: 5.1.1 + version: 5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0) + react-router-dom: + specifier: 5.2.0 + version: 5.2.0(react@18.2.0) + react-router-hash-link: + specifier: 2.4.3 + version: 2.4.3(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0) + react-select: + specifier: 4.3.1 + version: 4.3.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-select-async-paginate: + specifier: 0.5.3 + version: 0.5.3(react-dom@18.2.0(react@18.2.0))(react-select@4.3.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + react-side-effect: + specifier: 2.1.2 + version: 2.1.2(react@18.2.0) + react-simple-code-editor: + specifier: 0.7.1 + version: 0.7.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-sortable-hoc: + specifier: 2.0.0 + version: 2.0.0(prop-types@15.7.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-test-renderer: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-toastify: + specifier: 5.5.0 + version: 5.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-transition-group: + specifier: 4.4.5 + version: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-virtualized: + specifier: 9.22.3 + version: 9.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + redux: + specifier: 4.2.1 + version: 4.2.1 + redux-actions: + specifier: 3.0.0 + version: 3.0.0 + redux-connect: + specifier: 10.0.0 + version: 10.0.0(prop-types@15.7.2)(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-config@5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0))(react-router-dom@5.2.0(react@18.2.0))(react-router@5.2.0(react@18.2.0))(react@18.2.0)(redux-actions@3.0.0) + redux-localstorage-simple: + specifier: 2.5.1 + version: 2.5.1 + redux-mock-store: + specifier: 1.5.4 + version: 1.5.4 + redux-thunk: + specifier: 2.4.2 + version: 2.4.2(redux@4.2.1) + rrule: + specifier: 2.7.1 + version: 2.7.1 + semantic-ui-less: + specifier: 2.4.1 + version: 2.4.1 + semantic-ui-react: + specifier: 2.1.5 + version: 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + serialize-javascript: + specifier: 3.1.0 + version: 3.1.0 + slate: + specifier: 0.100.0 + version: 0.100.0 + slate-hyperscript: + specifier: 0.100.0 + version: 0.100.0(slate@0.100.0) + slate-react: + specifier: 0.98.4 + version: 0.98.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.100.0) + superagent: + specifier: 3.8.2 + version: 3.8.2 + tlds: + specifier: 1.203.1 + version: 1.203.1 + undoo: + specifier: 0.5.0 + version: 0.5.0 + universal-cookie: + specifier: 4.0.4 + version: 4.0.4 + universal-cookie-express: + specifier: 4.0.3 + version: 4.0.3 + url: + specifier: ^0.11.3 + version: 0.11.4 + use-deep-compare-effect: + specifier: 1.8.1 + version: 1.8.1(react@18.2.0) + uuid: + specifier: ^8.3.2 + version: 8.3.2 + devDependencies: + '@babel/core': + specifier: ^7.0.0 + version: 7.26.0 + '@babel/eslint-parser': + specifier: 7.22.15 + version: 7.22.15(@babel/core@7.26.0)(eslint@8.57.1) + '@babel/plugin-proposal-export-default-from': + specifier: 7.18.10 + version: 7.18.10(@babel/core@7.26.0) + '@babel/plugin-proposal-export-namespace-from': + specifier: 7.18.9 + version: 7.18.9(@babel/core@7.26.0) + '@babel/plugin-proposal-json-strings': + specifier: 7.18.6 + version: 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': + specifier: 7.18.6 + version: 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-throw-expressions': + specifier: 7.18.6 + version: 7.18.6(@babel/core@7.26.0) + '@babel/plugin-syntax-export-namespace-from': + specifier: 7.8.3 + version: 7.8.3(@babel/core@7.26.0) + '@babel/runtime': + specifier: 7.20.6 + version: 7.20.6 + '@babel/types': + specifier: 7.20.5 + version: 7.20.5 + '@dnd-kit/core': + specifier: 6.0.8 + version: 6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@dnd-kit/sortable': + specifier: 7.0.2 + version: 7.0.2(@dnd-kit/core@6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + '@dnd-kit/utilities': + specifier: 3.2.2 + version: 3.2.2(react@18.2.0) + '@fiverr/afterbuild-webpack-plugin': + specifier: ^1.0.0 + version: 1.0.0 + '@jest/globals': + specifier: ^29.7.0 + version: 29.7.0 + '@loadable/babel-plugin': + specifier: 5.13.2 + version: 5.13.2(@babel/core@7.26.0) + '@loadable/webpack-plugin': + specifier: 5.15.2 + version: 5.15.2(webpack@5.90.1) + '@plone/types': + specifier: workspace:* + version: link:../types + '@plone/volto-coresandbox': + specifier: workspace:* + version: link:../coresandbox + '@sinonjs/fake-timers': + specifier: ^6.0.1 + version: 6.0.1 + '@storybook/addon-actions': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@storybook/addon-controls': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@storybook/addon-docs': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) + '@storybook/addon-essentials': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) + '@storybook/addon-links': + specifier: ^8.0.4 + version: 8.3.6(react@18.2.0)(storybook@8.3.6) + '@storybook/addon-webpack5-compiler-babel': + specifier: ^3.0.3 + version: 3.0.3(webpack@5.90.1) + '@storybook/react': + specifier: ^8.0.4 + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/react-webpack5': + specifier: ^8.0.4 + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/theming': + specifier: ^8.0.4 + version: 8.3.6(storybook@8.3.6) + '@testing-library/cypress': + specifier: 10.0.1 + version: 10.0.1(cypress@13.13.2) + '@testing-library/jest-dom': + specifier: 6.4.2 + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@26.6.3)(vitest@2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4)) + '@testing-library/react': + specifier: 14.2.0 + version: 14.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@testing-library/react-hooks': + specifier: 8.0.1 + version: 8.0.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0) + '@types/history': + specifier: ^4.7.11 + version: 4.7.11 + '@types/jest': + specifier: ^29.5.8 + version: 29.5.14 + '@types/loadable__component': + specifier: ^5.13.9 + version: 5.13.9 + '@types/lodash': + specifier: ^4.14.201 + version: 4.17.12 + '@types/react': + specifier: ^18 + version: 18.2.27 + '@types/react-dom': + specifier: ^18 + version: 18.2.12 + '@types/react-router-dom': + specifier: ^5.3.3 + version: 5.3.3 + '@types/react-test-renderer': + specifier: 18.0.7 + version: 18.0.7 + '@types/uuid': + specifier: ^9.0.2 + version: 9.0.8 + '@typescript-eslint/eslint-plugin': + specifier: ^7.7.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': + specifier: ^7.7.0 + version: 7.18.0(eslint@8.57.1)(typescript@5.6.3) + autoprefixer: + specifier: 10.4.8 + version: 10.4.8(postcss@8.4.31) + axe-core: + specifier: 4.4.2 + version: 4.4.2 + babel-loader: + specifier: 9.1.0 + version: 9.1.0(@babel/core@7.26.0)(webpack@5.90.1) + babel-plugin-add-module-exports: + specifier: 0.2.1 + version: 0.2.1 + babel-plugin-lodash: + specifier: 3.3.4 + version: 3.3.4 + babel-plugin-react-intl: + specifier: 5.1.17 + version: 5.1.17 + babel-plugin-root-import: + specifier: 6.1.0 + version: 6.1.0 + babel-preset-razzle: + specifier: 4.2.18 + version: 4.2.18 + bundlewatch: + specifier: 0.3.3 + version: 0.3.3(debug@4.3.2) + circular-dependency-plugin: + specifier: 5.2.2 + version: 5.2.2(webpack@5.90.1) + css-loader: + specifier: 5.2.7 + version: 5.2.7(webpack@5.90.1) + cypress: + specifier: 13.13.2 + version: 13.13.2 + cypress-axe: + specifier: 1.5.0 + version: 1.5.0(axe-core@4.4.2)(cypress@13.13.2) + cypress-file-upload: + specifier: 5.0.8 + version: 5.0.8(cypress@13.13.2) + deep-freeze: + specifier: 0.0.1 + version: 0.0.1 + eslint: + specifier: ^8.57.0 + version: 8.57.1 + eslint-config-prettier: + specifier: ^9.1.0 + version: 9.1.0(eslint@8.57.1) + eslint-config-react-app: + specifier: ^7.0.1 + version: 7.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1)(jest@26.6.3)(typescript@5.6.3) + eslint-import-resolver-alias: + specifier: ^1.1.2 + version: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)) + eslint-import-resolver-babel-plugin-root-import: + specifier: ^1.1.1 + version: 1.1.1(babel-plugin-root-import@6.1.0)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)) + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1) + eslint-plugin-import: + specifier: ^2.29.1 + version: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + eslint-plugin-jsx-a11y: + specifier: ^6.7.1 + version: 6.10.2(eslint@8.57.1) + eslint-plugin-prettier: + specifier: ^5.1.3 + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.2.5) + eslint-plugin-react: + specifier: ^7.34.1 + version: 7.37.2(eslint@8.57.1) + eslint-plugin-react-hooks: + specifier: ^4.6.0 + version: 4.6.2(eslint@8.57.1) + full-icu: + specifier: 1.4.0 + version: 1.4.0 + html-webpack-plugin: + specifier: 5.5.0 + version: 5.5.0(webpack@5.90.1) + identity-obj-proxy: + specifier: 3.0.0 + version: 3.0.0 + jest: + specifier: 26.6.3 + version: 26.6.3 + jest-environment-jsdom: + specifier: ^26 + version: 26.6.2 + jest-file: + specifier: 1.0.0 + version: 1.0.0 + jsdom: + specifier: ^16.7.0 + version: 16.7.0 + jsonwebtoken: + specifier: 9.0.0 + version: 9.0.0 + less: + specifier: 3.11.1 + version: 3.11.1 + less-loader: + specifier: 11.1.0 + version: 11.1.0(less@3.11.1)(webpack@5.90.1) + lodash-webpack-plugin: + specifier: 0.11.6 + version: 0.11.6(webpack@5.90.1) + mini-css-extract-plugin: + specifier: 2.7.2 + version: 2.7.2(webpack@5.90.1) + moment-locales-webpack-plugin: + specifier: 1.2.0 + version: 1.2.0(moment@2.29.4)(webpack@5.90.1) + postcss: + specifier: 8.4.31 + version: 8.4.31 + postcss-flexbugs-fixes: + specifier: 5.0.2 + version: 5.0.2(postcss@8.4.31) + postcss-less: + specifier: 6.0.0 + version: 6.0.0(postcss@8.4.31) + postcss-load-config: + specifier: 3.1.4 + version: 3.1.4(postcss@8.4.31) + postcss-loader: + specifier: 7.0.2 + version: 7.0.2(postcss@8.4.31)(webpack@5.90.1) + postcss-overrides: + specifier: 3.1.4 + version: 3.1.4 + postcss-scss: + specifier: 4.0.6 + version: 4.0.6(postcss@8.4.31) + prettier: + specifier: 3.2.5 + version: 3.2.5 + razzle: + specifier: 4.2.18 + version: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) + razzle-dev-utils: + specifier: 4.2.18 + version: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) + razzle-plugin-scss: + specifier: 4.2.18 + version: 4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1))(webpack@5.90.1) + react-docgen-typescript-plugin: + specifier: ^1.0.5 + version: 1.0.8(typescript@5.6.3)(webpack@5.90.1) + react-error-overlay: + specifier: 6.0.9 + version: 6.0.9 + react-is: + specifier: ^18.2.0 + version: 18.3.1 + release-it: + specifier: ^17.1.1 + version: 17.1.1(typescript@5.6.3) + semver: + specifier: ^7.5.4 + version: 7.6.3 + start-server-and-test: + specifier: 1.14.0 + version: 1.14.0 + storybook: + specifier: ^8.0.4 + version: 8.3.6 + style-loader: + specifier: 3.3.1 + version: 3.3.1(webpack@5.90.1) + stylelint: + specifier: ^16.3.1 + version: 16.10.0(typescript@5.6.3) + stylelint-config-idiomatic-order: + specifier: 10.0.0 + version: 10.0.0(stylelint@16.10.0(typescript@5.6.3)) + stylelint-prettier: + specifier: 5.0.0 + version: 5.0.0(prettier@3.2.5)(stylelint@16.10.0(typescript@5.6.3)) + svg-loader: + specifier: 0.0.2 + version: 0.0.2 + svgo-loader: + specifier: 3.0.3 + version: 3.0.3 + terser-webpack-plugin: + specifier: 5.3.6 + version: 5.3.6(webpack@5.90.1) + tmp: + specifier: 0.2.1 + version: 0.2.1 + ts-jest: + specifier: ^26.4.2 + version: 26.5.6(jest@26.6.3)(typescript@5.6.3) + ts-loader: + specifier: 9.4.4 + version: 9.4.4(typescript@5.6.3)(webpack@5.90.1) + typescript: + specifier: ^5.4.2 + version: 5.6.3 + use-trace-update: + specifier: 1.3.2 + version: 1.3.2 + wait-on: + specifier: 6.0.0 + version: 6.0.0(debug@4.3.2) + webpack: + specifier: 5.90.1 + version: 5.90.1 + webpack-bundle-analyzer: + specifier: 4.10.1 + version: 4.10.1 + webpack-dev-server: + specifier: 4.11.1 + version: 4.11.1(debug@4.3.2)(webpack@5.90.1) + webpack-node-externals: + specifier: 3.0.0 + version: 3.0.0 + why: + specifier: 0.6.2 + version: 0.6.2 + + core/packages/volto-guillotina: + dependencies: + '@plone/scripts': + specifier: '*' + version: 3.6.2 + + core/packages/volto-slate: + dependencies: + classnames: + specifier: 2.2.6 + version: 2.2.6 + github-slugger: + specifier: 1.4.0 + version: 1.4.0 + image-extensions: + specifier: 1.1.0 + version: 1.1.0 + is-hotkey: + specifier: 0.2.0 + version: 0.2.0 + is-url: + specifier: 1.2.4 + version: 1.2.4 + jsdom: + specifier: ^16.6.0 + version: 16.7.0 + lodash: + specifier: 4.17.21 + version: 4.17.21 + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + react-intersection-observer: + specifier: 9.1.0 + version: 9.1.0(react@18.2.0) + react-intl: + specifier: 3.12.1 + version: 3.12.1(react@18.2.0) + react-redux: + specifier: 8.1.2 + version: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + react-router-dom: + specifier: 5.2.0 + version: 5.2.0(react@18.2.0) + react-toastify: + specifier: 5.5.0 + version: 5.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + redux-mock-store: + specifier: 1.5.4 + version: 1.5.4 + semantic-ui-react: + specifier: 2.1.5 + version: 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + slate: + specifier: 0.100.0 + version: 0.100.0 + slate-history: + specifier: 0.100.0 + version: 0.100.0(slate@0.100.0) + slate-hyperscript: + specifier: 0.100.0 + version: 0.100.0(slate@0.100.0) + slate-react: + specifier: 0.98.4 + version: 0.98.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.100.0) + uuid: + specifier: ^9.0.1 + version: 9.0.1 + weak-key: + specifier: ^1.0.2 + version: 1.0.3 + devDependencies: + '@testing-library/react': + specifier: 9.5.0 + version: 9.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + babel-plugin-transform-class-properties: + specifier: ^6.24.1 + version: 6.24.1 + release-it: + specifier: ^17.0.0 + version: 17.1.1(typescript@5.6.3) + + core/packages/volto-testing: + dependencies: + '@testing-library/cypress': + specifier: 10.0.1 + version: 10.0.1(cypress@13.13.2) + '@testing-library/jest-dom': + specifier: 6.4.2 + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@testing-library/react': + specifier: 12.1.5 + version: 12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + axe-core: + specifier: 4.8.4 + version: 4.8.4 + cypress: + specifier: 13.13.2 + version: 13.13.2 + cypress-axe: + specifier: 1.5.0 + version: 1.5.0(axe-core@4.8.4)(cypress@13.13.2) + cypress-file-upload: + specifier: 5.0.8 + version: 5.0.8(cypress@13.13.2) + devDependencies: + release-it: + specifier: ^17.1.1 + version: 17.1.1(typescript@5.6.3) + + packages/volto-searchkit-block: + dependencies: + react: + specifier: 18.2.0 + version: 18.2.0 + react-dom: + specifier: 18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@plone/scripts': + specifier: ^3.6.1 + version: 3.6.2 + release-it: + specifier: ^17.1.1 + version: 17.1.1(typescript@5.6.3) + +packages: + + '@adobe/css-tools@4.4.0': + resolution: {integrity: sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@babel/code-frame@7.10.4': + resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} + + '@babel/code-frame@7.26.0': + resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.26.0': + resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.26.0': + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} + engines: {node: '>=6.9.0'} + + '@babel/eslint-parser@7.22.15': + resolution: {integrity: sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': ^7.11.0 + eslint: ^7.5.0 || ^8.0.0 + + '@babel/generator@7.26.0': + resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.25.9': + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + resolution: {integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.9': + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.25.9': + resolution: {integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-create-regexp-features-plugin@7.25.9': + resolution: {integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-define-polyfill-provider@0.6.2': + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + '@babel/helper-member-expression-to-functions@7.25.9': + resolution: {integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.25.9': + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.26.0': + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.25.9': + resolution: {integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.25.9': + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-remap-async-to-generator@7.25.9': + resolution: {integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-replace-supers@7.25.9': + resolution: {integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.25.9': + resolution: {integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==} + engines: {node: '>=6.9.0'} + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + resolution: {integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.25.9': + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.25.9': + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.25.9': + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-wrap-function@7.25.9': + resolution: {integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.26.0': + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.25.9': + resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.26.1': + resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': + resolution: {integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': + resolution: {integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': + resolution: {integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': + resolution: {integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.13.0 + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': + resolution: {integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-proposal-class-properties@7.18.6': + resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-decorators@7.25.9': + resolution: {integrity: sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-default-from@7.18.10': + resolution: {integrity: sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-export-namespace-from@7.18.9': + resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-json-strings@7.18.6': + resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': + resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-numeric-separator@7.18.6': + resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-object-rest-spread@7.20.7': + resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-optional-chaining@7.21.0': + resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-methods@7.18.6': + resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': + resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-private-property-in-object@7.21.11': + resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} + engines: {node: '>=6.9.0'} + deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-proposal-throw-expressions@7.18.6': + resolution: {integrity: sha512-WHOrJyhGoGrdtW480L79cF7Iq/gZDZ/z6OqK7mVyFR5I37dTpog/wNgb6hmaM3HYZtULEJl++7VaMWkNZsOcHg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-async-generators@7.8.4': + resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-bigint@7.8.3': + resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-properties@7.12.13': + resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-class-static-block@7.14.5': + resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.25.9': + resolution: {integrity: sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-dynamic-import@7.8.3': + resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-default-from@7.25.9': + resolution: {integrity: sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-export-namespace-from@7.8.3': + resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-flow@7.26.0': + resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-assertions@7.26.0': + resolution: {integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.26.0': + resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-json-strings@7.8.3': + resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.25.9': + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': + resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': + resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-numeric-separator@7.10.4': + resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-object-rest-spread@7.8.3': + resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3': + resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-optional-chaining@7.8.3': + resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-private-property-in-object@7.14.5': + resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-throw-expressions@7.25.9': + resolution: {integrity: sha512-lVO49hFBP/HNgPwAeiigPOUmtMWgs9yECOY7vWhCK7jbY++z3LZGpTPPdRbcTxRh1U94lGaQO35ZrkLGDaN/Nw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-top-level-await@7.14.5': + resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.25.9': + resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': + resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-arrow-functions@7.25.9': + resolution: {integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-generator-functions@7.25.9': + resolution: {integrity: sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-async-to-generator@7.25.9': + resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoped-functions@7.25.9': + resolution: {integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-block-scoping@7.25.9': + resolution: {integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-properties@7.25.9': + resolution: {integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-class-static-block@7.26.0': + resolution: {integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.12.0 + + '@babel/plugin-transform-classes@7.25.9': + resolution: {integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-computed-properties@7.25.9': + resolution: {integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-destructuring@7.25.9': + resolution: {integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-dotall-regex@7.25.9': + resolution: {integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-keys@7.25.9': + resolution: {integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-dynamic-import@7.25.9': + resolution: {integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-exponentiation-operator@7.25.9': + resolution: {integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-export-namespace-from@7.25.9': + resolution: {integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-flow-strip-types@7.25.9': + resolution: {integrity: sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-for-of@7.25.9': + resolution: {integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-function-name@7.25.9': + resolution: {integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-json-strings@7.25.9': + resolution: {integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-literals@7.25.9': + resolution: {integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9': + resolution: {integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-member-expression-literals@7.25.9': + resolution: {integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-amd@7.25.9': + resolution: {integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-commonjs@7.25.9': + resolution: {integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-systemjs@7.25.9': + resolution: {integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-modules-umd@7.25.9': + resolution: {integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': + resolution: {integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-new-target@7.25.9': + resolution: {integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': + resolution: {integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-numeric-separator@7.25.9': + resolution: {integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-rest-spread@7.25.9': + resolution: {integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-object-super@7.25.9': + resolution: {integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-catch-binding@7.25.9': + resolution: {integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-optional-chaining@7.25.9': + resolution: {integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-parameters@7.25.9': + resolution: {integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-methods@7.25.9': + resolution: {integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-private-property-in-object@7.25.9': + resolution: {integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-property-literals@7.25.9': + resolution: {integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-display-name@7.25.9': + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-development@7.25.9': + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-self@7.25.9': + resolution: {integrity: sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx-source@7.25.9': + resolution: {integrity: sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-jsx@7.25.9': + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-react-pure-annotations@7.25.9': + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regenerator@7.25.9': + resolution: {integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-regexp-modifiers@7.26.0': + resolution: {integrity: sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/plugin-transform-reserved-words@7.25.9': + resolution: {integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-runtime@7.25.9': + resolution: {integrity: sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-shorthand-properties@7.25.9': + resolution: {integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.25.9': + resolution: {integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-sticky-regex@7.25.9': + resolution: {integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-template-literals@7.25.9': + resolution: {integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typeof-symbol@7.25.9': + resolution: {integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.25.9': + resolution: {integrity: sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-escapes@7.25.9': + resolution: {integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-property-regex@7.25.9': + resolution: {integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-regex@7.25.9': + resolution: {integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9': + resolution: {integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/preset-env@7.26.0': + resolution: {integrity: sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-modules@0.1.6-no-external-plugins': + resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 + + '@babel/preset-react@7.25.9': + resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/preset-typescript@7.26.0': + resolution: {integrity: sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime-corejs3@7.26.0': + resolution: {integrity: sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.20.6': + resolution: {integrity: sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.26.0': + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.25.9': + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.9': + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.20.5': + resolution: {integrity: sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.26.0': + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} + engines: {node: '>=6.9.0'} + + '@base2/pretty-print-object@1.0.1': + resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} + + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + + '@cnakazawa/watch@1.0.4': + resolution: {integrity: sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==} + engines: {node: '>=0.1.95'} + hasBin: true + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@csstools/css-parser-algorithms@3.0.3': + resolution: {integrity: sha512-15WQTALDyxAwSgAvLt7BksAssiSrNNhTv4zM7qX9U6R7FtpNskVVakzWQlYODlwPwXhGpKPmB10LM943pxMe7w==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.2 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@3.0.1': + resolution: {integrity: sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.1 + '@csstools/css-tokenizer': ^3.0.1 + + '@csstools/selector-specificity@4.0.0': + resolution: {integrity: sha512-189nelqtPd8++phaHNwYovKZI0FOzH1vQEE3QhHHkNIGrg5fSs9CbYP3RvfEH5geztnIA9Jwq91wyOIwAW5JIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^6.1.0 + + '@cypress/request@3.0.5': + resolution: {integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==} + engines: {node: '>= 6'} + + '@cypress/xvfb@1.2.4': + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + + '@discoveryjs/json-ext@0.5.7': + resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} + engines: {node: '>=10.0.0'} + + '@dnd-kit/accessibility@3.1.0': + resolution: {integrity: sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==} + peerDependencies: + react: '>=16.8.0' + + '@dnd-kit/core@6.0.8': + resolution: {integrity: sha512-lYaoP8yHTQSLlZe6Rr9qogouGUz9oRUj4AHhDQGQzq/hqaJRpFo65X+JKsdHf8oUFBzx5A+SJPUvxAwTF2OabA==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + '@dnd-kit/sortable@7.0.2': + resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} + peerDependencies: + '@dnd-kit/core': ^6.0.7 + react: '>=16.8.0' + + '@dnd-kit/utilities@3.2.2': + resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} + peerDependencies: + react: '>=16.8.0' + + '@dual-bundle/import-meta-resolve@4.1.0': + resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + + '@emotion/babel-plugin@11.12.0': + resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} + + '@emotion/cache@11.13.1': + resolution: {integrity: sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==} + + '@emotion/hash@0.9.2': + resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==} + + '@emotion/memoize@0.9.0': + resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} + + '@emotion/react@11.13.3': + resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==} + peerDependencies: + '@types/react': '*' + react: '>=16.8.0' + peerDependenciesMeta: + '@types/react': + optional: true + + '@emotion/serialize@1.3.2': + resolution: {integrity: sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==} + + '@emotion/sheet@1.4.0': + resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} + + '@emotion/unitless@0.10.0': + resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} + + '@emotion/use-insertion-effect-with-fallbacks@1.1.0': + resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} + peerDependencies: + react: '>=16.8.0' + + '@emotion/utils@1.4.1': + resolution: {integrity: sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==} + + '@emotion/weak-memoize@0.4.0': + resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} + + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.1': + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.2': + resolution: {integrity: sha512-2WwyTYNVaMNUWPZTOJdkax9iqTdirrApgTbk+Qoq5EPX6myqZvG8QGFRgdKmkjKVG6/G/a565vpPauHk0+hpBA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.1': + resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@fiverr/afterbuild-webpack-plugin@1.0.0': + resolution: {integrity: sha512-ZoeJ6Y91WAbavW0w4lBBzJlQ8jQPxJslVoajuvLSPXpJPBYbSRgfSJPrp/NTsv9C2nMqde4kYf/IW2rmmtPB+w==} + engines: {node: '>= 14.0.0'} + + '@fluentui/react-component-event-listener@0.63.1': + resolution: {integrity: sha512-gSMdOh6tI3IJKZFqxfQwbTpskpME0CvxdxGM2tdglmf6ZPVDi0L4+KKIm+2dN8nzb8Ya1A8ZT+Ddq0KmZtwVQg==} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + + '@fluentui/react-component-ref@0.63.1': + resolution: {integrity: sha512-8MkXX4+R3i80msdbD4rFpEB4WWq2UDvGwG386g3ckIWbekdvN9z2kWAd9OXhRGqB7QeOsoAGWocp6gAMCivRlw==} + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + + '@formatjs/ecma402-abstract@2.2.1': + resolution: {integrity: sha512-O4ywpkdJybrjFc9zyL8qK5aklleIAi5O4nYhBVJaOFtCkNrnU+lKFeJOFC48zpsZQmR8Aok2V79hGpHnzbmFpg==} + + '@formatjs/fast-memoize@2.2.2': + resolution: {integrity: sha512-mzxZcS0g1pOzwZTslJOBTmLzDXseMLLvnh25ymRilCm8QLMObsQ7x/rj9GNrH0iUhZMlFisVOD6J1n6WQqpKPQ==} + + '@formatjs/icu-messageformat-parser@2.9.1': + resolution: {integrity: sha512-7AYk4tjnLi5wBkxst2w7qFj38JLMJoqzj7BhdEl7oTlsWMlqwgx4p9oMmmvpXWTSDGNwOKBRc1SfwMh5MOHeNg==} + + '@formatjs/icu-skeleton-parser@1.8.5': + resolution: {integrity: sha512-zRZ/e3B5qY2+JCLs7puTzWS1Jb+t/K+8Jur/gEZpA2EjWeLDE17nsx8thyo9P48Mno7UmafnPupV2NCJXX17Dg==} + + '@formatjs/intl-displaynames@1.2.10': + resolution: {integrity: sha512-GROA2RP6+7Ouu0WnHFF78O5XIU7pBfI19WM1qm93l6MFWibUk67nCfVCK3VAYJkLy8L8ZxjkYT11VIAfvSz8wg==} + + '@formatjs/intl-listformat@1.4.8': + resolution: {integrity: sha512-WNMQlEg0e50VZrGIkgD5n7+DAMGt3boKi1GJALfhFMymslJb5i+5WzWxyj/3a929Z6MAFsmzRIJjKuv+BxKAOQ==} + + '@formatjs/intl-localematcher@0.5.6': + resolution: {integrity: sha512-roz1+Ba5e23AHX6KUAWmLEyTRZegM5YDuxuvkHCyK3RJddf/UXB2f+s7pOMm9ktfPGla0g+mQXOn5vsuYirnaA==} + + '@formatjs/intl-relativetimeformat@4.5.16': + resolution: {integrity: sha512-IQ0haY97oHAH5OYUdykNiepdyEWj3SAT+Fp9ZpR85ov2JNiFx+12WWlxlVS8ehdyncC2ZMt/SwFIy2huK2+6/A==} + + '@formatjs/intl-unified-numberformat@3.3.7': + resolution: {integrity: sha512-KnWgLRHzCAgT9eyt3OS34RHoyD7dPDYhRcuKn+/6Kv2knDF8Im43J6vlSW6Hm1w63fNq3ZIT1cFk7RuVO3Psag==} + deprecated: We have renamed the package to @formatjs/intl-numberformat + + '@formatjs/intl-utils@2.3.0': + resolution: {integrity: sha512-KWk80UPIzPmUg+P0rKh6TqspRw0G6eux1PuJr+zz47ftMaZ9QDwbGzHZbtzWkl5hgayM/qrKRutllRC7D/vVXQ==} + deprecated: the package is rather renamed to @formatjs/ecma-abstract with some changes in functionality (primarily selectUnit is removed and we don't plan to make any further changes to this package + + '@gar/promisify@1.1.3': + resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} + + '@hapi/hoek@9.3.0': + resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + + '@hapi/topo@5.1.0': + resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + + '@humanwhocodes/config-array@0.13.0': + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@iarna/toml@2.2.5': + resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} + + '@internationalized/date@3.5.6': + resolution: {integrity: sha512-jLxQjefH9VI5P9UQuqB6qNKnvFt1Ky1TPIzHGsIlCi7sZZoMR8SdYbBGRvM0y+Jtb+ez4ieBzmiAUcpmPYpyOw==} + + '@internationalized/message@3.1.5': + resolution: {integrity: sha512-hjEpLKFlYA3m5apldLqzHqw531qqfOEq0HlTWdfyZmcloWiUbWsYXD6YTiUmQmOtarthzhdjCAwMVrB8a4E7uA==} + + '@internationalized/number@3.5.4': + resolution: {integrity: sha512-h9huwWjNqYyE2FXZZewWqmCdkw1HeFds5q4Siuoms3hUQC5iPJK3aBmkFZoDSLN4UD0Bl8G22L/NdHpeOr+/7A==} + + '@internationalized/string@3.2.4': + resolution: {integrity: sha512-BcyadXPn89Ae190QGZGDUZPqxLj/xsP4U1Br1oSy8yfIjmpJ8cJtGYleaodqW/EmzFjwELtwDojLkf3FhV6SjA==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/string-locale-compare@1.1.0': + resolution: {integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==} + + '@istanbuljs/load-nyc-config@1.1.0': + resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} + engines: {node: '>=8'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@jest/console@24.9.0': + resolution: {integrity: sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==} + engines: {node: '>= 6'} + + '@jest/console@26.6.2': + resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} + engines: {node: '>= 10.14.2'} + + '@jest/core@24.9.0': + resolution: {integrity: sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==} + engines: {node: '>= 6'} + + '@jest/core@26.6.3': + resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} + engines: {node: '>= 10.14.2'} + + '@jest/environment@24.9.0': + resolution: {integrity: sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==} + engines: {node: '>= 6'} + + '@jest/environment@26.6.2': + resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} + engines: {node: '>= 10.14.2'} + + '@jest/environment@29.7.0': + resolution: {integrity: sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect-utils@29.7.0': + resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/expect@29.7.0': + resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/fake-timers@24.9.0': + resolution: {integrity: sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==} + engines: {node: '>= 6'} + + '@jest/fake-timers@26.6.2': + resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} + engines: {node: '>= 10.14.2'} + + '@jest/fake-timers@29.7.0': + resolution: {integrity: sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/globals@26.6.2': + resolution: {integrity: sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==} + engines: {node: '>= 10.14.2'} + + '@jest/globals@29.7.0': + resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/reporters@24.9.0': + resolution: {integrity: sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==} + engines: {node: '>= 6'} + + '@jest/reporters@26.6.2': + resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} + engines: {node: '>= 10.14.2'} + + '@jest/schemas@29.6.3': + resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/source-map@24.9.0': + resolution: {integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==} + engines: {node: '>= 6'} + + '@jest/source-map@26.6.2': + resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} + engines: {node: '>= 10.14.2'} + + '@jest/test-result@24.9.0': + resolution: {integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==} + engines: {node: '>= 6'} + + '@jest/test-result@26.6.2': + resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} + engines: {node: '>= 10.14.2'} + + '@jest/test-sequencer@24.9.0': + resolution: {integrity: sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==} + engines: {node: '>= 6'} + + '@jest/test-sequencer@26.6.3': + resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} + engines: {node: '>= 10.14.2'} + + '@jest/transform@24.9.0': + resolution: {integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==} + engines: {node: '>= 6'} + + '@jest/transform@26.6.2': + resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} + engines: {node: '>= 10.14.2'} + + '@jest/transform@29.7.0': + resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@jest/types@24.9.0': + resolution: {integrity: sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==} + engines: {node: '>= 6'} + + '@jest/types@25.5.0': + resolution: {integrity: sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==} + engines: {node: '>= 8.3'} + + '@jest/types@26.6.2': + resolution: {integrity: sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==} + engines: {node: '>= 10.14.2'} + + '@jest/types@29.6.3': + resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0': + resolution: {integrity: sha512-2D6y7fNvFmsLmRt6UCOFJPvFoPMJGT0Uh1Wg0RaigUp7kdQPs6yYn8Dmx6GZkOH/NW0yMTwRz/p0SRMMRo50vA==} + peerDependencies: + typescript: '>= 4.3.x' + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + peerDependenciesMeta: + typescript: + optional: true + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@juggle/resize-observer@3.4.0': + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + + '@kwsites/file-exists@1.1.1': + resolution: {integrity: sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==} + + '@kwsites/promise-deferred@1.1.1': + resolution: {integrity: sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==} + + '@leichtgewicht/ip-codec@2.0.5': + resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} + + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + + '@ljharb/through@2.3.13': + resolution: {integrity: sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==} + engines: {node: '>= 0.4'} + + '@lmdb/lmdb-darwin-arm64@2.8.5': + resolution: {integrity: sha512-KPDeVScZgA1oq0CiPBcOa3kHIqU+pTOwRFDIhxvmf8CTNvqdZQYp5cCKW0bUk69VygB2PuTiINFWbY78aR2pQw==} + cpu: [arm64] + os: [darwin] + + '@lmdb/lmdb-darwin-x64@2.8.5': + resolution: {integrity: sha512-w/sLhN4T7MW1nB3R/U8WK5BgQLz904wh+/SmA2jD8NnF7BLLoUgflCNxOeSPOWp8geP6nP/+VjWzZVip7rZ1ug==} + cpu: [x64] + os: [darwin] + + '@lmdb/lmdb-linux-arm64@2.8.5': + resolution: {integrity: sha512-vtbZRHH5UDlL01TT5jB576Zox3+hdyogvpcbvVJlmU5PdL3c5V7cj1EODdh1CHPksRl+cws/58ugEHi8bcj4Ww==} + cpu: [arm64] + os: [linux] + + '@lmdb/lmdb-linux-arm@2.8.5': + resolution: {integrity: sha512-c0TGMbm2M55pwTDIfkDLB6BpIsgxV4PjYck2HiOX+cy/JWiBXz32lYbarPqejKs9Flm7YVAKSILUducU9g2RVg==} + cpu: [arm] + os: [linux] + + '@lmdb/lmdb-linux-x64@2.8.5': + resolution: {integrity: sha512-Xkc8IUx9aEhP0zvgeKy7IQ3ReX2N8N1L0WPcQwnZweWmOuKfwpS3GRIYqLtK5za/w3E60zhFfNdS+3pBZPytqQ==} + cpu: [x64] + os: [linux] + + '@lmdb/lmdb-win32-x64@2.8.5': + resolution: {integrity: sha512-4wvrf5BgnR8RpogHhtpCPJMKBmvyZPhhUtEwMJbXh0ni2BucpfF07jlmyM11zRqQ2XIq6PbC2j7W7UCCcm1rRQ==} + cpu: [x64] + os: [win32] + + '@loadable/babel-plugin@5.13.2': + resolution: {integrity: sha512-vSZUVeTH1S1sDbk8Tzft0plZSkN7W4zmVR5w/Bmy4UmvBiu9lin7ztrDpoUTUzxpoups+OJbTc/OosvN0aMXWg==} + engines: {node: '>=8'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@loadable/component@5.14.1': + resolution: {integrity: sha512-UQBZfZrp1FLTf8RNhljXNHFNY4QhAA1L2+GOEeABBFre9TD0aFyQh3Sai5QxcOfy+FTbjIfti5iHaNRR7yUzEQ==} + engines: {node: '>=8'} + peerDependencies: + react: '>=16.3.0' + + '@loadable/server@5.14.0': + resolution: {integrity: sha512-oiZiHzUdkOsDzZNXU6fsZ7U0W3+nWZRljVCFCeR8CZSXEKUfXAllUf8tx5G385q7vapAQpXM7U8EzgDns3Q4vQ==} + engines: {node: '>=8'} + peerDependencies: + '@loadable/component': ^5.0.1 + react: '>=16.3.0' + + '@loadable/webpack-plugin@5.15.2': + resolution: {integrity: sha512-+o87jPHn3E8sqW0aBA+qwKuG8JyIfMGdz3zECv0t/JF0KHhxXtzIlTiqzlIYc5ZpFs/vKSQfjzGIR5tPJjoXDw==} + engines: {node: '>=8'} + peerDependencies: + webpack: '>=4.6.0' + + '@mdx-js/react@3.1.0': + resolution: {integrity: sha512-QjHtSaoameoalGnKDT3FoIl4+9RwyTmo9ZJGBdLOks/YOiWHoRDI3PUwEzOE7kEmGcV3AFcp9K6dYu9rEuKLAQ==} + peerDependencies: + '@types/react': '>=16' + react: '>=16' + + '@microsoft/api-extractor-model@7.28.13': + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} + + '@microsoft/api-extractor@7.43.0': + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true + + '@microsoft/tsdoc-config@0.16.2': + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + + '@microsoft/tsdoc@0.14.2': + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + + '@mischnic/json-sourcemap@0.1.1': + resolution: {integrity: sha512-iA7+tyVqfrATAIsIRWQG+a7ZLLD0VaOCKV2Wd/v4mqIU3J9c4jx9p7S0nw1XH3gJCKNBOOwACOPYYSUu9pgT+w==} + engines: {node: '>=12.0.0'} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + resolution: {integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + resolution: {integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + resolution: {integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + resolution: {integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + resolution: {integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + resolution: {integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==} + cpu: [x64] + os: [win32] + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nolyfill/is-core-module@1.0.39': + resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} + engines: {node: '>=12.4.0'} + + '@npmcli/arborist@4.3.1': + resolution: {integrity: sha512-yMRgZVDpwWjplorzt9SFSaakWx6QIK248Nw4ZFgkrAy/GvJaFRaSZzE6nD7JBK5r8g/+PTxFq5Wj/sfciE7x+A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + hasBin: true + + '@npmcli/fs@1.1.1': + resolution: {integrity: sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==} + + '@npmcli/fs@2.1.2': + resolution: {integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/fs@3.1.1': + resolution: {integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/git@2.1.0': + resolution: {integrity: sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==} + + '@npmcli/git@4.1.0': + resolution: {integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/installed-package-contents@1.0.7': + resolution: {integrity: sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==} + engines: {node: '>= 10'} + hasBin: true + + '@npmcli/installed-package-contents@2.1.0': + resolution: {integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + '@npmcli/map-workspaces@2.0.4': + resolution: {integrity: sha512-bMo0aAfwhVwqoVM5UzX1DJnlvVvzDCHae821jv48L1EsrYwfOZChlqWYXEtto/+BkBXetPbEWgau++/brh4oVg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + '@npmcli/metavuln-calculator@2.0.0': + resolution: {integrity: sha512-VVW+JhWCKRwCTE+0xvD6p3uV4WpqocNYYtzyvenqL/u1Q3Xx6fGTJ+6UoIoii07fbuEO9U3IIyuGY0CYHDv1sg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + + '@npmcli/move-file@1.1.2': + resolution: {integrity: sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==} + engines: {node: '>=10'} + deprecated: This functionality has been moved to @npmcli/fs + + '@npmcli/move-file@2.0.1': + resolution: {integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This functionality has been moved to @npmcli/fs + + '@npmcli/name-from-folder@1.0.1': + resolution: {integrity: sha512-qq3oEfcLFwNfEYOQ8HLimRGKlD8WSeGEdtUa7hmzpR8Sa7haL1KVQrvgO6wqMjhWFFVjgtrh1gIxDz+P8sjUaA==} + + '@npmcli/node-gyp@1.0.3': + resolution: {integrity: sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==} + + '@npmcli/node-gyp@3.0.0': + resolution: {integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/package-json@1.0.1': + resolution: {integrity: sha512-y6jnu76E9C23osz8gEMBayZmaZ69vFOIk8vR1FJL/wbEJ54+9aVG9rLTjQKSXfgYZEr50nw1txBBFfBZZe+bYg==} + + '@npmcli/promise-spawn@1.3.2': + resolution: {integrity: sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==} + + '@npmcli/promise-spawn@6.0.2': + resolution: {integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@npmcli/run-script@2.0.0': + resolution: {integrity: sha512-fSan/Pu11xS/TdaTpTB0MRn9guwGU8dye+x56mEVgBEd/QsybBbYcAL0phPXi8SGWFEChkQd6M9qL4y6VOpFig==} + + '@npmcli/run-script@6.0.2': + resolution: {integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@octokit/auth-token@2.5.0': + resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==} + + '@octokit/auth-token@3.0.4': + resolution: {integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==} + engines: {node: '>= 14'} + + '@octokit/auth-token@4.0.0': + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + + '@octokit/core@3.6.0': + resolution: {integrity: sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==} + + '@octokit/core@4.2.4': + resolution: {integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==} + engines: {node: '>= 14'} + + '@octokit/core@5.2.0': + resolution: {integrity: sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==} + engines: {node: '>= 18'} + + '@octokit/endpoint@6.0.12': + resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==} + + '@octokit/endpoint@7.0.6': + resolution: {integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==} + engines: {node: '>= 14'} + + '@octokit/endpoint@9.0.5': + resolution: {integrity: sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==} + engines: {node: '>= 18'} + + '@octokit/graphql@4.8.0': + resolution: {integrity: sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==} + + '@octokit/graphql@5.0.6': + resolution: {integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==} + engines: {node: '>= 14'} + + '@octokit/graphql@7.1.0': + resolution: {integrity: sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==} + engines: {node: '>= 18'} + + '@octokit/openapi-types@12.11.0': + resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==} + + '@octokit/openapi-types@18.1.1': + resolution: {integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==} + + '@octokit/openapi-types@20.0.0': + resolution: {integrity: sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==} + + '@octokit/openapi-types@22.2.0': + resolution: {integrity: sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==} + + '@octokit/plugin-paginate-rest@2.21.3': + resolution: {integrity: sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==} + peerDependencies: + '@octokit/core': '>=2' + + '@octokit/plugin-paginate-rest@6.1.2': + resolution: {integrity: sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==} + engines: {node: '>= 14'} + peerDependencies: + '@octokit/core': '>=4' + + '@octokit/plugin-paginate-rest@9.2.1': + resolution: {integrity: sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-request-log@1.0.4': + resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==} + peerDependencies: + '@octokit/core': '>=3' + + '@octokit/plugin-request-log@4.0.1': + resolution: {integrity: sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-rest-endpoint-methods@10.4.1': + resolution: {integrity: sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '5' + + '@octokit/plugin-rest-endpoint-methods@5.16.2': + resolution: {integrity: sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==} + peerDependencies: + '@octokit/core': '>=3' + + '@octokit/plugin-rest-endpoint-methods@7.2.3': + resolution: {integrity: sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==} + engines: {node: '>= 14'} + peerDependencies: + '@octokit/core': '>=3' + + '@octokit/request-error@2.1.0': + resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==} + + '@octokit/request-error@3.0.3': + resolution: {integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==} + engines: {node: '>= 14'} + + '@octokit/request-error@5.1.0': + resolution: {integrity: sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==} + engines: {node: '>= 18'} + + '@octokit/request@5.6.3': + resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==} + + '@octokit/request@6.2.8': + resolution: {integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==} + engines: {node: '>= 14'} + + '@octokit/request@8.4.0': + resolution: {integrity: sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==} + engines: {node: '>= 18'} + + '@octokit/rest@18.12.0': + resolution: {integrity: sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==} + + '@octokit/rest@19.0.13': + resolution: {integrity: sha512-/EzVox5V9gYGdbAI+ovYj3nXQT1TtTHRT+0eZPcuC05UFSWO3mdO9UY1C0i2eLF9Un1ONJkAk+IEtYGAC+TahA==} + engines: {node: '>= 14'} + + '@octokit/rest@20.0.2': + resolution: {integrity: sha512-Ux8NDgEraQ/DMAU1PlAohyfBBXDwhnX2j33Z1nJNziqAfHi70PuxkFYIcIt8aIAxtRE7KVuKp8lSR8pA0J5iOQ==} + engines: {node: '>= 18'} + + '@octokit/tsconfig@1.0.2': + resolution: {integrity: sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==} + + '@octokit/types@10.0.0': + resolution: {integrity: sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==} + + '@octokit/types@12.6.0': + resolution: {integrity: sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==} + + '@octokit/types@13.6.1': + resolution: {integrity: sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g==} + + '@octokit/types@6.41.0': + resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==} + + '@octokit/types@9.3.2': + resolution: {integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==} + + '@parcel/bundler-default@2.12.0': + resolution: {integrity: sha512-3ybN74oYNMKyjD6V20c9Gerdbh7teeNvVMwIoHIQMzuIFT6IGX53PyOLlOKRLbjxMc0TMimQQxIt2eQqxR5LsA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/cache@2.12.0': + resolution: {integrity: sha512-FX5ZpTEkxvq/yvWklRHDESVRz+c7sLTXgFuzz6uEnBcXV38j6dMSikflNpHA6q/L4GKkCqRywm9R6XQwhwIMyw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/codeframe@2.12.0': + resolution: {integrity: sha512-v2VmneILFiHZJTxPiR7GEF1wey1/IXPdZMcUlNXBiPZyWDfcuNgGGVQkx/xW561rULLIvDPharOMdxz5oHOKQg==} + engines: {node: '>= 12.0.0'} + + '@parcel/compressor-raw@2.12.0': + resolution: {integrity: sha512-h41Q3X7ZAQ9wbQ2csP8QGrwepasLZdXiuEdpUryDce6rF9ZiHoJ97MRpdLxOhOPyASTw/xDgE1xyaPQr0Q3f5A==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/config-default@2.12.0': + resolution: {integrity: sha512-dPNe2n9eEsKRc1soWIY0yToMUPirPIa2QhxcCB3Z5RjpDGIXm0pds+BaiqY6uGLEEzsjhRO0ujd4v2Rmm0vuFg==} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/core@2.12.0': + resolution: {integrity: sha512-s+6pwEj+GfKf7vqGUzN9iSEPueUssCCQrCBUlcAfKrJe0a22hTUCjewpB0I7lNrCIULt8dkndD+sMdOrXsRl6Q==} + engines: {node: '>= 12.0.0'} + + '@parcel/diagnostic@2.12.0': + resolution: {integrity: sha512-8f1NOsSFK+F4AwFCKynyIu9Kr/uWHC+SywAv4oS6Bv3Acig0gtwUjugk0C9UaB8ztBZiW5TQZhw+uPZn9T/lJA==} + engines: {node: '>= 12.0.0'} + + '@parcel/events@2.12.0': + resolution: {integrity: sha512-nmAAEIKLjW1kB2cUbCYSmZOGbnGj8wCzhqnK727zCCWaA25ogzAtt657GPOeFyqW77KyosU728Tl63Fc8hphIA==} + engines: {node: '>= 12.0.0'} + + '@parcel/fs@2.12.0': + resolution: {integrity: sha512-NnFkuvou1YBtPOhTdZr44WN7I60cGyly2wpHzqRl62yhObyi1KvW0SjwOMa0QGNcBOIzp4G0CapoZ93hD0RG5Q==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/graph@3.2.0': + resolution: {integrity: sha512-xlrmCPqy58D4Fg5umV7bpwDx5Vyt7MlnQPxW68vae5+BA4GSWetfZt+Cs5dtotMG2oCHzZxhIPt7YZ7NRyQzLA==} + engines: {node: '>= 12.0.0'} + + '@parcel/logger@2.12.0': + resolution: {integrity: sha512-cJ7Paqa7/9VJ7C+KwgJlwMqTQBOjjn71FbKk0G07hydUEBISU2aDfmc/52o60ErL9l+vXB26zTrIBanbxS8rVg==} + engines: {node: '>= 12.0.0'} + + '@parcel/markdown-ansi@2.12.0': + resolution: {integrity: sha512-WZz3rzL8k0H3WR4qTHX6Ic8DlEs17keO9gtD4MNGyMNQbqQEvQ61lWJaIH0nAtgEetu0SOITiVqdZrb8zx/M7w==} + engines: {node: '>= 12.0.0'} + + '@parcel/namer-default@2.12.0': + resolution: {integrity: sha512-9DNKPDHWgMnMtqqZIMiEj/R9PNWW16lpnlHjwK3ciRlMPgjPJ8+UNc255teZODhX0T17GOzPdGbU/O/xbxVPzA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/node-resolver-core@3.3.0': + resolution: {integrity: sha512-rhPW9DYPEIqQBSlYzz3S0AjXxjN6Ub2yS6tzzsW/4S3Gpsgk/uEq4ZfxPvoPf/6TgZndVxmKwpmxaKtGMmf3cA==} + engines: {node: '>= 12.0.0'} + + '@parcel/optimizer-css@2.12.0': + resolution: {integrity: sha512-ifbcC97fRzpruTjaa8axIFeX4MjjSIlQfem3EJug3L2AVqQUXnM1XO8L0NaXGNLTW2qnh1ZjIJ7vXT/QhsphsA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/optimizer-htmlnano@2.12.0': + resolution: {integrity: sha512-MfPMeCrT8FYiOrpFHVR+NcZQlXAptK2r4nGJjfT+ndPBhEEZp4yyL7n1y7HfX9geg5altc4WTb4Gug7rCoW8VQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/optimizer-image@2.12.0': + resolution: {integrity: sha512-bo1O7raeAIbRU5nmNVtx8divLW9Xqn0c57GVNGeAK4mygnQoqHqRZ0mR9uboh64pxv6ijXZHPhKvU9HEpjPjBQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/optimizer-svgo@2.12.0': + resolution: {integrity: sha512-Kyli+ZZXnoonnbeRQdoWwee9Bk2jm/49xvnfb+2OO8NN0d41lblBoRhOyFiScRnJrw7eVl1Xrz7NTkXCIO7XFQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/optimizer-swc@2.12.0': + resolution: {integrity: sha512-iBi6LZB3lm6WmbXfzi8J3DCVPmn4FN2lw7DGXxUXu7MouDPVWfTsM6U/5TkSHJRNRogZ2gqy5q9g34NPxHbJcw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/optimizer-terser@2.12.0': + resolution: {integrity: sha512-cIAJ+nLPk7MUGiSbsam8vM8gQNiaVavKhJN13PsEBzv0QLOQm0TCl02cGC9WJIukyc90AO5p3MnFP4/1U1M8iA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/package-manager@2.12.0': + resolution: {integrity: sha512-0nvAezcjPx9FT+hIL+LS1jb0aohwLZXct7jAh7i0MLMtehOi0z1Sau+QpgMlA9rfEZZ1LIeFdnZZwqSy7Ccspw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/packager-css@2.12.0': + resolution: {integrity: sha512-j3a/ODciaNKD19IYdWJT+TP+tnhhn5koBGBWWtrKSu0UxWpnezIGZetit3eE+Y9+NTePalMkvpIlit2eDhvfJA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/packager-html@2.12.0': + resolution: {integrity: sha512-PpvGB9hFFe+19NXGz2ApvPrkA9GwEqaDAninT+3pJD57OVBaxB8U+HN4a5LICKxjUppPPqmrLb6YPbD65IX4RA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/packager-js@2.12.0': + resolution: {integrity: sha512-viMF+FszITRRr8+2iJyk+4ruGiL27Y6AF7hQ3xbJfzqnmbOhGFtLTQwuwhOLqN/mWR2VKdgbLpZSarWaO3yAMg==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/packager-raw@2.12.0': + resolution: {integrity: sha512-tJZqFbHqP24aq1F+OojFbQIc09P/u8HAW5xfndCrFnXpW4wTgM3p03P0xfw3gnNq+TtxHJ8c3UFE5LnXNNKhYA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/packager-svg@2.12.0': + resolution: {integrity: sha512-ldaGiacGb2lLqcXas97k8JiZRbAnNREmcvoY2W2dvW4loVuDT9B9fU777mbV6zODpcgcHWsLL3lYbJ5Lt3y9cg==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/packager-ts@2.12.0': + resolution: {integrity: sha512-8wR0BNN2NBD+IIU0tjioK+lRD4p2Qi/fKxDH5ixEW912tRV+Vd4kE8k++U6YQIpSlK4FRnjFod5zYYhNSLuiXg==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/packager-wasm@2.12.0': + resolution: {integrity: sha512-fYqZzIqO9fGYveeImzF8ll6KRo2LrOXfD+2Y5U3BiX/wp9wv17dz50QLDQm9hmTcKGWxK4yWqKQh+Evp/fae7A==} + engines: {node: '>=12.0.0', parcel: ^2.12.0} + + '@parcel/plugin@2.12.0': + resolution: {integrity: sha512-nc/uRA8DiMoe4neBbzV6kDndh/58a4wQuGKw5oEoIwBCHUvE2W8ZFSu7ollSXUGRzfacTt4NdY8TwS73ScWZ+g==} + engines: {node: '>= 12.0.0'} + + '@parcel/profiler@2.12.0': + resolution: {integrity: sha512-q53fvl5LDcFYzMUtSusUBZSjQrKjMlLEBgKeQHFwkimwR1mgoseaDBDuNz0XvmzDzF1UelJ02TUKCGacU8W2qA==} + engines: {node: '>= 12.0.0'} + + '@parcel/reporter-cli@2.12.0': + resolution: {integrity: sha512-TqKsH4GVOLPSCanZ6tcTPj+rdVHERnt5y4bwTM82cajM21bCX1Ruwp8xOKU+03091oV2pv5ieB18pJyRF7IpIw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/reporter-dev-server@2.12.0': + resolution: {integrity: sha512-tIcDqRvAPAttRlTV28dHcbWT5K2r/MBFks7nM4nrEDHWtnrCwimkDmZTc1kD8QOCCjGVwRHcQybpHvxfwol6GA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/reporter-tracer@2.12.0': + resolution: {integrity: sha512-g8rlu9GxB8Ut/F8WGx4zidIPQ4pcYFjU9bZO+fyRIPrSUFH2bKijCnbZcr4ntqzDGx74hwD6cCG4DBoleq2UlQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/resolver-default@2.12.0': + resolution: {integrity: sha512-uuhbajTax37TwCxu7V98JtRLiT6hzE4VYSu5B7Qkauy14/WFt2dz6GOUXPgVsED569/hkxebPx3KCMtZW6cHHA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/runtime-browser-hmr@2.12.0': + resolution: {integrity: sha512-4ZLp2FWyD32r0GlTulO3+jxgsA3oO1P1b5oO2IWuWilfhcJH5LTiazpL5YdusUjtNn9PGN6QLAWfxmzRIfM+Ow==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/runtime-js@2.12.0': + resolution: {integrity: sha512-sBerP32Z1crX5PfLNGDSXSdqzlllM++GVnVQVeM7DgMKS8JIFG3VLi28YkX+dYYGtPypm01JoIHCkvwiZEcQJg==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/runtime-react-refresh@2.12.0': + resolution: {integrity: sha512-SCHkcczJIDFTFdLTzrHTkQ0aTrX3xH6jrA4UsCBL6ji61+w+ohy4jEEe9qCgJVXhnJfGLE43HNXek+0MStX+Mw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/runtime-service-worker@2.12.0': + resolution: {integrity: sha512-BXuMBsfiwpIEnssn+jqfC3jkgbS8oxeo3C7xhSQsuSv+AF2FwY3O3AO1c1RBskEW3XrBLNINOJujroNw80VTKA==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/rust@2.12.0': + resolution: {integrity: sha512-005cldMdFZFDPOjbDVEXcINQ3wT4vrxvSavRWI3Az0e3E18exO/x/mW9f648KtXugOXMAqCEqhFHcXECL9nmMw==} + engines: {node: '>= 12.0.0'} + + '@parcel/source-map@2.1.1': + resolution: {integrity: sha512-Ejx1P/mj+kMjQb8/y5XxDUn4reGdr+WyKYloBljpppUy8gs42T+BNoEOuRYqDVdgPc6NxduzIDoJS9pOFfV5Ew==} + engines: {node: ^12.18.3 || >=14} + + '@parcel/transformer-babel@2.12.0': + resolution: {integrity: sha512-zQaBfOnf/l8rPxYGnsk/ufh/0EuqvmnxafjBIpKZ//j6rGylw5JCqXSb1QvvAqRYruKeccxGv7+HrxpqKU6V4A==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-css@2.12.0': + resolution: {integrity: sha512-vXhOqoAlQGATYyQ433Z1DXKmiKmzOAUmKysbYH3FD+LKEKLMEl/pA14goqp00TW+A/EjtSKKyeMyHlMIIUqj4Q==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-html@2.12.0': + resolution: {integrity: sha512-5jW4dFFBlYBvIQk4nrH62rfA/G/KzVzEDa6S+Nne0xXhglLjkm64Ci9b/d4tKZfuGWUbpm2ASAq8skti/nfpXw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-image@2.12.0': + resolution: {integrity: sha512-8hXrGm2IRII49R7lZ0RpmNk27EhcsH+uNKsvxuMpXPuEnWgC/ha/IrjaI29xCng1uGur74bJF43NUSQhR4aTdw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/transformer-js@2.12.0': + resolution: {integrity: sha512-OSZpOu+FGDbC/xivu24v092D9w6EGytB3vidwbdiJ2FaPgfV7rxS0WIUjH4I0OcvHAcitArRXL0a3+HrNTdQQw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@parcel/transformer-json@2.12.0': + resolution: {integrity: sha512-Utv64GLRCQILK5r0KFs4o7I41ixMPllwOLOhkdjJKvf1hZmN6WqfOmB1YLbWS/y5Zb/iB52DU2pWZm96vLFQZQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-postcss@2.12.0': + resolution: {integrity: sha512-FZqn+oUtiLfPOn67EZxPpBkfdFiTnF4iwiXPqvst3XI8H+iC+yNgzmtJkunOOuylpYY6NOU5jT8d7saqWSDv2Q==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-posthtml@2.12.0': + resolution: {integrity: sha512-z6Z7rav/pcaWdeD+2sDUcd0mmNZRUvtHaUGa50Y2mr+poxrKilpsnFMSiWBT+oOqPt7j71jzDvrdnAF4XkCljg==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-raw@2.12.0': + resolution: {integrity: sha512-Ht1fQvXxix0NncdnmnXZsa6hra20RXYh1VqhBYZLsDfkvGGFnXIgO03Jqn4Z8MkKoa0tiNbDhpKIeTjyclbBxQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-react-refresh-wrap@2.12.0': + resolution: {integrity: sha512-GE8gmP2AZtkpBIV5vSCVhewgOFRhqwdM5Q9jNPOY5PKcM3/Ff0qCqDiTzzGLhk0/VMBrdjssrfZkVx6S/lHdJw==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-svg@2.12.0': + resolution: {integrity: sha512-cZJqGRJ4JNdYcb+vj94J7PdOuTnwyy45dM9xqbIMH+HSiiIkfrMsdEwYft0GTyFTdsnf+hdHn3tau7Qa5hhX+A==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + + '@parcel/transformer-typescript-types@2.12.0': + resolution: {integrity: sha512-uxF4UBMYvbjiV3zHTWMrZX8cFD92VUvD3ArcGi5WEtuVROUm9Sc47o0mOzxKfMFlJu2KOfZVHYlzK9f/UKA2kQ==} + engines: {node: '>= 12.0.0', parcel: ^2.12.0} + peerDependencies: + typescript: '>=3.0.0' + + '@parcel/ts-utils@2.12.0': + resolution: {integrity: sha512-zou+W6dcqnXXUOfN5zGM+ePIWbYOhGp8bVB2jICoNkoKmNAHd4l4zeHl5yQXnbZfynVw88cZVqxtXS8tYebelg==} + engines: {node: '>= 12.0.0'} + peerDependencies: + typescript: '>=3.0.0' + + '@parcel/types@2.12.0': + resolution: {integrity: sha512-8zAFiYNCwNTQcglIObyNwKfRYQK5ELlL13GuBOrSMxueUiI5ylgsGbTS1N7J3dAGZixHO8KhHGv5a71FILn9rQ==} + + '@parcel/utils@2.12.0': + resolution: {integrity: sha512-z1JhLuZ8QmDaYoEIuUCVZlhcFrS7LMfHrb2OCRui5SQFntRWBH2fNM6H/fXXUkT9SkxcuFP2DUA6/m4+Gkz72g==} + engines: {node: '>= 12.0.0'} + + '@parcel/watcher-android-arm64@2.4.1': + resolution: {integrity: sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.4.1': + resolution: {integrity: sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.4.1': + resolution: {integrity: sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.4.1': + resolution: {integrity: sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.4.1': + resolution: {integrity: sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + resolution: {integrity: sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.4.1': + resolution: {integrity: sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.4.1': + resolution: {integrity: sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.4.1': + resolution: {integrity: sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.4.1': + resolution: {integrity: sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.4.1': + resolution: {integrity: sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.4.1': + resolution: {integrity: sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.4.1': + resolution: {integrity: sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==} + engines: {node: '>= 10.0.0'} + + '@parcel/workers@2.12.0': + resolution: {integrity: sha512-zv5We5Jmb+ZWXlU6A+AufyjY4oZckkxsZ8J4dvyWL0W8IQvGO1JB4FGeryyttzQv3RM3OxcN/BpTGPiDG6keBw==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@parcel/core': ^2.12.0 + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.1.1': + resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + + '@plone/scripts@3.6.2': + resolution: {integrity: sha512-52S2Nb8sUDnHobzoYBstn6UkXxri+UGEh5DWZfy0xJ9h/ia6n9XI+mjtSEG3vKkr+hsbLH9sO8RlX4tpG3Kyhg==} + hasBin: true + + '@pmmmwh/react-refresh-webpack-plugin@0.4.3': + resolution: {integrity: sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==} + engines: {node: '>= 10.x'} + peerDependencies: + '@types/webpack': 4.x + react-refresh: '>=0.8.3 <0.10.0' + sockjs-client: ^1.4.0 + type-fest: ^0.13.1 + webpack: '>=4.43.0 <6.0.0' + webpack-dev-server: 3.x + webpack-hot-middleware: 2.x + webpack-plugin-serve: 0.x || 1.x + peerDependenciesMeta: + '@types/webpack': + optional: true + sockjs-client: + optional: true + type-fest: + optional: true + webpack-dev-server: + optional: true + webpack-hot-middleware: + optional: true + webpack-plugin-serve: + optional: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@2.3.1': + resolution: {integrity: sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==} + engines: {node: '>=12'} + + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@react-aria/accordion@3.0.0-alpha.35': + resolution: {integrity: sha512-eZcsHJDVDNIZ2XUmJynHScRv1YAF/+fj5T0zoGdyEPImIIxJLROupQ75uwarAI5btGSR2TFeqYRmRXJrVuxgoA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/breadcrumbs@3.5.18': + resolution: {integrity: sha512-JRc6nAwQsjqsPw/3MlGwJcVo9ACZDbCOwWNNEnj8mR0fQopJO5xliq3qVzxDRZjdYrVUfTTyKXuepv/jMB1Y6Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/button@3.10.1': + resolution: {integrity: sha512-1vkRsjdvJrJleK73u7ClrW4Fw3mtr2hIs8M2yLZUpLoqHXnIYJwmeEMtzwyPFYKBc5jaHcGXw45any7Puy1aFA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/calendar@3.5.13': + resolution: {integrity: sha512-BJV5IwIH4UPDa6/HRTOBcM1wC+/6p823VrbocV9mr+rt5cCnuh+cqcCQKqUSEbfaTMPrmabjBuEaQIvqjLRYUA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/checkbox@3.14.8': + resolution: {integrity: sha512-0qPJ3fiQQm7tiMHmIhR9iokr/MhhI2h6OWX/pDeIy/Gj63WSVk+Cka3NUhgMRGkguHKDZPKaFjK1oZQsXhCThQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/collections@3.0.0-alpha.5': + resolution: {integrity: sha512-8m8yZe1c5PYCylEN4lcG3ZL/1nyrON95nVsoknC8shY1uKP01oJd7w+f6hvVza0tJRQuVe4zW3gO4FVjv33a5g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/color@3.0.1': + resolution: {integrity: sha512-7hTCdXCU2/qpZuIrJcVr+s87C2MqHfi9Y461gMza5DjdUzlcy480UZ/iknbw82C0a+oVo08D/bnQctEjja05pw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/combobox@3.10.5': + resolution: {integrity: sha512-1cjBJXWYuR0de+9IEU1MOer3H5FSlbrdaqlWo+M6vvMymBL2OjjwXiG3LY1mR65ZwHoTswXzt6/mujUKaxk5vw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/datepicker@3.11.4': + resolution: {integrity: sha512-TXe1TB/pSwrIQ5BIDr6NCAYjBaKgLN6cP5DlAihywHzqxbM6vO8GU6qbrZNSBrtfzZnrR/4z66Vlw6rhznLnqQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/dialog@3.5.19': + resolution: {integrity: sha512-I3AJWpAWCajj8Ama8qLQ18Tc37ODyk+Ym3haYEl5L4QnuFc0dU1sMJr15fppDGIxYjwvTTfctyhaSCz+S+wpkw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/disclosure@3.0.0-alpha.1': + resolution: {integrity: sha512-AsYRk4NOfo5f3QGIoQwGtOCvEk/a1yztobaDIgMCfycfyQbzJROUPbSusUURK7f1KZ0s3/HPlWT9p6ulR4mDcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/dnd@3.7.4': + resolution: {integrity: sha512-lRE8SVyK/MPbF6NiVXHoriOV0QulNKkSndyDr3TWPsLhH5GKQso5jSx8/5ogbDgRTzIsmIQldj/HlW238DCiSg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/focus@3.18.4': + resolution: {integrity: sha512-91J35077w9UNaMK1cpMUEFRkNNz0uZjnSwiyBCFuRdaVuivO53wNC9XtWSDNDdcO5cGy87vfJRVAiyoCn/mjqA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/form@3.0.10': + resolution: {integrity: sha512-hWBrqEXxBxcpYTJv0telQKaiu2728EUFHta8/RGBqJ4+MhKKxI7+PnLoms78IuiK0MCYvukHfun1fuQvK+8jsg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/grid@3.10.5': + resolution: {integrity: sha512-9sLa+rpLgRZk7VX+tvdSudn1tdVgolVzhDLGWd95yS4UtPVMihTMGBrRoByY57Wxvh1V+7Ptw8kc6tsRSotYKg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/gridlist@3.9.5': + resolution: {integrity: sha512-LM+3D0amZZ1qiyqWVG52j0YRWt2chdpx+WG80ryDKwHLDIq7uz1+KXyIfv8cFt/cZcl6+9Ft3kWALCAi6O4NLA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/i18n@3.12.3': + resolution: {integrity: sha512-0Tp/4JwnCVNKDfuknPF+/xf3/woOc8gUjTU2nCjO3mCVb4FU7KFtjxQ2rrx+6hpIVG6g+N9qfMjRa/ggVH0CJg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/interactions@3.22.4': + resolution: {integrity: sha512-E0vsgtpItmknq/MJELqYJwib+YN18Qag8nroqwjk1qOnBa9ROIkUhWJerLi1qs5diXq9LHKehZDXRlwPvdEFww==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/label@3.7.12': + resolution: {integrity: sha512-u9xT90lAlgb7xiv+p0md9QwCHz65XL7tjS5e29e88Rs3ptkv3aQubTqxVOUTEwzbNUT4A1QqTjUm1yfHewIRUw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/link@3.7.6': + resolution: {integrity: sha512-8buJznRWoOud8ApygUAz7TsshXNs6HDGB6YOYEJxy0WTKILn0U5NUymw2PWC14+bWRPelHMKmi6vbFBrJWzSzQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/listbox@3.13.5': + resolution: {integrity: sha512-tn32L/PIELIPYfDWCJ3OBRvvb/jCEvIzs6IYs8xCISV5W4853Je/WnA8wumWnz07U9sODYFmHUx2ThO7Z7dH7Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/live-announcer@3.4.0': + resolution: {integrity: sha512-VBxEdMq2SbtRbNTQNcDR2G6E3lEl5cJSBiHTTO8Ln1AL76LiazrylIXGgoktqzCfRQmyq0v8CHk1cNKDU9mvJg==} + + '@react-aria/menu@3.15.5': + resolution: {integrity: sha512-ygfS032hJSZCYYbMHnUSmUTVMaz99L9AUZ9kMa6g+k2X1t92K1gXfhYYkoClQD6+G0ch7zm0SwYFlUmRf9yOEA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/meter@3.4.17': + resolution: {integrity: sha512-08wbQhfvVWzpWilhn/WD7cQ7TqafS/66umTk7+X6BW6TrS1//6loNNJV62IC3F7sskel4iEAtl2gW0WpW8zEdg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/numberfield@3.11.8': + resolution: {integrity: sha512-CWRHbrjfpvEqBmtjwX8LjVds6+tMNneRlKF46ked5sZilfU2jIirufaucM36N4vX6N/W7nFR/rCbp2WCOU9p3Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/overlays@3.23.4': + resolution: {integrity: sha512-MZUW6SUlTWOwKuFTqUTxW5BnvdW3Y9cEwanWuz98NX3ST7JYe/3ZcZhb37/fGW4uoGHnQ9icEwVf0rbMrK2STg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/progress@3.4.17': + resolution: {integrity: sha512-5+01WNibLoNS5KcfU5p6vg7Lhz17plqqzv/uITx28zzj3saaj0VLR7n57Ig2fXe8ZEQoUS89BS3sIEsIf96S1A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/radio@3.10.9': + resolution: {integrity: sha512-XnU7zGTEku1mPvJweX4I3ifwEBtglEWYoO4CZGvA3eXj39X8iGwNZXUst1pdk2ykWUKbtwrmsWA6zG2OAGODYw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/searchfield@3.7.10': + resolution: {integrity: sha512-1XTYh2dycedaK1tgpHAHcu8PTK1wG3dv53yLziu07JsBe9tX6O8jIFBhZK8SpfNnP8pEOI3PIlVEjaarLwgWzQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/select@3.14.11': + resolution: {integrity: sha512-rX5U4JcPNV41lNEF1tAxNxqrGENnLGZL/D5Y+YNpqKSU5U09+hD3ovsflNkF/d+deb25zg45JRxumwOCQ+rfyw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/selection@3.20.1': + resolution: {integrity: sha512-My0w8UC/7PAkz/1yZUjr2VRuzDZz1RrbgTqP36j5hsJx8RczDTjI4TmKtQNKG0ggaP4w83G2Og5JPTq3w3LMAw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/separator@3.4.3': + resolution: {integrity: sha512-L+eCmSGfRJ9jScHZqBkmOkp44LBARisDjRdYbGrLlsAEcOiHUXufnfpxz2rgkUGBdUgnI9hIk12q5kdy0UxGjg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/slider@3.7.13': + resolution: {integrity: sha512-yGlIpoOUKUoP0M3iI8ZHU001NASBOeZJSIQNfoS7HiqSR3bz+6BX7DRAM6B+CPHJleUtrdQ6JjO/8V8ZUV2kNQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/spinbutton@3.6.9': + resolution: {integrity: sha512-m+uVJdiIc2LrLVDGjU7p8P2O2gUvTN26GR+NgH4rl+tUSuAB0+T1rjls/C+oXEqQjCpQihEB9Bt4M+VHpzmyjA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/ssr@3.9.6': + resolution: {integrity: sha512-iLo82l82ilMiVGy342SELjshuWottlb5+VefO3jOQqQRNYnJBFpUSadswDPbRimSgJUZuFwIEYs6AabkP038fA==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/switch@3.6.9': + resolution: {integrity: sha512-w7xIywpR6llm22DXYOObZ2Uqvsw+gNmxdJ86h8+YRtpSkFnPMhXtTMv3RXpEGYhPTt/YDIqfxiluF1E2IHGwIA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/table@3.15.5': + resolution: {integrity: sha512-bdNZF0ZoNOfyOEIK/ctv0llacaCNk8mv+GGy8mwh5bZeJjd8KuDIpYQtZJYvf2YVvPYRWyXRhF0/B229m65f/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/tabs@3.9.7': + resolution: {integrity: sha512-f78P2Y9ZCYtwOnteku9mPVIk21xSSREYWaQPtA9ebSgVbeR5ya6RpaX9ISc9cd0HEF3Av+hZYyS1pNXXWymv9g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/tag@3.4.7': + resolution: {integrity: sha512-hreVvphUeYUfMN6gjM3+WouN2P/WGuR0rGpOrFk2HEnGDPg3Ar0isfdAaciTSBOc26CDKNgrmzRguxCmKKuqgw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/textfield@3.14.10': + resolution: {integrity: sha512-vG44FgxwfJUF2S6tRG+Sg646DDEgs0CO9RYniafEOHz8rwcNIH3lML7n8LAfzQa+BjBY28+UF0wmqEvd6VCzCQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/toggle@3.10.9': + resolution: {integrity: sha512-dtfnyIU2/kcH9rFAiB48diSmaXDv45K7UCuTkMQLjbQa3QHC1oYNbleVN/VdGyAMBsIWtfl8L4uuPrAQmDV/bg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/toolbar@3.0.0-beta.10': + resolution: {integrity: sha512-YsQwTCS2FO8FjDgu1aHskTk1bIo1xisY01u+gNXxGLv6B115Lnevfi+RJdZ4AmLIRAmq9OVMii9JuKrXL9dBXw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/tooltip@3.7.9': + resolution: {integrity: sha512-TqVJ7YqaP/enxNyA1QGr43w4nBZmOs6Hb/pROMS5afbX7gHgMVFn0lTRc6DC2cvcfgYc4WICs2QiQMniZt/E7A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/tree@3.0.0-beta.1': + resolution: {integrity: sha512-mlnV9VU1m/MGpH4WoOJc63yWAn9E+q/nHE3pM0dgjMyh+YCEq94tK/8eQFt4uko0/cANU/tHZ72Ayo2g8rJIWg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/utils@3.25.3': + resolution: {integrity: sha512-PR5H/2vaD8fSq0H/UB9inNbc8KDcVmW6fYAfSWkkn+OAdhTTMVKqXXrZuZBWyFfSD5Ze7VN6acr4hrOQm2bmrA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/virtualizer@4.0.4': + resolution: {integrity: sha512-DszWqS29B9UoLS4mb5tAgLZKSVKR7IuDfjT+On9TSpcvm+HKS9wG6MVbqO0bh4zE+JGmp8Pnxfg92E7NUF0vgA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-aria/visually-hidden@3.8.17': + resolution: {integrity: sha512-WFgny1q2CbxxU6gu46TGQXf1DjsnuSk+RBDP4M7bm1mUVZzoCp7U7AtjNmsBrWg0NejxUdgD7+7jkHHCQ91qRA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-spectrum/utils@3.11.11': + resolution: {integrity: sha512-Fed8tePDyxfG7CND6H+3Os+5DKwdaOl8VXznTtGNFD44gjCI8/LDxk+9YRN8SQCHMnFkEFobCDme98wFWDdpCQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/calendar@3.5.5': + resolution: {integrity: sha512-HzaiDRhrmaYIly8hRsjjIrydLkldiw1Ws6T/130NLQOt+VPwRW/x0R+nil42mA9LZ6oV0XN0NpmG5tn7TaKRGw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/checkbox@3.6.9': + resolution: {integrity: sha512-JrY3ecnK/SSJPxw+qhGhg3YV4e0CpUcPDrVwY3mSiAE932DPd19xr+qVCknJ34H7JYYt/q0l2z0lmgPnl96RTg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/collections@3.11.0': + resolution: {integrity: sha512-TiJeJjHMPSbbeAhmCXLJNSCk0fa5XnCvEuYw6HtQzDnYiq1AD7KAwkpjC5NfKkjqF3FLXs/v9RDm/P69q6rYzw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/color@3.8.0': + resolution: {integrity: sha512-lBH91HEStZeayhE/FkDMt9WC0UISQiAn8DoD2hfpTGeeWscX/soyxZA7oVL7zBOG9RfDBMNzF+CybVROrWSKAQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/combobox@3.10.0': + resolution: {integrity: sha512-4W4HCCjjoddW/LZM3pSSeLoV7ncYXlaICKmqlBcbtLR5jY4U5Kx+pPpy3oJ1vCdjDHatIxZ0tVKEBP7vBQVeGQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/data@3.11.7': + resolution: {integrity: sha512-2YJ+Lmca18f/h7jiZiU9j2IhBJl6BFO1BWlwvcCAH/eCWTdveX8gzsUdW++0szzpJaoCilTCYoi8z7QWyVH9jQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/datepicker@3.10.3': + resolution: {integrity: sha512-6PJW1QMwk6BQMktV9L6DA4f2rfAdLfbq3iTNLy4qxd5IfNPLMUZiJGGTj+cuqx0WcEl+q5irp+YhKBpbmhPZHg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/disclosure@3.0.0-alpha.0': + resolution: {integrity: sha512-CbFUrEwhsP5+44PMHipn/Cd61VTvqyKmx1yeNDyvj/4bYhmxYLgQp/Ma+iEqe23JkXJh2JO/ws3l9FnebScCJQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/dnd@3.4.3': + resolution: {integrity: sha512-sUvhmMxFEw6P2MW7walx0ntakIihxdPxA06K9YZ3+ReaUvzQuRw5cFDaTTHrlegWRMYD0CyQaKlGIaTQihhvVA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/flags@3.0.4': + resolution: {integrity: sha512-RNJEkOALwKg+JeYsfNlfPc4GXm7hiBLX0yuHOkRapWEyDOfi0cinkV/TZG4goOZdQ5tBpHmemf2qqiHAxqHlzQ==} + + '@react-stately/form@3.0.6': + resolution: {integrity: sha512-KMsxm3/V0iCv/6ikt4JEjVM3LW2AgCzo7aNotMzRobtwIo0RwaUo7DQNY00rGgFQ3/IjzI6DcVo13D+AVE/zXg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/grid@3.9.3': + resolution: {integrity: sha512-P5KgCNYwm/n8bbLx6527li89RQWoESikrsg2MMyUpUd6IJ321t2pGONGRRQzxE0SBMolPRDJKV0Do2OlsjYKhQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/layout@4.0.3': + resolution: {integrity: sha512-zFLXnPalWWVCdFGcPAb+nywSTz/xAnKRxb7zT+YDa5U80DHArDGKZcQ+by0+2Sf8yaYolROco4my+BERPXJB6A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/list@3.11.0': + resolution: {integrity: sha512-O+BxXcbtoLZWn4QIT54RoFUaM+QaJQm6s0ZBJ3Jv4ILIhukVOc55ra+aWMVlXFQSpbf6I3hyVP6cz1yyvd5Rtw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/menu@3.8.3': + resolution: {integrity: sha512-sV63V+cMgzipx/N7dq5GaXoItfXIfFEpCtlk3PM2vKstlCJalszXrdo+x996bkeU96h0plB7znAlhlXOeTKzUg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/numberfield@3.9.7': + resolution: {integrity: sha512-PjSgCCpYasGCEAznFQNqa2JhhEQ5+/2eMiV7ZI5j76q3edTNF8G5OOCl2RazDbzFp6vDAnRVT7Kctx5Tl5R/Zw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/overlays@3.6.11': + resolution: {integrity: sha512-usuxitwOx4FbmOW7Og4VM8R8ZjerbHZLLbFaxZW7pWLs7Ypway1YhJ3SWcyNTYK7NEk4o602kSoU6MSev1Vgag==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/radio@3.10.8': + resolution: {integrity: sha512-VRq6Gzsbk3jzX6hdrSoDoSra9vLRsOi2pLkvW/CMrJ0GSgMwr8jjvJKnNFvYJ3eYQb20EwkarsOAfk7vPSIt/Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/searchfield@3.5.7': + resolution: {integrity: sha512-VxEG4tWDypdXQ8f7clZBu5Qmc4osqDBeA/gNMA2i1j/h2zRVcCJ0fRCHuDeXLSWBqF1XXAI4TWV53fBBwJusbg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/select@3.6.8': + resolution: {integrity: sha512-fLAVzGeYSdYdBdrEVws6Pb1ywFPdapA0eWphoW5s3fS0/pKcVWwbCHeHlaBEi1ISyqEubQZFGQdeFKm/M46Hew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/selection@3.17.0': + resolution: {integrity: sha512-It3LRTaFOavybuDBvBH2mvCh73OL4awqvN4tZ0JzLzMtaYSBe9+YmFasYrzB0o7ca17B2q1tpUmsNWaAgIqbLA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/slider@3.5.8': + resolution: {integrity: sha512-EDgbrxMq1w3+XTN72MGl3YtAG/j65EYX1Uc3Fh56K00+inJbTdRWyYTrb3NA310fXCd0WFBbzExuH2ohlKQycg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/table@3.12.3': + resolution: {integrity: sha512-8uGrLcNJYeMbFtzRQZFWCBj5kV+7v3jzwoKIL1j9TmYUKow1PTDMQbPJpAZLQhnC2wVMlaFVgDbedSlbBij7Zg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/tabs@3.6.10': + resolution: {integrity: sha512-F7wfoiNsrBy7c02AYHyE1USGgj05HQ0hp7uXmQjp2LEa+AA0NKKi3HdswTHHySxb0ZRuoEE7E7vp/gXQYx2/Ow==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/toggle@3.7.8': + resolution: {integrity: sha512-ySOtkByvIY54yIu8IZ4lnvomQA0H+/mkZnd6T5fKN3tjvIzHmkUk3TAPmNInUxHX148tSW6mWwec0xvjYqEd6w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/tooltip@3.4.13': + resolution: {integrity: sha512-zQ+8FQ7Pi0Cz852dltXb6yaryjE18K3byK4tIO3e5vnrZHEGvfdxowc+v9ak5UV93kVrYoOVmfZHRcEaTXTBNA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/tree@3.8.5': + resolution: {integrity: sha512-0/tYhsKWQQJTOZFDwh8hY3Qk6ejNFRldGrLeK5kS22UZdvsMFyh7WAi40FTCJy561/VoB0WqQI4oyNPOa9lYWg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/utils@3.10.4': + resolution: {integrity: sha512-gBEQEIMRh5f60KCm7QKQ2WfvhB2gLUr9b72sqUdIZ2EG+xuPgaIlCBeSicvjmjBvYZwOjoOEnmIkcx2GHp/HWw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-stately/virtualizer@4.1.0': + resolution: {integrity: sha512-MOaqpY3NloXrpCBvVUb3HL1p3Bh4YRtUq8D2ufC909u5vM6n6G5Swk1XPJ9KHfaftGhb5serwLkm2/Aha5CTbA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/accordion@3.0.0-alpha.24': + resolution: {integrity: sha512-hwDT4TJH7aHCG8m9QsTP+7xgW7x7k2TY+WHlMRr6qDS6WhTCwd41dCdagxC0SZtulzZuWqISBxZifVrh4Tynew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/breadcrumbs@3.7.8': + resolution: {integrity: sha512-+BW2a+PrY8ArZ+pKecz13oJFrUAhthvXx17o3x0BhWUhRpAdtmTYt2hjw8zNanm2j0Kvgo1HYKgvtskCRxYcOA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/button@3.10.0': + resolution: {integrity: sha512-rAyU+N9VaHLBdZop4zasn8IDwf9I5Q1EzHUKMtzIFf5aUlMUW+K460zI/l8UESWRSWAXK9/WPSXGxfcoCEjvAA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/calendar@3.4.10': + resolution: {integrity: sha512-PyjqxwJxSW2IpQx6y0D9O34fRCWn1gv9q0qFhgaIigIQrPg8zTE/CC7owHLxAtgCnnCt8exJ5rqi414csaHKlA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/checkbox@3.8.4': + resolution: {integrity: sha512-fvZrlQmlFNsYHZpl7GVmyYQlKdUtO5MczMSf8z3TlSiCb5Kl3ha9PsZgLhJqGuVnzB2ArIBz0eZrYa3k0PhcpA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/color@3.0.0': + resolution: {integrity: sha512-VUH8CROAM69GsMBilrJ1xyAdVsWL01nXQYrkZJxAEApv1OrcpIGSdsXLcGrjsrhjjiNVXxWFnqYRMsKkLzIl7g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/combobox@3.13.0': + resolution: {integrity: sha512-kH/a+Fjpr54M2JbHg9RXwMjZ9O+XVsdOuE5JCpWRibJP1Mfl1md8gY6y6zstmVY8COrSqFvMZWB+PzwaTWjTGw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/datepicker@3.8.3': + resolution: {integrity: sha512-Y4qfPRBB6uzocosCOWSYMuwiZ3YXwLWQYiFB4KCglkvHyltbNz76LgoBEnclYA5HjwosIk4XywiXvHSYry8JnQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/dialog@3.5.13': + resolution: {integrity: sha512-9k8daVcAqQsySkzDY6NIVlyGxtpEip4TKuLyzAehthbv78GQardD5fHdjQ6eXPRS4I2qZrmytrFFrlOnwWVGHw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/form@3.7.7': + resolution: {integrity: sha512-CVRjCawPhYRHi/LuikOC2kz5vgvmjjKmF4/wUgR2QzD1Ok4wY1ZGSx9M9EZptCIZAt2mToR6woyLUdtzy+foeQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/grid@3.2.9': + resolution: {integrity: sha512-eMw0d2UIZ4QTzGgD1wGGPw0cv67KjAOCp4TcwWjgDV7Wa5SVV/UvOmpnIVDyfhkG/4KRI5OR9h+isy76B726qA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/link@3.5.8': + resolution: {integrity: sha512-l/YGXddgAbLnIT7ekftXrK1D4n8NlLQwx0d4usyZpaxP1KwPzuwng20DxynamLc1atoKBqbUtZAnz32pe7vYgw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/listbox@3.5.2': + resolution: {integrity: sha512-ML/Bt/MeO0FiixcuFQ+smpu1WguxTOqHDjSnhc1vcNxVQFWQOhyVy01LAY2J/T9TjfjyYGD41vyMTI0f6fcLEQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/menu@3.9.12': + resolution: {integrity: sha512-1SPnkHKJdvOfwv9fEgK1DI6DYRs4D3hW2XcWlLhVXSjaC68CzOHGwFhKIKvZiDTW/11L770PRSEloIxHR09uFQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/meter@3.4.4': + resolution: {integrity: sha512-0SEmPkShByC1gYkW7l+iJPg8QfEe2VrgwTciAtTfC4KIqAYmJVQtq6L+4d72EMxOh8RpQHePaY/RFHEJXAh72A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/numberfield@3.8.6': + resolution: {integrity: sha512-VtWEMAXUO1S9EEZI8whc7xv6DVccxhbWsRthMCg/LxiwU3U5KAveadNc2c5rtXkRpd3cnD5xFzz3dExXdmHkAg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/overlays@3.8.10': + resolution: {integrity: sha512-IcnB+VYfAJazRjWhBKZTmVMh3KTp/B1rRbcKkPx6t8djP9UQhKcohP7lAALxjJ56Jjz/GFC6rWyUcnYH0NFVRA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/progress@3.5.7': + resolution: {integrity: sha512-EqMDHmlpoZUZzTjdejGIkSM0pS2LBI9NdadHf3bDNTycHv+5L1xpMHUg8RGOW8a3sRVLRvfN1aO9l75QZkyj+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/radio@3.8.4': + resolution: {integrity: sha512-GCuOwQL19iwKa74NAIk9hv4ivyI8oW1+ZCuc2fzyDdeQjzTIlv3qrIyShwpVy1IoI7/4DYTMZm/YXPoKhu5TTA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/searchfield@3.5.9': + resolution: {integrity: sha512-c/x8BWpH1Zq+fWpeBtzw2AhQhGi7ahWPicV7PlnqwIGO0MrH/QCjX0dj+I+1xpcAh8Eq6ECa79HE74Rw6aJmFg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/select@3.9.7': + resolution: {integrity: sha512-Jva4ixfB4EEdy+WmZkUoLiQI7vVfHPxM73VuL7XDxvAO+YKiIztDTcU720QVNhxTMmQvCxfRBXWar8aodCjLiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/shared@3.25.0': + resolution: {integrity: sha512-OZSyhzU6vTdW3eV/mz5i6hQwQUhkRs7xwY2d1aqPvTdMe0+2cY7Fwp45PAiwYLEj73i9ro2FxF9qC4DvHGSCgQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/slider@3.7.6': + resolution: {integrity: sha512-z72wnEzSge6qTD9TUoUPp1A4j4jXk/MVii6rGE78XeE/Pq7HyyjU5bCagryMr9PC9MKa/oTiHcshKqWBDf57GA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/switch@3.5.6': + resolution: {integrity: sha512-gJ8t2yTCgcitz4ON4ELcLLmtlDkn2MUjjfu3ez/cwA1X/NUluPYkhXj5Z6H+KOlnveqrKCZDRoTgK74cQ6Cvfg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/table@3.10.2': + resolution: {integrity: sha512-YzA4hcsYfnFFpA2UyGb1KKhLpWgaj5daApqjp126tCIosl8k1KxZmhKD50cwH0Jm19lALJseqo5VdlcJtcr4qg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/tabs@3.3.10': + resolution: {integrity: sha512-s/Bw/HCIdWJPBw4O703ghKqhjGsIerRMIDxA88hbQYzfTDD6bkFDjCnsP2Tyy1G8Dg2rSPFUEE+k+PpLzqeEfQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/textfield@3.9.7': + resolution: {integrity: sha512-vU5+QCOF9HgWGjAmmy+cpJibVW5voFomC5POmYHokm7kivYcMMjlonsgWwg/0xXrqE2qosH3tpz4jFoEuig1NQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@react-types/tooltip@3.4.12': + resolution: {integrity: sha512-FwsdSQ3UDIDORanQMGMLyzSUabw4AkKhwcRdPv4d5OT8GmJr7mBdZynfcsrKLJ0fzskIypMqspoutZidsI0MQg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + '@redux-devtools/extension@3.3.0': + resolution: {integrity: sha512-X34S/rC8S/M1BIrkYD1mJ5f8vlH0BDqxXrs96cvxSBo4FhMdbhU+GUGsmNYov1xjSyLMHgo8NYrUG8bNX7525g==} + peerDependencies: + redux: ^3.1.0 || ^4.0.0 || ^5.0.0 + + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.24.0': + resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.0': + resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.0': + resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.0': + resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.0': + resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.0': + resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.0': + resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.0': + resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + cpu: [x64] + os: [win32] + + '@rtsao/scc@1.1.0': + resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} + + '@rushstack/eslint-patch@1.10.4': + resolution: {integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==} + + '@rushstack/node-core-library@4.0.2': + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.5.2': + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + + '@rushstack/terminal@0.10.0': + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.19.1': + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + + '@semantic-ui-react/event-stack@3.1.3': + resolution: {integrity: sha512-FdTmJyWvJaYinHrKRsMLDrz4tTMGdFfds299Qory53hBugiDvGC0tEJf+cHsi5igDwWb/CLOgOiChInHwq8URQ==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 + + '@seznam/compose-react-refs@1.0.6': + resolution: {integrity: sha512-izzOXQfeQLonzrIQb8u6LQ8dk+ymz3WXTIXjvOlTXHq6sbzROg3NWU+9TTAOpEoK9Bth24/6F/XrfHJ5yR5n6Q==} + + '@sheerun/mutationobserver-shim@0.3.3': + resolution: {integrity: sha512-DetpxZw1fzPD5xUBrIAoplLChO2VB8DlL5Gg+I1IR9b2wPqYIca2WSUxL5g1vLeR4MsQq1NeWriXAVffV+U1Fw==} + + '@sideway/address@4.1.5': + resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} + + '@sideway/formula@3.0.1': + resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} + + '@sideway/pinpoint@2.0.0': + resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} + + '@sigstore/bundle@1.1.0': + resolution: {integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@sigstore/protobuf-specs@0.2.1': + resolution: {integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@sigstore/sign@1.0.0': + resolution: {integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@sigstore/tuf@1.0.3': + resolution: {integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/is@0.14.0': + resolution: {integrity: sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==} + engines: {node: '>=6'} + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + + '@sinonjs/commons@1.8.6': + resolution: {integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==} + + '@sinonjs/commons@3.0.1': + resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} + + '@sinonjs/fake-timers@10.3.0': + resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} + + '@sinonjs/fake-timers@11.3.1': + resolution: {integrity: sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==} + + '@sinonjs/fake-timers@6.0.1': + resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} + + '@sinonjs/fake-timers@7.1.2': + resolution: {integrity: sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==} + + '@sinonjs/samsam@6.1.3': + resolution: {integrity: sha512-nhOb2dWPeb1sd3IQXL/dVPnKHDOAFfvichtBf4xV00/rU1QbPCQqKMbvIheIjqwVjh7qIgf2AHTHi391yMOMpQ==} + + '@sinonjs/text-encoding@0.7.3': + resolution: {integrity: sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==} + + '@storybook/addon-actions@8.3.6': + resolution: {integrity: sha512-nOqgl0WoZK2KwjaABaXMoIgrIHOQl9inOzJvqQau0HOtsvnXGXYfJXYnpjZenoZDoZXKbUDl0U2haDFx2a2fJw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-backgrounds@8.3.6': + resolution: {integrity: sha512-yBn+a8i5OJzJaX6Bx5MAkfei7c2nvq+RRmvuyvxw11rtDGR6Nz4OBBe56reWxo868wVUggpRTPJCMVe5tDYgVg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-controls@8.3.6': + resolution: {integrity: sha512-9IMLHgtWPuFoRCt3hDsIk1FbkK5SlCMDW1DDwtTBIeWYYZLvptS42+vGVTeQ8v5SejmVzZkzuUdzu3p4sb3IcA==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-docs@8.3.6': + resolution: {integrity: sha512-31Rk1TOhDIzGM2wNCUIB1xKuWtArW0D2Puua9warEXlQ3FtvwmxnPrwbIzw6ufYZDWPwl9phDYTcRh8WqZIoGg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-essentials@8.3.6': + resolution: {integrity: sha512-MQPFvThlGU7wlda1xhBPQCmDh90cSSZ31OsVs1uC5kJh0aLbY2gYXPurq1G54kzrYo8SMfBxsXrCplz8Ir6UTg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-highlight@8.3.6': + resolution: {integrity: sha512-A7uU+1OPVXGpkklEUJjSl2VEEDLCSNvmffUJlvW1GjajsNFIHOW2CSD+KnfFlQyPxyVbnWAYLqUP4XJxoqrvDw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-interactions@8.3.6': + resolution: {integrity: sha512-Y0YUJj0oE1+6DFkaTPXM/8+dwTSoy0ltj2Sn2KOTJYzxKQYXBp8TlUv0QOQiGH7o/GKXIWek/VlTuvG/JEeiWw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-links@8.3.6': + resolution: {integrity: sha512-EGEH/kEjndEldbqyiJ8XSASkxqwzL/lgA/+6mHpa6Ljxhk1s5IMGcdA1ymJYJ2BpNdkUxRj/uxAa38eGcQiJ/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-mdx-gfm@8.3.6': + resolution: {integrity: sha512-5Q/0YT/i9xdLyq7QvXvVfrcGVFHvJ3GEPM+XgGaX9C67ch3pYllAGDKJMtq3eDhgzxHkPT8NnjXb/9VLVYr75w==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-measure@8.3.6': + resolution: {integrity: sha512-VHWeGgYjhzhwb2WAqYW/qyEPqg5pwKR/XqFfd+3tEirUs/64olL1l3lzLwZ8Cm07cJ81T8Z4myywb9kObZfQlw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-outline@8.3.6': + resolution: {integrity: sha512-+VXpM8SIHX2cn30qLlMvER9/6iioFRSn2sAfLniqy4RrcQmcMP+qgE7ZzbzExt7cneJh3VFsYqBS/HElu14Vgg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-toolbars@8.3.6': + resolution: {integrity: sha512-FJH+lRoZXENfpMR/G09ZqB0TmL/k6bv07GN1ysoVs420tKRgjfz6uXaZz5COrhcdISr5mTNmG+mw9x7xXTfX3Q==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-viewport@8.3.6': + resolution: {integrity: sha512-bL51v837W1cng/+0pypkoLsWKWmvux96zLOzqLCpcWAQ4OSMhW3foIWpCiFwMG/KY+GanoOocTx6i7j5hLtuTA==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/addon-webpack5-compiler-babel@3.0.3': + resolution: {integrity: sha512-rVQTTw+oxJltbVKaejIWSHwVKOBJs3au21f/pYXhV0aiNgNhxEa3vr79t/j0j8ox8uJtzM8XYOb7FlkvGfHlwQ==} + engines: {node: '>=18'} + + '@storybook/blocks@8.3.6': + resolution: {integrity: sha512-Oc5jU6EzfsENjrd91KcKyEKBh60RT+8uyLi1RIrymC2C/mzZMTEoNIrbnQt0eIqbjlHxn6y9JMJxHu4NJ4EmZg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + + '@storybook/builder-vite@8.3.6': + resolution: {integrity: sha512-AF4+oFe1mvIHrLvaYsv8B0YSlXQtSlKTKwrXnUbcAbeGRwMmFKA1t3VyAcXV0yB9MtZ8YJsA/uKRkgGEaN7wJQ==} + peerDependencies: + '@preact/preset-vite': '*' + storybook: ^8.3.6 + typescript: '>= 4.3.x' + vite: ^4.0.0 || ^5.0.0 + vite-plugin-glimmerx: '*' + peerDependenciesMeta: + '@preact/preset-vite': + optional: true + typescript: + optional: true + vite-plugin-glimmerx: + optional: true + + '@storybook/builder-webpack5@8.3.6': + resolution: {integrity: sha512-Eqn2k8aA9f0o6IMQNAxGAMfSDeTP3YYCQAtOL5Gt5lgrqLV5JMTbZOfmaRBZ82ej/BBSAopnQKIJjQBBFx6kAQ==} + peerDependencies: + storybook: ^8.3.6 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/components@8.3.6': + resolution: {integrity: sha512-TXuoGZY7X3iixF45lXkYOFk8k2q9OHcqHyHyem1gATLLQXgyOvDgzm+VB7uKBNzssRQPEE+La70nfG8bq/viRw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/core-webpack@8.3.6': + resolution: {integrity: sha512-ks306CFKD7FePQzRYyTjddiLsSriceblzv4rI+IjVtftkJvcEbxub2yWkV27kPP/e9kSd4Li3M34bX5mkiwkZA==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/core@8.3.6': + resolution: {integrity: sha512-frwfgf0EJ7QL29DWZ5bla/g0eOOWqJGd14t+VUBlpP920zB6sdDfo7+p9JoCjD9u08lGeFDqbPNKayUk+0qDag==} + + '@storybook/csf-plugin@8.3.6': + resolution: {integrity: sha512-TJyJPFejO6Gyr3+bXqE/+LomQbivvfHEbee/GwtlRj0XF4KQlqnvuEdEdcK25JbD0NXT8AbyncEUmjoxE7ojQw==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/csf@0.0.1': + resolution: {integrity: sha512-USTLkZze5gkel8MYCujSRBVIrUQ3YPBrLOx7GNk/0wttvVtlzWXAq9eLbQ4p/NicGxP+3T7KPEMVV//g+yubpw==} + + '@storybook/csf@0.1.11': + resolution: {integrity: sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==} + + '@storybook/global@5.0.0': + resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} + + '@storybook/icons@1.2.12': + resolution: {integrity: sha512-UxgyK5W3/UV4VrI3dl6ajGfHM4aOqMAkFLWe2KibeQudLf6NJpDrDMSHwZj+3iKC4jFU7dkKbbtH2h/al4sW3Q==} + engines: {node: '>=14.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + '@storybook/instrumenter@8.3.6': + resolution: {integrity: sha512-0RowbKwoB/s7rtymlnKNiyWN1Z3ZK5mwgzVjlRmzxDL8hrdi5KDjTNExuJTRR3ZaBP2RR0/I3m/n0p9JhHAZvg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/manager-api@8.3.6': + resolution: {integrity: sha512-Xt5VFZcL+G/9uzaHjzWFhxRNrP+4rPhSRKEvCZorAbC9+Hv+ZDs1JSZS5wMb4WKpXBZ0rwDVOLwngqbVtfRHuQ==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/preset-react-webpack@8.3.6': + resolution: {integrity: sha512-Ar0vhJITXa4xsXT3RdgYZ2mhXxE3jfUisQzsITey5a2RVgnSBIENggmRZ/6j1oVgEXFthbarNEsebGiA+2vDZg==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/preview-api@8.3.6': + resolution: {integrity: sha512-/Wxvb7wbI2O2iH63arRQQyyojA630vibdshkFjuC/u1nYdptEV1jkxa0OYmbZbKCn4/ze6uH4hfsKOpDPV9SWg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0': + resolution: {integrity: sha512-KUqXC3oa9JuQ0kZJLBhVdS4lOneKTOopnNBK4tUAgoxWQ3u/IjzdueZjFr7gyBrXMoU6duutk3RQR9u8ZpYJ4Q==} + peerDependencies: + typescript: '>= 4.x' + webpack: '>= 4' + + '@storybook/react-dom-shim@8.3.6': + resolution: {integrity: sha512-9BO6VXIdli4GHSfiP/Z0gwAf7oQig3D/yWK2U1+91UWDV8nIAgnNBAi76U4ORC6MiK5MdkDfIikIxnLLeLnahA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + + '@storybook/react-vite@8.3.6': + resolution: {integrity: sha512-KXi4ZT4X7DsB4OOIWeR1XMH/Oz6Rp4TlWBNx/TgSEDGYEkPooqZK/O0S+G+VIsrRGQUf/57YqO73mP6kNluxTA==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + vite: ^4.0.0 || ^5.0.0 + + '@storybook/react-webpack5@8.3.6': + resolution: {integrity: sha512-8HBnBab6kPJuX0gQGIl6voZXLRdvyXxd5wmHXc0db0T9Ozq5iuNbo9sUEk9QCwJpuQc7lDDmuOkXHVq1WjSibw==} + engines: {node: '>=18.0.0'} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + typescript: '>= 4.2.x' + peerDependenciesMeta: + typescript: + optional: true + + '@storybook/react@8.3.6': + resolution: {integrity: sha512-s3COryqIOYK7urgZaCPb77zlxGjPKr6dIsYmblQJcsFY2ZlG2x0Ysm8b5oRgD8Pv71hCJ0PKYA4RzDgBVYJS9A==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@storybook/test': 8.3.6 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.3.6 + typescript: '>= 4.2.x' + peerDependenciesMeta: + '@storybook/test': + optional: true + typescript: + optional: true + + '@storybook/test@8.3.6': + resolution: {integrity: sha512-WIc8LzK9jaEw+e3OiweEM2j3cppPzsWod59swuf6gDBf176EQLIyjtVc+Kh3qO4NNkcL+lwmqaLPjOxlBLaDbg==} + peerDependencies: + storybook: ^8.3.6 + + '@storybook/theming@8.3.6': + resolution: {integrity: sha512-LQjUk6GXRW9ELkoBKuqzQKFUW+ajfGPfVELcfs3/VQX61VhthJ4olov4bGPc04wsmmFMgN/qODxT485IwOHfPQ==} + peerDependencies: + storybook: ^8.3.6 + + '@swc/core-darwin-arm64@1.7.40': + resolution: {integrity: sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.40': + resolution: {integrity: sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.40': + resolution: {integrity: sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.40': + resolution: {integrity: sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.40': + resolution: {integrity: sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.40': + resolution: {integrity: sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.40': + resolution: {integrity: sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.40': + resolution: {integrity: sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.40': + resolution: {integrity: sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.40': + resolution: {integrity: sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.40': + resolution: {integrity: sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/helpers@0.5.13': + resolution: {integrity: sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==} + + '@swc/types@0.1.13': + resolution: {integrity: sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==} + + '@szmarczak/http-timer@1.1.2': + resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} + engines: {node: '>=6'} + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@tanstack/query-core@5.59.16': + resolution: {integrity: sha512-crHn+G3ltqb5JG0oUv6q+PMz1m1YkjpASrXTU+sYWW9pLk0t2GybUHNRqYPZWhxgjPaVGC4yp92gSFEJgYEsPw==} + + '@tanstack/react-query@5.59.16': + resolution: {integrity: sha512-MuyWheG47h6ERd4PKQ6V8gDyBu3ThNG22e1fRVwvq6ap3EqsFhyuxCAwhNP/03m/mLg+DAb0upgbPaX6VB+CkQ==} + peerDependencies: + react: ^18 || ^19 + + '@testing-library/cypress@10.0.1': + resolution: {integrity: sha512-e8uswjTZIBhaIXjzEcrQQ8nHRWHgZH7XBxKuIWxZ/T7FxfWhCR48nFhUX5nfPizjVOKSThEfOSv67jquc1ASkw==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + cypress: ^12.0.0 || ^13.0.0 + + '@testing-library/dom@10.4.0': + resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} + engines: {node: '>=18'} + + '@testing-library/dom@6.16.0': + resolution: {integrity: sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==} + engines: {node: '>=8'} + + '@testing-library/dom@8.20.1': + resolution: {integrity: sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==} + engines: {node: '>=12'} + + '@testing-library/dom@9.3.4': + resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} + engines: {node: '>=14'} + + '@testing-library/jest-dom@5.16.5': + resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} + engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + + '@testing-library/jest-dom@6.4.2': + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/bun': latest + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/bun': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true + + '@testing-library/jest-dom@6.5.0': + resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + + '@testing-library/react-hooks@8.0.1': + resolution: {integrity: sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g==} + engines: {node: '>=12'} + peerDependencies: + '@types/react': ^16.9.0 || ^17.0.0 + react: ^16.9.0 || ^17.0.0 + react-dom: ^16.9.0 || ^17.0.0 + react-test-renderer: ^16.9.0 || ^17.0.0 + peerDependenciesMeta: + '@types/react': + optional: true + react-dom: + optional: true + react-test-renderer: + optional: true + + '@testing-library/react@12.1.5': + resolution: {integrity: sha512-OfTXCJUFgjd/digLUuPxa0+/3ZxsQmE7ub9kcbW/wi96Bh3o/p5vrETcBGfP17NWPGqeYYl5LTRpwyGoMC4ysg==} + engines: {node: '>=12'} + peerDependencies: + react: <18.0.0 + react-dom: <18.0.0 + + '@testing-library/react@13.4.0': + resolution: {integrity: sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==} + engines: {node: '>=12'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@testing-library/react@14.2.0': + resolution: {integrity: sha512-7uBnPHyOG6nDGCzv8SLeJbSa33ZoYw7swYpSLIgJvBALdq7l9zPNk33om4USrxy1lKTxXaVfufzLmq83WNfWIw==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@testing-library/react@14.2.1': + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + + '@testing-library/react@9.5.0': + resolution: {integrity: sha512-di1b+D0p+rfeboHO5W7gTVeZDIK5+maEgstrZbWZSSvxDyfDRkkyBE1AJR5Psd6doNldluXlCWqXriUfqu/9Qg==} + engines: {node: '>=8'} + peerDependencies: + react: '*' + react-dom: '*' + + '@testing-library/user-event@14.5.2': + resolution: {integrity: sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==} + engines: {node: '>=12', npm: '>=6'} + peerDependencies: + '@testing-library/dom': '>=7.21.4' + + '@tootallnate/once@1.1.2': + resolution: {integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==} + engines: {node: '>= 6'} + + '@tootallnate/once@2.0.0': + resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} + engines: {node: '>= 10'} + + '@tootallnate/quickjs-emscripten@0.23.0': + resolution: {integrity: sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==} + + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + + '@tufjs/canonical-json@1.0.0': + resolution: {integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@tufjs/models@1.0.4': + resolution: {integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/aria-query@5.0.4': + resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} + + '@types/babel__core@7.20.5': + resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} + + '@types/babel__generator@7.6.8': + resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + + '@types/babel__template@7.4.4': + resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} + + '@types/babel__traverse@7.20.6': + resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + + '@types/body-parser@1.19.5': + resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + + '@types/bonjour@3.5.13': + resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} + + '@types/connect-history-api-fallback@1.5.4': + resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/cookie@0.3.3': + resolution: {integrity: sha512-LKVP3cgXBT9RYj+t+9FDKwS5tdI+rPBXaNSkma7hvqy35lc7mAokC2zsqWJH0LaqIt3B962nuYI77hsJoT1gow==} + + '@types/debug@4.1.12': + resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} + + '@types/doctrine@0.0.9': + resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} + + '@types/escodegen@0.0.6': + resolution: {integrity: sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==} + + '@types/eslint-scope@3.7.7': + resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} + + '@types/eslint@9.6.1': + resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} + + '@types/estree@0.0.51': + resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + '@types/expect@1.20.4': + resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} + + '@types/express-serve-static-core@4.19.6': + resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} + + '@types/express-serve-static-core@5.0.1': + resolution: {integrity: sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==} + + '@types/express@4.17.21': + resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + + '@types/find-cache-dir@3.2.1': + resolution: {integrity: sha512-frsJrz2t/CeGifcu/6uRo4b+SzAwT4NYCVPu1GN8IB9XTzrpPkGuV0tmh9mN+/L0PklAlsC3u5Fxt0ju00LXIw==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/graceful-fs@4.1.9': + resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} + + '@types/hast@3.0.4': + resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + + '@types/history@4.7.11': + resolution: {integrity: sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==} + + '@types/hoist-non-react-statics@3.3.5': + resolution: {integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==} + + '@types/html-minifier-terser@6.1.0': + resolution: {integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==} + + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} + + '@types/http-errors@2.0.4': + resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + + '@types/http-proxy@1.17.15': + resolution: {integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==} + + '@types/invariant@2.2.37': + resolution: {integrity: sha512-IwpIMieE55oGWiXkQPSBY1nw1nFs6bsKXTFskNY8sdS17K24vyEBRQZEwlRS7ZmXCWnJcQtbxWzly+cODWGs2A==} + + '@types/is-hotkey@0.1.10': + resolution: {integrity: sha512-RvC8KMw5BCac1NvRRyaHgMMEtBaZ6wh0pyPTBu7izn4Sj/AX9Y4aXU5c7rX8PnM/knsuUpC1IeoBkANtxBypsQ==} + + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + + '@types/istanbul-lib-report@3.0.3': + resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} + + '@types/istanbul-reports@1.1.2': + resolution: {integrity: sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==} + + '@types/istanbul-reports@3.0.4': + resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} + + '@types/jest-axe@3.5.9': + resolution: {integrity: sha512-z98CzR0yVDalCEuhGXXO4/zN4HHuSebAukXDjTLJyjEAgoUf1H1i+sr7SUB/mz8CRS/03/XChsx0dcLjHkndoQ==} + + '@types/jest@29.5.14': + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/json5@0.0.29': + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + + '@types/keyv@3.1.4': + resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} + + '@types/loadable__component@5.13.9': + resolution: {integrity: sha512-QWOtIkwZqHNdQj3nixQ8oyihQiTMKZLk/DNuvNxMSbTfxf47w+kqcbnxlUeBgAxdOtW0Dh48dTAIp83iJKtnrQ==} + + '@types/lodash@4.17.12': + resolution: {integrity: sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ==} + + '@types/mdast@4.0.4': + resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} + + '@types/mdx@2.0.13': + resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} + + '@types/mime@1.3.5': + resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} + + '@types/minimatch@3.0.5': + resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/ms@0.7.34': + resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + + '@types/node-forge@1.3.11': + resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==} + + '@types/node@15.14.9': + resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + + '@types/node@22.8.1': + resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/parse-json@4.0.2': + resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/prop-types@15.7.13': + resolution: {integrity: sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==} + + '@types/q@1.5.8': + resolution: {integrity: sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==} + + '@types/qs@6.9.16': + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} + + '@types/range-parser@1.2.7': + resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} + + '@types/react-dom@17.0.25': + resolution: {integrity: sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==} + + '@types/react-dom@18.2.12': + resolution: {integrity: sha512-QWZuiA/7J/hPIGocXreCRbx7wyoeet9ooxfbSA+zbIWqyQEE7GMtRn4A37BdYyksnN+/NDnWgfxZH9UVGDw1hg==} + + '@types/react-redux@7.1.34': + resolution: {integrity: sha512-GdFaVjEbYv4Fthm2ZLvj1VSCedV7TqE5y1kNwnjSdBOTXuRSgowux6J8TAct15T3CKBr63UMk+2CO7ilRhyrAQ==} + + '@types/react-router-dom@5.3.3': + resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} + + '@types/react-router@5.1.20': + resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} + + '@types/react-test-renderer@18.0.7': + resolution: {integrity: sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg==} + + '@types/react@17.0.83': + resolution: {integrity: sha512-l0m4ArKJvmFtR4e8UmKrj1pB4tUgOhJITf+mADyF/p69Ts1YAR/E+G9XEM0mHXKVRa1dQNHseyyDNzeuAXfXQw==} + + '@types/react@18.2.27': + resolution: {integrity: sha512-Wfv7B7FZiR2r3MIqbAlXoY1+tXm4bOqfz4oRr+nyXdBqapDBZ0l/IGcSlAfvxIHEEJjkPU0MYAc/BlFPOcrgLw==} + + '@types/resolve@1.20.6': + resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==} + + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} + + '@types/retry@0.12.0': + resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} + + '@types/scheduler@0.16.8': + resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} + + '@types/scheduler@0.23.0': + resolution: {integrity: sha512-YIoDCTH3Af6XM5VuwGG/QL/CJqga1Zm3NkU3HZ4ZHK2fRMPYP1VczsTUqtsf43PH/iJNVlPHAo2oWX7BSdB2Hw==} + + '@types/schema-utils@1.0.0': + resolution: {integrity: sha512-YesPanU1+WCigC/Aj1Mga8UCOjHIfMNHZ3zzDsUY7lI8GlKnh/Kv2QwJOQ+jNQ36Ru7IfzSedlG14hppYaN13A==} + + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} + + '@types/send@0.17.4': + resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + + '@types/serve-index@1.9.4': + resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} + + '@types/serve-static@1.15.7': + resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + + '@types/sinonjs__fake-timers@8.1.1': + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + + '@types/sizzle@2.3.9': + resolution: {integrity: sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==} + + '@types/sockjs@0.3.36': + resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + + '@types/stack-utils@1.0.1': + resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} + + '@types/stack-utils@2.0.3': + resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + + '@types/testing-library__dom@6.14.0': + resolution: {integrity: sha512-sMl7OSv0AvMOqn1UJ6j1unPMIHRXen0Ita1ujnMX912rrOcawe4f7wu0Zt9GIQhBhJvH2BaibqFgQ3lP+Pj2hA==} + + '@types/testing-library__dom@7.5.0': + resolution: {integrity: sha512-mj1aH4cj3XUpMEgVpognma5kHVtbm6U6cHZmEFzCRiXPvKkuHrFr3+yXdGLXvfFRBaQIVshPGHI+hGTOJlhS/g==} + deprecated: This is a stub types definition. testing-library__dom provides its own type definitions, so you do not need this installed. + + '@types/testing-library__jest-dom@5.14.9': + resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + + '@types/testing-library__react@9.1.3': + resolution: {integrity: sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==} + + '@types/unist@3.0.3': + resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + + '@types/use-sync-external-store@0.0.3': + resolution: {integrity: sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/vinyl@2.0.12': + resolution: {integrity: sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==} + + '@types/ws@8.5.12': + resolution: {integrity: sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==} + + '@types/yargs-parser@21.0.3': + resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + + '@types/yargs@13.0.12': + resolution: {integrity: sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==} + + '@types/yargs@15.0.19': + resolution: {integrity: sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==} + + '@types/yargs@17.0.33': + resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} + + '@types/yauzl@2.10.3': + resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} + + '@typescript-eslint/eslint-plugin@5.62.0': + resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/experimental-utils@5.62.0': + resolution: {integrity: sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/parser@5.62.0': + resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@5.62.0': + resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@5.62.0': + resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@5.62.0': + resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@5.62.0': + resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@5.62.0': + resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@5.62.0': + resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vitejs/plugin-react@4.3.3': + resolution: {integrity: sha512-NooDe9GpHGqNns1i8XDERg0Vsg5SSYRhRxxyTGogUdkdNt47jal+fbuYi+Yfq6pzRCKXyoPcWisfxE6RIM3GKA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 || ^5.0.0 + + '@vitest/coverage-v8@1.6.0': + resolution: {integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==} + peerDependencies: + vitest: 1.6.0 + + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + + '@vitest/expect@2.0.5': + resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} + + '@vitest/expect@2.1.3': + resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + + '@vitest/mocker@2.1.3': + resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + peerDependencies: + '@vitest/spy': 2.1.3 + msw: ^2.3.5 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@2.0.5': + resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} + + '@vitest/pretty-format@2.1.3': + resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + + '@vitest/runner@2.1.3': + resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + + '@vitest/snapshot@2.1.3': + resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + + '@vitest/spy@2.0.5': + resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} + + '@vitest/spy@2.1.3': + resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + + '@vitest/utils@2.0.5': + resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} + + '@vitest/utils@2.1.3': + resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + + '@volar/language-core@1.11.1': + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + + '@volar/source-map@1.11.1': + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + + '@volar/typescript@1.11.1': + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + + '@vue/compiler-core@3.5.12': + resolution: {integrity: sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==} + + '@vue/compiler-dom@3.5.12': + resolution: {integrity: sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==} + + '@vue/language-core@1.8.27': + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/shared@3.5.12': + resolution: {integrity: sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==} + + '@webassemblyjs/ast@1.12.1': + resolution: {integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==} + + '@webassemblyjs/floating-point-hex-parser@1.11.6': + resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + + '@webassemblyjs/helper-api-error@1.11.6': + resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + + '@webassemblyjs/helper-buffer@1.12.1': + resolution: {integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==} + + '@webassemblyjs/helper-numbers@1.11.6': + resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': + resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + + '@webassemblyjs/helper-wasm-section@1.12.1': + resolution: {integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==} + + '@webassemblyjs/ieee754@1.11.6': + resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + + '@webassemblyjs/leb128@1.11.6': + resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + + '@webassemblyjs/utf8@1.11.6': + resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + + '@webassemblyjs/wasm-edit@1.12.1': + resolution: {integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==} + + '@webassemblyjs/wasm-gen@1.12.1': + resolution: {integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==} + + '@webassemblyjs/wasm-opt@1.12.1': + resolution: {integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==} + + '@webassemblyjs/wasm-parser@1.12.1': + resolution: {integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==} + + '@webassemblyjs/wast-printer@1.12.1': + resolution: {integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==} + + '@xtuc/ieee754@1.2.0': + resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} + + '@xtuc/long@4.2.2': + resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} + + abab@2.0.6: + resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} + deprecated: Use your platform's native atob() and btoa() methods instead + + abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + abortcontroller-polyfill@1.7.5: + resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + + acorn-globals@4.3.4: + resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} + + acorn-globals@6.0.0: + resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} + + acorn-globals@7.0.1: + resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} + + acorn-import-assertions@1.9.0: + resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} + peerDependencies: + acorn: ^8 + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@6.2.0: + resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} + engines: {node: '>=0.4.0'} + + acorn-walk@7.2.0: + resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} + engines: {node: '>=0.4.0'} + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@5.7.4: + resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@7.4.1: + resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + engines: {node: '>=0.4.0'} + hasBin: true + + add-dom-event-listener@1.1.0: + resolution: {integrity: sha512-WCxx1ixHT0GQU9hb0KI/mhgRQhnU+U3GvwY6ZvVjYq8rsihIGoaIOUbY0yMPBxLH5MDtr0kz3fisWGNcbWW7Jw==} + + address@1.1.2: + resolution: {integrity: sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==} + engines: {node: '>= 0.12.0'} + + adjust-sourcemap-loader@3.0.0: + resolution: {integrity: sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==} + engines: {node: '>=8.9'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.1: + resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} + engines: {node: '>= 14'} + + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + airbnb-prop-types@2.16.0: + resolution: {integrity: sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==} + deprecated: This package has been renamed to 'prop-types-tools' + peerDependencies: + react: ^0.14 || ^15.0.0 || ^16.0.0-alpha + + ajv-formats@2.1.1: + resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-keywords@3.5.2: + resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} + peerDependencies: + ajv: ^6.9.1 + + ajv-keywords@5.1.0: + resolution: {integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==} + peerDependencies: + ajv: ^8.8.2 + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + alphanum-sort@1.0.2: + resolution: {integrity: sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@2.0.0: + resolution: {integrity: sha512-tH/fSoQp4DrEodDK3QpdiWiZTSe7sBJ9eOqcQBZ0o9HTM+5M/viSEn+sPMoTuPjQQ8n++w3QJoPEjt8LVPcrCg==} + engines: {node: '>=4'} + + ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-html-community@0.0.8: + resolution: {integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-html@0.0.7: + resolution: {integrity: sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==} + engines: {'0': node >= 0.8.0} + hasBin: true + + ansi-regex@2.1.1: + resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} + engines: {node: '>=0.10.0'} + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@4.1.1: + resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@2.2.1: + resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==} + engines: {node: '>=0.10.0'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@5.2.0: + resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} + engines: {node: '>=10'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@2.0.0: + resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + aproba@1.2.0: + resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} + + aproba@2.0.0: + resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + are-we-there-yet@2.0.0: + resolution: {integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + are-we-there-yet@3.0.1: + resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + aria-query@4.2.2: + resolution: {integrity: sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==} + engines: {node: '>=6.0'} + + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} + + aria-query@5.3.0: + resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} + + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + + arity-n@1.0.4: + resolution: {integrity: sha512-fExL2kFDC1Q2DUOx3whE/9KoN66IzkY4b4zUHUBFM1ojEYjZZYDcUW3bek/ufGionX9giIKDC5redH2IlGqcQQ==} + + arr-diff@4.0.0: + resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==} + engines: {node: '>=0.10.0'} + + arr-flatten@1.1.0: + resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} + engines: {node: '>=0.10.0'} + + arr-union@3.1.0: + resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==} + engines: {node: '>=0.10.0'} + + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + + array-differ@3.0.0: + resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} + engines: {node: '>=8'} + + array-equal@1.0.2: + resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} + + array-flatten@1.1.1: + resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + + array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + engines: {node: '>= 0.4'} + + array-timsort@1.0.3: + resolution: {integrity: sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-unique@0.3.2: + resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==} + engines: {node: '>=0.10.0'} + + array.prototype.find@2.2.3: + resolution: {integrity: sha512-fO/ORdOELvjbbeIfZfzrXFMhYHGofRGqd+am9zm3tZ4GlJINj/pA2eITyfd65Vg6+ZbHd/Cys7stpoRSWtQFdA==} + engines: {node: '>= 0.4'} + + array.prototype.findlast@1.2.5: + resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} + engines: {node: '>= 0.4'} + + array.prototype.findlastindex@1.2.5: + resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + engines: {node: '>= 0.4'} + + array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + + array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + + array.prototype.map@1.0.7: + resolution: {integrity: sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==} + engines: {node: '>= 0.4'} + + array.prototype.reduce@1.0.7: + resolution: {integrity: sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==} + engines: {node: '>= 0.4'} + + array.prototype.tosorted@1.1.4: + resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} + engines: {node: '>= 0.4'} + + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + + arrify@2.0.1: + resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} + engines: {node: '>=8'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + assign-symbols@1.0.0: + resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==} + engines: {node: '>=0.10.0'} + + ast-types-flow@0.0.8: + resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} + + ast-types@0.13.4: + resolution: {integrity: sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==} + engines: {node: '>=4'} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + atob@2.1.2: + resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} + engines: {node: '>= 4.5.0'} + hasBin: true + + attr-accept@2.2.4: + resolution: {integrity: sha512-2pA6xFIbdTUDCAwjN8nQwI+842VwzbDUXO2IYlpPXQIORgKnavorcr4Ce3rwh+zsNg9zK7QPsdvDj3Lum4WX4w==} + engines: {node: '>=4'} + + autobind-decorator@2.4.0: + resolution: {integrity: sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw==} + engines: {node: '>=8.10', npm: '>=6.4.1'} + + autoprefixer@10.4.8: + resolution: {integrity: sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axe-core@3.5.6: + resolution: {integrity: sha512-LEUDjgmdJoA3LqklSTwKYqkjcZ4HKc4ddIYGSAiSkr46NTjzg2L9RNB+lekO9P7Dlpa87+hBtzc2Fzn/+GUWMQ==} + engines: {node: '>=4'} + + axe-core@4.10.2: + resolution: {integrity: sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==} + engines: {node: '>=4'} + + axe-core@4.4.2: + resolution: {integrity: sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA==} + engines: {node: '>=12'} + + axe-core@4.7.2: + resolution: {integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==} + engines: {node: '>=4'} + + axe-core@4.8.4: + resolution: {integrity: sha512-CZLSKisu/bhJ2awW4kJndluz2HLZYIHh5Uy1+ZwDRkJi69811xgIXXfdU9HSLX0Th+ILrHj8qfL/5wzamsFtQg==} + engines: {node: '>=4'} + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + axios@0.24.0: + resolution: {integrity: sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + babel-code-frame@6.26.0: + resolution: {integrity: sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==} + + babel-helper-function-name@6.24.1: + resolution: {integrity: sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==} + + babel-helper-get-function-arity@6.24.1: + resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} + + babel-jest@24.9.0: + resolution: {integrity: sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==} + engines: {node: '>= 6'} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-jest@26.6.3: + resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-loader@8.4.1: + resolution: {integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==} + engines: {node: '>= 8.9'} + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' + + babel-loader@9.1.0: + resolution: {integrity: sha512-Antt61KJPinUMwHwIIz9T5zfMgevnfZkEVWYDWlG888fgdvRRGD0JTuf/fFozQnfT+uq64sk1bmdHDy/mOEWnA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-loader@9.2.1: + resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} + engines: {node: '>= 14.15.0'} + peerDependencies: + '@babel/core': ^7.12.0 + webpack: '>=5' + + babel-messages@6.23.0: + resolution: {integrity: sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==} + + babel-plugin-add-module-exports@0.2.1: + resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} + + babel-plugin-istanbul@5.2.0: + resolution: {integrity: sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==} + engines: {node: '>=6'} + + babel-plugin-istanbul@6.1.1: + resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} + engines: {node: '>=8'} + + babel-plugin-jest-hoist@24.9.0: + resolution: {integrity: sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==} + engines: {node: '>= 6'} + + babel-plugin-jest-hoist@26.6.2: + resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} + engines: {node: '>= 10.14.2'} + + babel-plugin-lodash@3.3.4: + resolution: {integrity: sha512-yDZLjK7TCkWl1gpBeBGmuaDIFhZKmkoL+Cu2MUUjv5VxUZx/z7tBGBCBcQs5RI1Bkz5LLmNdjx7paOyQtMovyg==} + + babel-plugin-macros@3.1.0: + resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} + engines: {node: '>=10', npm: '>=6'} + + babel-plugin-polyfill-corejs2@0.4.11: + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-corejs3@0.10.6: + resolution: {integrity: sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-polyfill-regenerator@0.6.2: + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + + babel-plugin-react-intl@5.1.17: + resolution: {integrity: sha512-VNl57CKax5rPw4E2VrQGSfdCMTRRttpet/4vuHLrlJeVQKlxmOAIMcw6o1KbFgdUx2YVQU18cRcAjkRV+Gm01Q==} + deprecated: this package has been renamed to babel-plugin-formatjs + + babel-plugin-root-import@6.1.0: + resolution: {integrity: sha512-7pFBKr83H7S4mjLICsHENXm8oZ//sTdrjlxP20y7wWAmDl8N1IRtUVAGJDCTk3E9E3LOyRdiPb9znoweDVCrFg==} + + babel-plugin-syntax-class-properties@6.13.0: + resolution: {integrity: sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA==} + + babel-plugin-syntax-jsx@6.18.0: + resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==} + + babel-plugin-transform-class-properties@6.24.1: + resolution: {integrity: sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg==} + + babel-plugin-transform-define@2.1.4: + resolution: {integrity: sha512-NN9xFmyNvr4swPZkRWy+RZZoV0yHhPk/WoxpuIvcVkTyYf0xy/JTQeZVbVGX8hyJ0/NKKuxnt4BZz9No7BziVA==} + engines: {node: '>= 8.x.x'} + + babel-plugin-transform-react-remove-prop-types@0.4.24: + resolution: {integrity: sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==} + + babel-preset-current-node-syntax@1.1.0: + resolution: {integrity: sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@24.9.0: + resolution: {integrity: sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==} + engines: {node: '>= 6'} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-jest@26.6.2: + resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} + engines: {node: '>= 10.14.2'} + peerDependencies: + '@babel/core': ^7.0.0 + + babel-preset-razzle@4.2.17: + resolution: {integrity: sha512-Pg0yFCn2uTRBKjdj2pu61JWMcokVdxWNmpeBC2W+fNJ3JFyYP379TMIMmRi84g61snAzmwzwIlKMlVsVZT1IiA==} + + babel-preset-razzle@4.2.18: + resolution: {integrity: sha512-UmoGdxuobZJ2ut/7JQPEZaDMH4aJMEWj1E8aeX2uV+C1I7FULo/kkrD8I43hnfcZVX3cAdZYATZ6LiNe01plNg==} + + babel-preset-react-app@10.0.1: + resolution: {integrity: sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==} + + babel-runtime@6.26.0: + resolution: {integrity: sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==} + + babel-template@6.26.0: + resolution: {integrity: sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==} + + babel-traverse@6.26.0: + resolution: {integrity: sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==} + + babel-types@6.26.0: + resolution: {integrity: sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==} + + babylon@6.18.0: + resolution: {integrity: sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==} + hasBin: true + + bail@2.0.2: + resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@2.0.0: + resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + base@0.11.2: + resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} + engines: {node: '>=0.10.0'} + + basic-ftp@5.0.5: + resolution: {integrity: sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==} + engines: {node: '>=10.0.0'} + + batch@0.6.1: + resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + + better-opn@3.0.2: + resolution: {integrity: sha512-aVNobHnJqLiUelTaHat9DZ1qM2w0C0Eym4LPI/3JxOnSokGVdsl1T1kN7TFvsEAD8G47A6VKQ0TVHqbBnYMJlQ==} + engines: {node: '>=12.0.0'} + + big-integer@1.6.52: + resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} + engines: {node: '>=0.6'} + + big.js@5.2.2: + resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} + + bin-links@3.0.3: + resolution: {integrity: sha512-zKdnMPWEdh4F5INR07/eBrodC7QrF5JKvqskjz/ZZRXg5YSAZIbn8zGhbhUrElzHBZ2fvEQdOU59RHcTG3GiwA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + binaryextensions@4.19.0: + resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} + engines: {node: '>=0.8'} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + + blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + body-parser@1.20.2: + resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + bonjour-service@1.2.1: + resolution: {integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + boxen@7.1.1: + resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} + engines: {node: '>=14.16'} + + bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@2.3.2: + resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} + engines: {node: '>=0.10.0'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brcast@2.0.2: + resolution: {integrity: sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==} + + browser-assert@1.2.1: + resolution: {integrity: sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==} + + browser-process-hrtime@1.0.0: + resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + + browser-resolve@1.11.3: + resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} + + browserslist@4.14.2: + resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs-logger@0.2.6: + resolution: {integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==} + engines: {node: '>= 6'} + + bser@2.1.1: + resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-equal-constant-time@1.0.1: + resolution: {integrity: sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + builtins@1.0.3: + resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==} + + bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + + bundlewatch@0.3.3: + resolution: {integrity: sha512-qzSVWrZyyWXa546JpAPRPTFmnXms9YNVnfzB05DRJKmN6wRRa7SkxE4OgKQmbAY74Z6CM2mKAc6vwvd2R+1lUQ==} + engines: {node: '>=10'} + hasBin: true + + bytes@3.0.0: + resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} + engines: {node: '>= 0.8'} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacache@13.0.1: + resolution: {integrity: sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==} + engines: {node: '>= 8'} + + cacache@15.3.0: + resolution: {integrity: sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==} + engines: {node: '>= 10'} + + cacache@16.1.3: + resolution: {integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + cacache@17.1.4: + resolution: {integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + cache-base@1.0.1: + resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} + engines: {node: '>=0.10.0'} + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + cacheable-request@6.1.0: + resolution: {integrity: sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==} + engines: {node: '>=8'} + + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + caller-callsite@2.0.0: + resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==} + engines: {node: '>=4'} + + caller-path@2.0.0: + resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==} + engines: {node: '>=4'} + + callsites@2.0.0: + resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==} + engines: {node: '>=4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + camelcase@7.0.1: + resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==} + engines: {node: '>=14.16'} + + caniuse-api@3.0.0: + resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} + + caniuse-lite@1.0.30001671: + resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} + + capture-exit@2.0.0: + resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} + engines: {node: 6.* || 8.* || >= 10.*} + + case-sensitive-paths-webpack-plugin@2.4.0: + resolution: {integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==} + engines: {node: '>=4'} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + ccount@2.0.1: + resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chai@5.1.2: + resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} + engines: {node: '>=12'} + + chalk@1.1.3: + resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==} + engines: {node: '>=0.10.0'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@3.0.0: + resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} + engines: {node: '>=8'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-emitter@0.1.6: + resolution: {integrity: sha512-YXzt1cQ4a2jqazhcuSWEOc1K2q8g9H6eWNsyZgi640LDzRWVQ2eDe+Y/kVdftH+vYdPF2rgDb3dLdpxE1jvAxw==} + + char-regex@1.0.2: + resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} + engines: {node: '>=10'} + + character-entities@2.0.2: + resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + + check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@2.0.0: + resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} + engines: {node: '>=10'} + + chrome-trace-event@1.0.4: + resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} + engines: {node: '>=6.0'} + + ci-env@1.17.0: + resolution: {integrity: sha512-NtTjhgSEqv4Aj90TUYHQLxHdnCPXnjdtuGG1X8lTfp/JqeXTdw0FTWl/vUAPuvbWZTF8QVpv6ASe/XacE+7R2A==} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + circular-dependency-plugin@5.2.2: + resolution: {integrity: sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + webpack: '>=4.0.1' + + cjs-module-lexer@0.6.0: + resolution: {integrity: sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==} + + cjs-module-lexer@1.4.1: + resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} + + class-utils@0.3.6: + resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} + engines: {node: '>=0.10.0'} + + classnames@2.2.6: + resolution: {integrity: sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==} + + clean-css@5.3.3: + resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} + engines: {node: '>= 10.0'} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-cursor@2.1.0: + resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} + engines: {node: '>=4'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@1.3.1: + resolution: {integrity: sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==} + engines: {node: '>=4'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + cli-table@0.3.11: + resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} + engines: {node: '>= 0.2.0'} + + cli-truncate@2.1.0: + resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} + engines: {node: '>=8'} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + client-only@0.0.1: + resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + + cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + clone-buffer@1.0.0: + resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} + engines: {node: '>= 0.10'} + + clone-response@1.0.3: + resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} + + clone-stats@1.0.0: + resolution: {integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + + cloneable-readable@1.1.3: + resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} + + clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + cmd-shim@5.0.0: + resolution: {integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + co@4.6.0: + resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} + engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} + + coa@2.0.2: + resolution: {integrity: sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==} + engines: {node: '>= 4.0'} + + collect-v8-coverage@1.0.2: + resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} + + collection-visit@1.0.0: + resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==} + engines: {node: '>=0.10.0'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-string@1.9.1: + resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==} + + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + + color@3.2.1: + resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==} + + colord@2.9.3: + resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.0.3: + resolution: {integrity: sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + commander@2.9.0: + resolution: {integrity: sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==} + engines: {node: '>= 0.6.x'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + commander@5.1.0: + resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} + engines: {node: '>= 6'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + commander@7.1.0: + resolution: {integrity: sha512-pRxBna3MJe6HKnBGsDyMv8ETbptw3axEdYHoqNh7gu5oDcew8fs0xnivZGm06Ogk8zGAJ9VX+OPEr2GXEQK4dg==} + engines: {node: '>= 10'} + + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + + commander@8.2.0: + resolution: {integrity: sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==} + engines: {node: '>= 12'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + comment-json@4.2.5: + resolution: {integrity: sha512-bKw/r35jR3HGt5PEPm1ljsQQGyCrR8sFGNiN5L+ykDHdpO8Smxkrkla9Yi6NkQyUrb8V54PGhfMs6NrIwtxtdw==} + engines: {node: '>= 6'} + + common-ancestor-path@1.0.1: + resolution: {integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==} + + common-path-prefix@3.0.0: + resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + component-classes@1.2.6: + resolution: {integrity: sha512-hPFGULxdwugu1QWW3SvVOCUHLzO34+a2J6Wqy0c5ASQkfi9/8nZcBB0ZohaEbXOQlCflMAEMmEWk7u7BVs4koA==} + + component-emitter@1.3.1: + resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} + + component-indexof@0.0.3: + resolution: {integrity: sha512-puDQKvx/64HZXb4hBwIcvQLaLgux8o1CbWl39s41hrIIZDl1lJiD5jc22gj3RBeGK0ovxALDYpIbyjqDUUl0rw==} + + compose-function@3.0.3: + resolution: {integrity: sha512-xzhzTJ5eC+gmIzvZq+C3kCJHsp9os6tJkrigDRZclyGtOKINbZtE8n1Tzmeh32jW+BUDPbvZpibwvJHBLGMVwg==} + + compressible@2.0.18: + resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} + engines: {node: '>= 0.6'} + + compression@1.7.4: + resolution: {integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==} + engines: {node: '>= 0.8.0'} + + compute-scroll-into-view@1.0.20: + resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + configstore@5.0.1: + resolution: {integrity: sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==} + engines: {node: '>=8'} + + configstore@6.0.0: + resolution: {integrity: sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==} + engines: {node: '>=12'} + + confusing-browser-globals@1.0.11: + resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + + connect-history-api-fallback@2.0.0: + resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} + engines: {node: '>=0.8'} + + connected-react-router@6.8.0: + resolution: {integrity: sha512-E64/6krdJM3Ag3MMmh2nKPtMbH15s3JQDuaYJvOVXzu6MbHbDyIvuwLOyhQIuP4Om9zqEfZYiVyflROibSsONg==} + peerDependencies: + history: ^4.7.2 + immutable: ^3.8.1 || ^4.0.0-rc.1 + react: ^16.4.0 + react-redux: ^6.0.0 || ^7.1.0 + react-router: ^4.3.1 || ^5.0.0 + redux: ^3.6.0 || ^4.0.0 + seamless-immutable: ^7.1.3 + + consola@2.15.3: + resolution: {integrity: sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==} + + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + console-control-strings@1.1.0: + resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} + + consolidated-events@2.0.2: + resolution: {integrity: sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==} + + constants-browserify@1.0.0: + resolution: {integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + convert-source-map@0.3.5: + resolution: {integrity: sha512-+4nRk0k3oEpwUB7/CalD7xE2z4VmtEnnq0GO2IPTkrooTrAhEsWvuLF5iWP1dXrwluki/azwXV1ve7gtYuPldg==} + + convert-source-map@1.7.0: + resolution: {integrity: sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==} + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + cookie-signature@1.0.6: + resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + engines: {node: '>= 0.6'} + + cookiejar@2.1.4: + resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + + copy-concurrently@1.0.5: + resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==} + deprecated: This package is no longer supported. + + copy-descriptor@0.1.1: + resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==} + engines: {node: '>=0.10.0'} + + copy-webpack-plugin@6.4.1: + resolution: {integrity: sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + + core-js-compat@3.38.1: + resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + + core-js-pure@3.38.1: + resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} + + core-js@1.2.7: + resolution: {integrity: sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-js@2.6.12: + resolution: {integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==} + deprecated: core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js. + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig@5.2.1: + resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==} + engines: {node: '>=4'} + + cosmiconfig@7.1.0: + resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} + engines: {node: '>=10'} + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + coveralls@3.1.1: + resolution: {integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==} + engines: {node: '>=6'} + hasBin: true + + cross-spawn@5.1.0: + resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} + + cross-spawn@6.0.5: + resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypto-random-string@2.0.0: + resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} + engines: {node: '>=8'} + + crypto-random-string@3.2.0: + resolution: {integrity: sha512-8vPu5bsKaq2uKRy3OL7h1Oo7RayAWB8sYexLKAqvCXVib8SxgbmoF1IN4QMKjBv8uI8mp5gPPMbiRah25GMrVQ==} + engines: {node: '>=8'} + + crypto-random-string@4.0.0: + resolution: {integrity: sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==} + engines: {node: '>=12'} + + css-animation@1.6.1: + resolution: {integrity: sha512-/48+/BaEaHRY6kNQ2OIPzKf9A6g8WjZYjhiNDNuIVbsm5tXCGIAsHDjB4Xu1C4vXJtUWZo26O68OQkDpNBaPog==} + + css-box-model@1.2.1: + resolution: {integrity: sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==} + + css-color-names@0.0.4: + resolution: {integrity: sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==} + + css-declaration-sorter@4.0.1: + resolution: {integrity: sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==} + engines: {node: '>4'} + + css-functions-list@3.2.3: + resolution: {integrity: sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==} + engines: {node: '>=12 || >=16'} + + css-loader@5.2.7: + resolution: {integrity: sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.27.0 || ^5.0.0 + + css-loader@6.11.0: + resolution: {integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==} + engines: {node: '>= 12.13.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-minimizer-webpack-plugin@1.3.0: + resolution: {integrity: sha512-jFa0Siplmfef4ndKglpVaduY47oHQwioAOEGK0f0vAX0s+vc+SmP6cCMoc+8Adau5600RnOEld5VVdC8CQau7w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + css-select-base-adapter@0.1.1: + resolution: {integrity: sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==} + + css-select@2.1.0: + resolution: {integrity: sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==} + + css-select@4.3.0: + resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + + css-tree@1.0.0-alpha.37: + resolution: {integrity: sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==} + engines: {node: '>=8.0.0'} + + css-tree@1.1.3: + resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} + engines: {node: '>=8.0.0'} + + css-tree@3.0.0: + resolution: {integrity: sha512-o88DVQ6GzsABn1+6+zo2ct801dBO5OASVyxbbvA2W20ue2puSh/VOuqUj90eUeMSX/xqGqBmOKiRQN7tJOuBXw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + css-what@3.4.2: + resolution: {integrity: sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==} + engines: {node: '>= 6'} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + + css.escape@1.5.1: + resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + + css@2.2.4: + resolution: {integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssnano-preset-default@4.0.8: + resolution: {integrity: sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==} + engines: {node: '>=6.9.0'} + + cssnano-util-get-arguments@4.0.0: + resolution: {integrity: sha512-6RIcwmV3/cBMG8Aj5gucQRsJb4vv4I4rn6YjPbVWd5+Pn/fuG+YseGvXGk00XLkoZkaj31QOD7vMUpNPC4FIuw==} + engines: {node: '>=6.9.0'} + + cssnano-util-get-match@4.0.0: + resolution: {integrity: sha512-JPMZ1TSMRUPVIqEalIBNoBtAYbi8okvcFns4O0YIhcdGebeYZK7dMyHJiQ6GqNBA9kE0Hym4Aqym5rPdsV/4Cw==} + engines: {node: '>=6.9.0'} + + cssnano-util-raw-cache@4.0.1: + resolution: {integrity: sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==} + engines: {node: '>=6.9.0'} + + cssnano-util-same-parent@4.0.1: + resolution: {integrity: sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==} + engines: {node: '>=6.9.0'} + + cssnano@4.1.11: + resolution: {integrity: sha512-6gZm2htn7xIPJOHY824ERgj8cNPgPxyCSnkXc4v7YvNW+TdVfzgngHcEhy/8D11kUWRUMbke+tC+AUcUsnMz2g==} + engines: {node: '>=6.9.0'} + + csso@4.2.0: + resolution: {integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==} + engines: {node: '>=8.0.0'} + + cssom@0.3.8: + resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} + + cssom@0.4.4: + resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + + cssstyle@1.4.0: + resolution: {integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==} + + cssstyle@2.3.0: + resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} + engines: {node: '>=8'} + + cssstyle@3.0.0: + resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} + engines: {node: '>=14'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + cypress-axe@1.5.0: + resolution: {integrity: sha512-Hy/owCjfj+25KMsecvDgo4fC/781ccL+e8p+UUYoadGVM2ogZF9XIKbiM6KI8Y3cEaSreymdD6ZzccbI2bY0lQ==} + engines: {node: '>=10'} + peerDependencies: + axe-core: ^3 || ^4 + cypress: ^10 || ^11 || ^12 || ^13 + + cypress-file-upload@5.0.8: + resolution: {integrity: sha512-+8VzNabRk3zG6x8f8BWArF/xA/W0VK4IZNx3MV0jFWrJS/qKn8eHfa5nU73P9fOQAgwHFJx7zjg4lwOnljMO8g==} + engines: {node: '>=8.2.1'} + peerDependencies: + cypress: '>3.0.0' + + cypress@13.13.2: + resolution: {integrity: sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA==} + engines: {node: ^16.0.0 || ^18.0.0 || >=20.0.0} + hasBin: true + + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} + + damerau-levenshtein@1.0.8: + resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} + + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-uri-to-buffer@4.0.1: + resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} + engines: {node: '>= 12'} + + data-uri-to-buffer@6.0.2: + resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} + engines: {node: '>= 14'} + + data-urls@1.1.0: + resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} + + data-urls@2.0.0: + resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} + engines: {node: '>=10'} + + data-urls@4.0.0: + resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} + engines: {node: '>=14'} + + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + + dayjs@1.11.13: + resolution: {integrity: sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debounce@1.2.1: + resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.2: + resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debuglog@1.0.1: + resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.4.3: + resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + + decode-named-character-reference@1.0.2: + resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + decode-uri-component@0.4.1: + resolution: {integrity: sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==} + engines: {node: '>=14.16'} + + decompress-response@3.3.0: + resolution: {integrity: sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==} + engines: {node: '>=4'} + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + decorate-component-with-props@1.2.1: + resolution: {integrity: sha512-X2hZBnVHZAZQHG+g3Ce97SBtog1Vglzg7sPNbUY5XKmmgd3NVAiOHviw9hd7GOJIDrQ1slfwsmkbKQxESWFy7Q==} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-copy@1.4.2: + resolution: {integrity: sha512-VxZwQ/1+WGQPl5nE67uLhh7OqdrmqI1OazrraO9Bbw/M8Bt6Mol/RxzDA6N6ZgRXpsG/W9PgUj8E1LHHBEq2GQ==} + engines: {node: '>=4.0.0'} + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-freeze@0.0.1: + resolution: {integrity: sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@1.5.2: + resolution: {integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==} + engines: {node: '>=0.10.0'} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + + default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + + default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + + default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + + default-gateway@6.0.3: + resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} + engines: {node: '>= 10'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + defaulty@2.1.0: + resolution: {integrity: sha512-dNWjHNxL32khAaX/kS7/a3rXsgvqqp7cptqt477wAVnJLgaOKjcQt+53jKgPofn6hL2xyG51MegPlB5TKImXjA==} + + defer-to-connect@1.1.3: + resolution: {integrity: sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + + define-property@0.2.5: + resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==} + engines: {node: '>=0.10.0'} + + define-property@1.0.0: + resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==} + engines: {node: '>=0.10.0'} + + define-property@2.0.2: + resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} + engines: {node: '>=0.10.0'} + + degenerator@5.0.1: + resolution: {integrity: sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==} + engines: {node: '>= 14'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delegates@1.0.0: + resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + dependency-graph@0.10.0: + resolution: {integrity: sha512-c9amUgpgxSi1bE5/sbLwcs5diLD0ygCQYmhfM5H1s5VH1mCsYkcmAL3CcNdv4kdSw6JuMoHeDGzLgj/gAXdWVg==} + engines: {node: '>= 0.6.0'} + + deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + + dequal@2.0.3: + resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} + engines: {node: '>=6'} + + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + + detect-browser@5.1.0: + resolution: {integrity: sha512-WKa9p+/MNwmTiS+V2AS6eGxic+807qvnV3hC+4z2GTY+F42h1n8AynVTMMc4EJBC32qMs6yjOTpeDEQQt/AVqQ==} + + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + + detect-libc@2.0.3: + resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} + engines: {node: '>=8'} + + detect-newline@2.1.0: + resolution: {integrity: sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==} + engines: {node: '>=0.10.0'} + + detect-newline@3.1.0: + resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} + engines: {node: '>=8'} + + detect-node@2.1.0: + resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} + + detect-port-alt@1.1.6: + resolution: {integrity: sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==} + engines: {node: '>= 4.2.1'} + hasBin: true + + devlop@1.1.0: + resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + + dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + + diff-sequences@24.9.0: + resolution: {integrity: sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==} + engines: {node: '>= 6'} + + diff-sequences@26.6.2: + resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} + engines: {node: '>= 10.14.2'} + + diff-sequences@29.6.3: + resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + diff@3.5.0: + resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} + engines: {node: '>=0.3.1'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + direction@1.0.4: + resolution: {integrity: sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==} + hasBin: true + + dnd-core@4.0.5: + resolution: {integrity: sha512-GSyGmfGom9oyTFJ4Ll/95Dn3ZDvPkrgINwfeOd+gTI0RGIN1TcTGChrHnIHF3A3e1PymyEKZg+3ouN3w2uIJGQ==} + + dns-packet@5.6.1: + resolution: {integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==} + engines: {node: '>=6'} + + doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + document.contains@1.0.2: + resolution: {integrity: sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==} + + dom-accessibility-api@0.3.0: + resolution: {integrity: sha512-PzwHEmsRP3IGY4gv/Ug+rMeaTIyTJvadCb+ujYXYeIylbHJezIyNToe8KfEgHTCEYyC+/bUghYOGg8yMGlZ6vA==} + + dom-accessibility-api@0.5.16: + resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + + dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + + dom-align@1.12.4: + resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==} + + dom-converter@0.2.0: + resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} + + dom-helpers@5.2.1: + resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + + dom-serializer@0.2.2: + resolution: {integrity: sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==} + + dom-serializer@1.4.1: + resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + + domelementtype@1.3.1: + resolution: {integrity: sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domexception@1.0.1: + resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} + deprecated: Use your platform's native DOMException instead + + domexception@2.0.1: + resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} + engines: {node: '>=8'} + deprecated: Use your platform's native DOMException instead + + domexception@4.0.0: + resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} + engines: {node: '>=12'} + deprecated: Use your platform's native DOMException instead + + domhandler@4.3.1: + resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} + engines: {node: '>= 4'} + + domutils@1.7.0: + resolution: {integrity: sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==} + + domutils@2.8.0: + resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dot-prop@6.0.1: + resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==} + engines: {node: '>=10'} + + dotenv-expand@5.1.0: + resolution: {integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==} + + dotenv@7.0.0: + resolution: {integrity: sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g==} + engines: {node: '>=6'} + + dotenv@8.6.0: + resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} + engines: {node: '>=10'} + + duplexer3@0.1.5: + resolution: {integrity: sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + ecdsa-sig-formatter@1.0.11: + resolution: {integrity: sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + electron-to-chromium@1.5.47: + resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} + + emittery@0.7.2: + resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} + engines: {node: '>=10'} + + emoji-regex@10.4.0: + resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + + emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + emojis-list@3.0.0: + resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==} + engines: {node: '>= 4'} + + encodeurl@1.0.2: + resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} + engines: {node: '>= 0.8'} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + + endent@2.1.0: + resolution: {integrity: sha512-r8VyPX7XL8U01Xgnb1CjZ3XV+z90cXIJ9JPE/R9SEC9vpw2P6CfsRPJmp20DppC5N7ZAMCmjYkJIa744Iyg96w==} + + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@2.2.0: + resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + + entities@3.0.1: + resolution: {integrity: sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==} + engines: {node: '>=0.12'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + enzyme-shallow-equal@1.0.7: + resolution: {integrity: sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==} + + err-code@2.0.3: + resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} + + errno@0.1.8: + resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} + hasBin: true + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + error-stack-parser@2.1.4: + resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} + + error@10.4.0: + resolution: {integrity: sha512-YxIFEJuhgcICugOUvRx5th0UM+ActZ9sjY0QJmeVwsQdvosZ7kYzc9QqS0Da3R5iUmgU5meGIxh0xBeZpMVeLw==} + + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + + es-array-method-boxes-properly@1.0.0: + resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.1.0: + resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + + es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + + es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} + engines: {node: '>=0.10'} + + es6-iterator@2.0.3: + resolution: {integrity: sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==} + + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} + + esbuild-register@3.6.0: + resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} + peerDependencies: + esbuild: '>=0.12 <1' + + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-goat@2.1.1: + resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} + engines: {node: '>=8'} + + escape-goat@4.0.0: + resolution: {integrity: sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==} + engines: {node: '>=12'} + + escape-html@1.0.3: + resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escape-string-regexp@5.0.0: + resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} + engines: {node: '>=12'} + + escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + + escodegen@2.1.0: + resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} + engines: {node: '>=6.0'} + hasBin: true + + eslint-config-prettier@9.1.0: + resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-config-react-app@7.0.1: + resolution: {integrity: sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==} + engines: {node: '>=14.0.0'} + peerDependencies: + eslint: ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + eslint-import-resolver-alias@1.1.2: + resolution: {integrity: sha512-WdviM1Eu834zsfjHtcGHtGfcu+F30Od3V7I9Fi57uhBEwPkjDcii7/yW8jAT+gOhn4P/vOxxNAXbFAKsrrc15w==} + engines: {node: '>= 4'} + peerDependencies: + eslint-plugin-import: '>=1.4.0' + + eslint-import-resolver-babel-plugin-root-import@1.1.1: + resolution: {integrity: sha512-ZZxdV9AxzL2WFVggDxZ36xodPg2+BTrkhhMf/of+BxSVh/GKLGCs17EDq5b61wqC7/oQsA2h1RtH1fV7HOUV/w==} + peerDependencies: + babel-plugin-root-import: ^5.1.0 + eslint-plugin-import: '>=1.9.2' + + eslint-import-resolver-node@0.2.3: + resolution: {integrity: sha512-HI8ShtDIy7gON76Nr3bu4zl0DuCLPo1Fud9P2lltOQKeiAS2r5/o/l3y+V8HJ1cDLFSz+tHu7/V9fI5jirwlbw==} + + eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + + eslint-import-resolver-typescript@3.6.3: + resolution: {integrity: sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + + eslint-plugin-flowtype@8.0.3: + resolution: {integrity: sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@babel/plugin-syntax-flow': ^7.14.5 + '@babel/plugin-transform-react-jsx': ^7.14.9 + eslint: ^8.1.0 + + eslint-plugin-import@2.31.0: + resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + + eslint-plugin-jest@25.7.0: + resolution: {integrity: sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^4.0.0 || ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + jest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + jest: + optional: true + + eslint-plugin-jsx-a11y@6.10.2: + resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + engines: {node: '>=4.0'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 + + eslint-plugin-prettier@5.2.1: + resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-react-hooks@4.6.2: + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + + eslint-plugin-react@7.37.2: + resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 + + eslint-plugin-storybook@0.8.0: + resolution: {integrity: sha512-CZeVO5EzmPY7qghO2t64oaFM+8FTaD4uzOEjHKp516exyTKo+skKAL9GI3QALS2BXhyALJjNtwbmr1XinGE8bA==} + engines: {node: '>= 18'} + peerDependencies: + eslint: '>=6' + + eslint-plugin-testing-library@5.11.1: + resolution: {integrity: sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0, npm: '>=6'} + peerDependencies: + eslint: ^7.5.0 || ^8.0.0 + + eslint-scope@5.1.1: + resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} + engines: {node: '>=8.0.0'} + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.1: + resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@4.3.0: + resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + + eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + eventsource@1.1.2: + resolution: {integrity: sha512-xAH3zWhgO2/3KIniEKYPr8plNSzlGINOUqYj0m0u7AB81iRw8b/3E73W6AuU+6klLbaSFmZnaETQ2lXPfAydrA==} + engines: {node: '>=0.12.0'} + + exec-sh@0.3.6: + resolution: {integrity: sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==} + + execa@0.6.3: + resolution: {integrity: sha512-/teX3MDLFBdYUhRk8WCBYboIMUmqeizu0m9Z3YF3JWrbEh/SlZg00vLJSaAGWw3wrZ9tE0buNw79eaAPYhUuvg==} + engines: {node: '>=4'} + + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + execa@8.0.1: + resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} + engines: {node: '>=16.17'} + + executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + + exenv@1.2.2: + resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} + + exit@0.1.2: + resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} + engines: {node: '>= 0.8.0'} + + expand-brackets@2.1.4: + resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} + engines: {node: '>=0.10.0'} + + expect@24.9.0: + resolution: {integrity: sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==} + engines: {node: '>= 6'} + + expect@26.6.2: + resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} + engines: {node: '>= 10.14.2'} + + expect@29.7.0: + resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + + express@4.19.2: + resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==} + engines: {node: '>= 0.10.0'} + + ext@1.7.0: + resolution: {integrity: sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==} + + extend-shallow@2.0.1: + resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} + engines: {node: '>=0.10.0'} + + extend-shallow@3.0.2: + resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==} + engines: {node: '>=0.10.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + extglob@2.0.4: + resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} + engines: {node: '>=0.10.0'} + + extract-zip@2.0.1: + resolution: {integrity: sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==} + engines: {node: '>= 10.17.0'} + hasBin: true + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@1.1.0: + resolution: {integrity: sha512-fueX787WZKCV0Is4/T2cyAdM4+x1S3MXXOAhavE1ys/W42SHAPacLTQhucja22QBYrfGw50M2sRiXPtTGv9Ymw==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-parse@1.0.3: + resolution: {integrity: sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + faye-websocket@0.11.4: + resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} + engines: {node: '>=0.8.0'} + + fb-watchman@2.0.2: + resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} + + fbjs@0.8.18: + resolution: {integrity: sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.4.2: + resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fetch-blob@3.2.0: + resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} + engines: {node: ^12.20 || >= 14.13} + + figgy-pudding@3.5.2: + resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} + deprecated: This module is no longer supported. + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + figures@5.0.0: + resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} + engines: {node: '>=14'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + file-entry-cache@9.1.0: + resolution: {integrity: sha512-/pqPFG+FdxWQj+/WSuzXSDaNzxgTLr/OrR1QuqfEZzDakpdYE70PwUxL7BPUa8hpjbvY1+qvCl8k+8Tq34xJgg==} + engines: {node: '>=18'} + + file-loader@4.3.0: + resolution: {integrity: sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 + + file-selector@0.1.19: + resolution: {integrity: sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==} + engines: {node: '>= 10'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filelist@1.0.4: + resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} + + filesize@6.1.0: + resolution: {integrity: sha512-LpCHtPQ3sFx67z+uh2HnSyWSLLu5Jxo21795uRDuar/EOuYWXib5EmPaGIBuSnRqH2IODiKA2k5re/K9OnN/Yg==} + engines: {node: '>= 0.4.0'} + + filesize@6.4.0: + resolution: {integrity: sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==} + engines: {node: '>= 0.4.0'} + + fill-range@4.0.0: + resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==} + engines: {node: '>=0.10.0'} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + filter-obj@5.1.0: + resolution: {integrity: sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==} + engines: {node: '>=14.16'} + + finalhandler@1.2.0: + resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + engines: {node: '>= 0.8'} + + find-cache-dir@3.3.2: + resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==} + engines: {node: '>=8'} + + find-cache-dir@4.0.0: + resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} + engines: {node: '>=14.16'} + + find-parent-dir@0.3.1: + resolution: {integrity: sha512-o4UcykWV/XN9wm+jMEtWLPlV8RXCZnMhQI6F6OdHeSez7iiJWePw8ijOlskJZMsaQoGR/b7dH6lO02HhaTN7+A==} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@3.0.0: + resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==} + engines: {node: '>=6'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-up@6.3.0: + resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + find-yarn-workspace-root2@1.2.16: + resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + + first-chunk-stream@2.0.0: + resolution: {integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==} + engines: {node: '>=0.10.0'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat-cache@5.0.0: + resolution: {integrity: sha512-JrqFmyUl2PnPi1OvLyTVHnQvwQ0S+e6lGSwu8OkAZlSaNIZciTY2H/cOOROxsBA1m/LZNHDsqAgDZt6akWcjsQ==} + engines: {node: '>=18'} + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + + for-in@1.0.2: + resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==} + engines: {node: '>=0.10.0'} + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + fork-ts-checker-webpack-plugin@4.1.6: + resolution: {integrity: sha512-DUxuQaKoqfNne8iikd14SAkh5uw4+8vNifp6gmA73yYNS6ywLIWSLD/n/mBzHQRpW3J7rbATEakmiA8JvkTyZw==} + engines: {node: '>=6.11.5', yarn: '>=1.0.0'} + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true + + fork-ts-checker-webpack-plugin@8.0.0: + resolution: {integrity: sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==} + engines: {node: '>=12.13.0', yarn: '>=1.0.0'} + peerDependencies: + typescript: '>3.6.0' + webpack: ^5.11.0 + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data@2.3.3: + resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==} + engines: {node: '>= 0.12'} + + form-data@2.5.2: + resolution: {integrity: sha512-GgwY0PS7DbXqajuGf4OYlsrIu3zgxD6Vvql43IBhm6MahqA5SK/7mwhtNj2AdH2z35YR34ujJ7BN+3fFC3jP5Q==} + engines: {node: '>= 0.12'} + + form-data@3.0.2: + resolution: {integrity: sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==} + engines: {node: '>= 6'} + + form-data@4.0.1: + resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} + engines: {node: '>= 6'} + + formdata-polyfill@4.0.10: + resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} + engines: {node: '>=12.20.0'} + + formidable@1.2.6: + resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} + deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' + + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + + fragment-cache@0.2.1: + resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==} + engines: {node: '>=0.10.0'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@3.0.0: + resolution: {integrity: sha512-UNatvsfpJmsh+Cv+9JMFDqmr7nYr8GPE8fuarPpa+EZCmn7Oi5kJmZziMuKcwMVGwb/3GQmiWEOsIMHUguccMQ==} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-minipass@2.1.0: + resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} + engines: {node: '>= 8'} + + fs-minipass@3.0.3: + resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + fs-monkey@1.0.6: + resolution: {integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==} + + fs-write-stream-atomic@1.0.10: + resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==} + deprecated: This package is no longer supported. + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + full-icu@1.4.0: + resolution: {integrity: sha512-pH8z7WVKJ3QR/8UoIOZupjRCYqpMFSxjPruYbPS8Ra19UGHuUEsnXP8+ny8o7KCF/AZcEkzJXAtGsveYbP17Uw==} + hasBin: true + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + + functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + + gauge@3.0.2: + resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==} + engines: {node: '>=10'} + deprecated: This package is no longer supported. + + gauge@4.0.4: + resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.3.0: + resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} + engines: {node: '>=18'} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@4.2.0: + resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==} + engines: {node: '>=6'} + + get-stream@3.0.0: + resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} + engines: {node: '>=4'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@8.0.1: + resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} + engines: {node: '>=16'} + + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + + get-tsconfig@4.8.1: + resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} + + get-uri@6.0.3: + resolution: {integrity: sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==} + engines: {node: '>= 14'} + + get-value@2.0.6: + resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==} + engines: {node: '>=0.10.0'} + + getos@3.2.1: + resolution: {integrity: sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + git-up@7.0.0: + resolution: {integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==} + + git-url-parse@13.1.0: + resolution: {integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==} + + git-url-parse@13.1.1: + resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} + + git-url-parse@14.0.0: + resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} + + github-slugger@1.4.0: + resolution: {integrity: sha512-w0dzqw/nt51xMVmlaV1+JRzN+oCa1KfcgGEWhxUG16wbdA+Xnt/yoFO8Z8x/V82ZcZ0wy6ln9QDup5avbhiDhQ==} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + github-username@6.0.0: + resolution: {integrity: sha512-7TTrRjxblSI5l6adk9zd+cV5d6i1OrJSo3Vr9xdGqFLBQo0mz5P9eIfKCDJ7eekVGGFLbce0qbPSnktXV2BjDQ==} + engines: {node: '>=10'} + + gitly@2.0.3: + resolution: {integrity: sha512-xpbBJ4IZJbLXmggispcRlppo9hsYI90lxzYuLPEYQ4FaOG5j+o1K1823MD54KFIyMgBzS5lnlInvXgEibG2uuA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob-promise@4.2.2: + resolution: {integrity: sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw==} + engines: {node: '>=12'} + peerDependencies: + glob: ^7.1.6 + + glob-to-regexp@0.4.1: + resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-cache@1.2.1: + resolution: {integrity: sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==} + engines: {node: '>= 0.4'} + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globals@9.18.0: + resolution: {integrity: sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==} + engines: {node: '>=0.10.0'} + + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} + engines: {node: '>= 0.4'} + + globby@11.0.1: + resolution: {integrity: sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==} + engines: {node: '>=10'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + globby@13.2.2: + resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} + engines: {node: '>=18'} + + globjoin@0.1.4: + resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + got@12.6.1: + resolution: {integrity: sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==} + engines: {node: '>=14.16'} + + got@13.0.0: + resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + engines: {node: '>=16'} + + got@9.6.0: + resolution: {integrity: sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==} + engines: {node: '>=8.6'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graceful-readlink@1.0.1: + resolution: {integrity: sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + grouped-queue@2.0.0: + resolution: {integrity: sha512-/PiFUa7WIsl48dUeCvhIHnwNmAAzlI/eHoJl0vu3nsFA366JleY7Ff8EVTplZu5kO0MIdZjKTTnzItL61ahbnw==} + engines: {node: '>=8.0.0'} + + growly@1.3.0: + resolution: {integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==} + + gzip-size@5.1.1: + resolution: {integrity: sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==} + engines: {node: '>=6'} + + gzip-size@6.0.0: + resolution: {integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==} + engines: {node: '>=10'} + + handle-thing@2.0.1: + resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} + + har-schema@2.0.0: + resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} + engines: {node: '>=4'} + + har-validator@5.1.5: + resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==} + engines: {node: '>=6'} + deprecated: this library is no longer supported + + harmony-reflect@1.6.2: + resolution: {integrity: sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==} + + has-ansi@2.0.0: + resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==} + engines: {node: '>=0.10.0'} + + has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-own-prop@2.0.0: + resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + has-unicode@2.0.1: + resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} + + has-value@0.3.1: + resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==} + engines: {node: '>=0.10.0'} + + has-value@1.0.0: + resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==} + engines: {node: '>=0.10.0'} + + has-values@0.1.4: + resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==} + engines: {node: '>=0.10.0'} + + has-values@1.0.0: + resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==} + engines: {node: '>=0.10.0'} + + has-yarn@2.1.0: + resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} + engines: {node: '>=8'} + + has-yarn@3.0.0: + resolution: {integrity: sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + has@1.0.4: + resolution: {integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==} + engines: {node: '>= 0.4.0'} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hast-util-heading-rank@3.0.0: + resolution: {integrity: sha512-EJKb8oMUXVHcWZTDepnr+WNbfnXKFNf9duMesmr4S8SXTJBJ9M4Yok08pu9vxdJwdlGRhVumk9mEhkEvKGifwA==} + + hast-util-is-element@3.0.0: + resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} + + hast-util-to-string@3.0.1: + resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + hex-color-regex@1.1.0: + resolution: {integrity: sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==} + + history@4.10.1: + resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} + + history@5.3.0: + resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} + + hoist-non-react-statics@2.5.5: + resolution: {integrity: sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==} + + hoist-non-react-statics@3.3.2: + resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + hosted-git-info@6.1.1: + resolution: {integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + hpack.js@2.1.6: + resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} + + hsl-regex@1.0.0: + resolution: {integrity: sha512-M5ezZw4LzXbBKMruP+BNANf0k+19hDQMgpzBIYnya//Al+fjNct9Wf3b1WedLqdEs2hKBvxq/jh+DsHJLj0F9A==} + + hsla-regex@1.0.0: + resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} + + html-encoding-sniffer@1.0.2: + resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} + + html-encoding-sniffer@2.0.1: + resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} + engines: {node: '>=10'} + + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + html-entities@1.4.0: + resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} + + html-entities@2.5.2: + resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + html-minifier-terser@6.1.0: + resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} + engines: {node: '>=12'} + hasBin: true + + html-tags@3.3.1: + resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} + engines: {node: '>=8'} + + html-webpack-plugin@5.5.0: + resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} + engines: {node: '>=10.13.0'} + peerDependencies: + webpack: ^5.20.0 + + htmlnano@2.1.1: + resolution: {integrity: sha512-kAERyg/LuNZYmdqgCdYvugyLWNFAm8MWXpQMz1pLpetmCbFwoMxvkSoaAMlFrOC4OKTWI4KlZGT/RsNxg4ghOw==} + peerDependencies: + cssnano: ^7.0.0 + postcss: ^8.3.11 + purgecss: ^6.0.0 + relateurl: ^0.2.7 + srcset: 5.0.1 + svgo: ^3.0.2 + terser: ^5.10.0 + uncss: ^0.17.3 + peerDependenciesMeta: + cssnano: + optional: true + postcss: + optional: true + purgecss: + optional: true + relateurl: + optional: true + srcset: + optional: true + svgo: + optional: true + terser: + optional: true + uncss: + optional: true + + htmlparser2@6.1.0: + resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + + htmlparser2@7.2.0: + resolution: {integrity: sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==} + + http-cache-semantics@4.1.1: + resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + + http-deceiver@1.2.7: + resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} + + http-errors@1.6.3: + resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==} + engines: {node: '>= 0.6'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-parser-js@0.5.8: + resolution: {integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==} + + http-proxy-agent@4.0.1: + resolution: {integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==} + engines: {node: '>= 6'} + + http-proxy-agent@5.0.0: + resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} + engines: {node: '>= 6'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-proxy-middleware@2.0.1: + resolution: {integrity: sha512-cfaXRVoZxSed/BmkA7SwBVNI9Kj7HFltaE5rqYOub5kWzWZ+gofV2koVN1j2rMW7pEfSSlCHGJ31xmuyFyfLOg==} + engines: {node: '>=12.0.0'} + + http-proxy-middleware@2.0.7: + resolution: {integrity: sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==} + engines: {node: '>=12.0.0'} + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-signature@1.2.0: + resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==} + engines: {node: '>=0.8', npm: '>=1.3.7'} + + http-signature@1.4.0: + resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} + engines: {node: '>=0.10'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + human-signals@5.0.0: + resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} + engines: {node: '>=16.17.0'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + identity-obj-proxy@3.0.0: + resolution: {integrity: sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==} + engines: {node: '>=4'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + iferr@0.1.5: + resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==} + + ignore-walk@4.0.1: + resolution: {integrity: sha512-rzDQLaW4jQbh2YrOFlJdCtX8qgJTehFRYiUB2r1osqTeDzV/3+Jh8fz1oAPzUThf3iku8Ds4IDqawI5d8mUiQw==} + engines: {node: '>=10'} + + ignore-walk@6.0.5: + resolution: {integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@6.0.2: + resolution: {integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==} + engines: {node: '>= 4'} + + image-extensions@1.1.0: + resolution: {integrity: sha512-P0t7ByhK8Jk9TU05ct/7+f7h8dNuXq5OY4m0IO/T+1aga/qHkpC0Wf472x3FLdq/zFDG17pgapCM3JDTxwZzow==} + engines: {node: '>=0.10.0'} + + image-size@0.5.5: + resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + immer@10.1.1: + resolution: {integrity: sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==} + + immer@8.0.1: + resolution: {integrity: sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==} + + immutable@3.8.2: + resolution: {integrity: sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==} + engines: {node: '>=0.10.0'} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@2.0.0: + resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==} + engines: {node: '>=4'} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-lazy@2.1.0: + resolution: {integrity: sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==} + engines: {node: '>=4'} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + import-local@2.0.0: + resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} + engines: {node: '>=6'} + hasBin: true + + import-local@3.2.0: + resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} + engines: {node: '>=8'} + hasBin: true + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + indexes-of@1.0.1: + resolution: {integrity: sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==} + + infer-owner@1.0.4: + resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + inquirer@7.3.3: + resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==} + engines: {node: '>=8.0.0'} + + inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + + inquirer@9.2.11: + resolution: {integrity: sha512-B2LafrnnhbRzCWfAdOXisUzL89Kg8cVJlYmhqoi3flSiV/TveO+nsXwgKr9h9PIo+J1hz7nBSk6gegRIMBBf7g==} + engines: {node: '>=14.18.0'} + + inquirer@9.2.14: + resolution: {integrity: sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==} + engines: {node: '>=18'} + + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + intl-format-cache@4.3.1: + resolution: {integrity: sha512-OEUYNA7D06agqPOYhbTkl0T8HA3QKSuwWh1HiClEnpd9vw7N+3XsQt5iZ0GUEchp5CW1fQk/tary+NsbF3yQ1Q==} + + intl-messageformat-parser@3.6.4: + resolution: {integrity: sha512-RgPGwue0mJtoX2Ax8EmMzJzttxjnva7gx0Q7mKJ4oALrTZvtmCeAw5Msz2PcjW4dtCh/h7vN/8GJCxZO1uv+OA==} + deprecated: We've written a new parser that's 6x faster and is backwards compatible. Please use @formatjs/icu-messageformat-parser + + intl-messageformat@10.7.3: + resolution: {integrity: sha512-AAo/3oyh7ROfPhDuh7DxTTydh97OC+lv7h1Eq5LuHWuLsUMKOhtzTYuyXlUReuwZ9vANDHo4CS1bGRrn7TZRtg==} + + intl-messageformat@7.8.4: + resolution: {integrity: sha512-yS0cLESCKCYjseCOGXuV4pxJm/buTfyCJ1nzQjryHmSehlptbZbn9fnlk1I9peLopZGGbjj46yHHiTAEZ1qOTA==} + + invariant@2.2.4: + resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} + + ip-address@9.0.5: + resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} + engines: {node: '>= 12'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + + ipaddr.js@2.2.0: + resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} + engines: {node: '>= 10'} + + is-absolute-url@2.1.0: + resolution: {integrity: sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==} + engines: {node: '>=0.10.0'} + + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-accessor-descriptor@1.0.1: + resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==} + engines: {node: '>= 0.10'} + + is-arguments@1.1.1: + resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} + engines: {node: '>= 0.4'} + + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-arrayish@0.3.2: + resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==} + + is-async-function@2.0.0: + resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} + engines: {node: '>= 0.4'} + + is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + + is-buffer@1.1.6: + resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} + + is-bun-module@1.2.1: + resolution: {integrity: sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-ci@2.0.0: + resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==} + hasBin: true + + is-ci@3.0.1: + resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} + hasBin: true + + is-color-stop@1.1.0: + resolution: {integrity: sha512-H1U8Vz0cfXNujrJzEcvvwMDW9Ra+biSYA3ThdQvAnMLJkEHQXn6bWzLkxHtVYJ+Sdbx0b6finn3jZiaVe7MAHA==} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-data-descriptor@1.0.1: + resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==} + engines: {node: '>= 0.4'} + + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + + is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + + is-descriptor@0.1.7: + resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==} + engines: {node: '>= 0.4'} + + is-descriptor@1.0.3: + resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==} + engines: {node: '>= 0.4'} + + is-directory@0.3.1: + resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==} + engines: {node: '>=0.10.0'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extendable@0.1.1: + resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==} + engines: {node: '>=0.10.0'} + + is-extendable@1.0.1: + resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} + engines: {node: '>=0.10.0'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-finalizationregistry@1.0.2: + resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-generator-fn@2.1.0: + resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} + engines: {node: '>=6'} + + is-generator-function@1.0.10: + resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} + engines: {node: '>= 0.4'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hotkey@0.1.8: + resolution: {integrity: sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ==} + + is-hotkey@0.2.0: + resolution: {integrity: sha512-UknnZK4RakDmTgz4PI1wIph5yxSs/mvChWs9ifnlXsKuXgWmOkY/hAE0H/k2MIqH0RlRye0i1oC07MCRSD28Mw==} + + is-in-ci@0.1.0: + resolution: {integrity: sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==} + engines: {node: '>=18'} + hasBin: true + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-json@2.0.1: + resolution: {integrity: sha512-6BEnpVn1rcf3ngfmViLM6vjUjGErbdrL4rwlv+u1NO1XO8kqT4YGL8+19Q+Z/bas8tY90BTWMk2+fW1g6hQjbA==} + + is-lambda@1.0.1: + resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} + + is-map@2.0.3: + resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} + engines: {node: '>= 0.4'} + + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + + is-npm@5.0.0: + resolution: {integrity: sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==} + engines: {node: '>=10'} + + is-npm@6.0.0: + resolution: {integrity: sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + + is-number@3.0.0: + resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-plain-obj@3.0.0: + resolution: {integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==} + engines: {node: '>=10'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-plain-object@2.0.4: + resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} + engines: {node: '>=0.10.0'} + + is-plain-object@5.0.0: + resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==} + engines: {node: '>=0.10.0'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + + is-resolvable@1.1.0: + resolution: {integrity: sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==} + + is-root@2.1.0: + resolution: {integrity: sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==} + engines: {node: '>=6'} + + is-scoped@2.1.0: + resolution: {integrity: sha512-Cv4OpPTHAK9kHYzkzCrof3VJh7H/PrG2MBUMvvJebaaUMbqhm0YAtXnvh0I3Hnj2tMZWwrRROWLSgfJrKqWmlQ==} + engines: {node: '>=8'} + + is-set@2.0.3: + resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} + engines: {node: '>= 0.4'} + + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + + is-ssh@1.4.0: + resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + + is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + + is-touch-device@1.0.1: + resolution: {integrity: sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==} + + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-url@1.2.4: + resolution: {integrity: sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-weakmap@2.0.2: + resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} + engines: {node: '>= 0.4'} + + is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + + is-weakset@2.0.3: + resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + + is-yarn-global@0.3.0: + resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} + + is-yarn-global@0.4.1: + resolution: {integrity: sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==} + engines: {node: '>=12'} + + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isbinaryfile@4.0.10: + resolution: {integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==} + engines: {node: '>= 8.0.0'} + + isbinaryfile@5.0.4: + resolution: {integrity: sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==} + engines: {node: '>= 18.0.0'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isobject@2.1.0: + resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==} + engines: {node: '>=0.10.0'} + + isobject@3.0.1: + resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} + engines: {node: '>=0.10.0'} + + isomorphic-fetch@2.2.1: + resolution: {integrity: sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + issue-parser@6.0.0: + resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} + engines: {node: '>=10.13'} + + istanbul-lib-coverage@2.0.5: + resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} + engines: {node: '>=6'} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-instrument@3.3.0: + resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} + engines: {node: '>=6'} + + istanbul-lib-instrument@4.0.3: + resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} + engines: {node: '>=8'} + + istanbul-lib-instrument@5.2.1: + resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} + engines: {node: '>=8'} + + istanbul-lib-report@2.0.8: + resolution: {integrity: sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==} + engines: {node: '>=6'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@3.0.6: + resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} + engines: {node: '>=6'} + + istanbul-lib-source-maps@4.0.1: + resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@2.2.7: + resolution: {integrity: sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==} + engines: {node: '>=6'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + iterate-iterator@1.0.2: + resolution: {integrity: sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==} + + iterate-value@1.0.2: + resolution: {integrity: sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==} + + iterator.prototype@1.1.3: + resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} + engines: {node: '>= 0.4'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.2: + resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} + engines: {node: '>=10'} + hasBin: true + + jest-axe@8.0.0: + resolution: {integrity: sha512-4kNcNn7J0jPO4jANEYZOHeQ/tSBvkXS+MxTbX1CKbXGd0+ZbRGDn/v/8IYWI/MmYX15iLVyYRnRev9X3ksePWA==} + engines: {node: '>= 14.0.0'} + + jest-changed-files@24.9.0: + resolution: {integrity: sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==} + engines: {node: '>= 6'} + + jest-changed-files@26.6.2: + resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} + engines: {node: '>= 10.14.2'} + + jest-cli@24.9.0: + resolution: {integrity: sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==} + engines: {node: '>= 6'} + hasBin: true + + jest-cli@26.6.3: + resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} + engines: {node: '>= 10.14.2'} + hasBin: true + + jest-config@24.9.0: + resolution: {integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==} + engines: {node: '>= 6'} + + jest-config@26.6.3: + resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} + engines: {node: '>= 10.14.2'} + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true + + jest-diff@24.9.0: + resolution: {integrity: sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==} + engines: {node: '>= 6'} + + jest-diff@26.6.2: + resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} + engines: {node: '>= 10.14.2'} + + jest-diff@29.7.0: + resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-docblock@24.9.0: + resolution: {integrity: sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==} + engines: {node: '>= 6'} + + jest-docblock@26.0.0: + resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} + engines: {node: '>= 10.14.2'} + + jest-each@24.9.0: + resolution: {integrity: sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==} + engines: {node: '>= 6'} + + jest-each@26.6.2: + resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} + engines: {node: '>= 10.14.2'} + + jest-environment-jsdom@24.9.0: + resolution: {integrity: sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==} + engines: {node: '>= 6'} + + jest-environment-jsdom@26.6.2: + resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} + engines: {node: '>= 10.14.2'} + + jest-environment-node@24.9.0: + resolution: {integrity: sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==} + engines: {node: '>= 6'} + + jest-environment-node@26.6.2: + resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} + engines: {node: '>= 10.14.2'} + + jest-file@1.0.0: + resolution: {integrity: sha512-QqcbPCfpVCxixoF0gia825AGBGXYWVi4cQpLsXBQVxkWswnZ39XHpT490NvTMtokY6v6BM+vw8rlhtjORabplA==} + + jest-get-type@24.9.0: + resolution: {integrity: sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==} + engines: {node: '>= 6'} + + jest-get-type@26.3.0: + resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} + engines: {node: '>= 10.14.2'} + + jest-get-type@29.6.3: + resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-haste-map@24.9.0: + resolution: {integrity: sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==} + engines: {node: '>= 6'} + + jest-haste-map@26.6.2: + resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} + engines: {node: '>= 10.14.2'} + + jest-haste-map@29.7.0: + resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-jasmine2@24.9.0: + resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==} + engines: {node: '>= 6'} + + jest-jasmine2@26.6.3: + resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} + engines: {node: '>= 10.14.2'} + + jest-leak-detector@24.9.0: + resolution: {integrity: sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==} + engines: {node: '>= 6'} + + jest-leak-detector@26.6.2: + resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} + engines: {node: '>= 10.14.2'} + + jest-matcher-utils@24.9.0: + resolution: {integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==} + engines: {node: '>= 6'} + + jest-matcher-utils@26.6.2: + resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} + engines: {node: '>= 10.14.2'} + + jest-matcher-utils@29.2.2: + resolution: {integrity: sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-matcher-utils@29.7.0: + resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-message-util@24.9.0: + resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==} + engines: {node: '>= 6'} + + jest-message-util@26.6.2: + resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} + engines: {node: '>= 10.14.2'} + + jest-message-util@29.7.0: + resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-mock@24.9.0: + resolution: {integrity: sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==} + engines: {node: '>= 6'} + + jest-mock@26.6.2: + resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} + engines: {node: '>= 10.14.2'} + + jest-mock@29.7.0: + resolution: {integrity: sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-pnp-resolver@1.2.3: + resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} + engines: {node: '>=6'} + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true + + jest-regex-util@24.9.0: + resolution: {integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==} + engines: {node: '>= 6'} + + jest-regex-util@26.0.0: + resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} + engines: {node: '>= 10.14.2'} + + jest-regex-util@29.6.3: + resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-resolve-dependencies@24.9.0: + resolution: {integrity: sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==} + engines: {node: '>= 6'} + + jest-resolve-dependencies@26.6.3: + resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} + engines: {node: '>= 10.14.2'} + + jest-resolve@24.9.0: + resolution: {integrity: sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==} + engines: {node: '>= 6'} + + jest-resolve@26.6.2: + resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} + engines: {node: '>= 10.14.2'} + + jest-runner@24.9.0: + resolution: {integrity: sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==} + engines: {node: '>= 6'} + + jest-runner@26.6.3: + resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} + engines: {node: '>= 10.14.2'} + + jest-runtime@24.9.0: + resolution: {integrity: sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==} + engines: {node: '>= 6'} + hasBin: true + + jest-runtime@26.6.3: + resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} + engines: {node: '>= 10.14.2'} + hasBin: true + + jest-serializer@24.9.0: + resolution: {integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==} + engines: {node: '>= 6'} + + jest-serializer@26.6.2: + resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} + engines: {node: '>= 10.14.2'} + + jest-snapshot@24.9.0: + resolution: {integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==} + engines: {node: '>= 6'} + + jest-snapshot@26.6.2: + resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} + engines: {node: '>= 10.14.2'} + + jest-snapshot@29.7.0: + resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-util@24.9.0: + resolution: {integrity: sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==} + engines: {node: '>= 6'} + + jest-util@26.6.2: + resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} + engines: {node: '>= 10.14.2'} + + jest-util@29.7.0: + resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest-validate@24.9.0: + resolution: {integrity: sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==} + engines: {node: '>= 6'} + + jest-validate@26.6.2: + resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} + engines: {node: '>= 10.14.2'} + + jest-watcher@24.9.0: + resolution: {integrity: sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==} + engines: {node: '>= 6'} + + jest-watcher@26.6.2: + resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} + engines: {node: '>= 10.14.2'} + + jest-worker@24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} + + jest-worker@25.5.0: + resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} + engines: {node: '>= 8.3'} + + jest-worker@26.6.2: + resolution: {integrity: sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==} + engines: {node: '>= 10.13.0'} + + jest-worker@27.5.1: + resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} + engines: {node: '>= 10.13.0'} + + jest-worker@29.7.0: + resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + jest@24.9.0: + resolution: {integrity: sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==} + engines: {node: '>= 6'} + hasBin: true + + jest@26.6.3: + resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} + engines: {node: '>= 10.14.2'} + hasBin: true + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + joi@17.13.3: + resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + + jotai@2.0.3: + resolution: {integrity: sha512-MMjhSPAL3RoeZD9WbObufRT2quThEAEknHHridf2ma8Ml7ZVQmUiHk0ssdbR3F0h3kcwhYqSGJ59OjhPge7RRg==} + engines: {node: '>=12.20.0'} + peerDependencies: + react: '>=17.0.0' + peerDependenciesMeta: + react: + optional: true + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + + jquery@3.7.1: + resolution: {integrity: sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==} + + js-tokens@3.0.2: + resolution: {integrity: sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.0: + resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsbn@1.1.0: + resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} + + jsdoc-type-pratt-parser@4.1.0: + resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} + engines: {node: '>=12.0.0'} + + jsdom@11.12.0: + resolution: {integrity: sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==} + + jsdom@16.7.0: + resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} + engines: {node: '>=10'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@21.1.2: + resolution: {integrity: sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==} + engines: {node: '>=14'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsdom@22.1.0: + resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} + engines: {node: '>=16'} + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.0.2: + resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.0: + resolution: {integrity: sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==} + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-parse-even-better-errors@3.0.2: + resolution: {integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-nice@1.1.4: + resolution: {integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json3@3.3.3: + resolution: {integrity: sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==} + + json5@0.5.1: + resolution: {integrity: sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==} + hasBin: true + + json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@3.0.1: + resolution: {integrity: sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonpack@1.1.5: + resolution: {integrity: sha512-d2vwomK605ks7Q+uCpbwGyoIF5j+UZuJjlYcugISBt3CxM+eBo/W6y63yVPIyIvbYON+pvJYsYZjCYbzqJj/xQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonwebtoken@9.0.0: + resolution: {integrity: sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==} + engines: {node: '>=12', npm: '>=6'} + + jsprim@1.4.2: + resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} + engines: {node: '>=0.6.0'} + + jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + + jsx-ast-utils@3.3.5: + resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} + engines: {node: '>=4.0'} + + just-curry-it@5.3.0: + resolution: {integrity: sha512-silMIRiFjUWlfaDhkgSzpuAyQ6EX/o09Eu8ZBfmFwQMbax7+LQzeIU2CBrICT6Ne4l86ITCGvUCBpCubWYy0Yw==} + + just-diff-apply@5.5.0: + resolution: {integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==} + + just-diff@5.2.0: + resolution: {integrity: sha512-6ufhP9SHjb7jibNFrNxyFZ6od3g+An6Ai9mhGRvcYe8UJlH0prseN64M+6ZBBUoKYHZsitDP42gAJ8+eVWr3lw==} + + just-extend@6.2.0: + resolution: {integrity: sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==} + + jwa@1.4.1: + resolution: {integrity: sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==} + + jws@3.2.2: + resolution: {integrity: sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==} + + jwt-decode@2.2.0: + resolution: {integrity: sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==} + + keyboard-key@1.1.0: + resolution: {integrity: sha512-qkBzPTi3rlAKvX7k0/ub44sqOfXeLc/jcnGGmj5c7BJpU8eDrEVPyhCvNYAaoubbsLm9uGWwQJO1ytQK1a9/dQ==} + + keyv@3.1.0: + resolution: {integrity: sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@3.2.2: + resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==} + engines: {node: '>=0.10.0'} + + kind-of@4.0.0: + resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==} + engines: {node: '>=0.10.0'} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + klona@2.0.6: + resolution: {integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==} + engines: {node: '>= 8'} + + known-css-properties@0.34.0: + resolution: {integrity: sha512-tBECoUqNFbyAY4RrbqsBQqDFpGXAEbdD5QKr8kACx3+rnArmuuR22nKQWKazvp07N9yjTyDZaw/20UIH8tL9DQ==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + language-subtag-registry@0.3.23: + resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} + + language-tags@1.0.9: + resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} + engines: {node: '>=0.10'} + + latest-version@5.1.0: + resolution: {integrity: sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==} + engines: {node: '>=8'} + + latest-version@7.0.0: + resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==} + engines: {node: '>=14.16'} + + lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + + lcov-parse@1.0.0: + resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} + hasBin: true + + left-pad@1.3.0: + resolution: {integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==} + deprecated: use String.prototype.padStart() + + less-loader@11.1.0: + resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} + engines: {node: '>= 14.15.0'} + peerDependencies: + less: ^3.5.0 || ^4.0.0 + webpack: ^5.0.0 + + less@3.11.1: + resolution: {integrity: sha512-tlWX341RECuTOvoDIvtFqXsKj072hm3+9ymRBe76/mD6O5ZZecnlAOVDlWAleF2+aohFrxNidXhv2773f6kY7g==} + engines: {node: '>=6'} + hasBin: true + + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-cli-darwin-arm64@1.27.0: + resolution: {integrity: sha512-5vXCakJA/m2WSVmCUSpeEjsGy+LB/N2YCy/PjoZturH7doAXW8IP/p5X1fbuyX4AwynpzCWGiVjmFFymPOTBUg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-cli-darwin-x64@1.27.0: + resolution: {integrity: sha512-xCMimAAgbhCdJjTvwxulMzR/Im4Sp3jh6nQjMqzUXFdhV6vkA9sAJeUeFgZfuPu3cTRI8w74DllLvbK77e76nw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-cli-freebsd-x64@1.27.0: + resolution: {integrity: sha512-hsIu9VSQNUccZUWiUYvUXB7zq6w+xbjT52VZcWxd6SvHiBTXGUox5BFxYJ3tKc2HGB8jcbYMH7HVfbEM9kuszg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-cli-linux-arm-gnueabihf@1.27.0: + resolution: {integrity: sha512-Io1ZjfNx3UN1fnk4ojOM+x1njtVUo1pBpdrsKeR7EpLfdzbeuZ2VyZ1dQpc2OY45uwwpBO/BaQFid/GAy1j8jg==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-cli-linux-arm64-gnu@1.27.0: + resolution: {integrity: sha512-TfVnMGDWcCGRwPBb7asEdWYE+kTVceMob+Lm2abfEepPPgDMSc/wYMeP5saofDvYsGINluJO6bZiPpFJCGDr7w==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-cli-linux-arm64-musl@1.27.0: + resolution: {integrity: sha512-yWOUarFdgSjBINUt58ijEGEPpCSIu8ZQF6HaI18szGHG9GbkLM0etEMTv1udpd6cmDkymxk1lXHbPkD+DWty7A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-cli-linux-x64-gnu@1.27.0: + resolution: {integrity: sha512-b8ouWePiwhQdKD9vBu7ywLwDXJ+Y3MHWY7hLbnwxp1+HWQ/Q9fLNEpfR4ZoFXrw1BwMDBp5T68c1hPBlGhDgqg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-cli-linux-x64-musl@1.27.0: + resolution: {integrity: sha512-Cnh4KtkSXT30jzjgh5ImHIpBptqmemTxPyWHC7O4l5RgkPjnyytfOjgWJFjiSfeCHfNEmNy0evDH38l5TXf5Eg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-cli-win32-arm64-msvc@1.27.0: + resolution: {integrity: sha512-HWX6aY0CHft7QkxhC6NhAAD0Qm9yrAH8JKTfNRDxvyL+q6E+JQDO/vG33x4YVRQoIL3Evh9CULyHDyHCNy0IdQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-cli-win32-x64-msvc@1.27.0: + resolution: {integrity: sha512-CkurSCmj5iDJ5Jgcg+XibVo3GSEo6W6WbVeKuzU4bfeh3lRLcMHUG/F3+L66JJedUUKUq8eMQgbLOPmtgwqxJA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss-cli@1.27.0: + resolution: {integrity: sha512-wR6VRIY7JoLm7zRerqoGZ89Yyv149XllizcVh0iWVYfDR8per+IbcTyd+c7MPF1E+HaDCxRd9GCst1eeYAssiQ==} + engines: {node: '>= 12.0.0'} + hasBin: true + + lightningcss-darwin-arm64@1.27.0: + resolution: {integrity: sha512-Gl/lqIXY+d+ySmMbgDf0pgaWSqrWYxVHoc88q+Vhf2YNzZ8DwoRzGt5NZDVqqIW5ScpSnmmjcgXP87Dn2ylSSQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.27.0: + resolution: {integrity: sha512-0+mZa54IlcNAoQS9E0+niovhyjjQWEMrwW0p2sSdLRhLDc8LMQ/b67z7+B5q4VmjYCMSfnFi3djAAQFIDuj/Tg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.27.0: + resolution: {integrity: sha512-n1sEf85fePoU2aDN2PzYjoI8gbBqnmLGEhKq7q0DKLj0UTVmOTwDC7PtLcy/zFxzASTSBlVQYJUhwIStQMIpRA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.27.0: + resolution: {integrity: sha512-MUMRmtdRkOkd5z3h986HOuNBD1c2lq2BSQA1Jg88d9I7bmPGx08bwGcnB75dvr17CwxjxD6XPi3Qh8ArmKFqCA==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.27.0: + resolution: {integrity: sha512-cPsxo1QEWq2sfKkSq2Bq5feQDHdUEwgtA9KaB27J5AX22+l4l0ptgjMZZtYtUnteBofjee+0oW1wQ1guv04a7A==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.27.0: + resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.27.0: + resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.27.0: + resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.27.0: + resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.27.0: + resolution: {integrity: sha512-/OJLj94Zm/waZShL8nB5jsNj3CfNATLCTyFxZyouilfTmSoLDX7VlVAmhPHoZWVFp4vdmoiEbPEYC8HID3m6yw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.27.0: + resolution: {integrity: sha512-8f7aNmS1+etYSLHht0fQApPc2kNO8qGRutifN5rVIc6Xo6ABsEbqOr758UwI7ALVbTt4x1fllKt0PYgzD9S3yQ==} + engines: {node: '>= 12.0.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + linkify-it@3.0.2: + resolution: {integrity: sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==} + + listr2@3.14.0: + resolution: {integrity: sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==} + engines: {node: '>=10.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + lmdb@2.8.5: + resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} + hasBin: true + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + load-yaml-file@0.2.0: + resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} + engines: {node: '>=6'} + + loader-runner@4.3.0: + resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} + engines: {node: '>=6.11.5'} + + loader-utils@1.4.2: + resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==} + engines: {node: '>=4.0.0'} + + loader-utils@2.0.0: + resolution: {integrity: sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==} + engines: {node: '>=8.9.0'} + + loader-utils@2.0.4: + resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} + engines: {node: '>=8.9.0'} + + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + + locale@0.1.0: + resolution: {integrity: sha512-rY3ZMnUkMfaZEix1fp/pjdwsHJkDQcE0UEcXHuYI77J03K8gddL3iD+UuJCLAmT2Z2oz5A70/0QS4J9OLCCvXw==} + engines: {node: '>0.8.x'} + + locate-path@3.0.0: + resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} + engines: {node: '>=6'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + lodash-move@1.1.1: + resolution: {integrity: sha512-Gm8/lC16NXv2tweIiX7pYhgAQdoSwXzO/WsSmNX/un8rBQUIC7YkauFK2Sdt4NBqWV28BW25P8eDkHWPt91YqQ==} + + lodash-webpack-plugin@0.11.6: + resolution: {integrity: sha512-nsHN/+IxZK/C425vGC8pAxkKJ8KQH2+NJnhDul14zYNWr6HJcA95w+oRR7Cp0oZpOdMplDZXmjVROp8prPk7ig==} + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.1.0 + + lodash.capitalize@4.2.1: + resolution: {integrity: sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==} + + lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + + lodash.difference@4.5.0: + resolution: {integrity: sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==} + + lodash.escaperegexp@4.1.2: + resolution: {integrity: sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==} + + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.isstring@4.0.1: + resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.uniqby@4.7.0: + resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-driver@1.2.7: + resolution: {integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==} + engines: {node: '>=0.8.6'} + + log-symbols@1.0.2: + resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} + engines: {node: '>=0.10.0'} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} + + log-update@4.0.0: + resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} + engines: {node: '>=10'} + + longest-streak@3.1.0: + resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} + + loose-envify@1.4.0: + resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} + hasBin: true + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + loupe@3.1.2: + resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@1.0.1: + resolution: {integrity: sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==} + engines: {node: '>=0.10.0'} + + lowercase-keys@2.0.0: + resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} + engines: {node: '>=8'} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@4.1.5: + resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru-cache@7.18.3: + resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} + engines: {node: '>=12'} + + lz-string@1.5.0: + resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} + hasBin: true + + macos-release@3.3.0: + resolution: {integrity: sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.12: + resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} + + magicast@0.3.5: + resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + + make-dir@3.1.0: + resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} + engines: {node: '>=8'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + make-fetch-happen@10.2.1: + resolution: {integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + make-fetch-happen@11.1.1: + resolution: {integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + make-fetch-happen@9.1.0: + resolution: {integrity: sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==} + engines: {node: '>= 10'} + + makeerror@1.0.12: + resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} + + map-cache@0.2.2: + resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==} + engines: {node: '>=0.10.0'} + + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + + map-visit@1.0.0: + resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==} + engines: {node: '>=0.10.0'} + + markdown-table@3.0.4: + resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} + + markdown-to-jsx@7.5.0: + resolution: {integrity: sha512-RrBNcMHiFPcz/iqIj0n3wclzHXjwS7mzjBNWecKKVhNTIxQepIix6Il/wZCn2Cg5Y1ow2Qi84+eJrryFRWBEWw==} + engines: {node: '>= 10'} + peerDependencies: + react: '>= 0.14.0' + + mathml-tag-names@2.1.3: + resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==} + + mdast-util-find-and-replace@3.0.1: + resolution: {integrity: sha512-SG21kZHGC3XRTSUhtofZkBzZTJNM5ecCi0SK2IMKmSXR8vO3peL+kb1O0z7Zl83jKtutG4k5Wv/W7V3/YHvzPA==} + + mdast-util-from-markdown@2.0.2: + resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==} + + mdast-util-gfm-autolink-literal@2.0.1: + resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} + + mdast-util-gfm-footnote@2.0.0: + resolution: {integrity: sha512-5jOT2boTSVkMnQ7LTrd6n/18kqwjmuYqo7JUPe+tRCY6O7dAuTFMtTPauYYrMPpox9hlN0uOx/FL8XvEfG9/mQ==} + + mdast-util-gfm-strikethrough@2.0.0: + resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} + + mdast-util-gfm-table@2.0.0: + resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} + + mdast-util-gfm-task-list-item@2.0.0: + resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} + + mdast-util-gfm@3.0.0: + resolution: {integrity: sha512-dgQEX5Amaq+DuUqf26jJqSK9qgixgd6rYDHAv4aTBuA92cTknZlKpPfa86Z/s8Dj8xsAQpFfBmPUHWJBWqS4Bw==} + + mdast-util-phrasing@4.1.0: + resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} + + mdast-util-to-markdown@2.1.0: + resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + + mdast-util-to-string@4.0.0: + resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + + mdn-data@2.0.14: + resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + + mdn-data@2.0.4: + resolution: {integrity: sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==} + + mdn-data@2.10.0: + resolution: {integrity: sha512-qq7C3EtK3yJXMwz1zAab65pjl+UhohqMOctTgcqjLOWABqmwj+me02LSsCuEUxnst9X1lCBpoE0WArGKgdGDzw==} + + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} + + mem-fs-editor@9.7.0: + resolution: {integrity: sha512-ReB3YD24GNykmu4WeUL/FDIQtkoyGB6zfJv60yfCo3QjKeimNcTqv2FT83bP0ccs6uu+sm5zyoBlspAzigmsdg==} + engines: {node: '>=12.10.0'} + peerDependencies: + mem-fs: ^2.1.0 + peerDependenciesMeta: + mem-fs: + optional: true + + mem-fs@2.3.0: + resolution: {integrity: sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw==} + engines: {node: '>=12'} + + memfs@3.5.3: + resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} + engines: {node: '>= 4.0.0'} + + memoize-one@5.2.1: + resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} + + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-descriptors@1.0.1: + resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + methods@1.1.2: + resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} + engines: {node: '>= 0.6'} + + microevent.ts@0.1.1: + resolution: {integrity: sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==} + + micromark-core-commonmark@2.0.1: + resolution: {integrity: sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==} + + micromark-extension-gfm-autolink-literal@2.1.0: + resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} + + micromark-extension-gfm-footnote@2.1.0: + resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} + + micromark-extension-gfm-strikethrough@2.1.0: + resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} + + micromark-extension-gfm-table@2.1.0: + resolution: {integrity: sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==} + + micromark-extension-gfm-tagfilter@2.0.0: + resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} + + micromark-extension-gfm-task-list-item@2.1.0: + resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} + + micromark-extension-gfm@3.0.0: + resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} + + micromark-factory-destination@2.0.0: + resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} + + micromark-factory-label@2.0.0: + resolution: {integrity: sha512-RR3i96ohZGde//4WSe/dJsxOX6vxIg9TimLAS3i4EhBAFx8Sm5SmqVfR8E87DPSR31nEAjZfbt91OMZWcNgdZw==} + + micromark-factory-space@2.0.0: + resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} + + micromark-factory-title@2.0.0: + resolution: {integrity: sha512-jY8CSxmpWLOxS+t8W+FG3Xigc0RDQA9bKMY/EwILvsesiRniiVMejYTE4wumNc2f4UbAa4WsHqe3J1QS1sli+A==} + + micromark-factory-whitespace@2.0.0: + resolution: {integrity: sha512-28kbwaBjc5yAI1XadbdPYHX/eDnqaUFVikLwrO7FDnKG7lpgxnvk/XGRhX/PN0mOZ+dBSZ+LgunHS+6tYQAzhA==} + + micromark-util-character@2.1.0: + resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==} + + micromark-util-chunked@2.0.0: + resolution: {integrity: sha512-anK8SWmNphkXdaKgz5hJvGa7l00qmcaUQoMYsBwDlSKFKjc6gjGXPDw3FNL3Nbwq5L8gE+RCbGqTw49FK5Qyvg==} + + micromark-util-classify-character@2.0.0: + resolution: {integrity: sha512-S0ze2R9GH+fu41FA7pbSqNWObo/kzwf8rN/+IGlW/4tC6oACOs8B++bh+i9bVyNnwCcuksbFwsBme5OCKXCwIw==} + + micromark-util-combine-extensions@2.0.0: + resolution: {integrity: sha512-vZZio48k7ON0fVS3CUgFatWHoKbbLTK/rT7pzpJ4Bjp5JjkZeasRfrS9wsBdDJK2cJLHMckXZdzPSSr1B8a4oQ==} + + micromark-util-decode-numeric-character-reference@2.0.1: + resolution: {integrity: sha512-bmkNc7z8Wn6kgjZmVHOX3SowGmVdhYS7yBpMnuMnPzDq/6xwVA604DuOXMZTO1lvq01g+Adfa0pE2UKGlxL1XQ==} + + micromark-util-decode-string@2.0.0: + resolution: {integrity: sha512-r4Sc6leeUTn3P6gk20aFMj2ntPwn6qpDZqWvYmAG6NgvFTIlj4WtrAudLi65qYoaGdXYViXYw2pkmn7QnIFasA==} + + micromark-util-encode@2.0.0: + resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} + + micromark-util-html-tag-name@2.0.0: + resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} + + micromark-util-normalize-identifier@2.0.0: + resolution: {integrity: sha512-2xhYT0sfo85FMrUPtHcPo2rrp1lwbDEEzpx7jiH2xXJLqBuy4H0GgXk5ToU8IEwoROtXuL8ND0ttVa4rNqYK3w==} + + micromark-util-resolve-all@2.0.0: + resolution: {integrity: sha512-6KU6qO7DZ7GJkaCgwBNtplXCvGkJToU86ybBAUdavvgsCiG8lSSvYxr9MhwmQ+udpzywHsl4RpGJsYWG1pDOcA==} + + micromark-util-sanitize-uri@2.0.0: + resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==} + + micromark-util-subtokenize@2.0.1: + resolution: {integrity: sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==} + + micromark-util-symbol@2.0.0: + resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==} + + micromark-util-types@2.0.0: + resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==} + + micromark@4.0.0: + resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==} + + micromatch@3.1.10: + resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} + engines: {node: '>=0.10.0'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + + mime@2.6.0: + resolution: {integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==} + engines: {node: '>=4.0.0'} + hasBin: true + + mimic-fn@1.2.0: + resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} + engines: {node: '>=4'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + mimic-response@1.0.1: + resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} + engines: {node: '>=4'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + mini-create-react-context@0.4.1: + resolution: {integrity: sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + peerDependencies: + prop-types: ^15.0.0 + react: ^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + mini-css-extract-plugin@2.7.2: + resolution: {integrity: sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimatch@3.0.4: + resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} + + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@7.4.6: + resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass-collect@1.0.2: + resolution: {integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==} + engines: {node: '>= 8'} + + minipass-fetch@1.4.1: + resolution: {integrity: sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==} + engines: {node: '>=8'} + + minipass-fetch@2.1.2: + resolution: {integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + minipass-fetch@3.0.5: + resolution: {integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + minipass-flush@1.0.5: + resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + engines: {node: '>= 8'} + + minipass-json-stream@1.0.2: + resolution: {integrity: sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==} + + minipass-pipeline@1.2.4: + resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} + engines: {node: '>=8'} + + minipass-sized@1.0.3: + resolution: {integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==} + engines: {node: '>=8'} + + minipass@3.3.6: + resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} + engines: {node: '>=8'} + + minipass@5.0.0: + resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} + engines: {node: '>=8'} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@2.1.2: + resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} + engines: {node: '>= 8'} + + mixin-deep@1.3.2: + resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} + engines: {node: '>=0.10.0'} + + mkdirp-infer-owner@2.0.0: + resolution: {integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==} + engines: {node: '>=10'} + + mkdirp-then@1.2.0: + resolution: {integrity: sha512-nbj022D7cd7n6hxDuON08SQciKHSTcRSFlLfCGyIuypo4cl6Z6qJxMVlatFyS6ZbgHqOebkYm/fvwtGiKqmSwQ==} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mlly@1.7.2: + resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + + moment-locales-webpack-plugin@1.2.0: + resolution: {integrity: sha512-QAi5v0OlPUP7GXviKMtxnpBAo8WmTHrUNN7iciAhNOEAd9evCOvuN0g1N7ThIg3q11GLCkjY1zQ2saRcf/43nQ==} + peerDependencies: + moment: ^2.8.0 + webpack: ^1 || ^2 || ^3 || ^4 || ^5 + + moment@2.29.4: + resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} + + move-concurrently@1.0.1: + resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==} + deprecated: This package is no longer supported. + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + + mrs-developer@2.2.0: + resolution: {integrity: sha512-vw2H5f3jb4AGcfR2HLA+HpVjmApAQtvOz5XvOOIPO4h7+2LmssWAX7wlcAwbMI2btXWIGPZ+kwM1sh+/6OtIpA==} + hasBin: true + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + msgpackr-extract@3.0.3: + resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} + hasBin: true + + msgpackr@1.11.0: + resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} + + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + + multicast-dns@7.2.5: + resolution: {integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==} + hasBin: true + + multimatch@5.0.0: + resolution: {integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==} + engines: {node: '>=10'} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + mz@2.6.0: + resolution: {integrity: sha512-8js8Gn0gxv5D/dqve1Idd6LfvgxRB8eGFNWUq4skKiQKTzqVxdUQFAYPmot4jfbcyD5vMWsqGPqv24ZTN61vPA==} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nan@2.22.0: + resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanomatch@1.2.13: + resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} + engines: {node: '>=0.10.0'} + + native-url@0.2.6: + resolution: {integrity: sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==} + + natural-compare-lite@1.4.0: + resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + + negotiator@0.6.4: + resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + engines: {node: '>= 0.6'} + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + netmask@2.0.2: + resolution: {integrity: sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==} + engines: {node: '>= 0.4.0'} + + new-github-release-url@2.0.0: + resolution: {integrity: sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + next-tick@1.1.0: + resolution: {integrity: sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + nise@5.1.9: + resolution: {integrity: sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + node-abort-controller@3.1.1: + resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} + + node-addon-api@6.1.0: + resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==} + + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + + node-fetch@1.7.3: + resolution: {integrity: sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@3.3.2: + resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + node-forge@1.3.1: + resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==} + engines: {node: '>= 6.13.0'} + + node-gyp-build-optional-packages@5.1.1: + resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} + hasBin: true + + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + + node-gyp@8.4.1: + resolution: {integrity: sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==} + engines: {node: '>= 10.12.0'} + hasBin: true + + node-gyp@9.4.1: + resolution: {integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==} + engines: {node: ^12.13 || ^14.13 || >=16} + hasBin: true + + node-int64@0.4.0: + resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + + node-notifier@5.4.5: + resolution: {integrity: sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==} + + node-notifier@8.0.2: + resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} + + node-releases@1.1.77: + resolution: {integrity: sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==} + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nopt@5.0.0: + resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} + engines: {node: '>=6'} + hasBin: true + + nopt@6.0.0: + resolution: {integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@5.0.0: + resolution: {integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + normalize-path@2.1.1: + resolution: {integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==} + engines: {node: '>=0.10.0'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + + normalize-url@3.3.0: + resolution: {integrity: sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==} + engines: {node: '>=6'} + + normalize-url@4.5.1: + resolution: {integrity: sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==} + engines: {node: '>=8'} + + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + npm-bundled@1.1.2: + resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==} + + npm-bundled@3.0.1: + resolution: {integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-install-checks@4.0.0: + resolution: {integrity: sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==} + engines: {node: '>=10'} + + npm-install-checks@6.3.0: + resolution: {integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + + npm-normalize-package-bin@2.0.0: + resolution: {integrity: sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + npm-normalize-package-bin@3.0.1: + resolution: {integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-package-arg@10.1.0: + resolution: {integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-package-arg@8.1.5: + resolution: {integrity: sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==} + engines: {node: '>=10'} + + npm-packlist@3.0.0: + resolution: {integrity: sha512-L/cbzmutAwII5glUcf2DBRNY/d0TFd4e/FnaZigJV6JD85RHZXJFGwCndjMWiiViiWSsWt3tiOLpI3ByTnIdFQ==} + engines: {node: '>=10'} + hasBin: true + + npm-packlist@7.0.4: + resolution: {integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-pick-manifest@6.1.1: + resolution: {integrity: sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==} + + npm-pick-manifest@8.0.2: + resolution: {integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-registry-fetch@12.0.2: + resolution: {integrity: sha512-Df5QT3RaJnXYuOwtXBXS9BWs+tHH2olvkCLh6jcR/b/u3DvPMlp3J0TvvYwplPKxHMOwfg287PYih9QqaVFoKA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + + npm-registry-fetch@14.0.5: + resolution: {integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + npmlog@5.0.1: + resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} + deprecated: This package is no longer supported. + + npmlog@6.0.2: + resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + deprecated: This package is no longer supported. + + nth-check@1.0.2: + resolution: {integrity: sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + null-loader@4.0.1: + resolution: {integrity: sha512-pxqVbi4U6N26lq+LmgIbB5XATP0VdZKOG25DhHi8btMmJJefGArFyDg1yc4U3hWCJbMqSrw0qyrz1UQX+qYXqg==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + nullthrows@1.1.1: + resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + + nwsapi@2.2.13: + resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} + + oauth-sign@0.9.0: + resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-copy@0.1.0: + resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + + object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + + object-visit@1.0.1: + resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==} + engines: {node: '>=0.10.0'} + + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + + object.entries@1.1.8: + resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} + engines: {node: '>= 0.4'} + + object.fromentries@2.0.8: + resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} + engines: {node: '>= 0.4'} + + object.getownpropertydescriptors@2.1.8: + resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} + engines: {node: '>= 0.8'} + + object.groupby@1.0.3: + resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} + engines: {node: '>= 0.4'} + + object.pick@1.3.0: + resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==} + engines: {node: '>=0.10.0'} + + object.values@1.2.0: + resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} + engines: {node: '>= 0.4'} + + objectorarray@1.0.5: + resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} + + obuf@1.1.2: + resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + + on-headers@1.0.2: + resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==} + engines: {node: '>= 0.8'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@2.0.1: + resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==} + engines: {node: '>=4'} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@10.0.3: + resolution: {integrity: sha512-dtbI5oW7987hwC9qjJTyABldTaa19SuyJse1QboWv3b0qCcrrLNVDqBx1XgELAjh9QTVQaP/C5b1nhQebd1H2A==} + engines: {node: '>=18'} + + open@7.4.2: + resolution: {integrity: sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==} + engines: {node: '>=8'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@1.2.0: + resolution: {integrity: sha512-q9OviUsoaDpwCKPnLXBKijNePrJm7dcrlYK4SIFmVdRyMpD1ACc2O46StenWIpdhp4doKRMYrOEJmwzcHfgboA==} + engines: {node: '>=4'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ora@7.0.1: + resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} + engines: {node: '>=16'} + + ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} + + ordered-binary@1.5.2: + resolution: {integrity: sha512-JTo+4+4Fw7FreyAvlSLjb1BBVaxEQAacmjD3jjuyPZclpbEghTvQZbXBb2qPd2LeIMxiHwXBZUcpmG2Gl/mDEA==} + + os-name@5.1.0: + resolution: {integrity: sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + + p-cancelable@1.1.0: + resolution: {integrity: sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==} + engines: {node: '>=6'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-each-series@1.0.0: + resolution: {integrity: sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA==} + engines: {node: '>=4'} + + p-each-series@2.2.0: + resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} + engines: {node: '>=8'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + + p-locate@3.0.0: + resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + p-map@3.0.0: + resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} + engines: {node: '>=8'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-queue@6.6.2: + resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} + engines: {node: '>=8'} + + p-reduce@1.0.0: + resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==} + engines: {node: '>=4'} + + p-retry@4.6.2: + resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} + engines: {node: '>=8'} + + p-timeout@3.2.0: + resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} + engines: {node: '>=8'} + + p-transform@1.3.0: + resolution: {integrity: sha512-UJKdSzgd3KOnXXAtqN5+/eeHcvTn1hBkesEmElVgvO/NAYcxAvmjzIGmnNd3Tb/gRAvMBdNRFD4qAWdHxY6QXg==} + engines: {node: '>=12.10.0'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + pac-proxy-agent@7.0.2: + resolution: {integrity: sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==} + engines: {node: '>= 14'} + + pac-resolver@7.0.1: + resolution: {integrity: sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==} + engines: {node: '>= 14'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-json@6.5.0: + resolution: {integrity: sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==} + engines: {node: '>=8'} + + package-json@8.1.1: + resolution: {integrity: sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==} + engines: {node: '>=14.16'} + + pacote@12.0.3: + resolution: {integrity: sha512-CdYEl03JDrRO3x18uHjBYA9TyoW8gy+ThVcypcDkxPtKlw76e4ejhYB6i9lJ+/cebbjpqPW/CijjqxwDTts8Ow==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16} + hasBin: true + + pacote@15.2.0: + resolution: {integrity: sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parcel@2.12.0: + resolution: {integrity: sha512-W+gxAq7aQ9dJIg/XLKGcRT0cvnStFAQHPaI0pvD0U2l6IVLueUAm3nwN7lkY62zZNmlvNx6jNtE4wlbS+CyqSg==} + engines: {node: '>= 12.0.0'} + hasBin: true + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-conflict-json@2.0.2: + resolution: {integrity: sha512-jDbRGb00TAPFsKWCpZZOT93SxVP9nONOSgES3AevqRq/CHvavEBvKAjxX9p5Y5F0RZLxH9Ufd9+RwtCsa+lFDA==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-path@7.0.0: + resolution: {integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==} + + parse-url@8.1.0: + resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + + parse5@4.0.0: + resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} + + parse5@6.0.1: + resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} + + parse5@7.2.0: + resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==} + + parseurl@1.3.3: + resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} + engines: {node: '>= 0.8'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + pascalcase@0.1.1: + resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==} + engines: {node: '>=0.10.0'} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-to-regexp@0.1.7: + resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + + path-to-regexp@1.9.0: + resolution: {integrity: sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==} + + path-to-regexp@6.3.0: + resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + + pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + + pkg-dir@4.2.0: + resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} + engines: {node: '>=8'} + + pkg-dir@7.0.0: + resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} + engines: {node: '>=14.16'} + + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + + pkg-up@3.1.0: + resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} + engines: {node: '>=8'} + + pn@1.1.0: + resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} + + pnp-webpack-plugin@1.7.0: + resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} + engines: {node: '>=6'} + + pofile@1.0.10: + resolution: {integrity: sha512-bkQlDA9YYNaZGLLrxBoQgydzjc2tasbUfxa94/kx2FO/FCiHAJG6B40Jr3fWQgDC7kr+a9q7q5x7449B91CF0A==} + + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + + posix-character-classes@0.1.1: + resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==} + engines: {node: '>=0.10.0'} + + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + + postcss-calc@7.0.5: + resolution: {integrity: sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==} + + postcss-colormin@4.0.3: + resolution: {integrity: sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==} + engines: {node: '>=6.9.0'} + + postcss-convert-values@4.0.1: + resolution: {integrity: sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==} + engines: {node: '>=6.9.0'} + + postcss-discard-comments@4.0.2: + resolution: {integrity: sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==} + engines: {node: '>=6.9.0'} + + postcss-discard-duplicates@4.0.2: + resolution: {integrity: sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==} + engines: {node: '>=6.9.0'} + + postcss-discard-empty@4.0.1: + resolution: {integrity: sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==} + engines: {node: '>=6.9.0'} + + postcss-discard-overridden@4.0.1: + resolution: {integrity: sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==} + engines: {node: '>=6.9.0'} + + postcss-flexbugs-fixes@5.0.2: + resolution: {integrity: sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==} + peerDependencies: + postcss: ^8.1.4 + + postcss-less@6.0.0: + resolution: {integrity: sha512-FPX16mQLyEjLzEuuJtxA8X3ejDLNGGEG503d2YGZR5Ask1SpDN8KmZUMpzCvyalWRywAn1n1VOA5dcqfCLo5rg==} + engines: {node: '>=12'} + peerDependencies: + postcss: ^8.3.5 + + postcss-load-config@3.1.4: + resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} + engines: {node: '>= 10'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-loader@4.3.0: + resolution: {integrity: sha512-M/dSoIiNDOo8Rk0mUqoj4kpGq91gcxCfb9PoyZVdZ76/AuhxylHDYZblNE8o+EQ9AMSASeMFEKxZf5aU6wlx1Q==} + engines: {node: '>= 10.13.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^4.0.0 || ^5.0.0 + + postcss-loader@7.0.2: + resolution: {integrity: sha512-fUJzV/QH7NXUAqV8dWJ9Lg4aTkDCezpTS5HgJ2DvqznexTbSTxgi/dTECvTZ15BwKTtk8G/bqI/QTu2HPd3ZCg==} + engines: {node: '>= 14.15.0'} + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + + postcss-merge-longhand@4.0.11: + resolution: {integrity: sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==} + engines: {node: '>=6.9.0'} + + postcss-merge-rules@4.0.3: + resolution: {integrity: sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==} + engines: {node: '>=6.9.0'} + + postcss-minify-font-values@4.0.2: + resolution: {integrity: sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==} + engines: {node: '>=6.9.0'} + + postcss-minify-gradients@4.0.2: + resolution: {integrity: sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==} + engines: {node: '>=6.9.0'} + + postcss-minify-params@4.0.2: + resolution: {integrity: sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==} + engines: {node: '>=6.9.0'} + + postcss-minify-selectors@4.0.2: + resolution: {integrity: sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==} + engines: {node: '>=6.9.0'} + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.0.5: + resolution: {integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.0: + resolution: {integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-normalize-charset@4.0.1: + resolution: {integrity: sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==} + engines: {node: '>=6.9.0'} + + postcss-normalize-display-values@4.0.2: + resolution: {integrity: sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==} + engines: {node: '>=6.9.0'} + + postcss-normalize-positions@4.0.2: + resolution: {integrity: sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-repeat-style@4.0.2: + resolution: {integrity: sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==} + engines: {node: '>=6.9.0'} + + postcss-normalize-string@4.0.2: + resolution: {integrity: sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-timing-functions@4.0.2: + resolution: {integrity: sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==} + engines: {node: '>=6.9.0'} + + postcss-normalize-unicode@4.0.1: + resolution: {integrity: sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==} + engines: {node: '>=6.9.0'} + + postcss-normalize-url@4.0.1: + resolution: {integrity: sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==} + engines: {node: '>=6.9.0'} + + postcss-normalize-whitespace@4.0.2: + resolution: {integrity: sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==} + engines: {node: '>=6.9.0'} + + postcss-ordered-values@4.1.2: + resolution: {integrity: sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==} + engines: {node: '>=6.9.0'} + + postcss-overrides@3.1.4: + resolution: {integrity: sha512-BtwqJW/fWE6Euvaj0UbFDtIZ9TT7TaFdQyfXgrNsr2dJKa4m+2OcZXe0eNo6jgTf4158WqZRvuNCJLkDvTJvwA==} + engines: {node: '>=6.14.4'} + + postcss-reduce-initial@4.0.3: + resolution: {integrity: sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==} + engines: {node: '>=6.9.0'} + + postcss-reduce-transforms@4.0.2: + resolution: {integrity: sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==} + engines: {node: '>=6.9.0'} + + postcss-resolve-nested-selector@0.1.6: + resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} + + postcss-safe-parser@7.0.1: + resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + engines: {node: '>=18.0'} + peerDependencies: + postcss: ^8.4.31 + + postcss-scss@3.0.5: + resolution: {integrity: sha512-3e0qYk87eczfzg5P73ZVuuxEGCBfatRhPze6KrSaIbEKVtmnFI1RYp1Fv+AyZi+w8kcNRSPeNX6ap4b65zEkiA==} + engines: {node: '>=10.0'} + + postcss-scss@4.0.6: + resolution: {integrity: sha512-rLDPhJY4z/i4nVFZ27j9GqLxj1pwxE80eAzUNRMXtcpipFYIeowerzBgG3yJhMtObGEXidtIgbUpQ3eLDsf5OQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.19 + + postcss-selector-parser@3.1.2: + resolution: {integrity: sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==} + engines: {node: '>=8'} + + postcss-selector-parser@6.1.2: + resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} + engines: {node: '>=4'} + + postcss-sorting@8.0.2: + resolution: {integrity: sha512-M9dkSrmU00t/jK7rF6BZSZauA5MAaBW4i5EnJXspMwt4iqTh/L9j6fgMnbElEOfyRyfLfVbIHj/R52zHzAPe1Q==} + peerDependencies: + postcss: ^8.4.20 + + postcss-svgo@4.0.3: + resolution: {integrity: sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==} + engines: {node: '>=6.9.0'} + + postcss-unique-selectors@4.0.1: + resolution: {integrity: sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==} + engines: {node: '>=6.9.0'} + + postcss-value-parser@3.3.1: + resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@7.0.36: + resolution: {integrity: sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==} + engines: {node: '>=6.0.0'} + + postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + + postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + posthtml-parser@0.10.2: + resolution: {integrity: sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg==} + engines: {node: '>=12'} + + posthtml-parser@0.11.0: + resolution: {integrity: sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw==} + engines: {node: '>=12'} + + posthtml-render@3.0.0: + resolution: {integrity: sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA==} + engines: {node: '>=12'} + + posthtml@0.16.6: + resolution: {integrity: sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ==} + engines: {node: '>=12.0.0'} + + preferred-pm@3.1.4: + resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} + engines: {node: '>=10'} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prepend-http@2.0.0: + resolution: {integrity: sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==} + engines: {node: '>=4'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.3.0: + resolution: {integrity: sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==} + engines: {node: '>=6'} + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + pretty-error@4.0.0: + resolution: {integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==} + + pretty-format@24.9.0: + resolution: {integrity: sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==} + engines: {node: '>= 6'} + + pretty-format@25.5.0: + resolution: {integrity: sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==} + engines: {node: '>= 8.3'} + + pretty-format@26.6.2: + resolution: {integrity: sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==} + engines: {node: '>= 10'} + + pretty-format@27.5.1: + resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} + engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + + pretty-format@29.7.0: + resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + + pretty-time@1.1.0: + resolution: {integrity: sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==} + engines: {node: '>=4'} + + prismjs@1.27.0: + resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} + engines: {node: '>=6'} + + proc-log@1.0.0: + resolution: {integrity: sha512-aCk8AO51s+4JyuYGg3Q/a6gnrlDO09NpVWePtjp7xwphcoQ04x5WAfCyugcsbLooWcMJ87CLkD4+604IckEdhg==} + + proc-log@3.0.0: + resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + promise-all-reject-late@1.0.1: + resolution: {integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==} + + promise-call-limit@1.0.2: + resolution: {integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==} + + promise-file-reader@1.0.2: + resolution: {integrity: sha512-1f2axkQbYrE4CQaxB3r+l1AhjrJd/wwf57Claj+whwqx703U6qrtcgmuxr5bZUcsamCY+gcLOi/8RUUUKa3zYQ==} + + promise-inflight@1.0.1: + resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true + + promise-retry@2.0.1: + resolution: {integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==} + engines: {node: '>=10'} + + promise.allsettled@1.0.7: + resolution: {integrity: sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA==} + engines: {node: '>= 0.4'} + + promise@7.1.1: + resolution: {integrity: sha512-mxw1Fcl1jxLdpzS7MTIxrdiWk3CeMvZvVSGWE4P9eml3diZPBZTNV4oQsdYY3fY6j9udbmC1mSP6lqlzg6voBA==} + + prompts@2.4.0: + resolution: {integrity: sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==} + engines: {node: '>= 6'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + prop-types-exact@1.2.5: + resolution: {integrity: sha512-wHDhA5TSSvU07gdzsdeT/FZg6zay94K4Y7swSK4YsRG3moWB0Qsp9g1Y5BBausP1HF8K4UeVe2Xt7ZFJByKp6A==} + engines: {node: '>= 0.8'} + + prop-types@15.7.2: + resolution: {integrity: sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==} + + prop-types@15.8.1: + resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protocols@2.0.1: + resolution: {integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + + proxy-agent@6.3.1: + resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} + engines: {node: '>= 14'} + + proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} + engines: {node: '>= 14'} + + proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + prr@1.0.1: + resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} + + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + + pseudomap@1.0.2: + resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} + + psl@1.9.0: + resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} + + punycode@1.4.1: + resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pupa@2.1.1: + resolution: {integrity: sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==} + engines: {node: '>=8'} + + pupa@3.1.0: + resolution: {integrity: sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==} + engines: {node: '>=12.20'} + + q@1.5.1: + resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} + engines: {node: '>=0.6.0', teleport: '>=0.2.0'} + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) + + qs@6.11.0: + resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} + engines: {node: '>=0.6'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + qs@6.5.3: + resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} + engines: {node: '>=0.6'} + + query-string@7.1.0: + resolution: {integrity: sha512-wnJ8covk+S9isYR5JIXPt93kFUmI2fQ4R/8130fuq+qwLiGVTurg7Klodgfw4NSz/oe7xnyi09y3lSrogUeM3g==} + engines: {node: '>=6'} + + query-string@9.1.1: + resolution: {integrity: sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==} + engines: {node: '>=18'} + + querystring@0.2.1: + resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} + engines: {node: '>=0.4.x'} + deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. + + querystringify@2.2.0: + resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + raf-schd@4.0.3: + resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} + + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + range-parser@1.2.1: + resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} + engines: {node: '>= 0.6'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + razzle-dev-utils@4.2.18: + resolution: {integrity: sha512-WOXpAUAJaR3JJYhhb6iQKa+i25Ab2lAGiJXdbkDAXWDFRikpnojoUaZ2VuoNluSo0Xd7OKeaX8Ge29LW4mjEEg==} + peerDependencies: + webpack: ~4||~5 + webpack-dev-server: ~3||~4 + + razzle-plugin-scss@4.2.18: + resolution: {integrity: sha512-G3Vwunt3kWJk117fS9hue7+cDNVIUyJrGLY0qdHwJPgceRggZR9XlKT9U09lCZan0UoaASLVfQmZVITiLIGodA==} + peerDependencies: + mini-css-extract-plugin: '>=0.9.0 <1.0.0' + razzle: 4.2.18 + razzle-dev-utils: 4.2.18 + + razzle-start-server-webpack-plugin@4.2.18: + resolution: {integrity: sha512-yR86/T7hmfseBFOQYZDiDfLNxIvws7wBvRoQNz7aw4cT6cX8JFDPpMDHQQNdnESRDencDozMtFLX0jECJJi/CA==} + peerDependencies: + webpack: ~4||~5 + + razzle@4.2.18: + resolution: {integrity: sha512-lgumXubb/rs5oQVcmu3UDSObbWQ2H1FLf2/VLal25yusotEbyePVLAw9f9QGu+bbUohvEY0rfYyJtnQNE8J4Og==} + hasBin: true + peerDependencies: + babel-preset-razzle: 4.2.18 + html-webpack-plugin: ~4||~5 + mini-css-extract-plugin: '>=0.9.0 <1.0.0' + razzle-dev-utils: 4.2.18 + webpack: ~4||~5 + webpack-dev-server: ^3.11.0||~4 + + rc-align@2.4.5: + resolution: {integrity: sha512-nv9wYUYdfyfK+qskThf4BQUSIadeI/dCsfaMZfNEoxm9HwOIioQ+LyqmMK6jWHAZQgOzMLaqawhuBXlF63vgjw==} + + rc-animate@2.11.1: + resolution: {integrity: sha512-1NyuCGFJG/0Y+9RKh5y/i/AalUCA51opyyS/jO2seELpgymZm2u9QV3xwODwEuzkmeQ1BDPxMLmYLcTJedPlkQ==} + peerDependencies: + react: '>=16.9.0' + react-dom: '>=16.9.0' + + rc-time-picker@3.7.3: + resolution: {integrity: sha512-Lv1Mvzp9fRXhXEnRLO4nW6GLNxUkfAZ3RsiIBsWjGjXXvMNjdr4BX/ayElHAFK0DoJqOhm7c5tjmIYpEOwcUXg==} + + rc-trigger@2.6.5: + resolution: {integrity: sha512-m6Cts9hLeZWsTvWnuMm7oElhf+03GOjOLfTuU0QmdB9ZrW7jR2IpI5rpNM7i9MvAAlMAmTx5Zr7g3uu/aMvZAw==} + + rc-util@4.21.1: + resolution: {integrity: sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-anchor-link-smooth-scroll@1.0.12: + resolution: {integrity: sha512-aaY+9X0yh8YnC0jBfoTKpsiCLdO/Y6pCltww+VB+NnTBPDOvnIdnp1AlazajsDitc1j+cVSQ+yNtaVeTIMQbxw==} + + react-animate-height@2.0.17: + resolution: {integrity: sha512-cumTv/vCZ1MudkqXsLXGW6XO7EbGWIV0uZzkZVBf5HlHQ7n1GkbCsQl44SVo9nlA9/p+4XqWh4yn1Cc37Gri6A==} + peerDependencies: + react: '>=15.6.2' + react-dom: '>=15.6.2' + + react-aria-components@1.4.1: + resolution: {integrity: sha512-pDRcIByLJi4M2VxZuXrlqi7wyjCKwqAxkPPdKvf4HPupUES56FpbW72yS3syu6fxw16CSx62/3zpuNJX1UotTA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + react-aria@3.35.1: + resolution: {integrity: sha512-MQTvt0xbcKpnceKkYUtPMbaD9IQj2BXTrwk2vP/V7ph3EVhcyJTUdy1LXCqf8oR8bXE2BERUqp7rzJ+vYy5C+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + react-beautiful-dnd@13.0.0: + resolution: {integrity: sha512-87It8sN0ineoC3nBW0SbQuTFXM6bUqM62uJGY4BtTf0yzPl8/3+bHMWkgIe0Z6m8e+gJgjWxefGRVfpE3VcdEg==} + peerDependencies: + react: ^16.8.5 + react-dom: ^16.8.5 + + react-colorful@5.6.1: + resolution: {integrity: sha512-1exovf0uGTGyq5mXQT0zgQ80uvj2PCwvF8zY1RN9/vbJVSjSo3fsB/4L3ObbF7u70NduSiK4xu4Y6q1MHoUGEw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + + react-cookie@4.1.1: + resolution: {integrity: sha512-ffn7Y7G4bXiFbnE+dKhHhbP+b8I34mH9jqnm8Llhj89zF4nPxPutxHT1suUqMeCEhLDBI7InYwf1tpaSoK5w8A==} + peerDependencies: + react: '>= 16.3.0' + + react-dates@21.5.1: + resolution: {integrity: sha512-1Lplx6T5U2Gu1vN1jh8Nrb+nyA5Uw7LdVVKGqjIoO9Kj6F3mU2budB6DlkxB5hAcjxk3KNzcSHPMYcWPUxvL0g==} + peerDependencies: + '@babel/runtime': ^7.0.0 + moment: ^2.18.1 + react: ^0.14 || ^15.5.4 || ^16.1.1 + react-dom: ^0.14 || ^15.5.4 || ^16.1.1 + react-with-direction: ^1.3.1 + + react-detect-click-outside@1.1.1: + resolution: {integrity: sha512-1MqRw9+RaA3dF4zJePSngxBqXut/RgHajFLR91cTV7PRmQyCIrQAUtv979IhQoaoWhVM8rdSx9Eg4/vc/hcReQ==} + peerDependencies: + react: ^16.8.0 || ^17 + react-dom: ^16.8.0 || ^17 + + react-dev-utils@11.0.4: + resolution: {integrity: sha512-dx0LvIGHcOPtKbeiSUM4jqpBl3TcY7CDjZdfOIcKeznE7BWr9dg0iPG90G5yfVQ+p/rGNMXdbfStvzQZEVEi4A==} + engines: {node: '>=10'} + peerDependencies: + typescript: '>=2.7' + webpack: '>=4' + peerDependenciesMeta: + typescript: + optional: true + + react-dnd-html5-backend@5.0.1: + resolution: {integrity: sha512-TLEjqDMUHRJAgRvdX2L0ssnF6bL30cVkxwO6+OkxWCoPJoiyS6Y6pl4LRidOjJ7CpeMTKeawFdIlbuezHL4oeQ==} + + react-dnd@5.0.0: + resolution: {integrity: sha512-y7qOPo4N7050p5WNli5XNfE5Ij3tl8Gw+Q6jhS0tABO3sCFZzCNKUCMUk7qTQd3t/MMDn2+Ck6xJgsGv+9Qi1A==} + peerDependencies: + react: '>= 16.3' + + react-docgen-typescript-plugin@1.0.8: + resolution: {integrity: sha512-r+dUkpm/dmiVvvrfOTYbbg0g7bmaeXTodQFIru8ZzCx/HNUAUNSmh1C0seXzDSLqDSXm5EiOAiJZVs4gqAZqzA==} + peerDependencies: + typescript: '>= 4.x' + webpack: '>= 4' + + react-docgen-typescript@2.2.2: + resolution: {integrity: sha512-tvg2ZtOpOi6QDwsb3GZhOjDkkX0h8Z2gipvTg6OVMUyoYoURhEiRNePT8NZItTVCDh39JJHnLdfCOkzoLbFnTg==} + peerDependencies: + typescript: '>= 4.3.x' + + react-docgen@7.1.0: + resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} + engines: {node: '>=16.14.0'} + + react-dom@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + + react-dropzone@11.1.0: + resolution: {integrity: sha512-gJT6iJadyTbevrigm6KZFaei/yNWfokzs1idumO7fXtRNPiGFDUpsQ+trHWwUO3yWOtJibpbo5tLZggjm+KV5w==} + engines: {node: '>= 8'} + peerDependencies: + react: '>= 16.8' + + react-element-to-jsx-string@15.0.0: + resolution: {integrity: sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==} + peerDependencies: + react: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + react-dom: ^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0 + + react-error-boundary@3.1.4: + resolution: {integrity: sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13.1' + + react-error-overlay@6.0.9: + resolution: {integrity: sha512-nQTTcUu+ATDbrSD1BZHr5kgSD4oF8OFjxun8uAaL8RwPBacGBNPf/yAuVVdx17N8XNzRDMrZ9XcKZHCjPW+9ew==} + + react-fast-compare@2.0.4: + resolution: {integrity: sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==} + + react-fast-compare@3.2.2: + resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} + + react-image-gallery@1.2.7: + resolution: {integrity: sha512-ts7yMWykvZhslGMuvVAUk7a1dJIx9QtIwK6Clv8dOGxPsJid92FRrLvXbZDvkYcUyj48sHalnBhqU6mZNCB2jg==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 + + react-input-autosize@3.0.0: + resolution: {integrity: sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 + + react-intersection-observer@9.1.0: + resolution: {integrity: sha512-XSDWQGzgJ4/B4eW39+qa3S+uc4Gb+m6lxXR54m/uD5lqeL5sLrgYdntbjl4BlTYAblgUhz+JB5obINhZaD+c0Q==} + peerDependencies: + react: ^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0 + + react-intl-redux@2.3.0: + resolution: {integrity: sha512-lIAco0dlVIn8Dzc+epHpZZD8oM2TD62SJTkJ+x33KnvYB5l9ouLTvgz1ztajHuhiIBFq6n2mWwnS74Vim8CMuQ==} + peerDependencies: + '@babel/runtime': ^7.17.9 + prop-types: ^15.8.1 + react: ^16.12.0 || ^17.0.2 || ^18.0.0 + react-intl: "^2.2.2 ||\_^3.0.0 || ^4.0.0 || ^5.0.0" + react-redux: ^5.0.1 || ^6.0.0 || ^7.0.0 + + react-intl@3.12.1: + resolution: {integrity: sha512-cgumW29mwROIqyp8NXStYsoIm27+8FqnxykiLSawWjOxGIBeLuN/+p2srei5SRIumcJefOkOIHP+NDck05RgHg==} + peerDependencies: + react: ^16.3.0 + + react-is-mounted-hook@1.1.2: + resolution: {integrity: sha512-yjq3Tj34CiFcdVOS/h6JerWLOLdJqEGKMNpTHc4kWebzz2YtIpgqMRrqxdmQhewM1KJREojdAV2tsNvBsUWyhA==} + peerDependencies: + react: ^16.8.6 || ^17 + react-dom: ^16.8.6 || ^17 + + react-is@16.13.1: + resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} + + react-is@17.0.2: + resolution: {integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==} + + react-is@18.1.0: + resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} + + react-is@18.3.1: + resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + + react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + + react-medium-image-zoom@3.0.15: + resolution: {integrity: sha512-OJc6XXmSFr0ApniFdCL1TliP6BG9eQabkcahWA9CbHha3y2IJXo1aAsQs7Irc2Wcek/N9QCeAY4wTitoMg5iLg==} + peerDependencies: + prop-types: ^15.5.8 + react: ^16.0.0 + react-dom: ^16.0.0 + + react-moment-proptypes@1.8.1: + resolution: {integrity: sha512-Er940DxWoObfIqPrZNfwXKugjxMIuk1LAuEzn23gytzV6hKS/sw108wibi9QubfMN4h+nrlje8eUCSbQRJo2fQ==} + peerDependencies: + moment: '>=1.6.0' + + react-outside-click-handler@1.3.0: + resolution: {integrity: sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==} + peerDependencies: + react: ^0.14 || >=15 + react-dom: ^0.14 || >=15 + + react-popper@2.3.0: + resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} + peerDependencies: + '@popperjs/core': ^2.0.0 + react: ^16.8.0 || ^17 || ^18 + react-dom: ^16.8.0 || ^17 || ^18 + + react-portal@4.2.2: + resolution: {integrity: sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q==} + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + react-dom: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + + react-redux@7.2.9: + resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==} + peerDependencies: + react: ^16.8.3 || ^17 || ^18 + react-dom: '*' + react-native: '*' + peerDependenciesMeta: + react-dom: + optional: true + react-native: + optional: true + + react-redux@8.1.2: + resolution: {integrity: sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==} + peerDependencies: + '@types/react': ^16.8 || ^17.0 || ^18.0 + '@types/react-dom': ^16.8 || ^17.0 || ^18.0 + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + react-native: '>=0.59' + redux: ^4 || ^5.0.0-beta.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + react-dom: + optional: true + react-native: + optional: true + redux: + optional: true + + react-refresh@0.14.2: + resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} + engines: {node: '>=0.10.0'} + + react-refresh@0.9.0: + resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} + engines: {node: '>=0.10.0'} + + react-router-config@5.1.1: + resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} + peerDependencies: + react: '>=15' + react-router: '>=5' + + react-router-dom@5.2.0: + resolution: {integrity: sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==} + peerDependencies: + react: '>=15' + + react-router-hash-link@2.4.3: + resolution: {integrity: sha512-NU7GWc265m92xh/aYD79Vr1W+zAIXDWp3L2YZOYP4rCqPnJ6LI6vh3+rKgkidtYijozHclaEQTAHaAaMWPVI4A==} + peerDependencies: + react: '>=15' + react-router-dom: '>=4' + + react-router@5.2.0: + resolution: {integrity: sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==} + peerDependencies: + react: '>=15' + + react-select-async-paginate@0.5.3: + resolution: {integrity: sha512-SWX1twi/jzViDpQa1nS+xyjrFtn9RBezbL4aIjcJXCABKMY+8JhH4iAKqAW3pryZbm439/DaMtQeZADH17v7bQ==} + peerDependencies: + react: ^16.14.0 || ^17.0.0 + react-select: ^2.0.0 || ^3.0.0 || ^4.0.0 + + react-select@4.3.1: + resolution: {integrity: sha512-HBBd0dYwkF5aZk1zP81Wx5UsLIIT2lSvAY2JiJo199LjoLHoivjn9//KsmvQMEFGNhe58xyuOITjfxKCcGc62Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 + react-dom: ^16.8.0 || ^17.0.0 + + react-shallow-renderer@16.15.0: + resolution: {integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==} + peerDependencies: + react: ^16.0.0 || ^17.0.0 || ^18.0.0 + + react-side-effect@2.1.2: + resolution: {integrity: sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw==} + peerDependencies: + react: ^16.3.0 || ^17.0.0 || ^18.0.0 + + react-simple-code-editor@0.7.1: + resolution: {integrity: sha512-AgvT7j7UfFa7b/DRDvFad6Y9/bda8ogXKG2ozElCWbWWj3itu05LS7bmLu63ohjfJDTWbm9Kq0PwIdL7pw3mBg==} + peerDependencies: + react: ^16.0.0 + react-dom: ^16.0.0 + + react-sortable-hoc@2.0.0: + resolution: {integrity: sha512-JZUw7hBsAHXK7PTyErJyI7SopSBFRcFHDjWW5SWjcugY0i6iH7f+eJkY8cJmGMlZ1C9xz1J3Vjz0plFpavVeRg==} + peerDependencies: + prop-types: ^15.5.7 + react: ^16.3.0 || ^17.0.0 + react-dom: ^16.3.0 || ^17.0.0 + + react-stately@3.33.0: + resolution: {integrity: sha512-DNPOxYAPuhuXwSuE1s1K7iSgqG2QOBUZq3bsLAd4gUUZje6Qepkhe7TzK2LWarQYAZ3gC9Xhmnz8ie1fdCo0GA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0 + + react-test-renderer@18.2.0: + resolution: {integrity: sha512-JWD+aQ0lh2gvh4NM3bBM42Kx+XybOxCpgYK7F8ugAlpaTSnWsX+39Z4XkOykGZAHrjwwTZT3x3KxswVWxHPUqA==} + peerDependencies: + react: ^18.2.0 + + react-toastify@5.5.0: + resolution: {integrity: sha512-jsVme7jALIFGRyQsri/g4YTsRuaaGI70T6/ikjwZMB4mwTZaCWqj5NqxhGrRStKlJc5npXKKvKeqTiRGQl78LQ==} + peerDependencies: + react: '>=15.0.0' + react-dom: '>=15.0.0' + + react-transition-group@4.4.5: + resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} + peerDependencies: + react: '>=16.6.0' + react-dom: '>=16.6.0' + + react-virtualized@9.22.3: + resolution: {integrity: sha512-MKovKMxWTcwPSxE1kK1HcheQTWfuCxAuBoSTf2gwyMM21NdX/PXUhnoP8Uc5dRKd+nKm8v41R36OellhdCpkrw==} + peerDependencies: + react: ^15.3.0 || ^16.0.0-alpha + react-dom: ^15.3.0 || ^16.0.0-alpha + + react-with-direction@1.4.0: + resolution: {integrity: sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==} + peerDependencies: + react: ^0.14 || ^15 || ^16 + react-dom: ^0.14 || ^15 || ^16 + + react-with-styles-interface-css@6.0.0: + resolution: {integrity: sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==} + peerDependencies: + '@babel/runtime': ^7.0.0 + react-with-styles: ^3.0.0 || ^4.0.0 + + react-with-styles@4.2.0: + resolution: {integrity: sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==} + peerDependencies: + '@babel/runtime': ^7.0.0 + react: '>=0.14' + react-with-direction: ^1.3.1 + + react@18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + + read-cmd-shim@3.0.1: + resolution: {integrity: sha512-kEmDUoYf/CDy8yZbLTmhB1X9kkjf9Q80PCNsDMb7ufrGd6zZSQA1+UyjrO+pZm5K/S4OXCWJeiIt1JA8kAsa6g==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + read-package-json-fast@2.0.3: + resolution: {integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==} + engines: {node: '>=10'} + + read-package-json-fast@3.0.2: + resolution: {integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + read-package-json@6.0.4: + resolution: {integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + deprecated: This package is no longer supported. Please use @npmcli/package-json instead. + + read-pkg-up@4.0.0: + resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} + engines: {node: '>=6'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-scoped-modules@1.1.0: + resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} + deprecated: This functionality has been moved to @npmcli/fs + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + + realpath-native@1.1.0: + resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==} + engines: {node: '>=4'} + + recast@0.23.9: + resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} + engines: {node: '>= 4'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + recompose@0.27.1: + resolution: {integrity: sha512-p7xsyi/rfNjHfdP7vPU02uSFa+Q1eHhjKrvO+3+kRP4Ortj+MxEmpmd+UQtBGM2D2iNAjzNI5rCyBKp9Ob5McA==} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16.0.0 + + recursive-readdir@2.2.2: + resolution: {integrity: sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==} + engines: {node: '>=0.10.0'} + + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reduce-reducers@1.0.4: + resolution: {integrity: sha512-Mb2WZ2bJF597exiqX7owBzrqJ74DHLK3yOQjCyPAaNifRncE8OD0wFIuoMhXxTnHK07+8zZ2SJEKy/qtiyR7vw==} + + redux-actions@3.0.0: + resolution: {integrity: sha512-5r+G8JizsTfyfWolVDkCLL2SpZA0Sk9ao2MXwfdXkG5+72s0PcO9qEqpo51D2o8dZY2gXLjNmY5yoRB+BuizRw==} + + redux-connect@10.0.0: + resolution: {integrity: sha512-lLyIuXKRLSXvdpOBEhNDsBwsf2NApEsvpxKQ+oGhL8jL0W9xzkqv35zcRTiPAAPreHQa1imY8OqpZ6h9nMoU5w==} + peerDependencies: + prop-types: 15.x.x + react: ^16.8.4 + react-redux: 7.x.x + react-router: 5.x.x + react-router-config: 5.x.x + react-router-dom: 5.x.x + redux-actions: 2.x.x + + redux-localstorage-simple@2.5.1: + resolution: {integrity: sha512-8HbqBzHoZ4nfL8qyELt4hLd9hNmESCvmXTEBk2mGT23lX8/miJbXz4ZGIF7Eoa1UHikjv+bne3pjC95ub737vA==} + + redux-mock-store@1.5.4: + resolution: {integrity: sha512-xmcA0O/tjCLXhh9Fuiq6pMrJCwFRaouA8436zcikdIpYWWCjU76CRk+i2bHx8EeiSiMGnB85/lZdU3wIJVXHTA==} + + redux-thunk@2.4.2: + resolution: {integrity: sha512-+P3TjtnP0k/FEjcBL5FZpoovtvrTNT/UXd4/sluaSyrURlSlhLSzEdfsTBW7WsKB6yPvgd7q/iZPICFjW4o57Q==} + peerDependencies: + redux: ^4 + + redux@4.2.1: + resolution: {integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==} + + reflect.getprototypeof@1.0.6: + resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} + engines: {node: '>= 0.4'} + + reflect.ownkeys@1.1.4: + resolution: {integrity: sha512-iUNmtLgzudssL+qnTUosCmnq3eczlrVd1wXrgx/GhiI/8FvwrTYWtCJ9PNvWIRX+4ftupj2WUfB5mu5s9t6LnA==} + + regenerate-unicode-properties@10.2.0: + resolution: {integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==} + engines: {node: '>=4'} + + regenerate@1.4.2: + resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} + + regenerator-runtime@0.11.1: + resolution: {integrity: sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + regenerator-transform@0.15.2: + resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} + + regex-not@1.0.2: + resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} + engines: {node: '>=0.10.0'} + + regex-parser@2.3.0: + resolution: {integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==} + + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + + regexpu-core@6.1.1: + resolution: {integrity: sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==} + engines: {node: '>=4'} + + registry-auth-token@4.2.2: + resolution: {integrity: sha512-PC5ZysNb42zpFME6D/XlIgtNGdTl8bBOCw90xQLVMpzuuubJKYDWFAEuUNc+Cn8Z8724tg2SDhDRrkVEsqfDMg==} + engines: {node: '>=6.0.0'} + + registry-auth-token@5.0.2: + resolution: {integrity: sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==} + engines: {node: '>=14'} + + registry-url@5.1.0: + resolution: {integrity: sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==} + engines: {node: '>=8'} + + registry-url@6.0.1: + resolution: {integrity: sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==} + engines: {node: '>=12'} + + regjsgen@0.8.0: + resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} + + regjsparser@0.11.1: + resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} + hasBin: true + + rehype-external-links@3.0.0: + resolution: {integrity: sha512-yp+e5N9V3C6bwBeAC4n796kc86M4gJCdlVhiMTxIrJG5UHDMh+PJANf9heqORJbt1nrCbDwIlAZKjANIaVBbvw==} + + rehype-slug@6.0.0: + resolution: {integrity: sha512-lWyvf/jwu+oS5+hL5eClVd3hNdmwM1kAC0BUvEGD19pajQMIzcNUd/k9GsfQ+FfECvX+JE+e9/btsKH0EjJT6A==} + + relateurl@0.2.7: + resolution: {integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==} + engines: {node: '>= 0.10'} + + release-it@16.2.1: + resolution: {integrity: sha512-+bHiKPqkpld+NaiW+K/2WsjaHgfPB00J6uk8a+g8QyuBtzfFoMVe+GKsfaDO5ztEHRrSg+7luoXzd8IfvPNPig==} + engines: {node: '>=16'} + hasBin: true + + release-it@17.1.1: + resolution: {integrity: sha512-b+4Tu2eb5f2wIdIe5E9hre0evbMQrXp/kRq0natHsHYJVqu1Bd4/h2a+swFi0faGmC3cJdB16uYR6LscG9SchQ==} + engines: {node: '>=18'} + hasBin: true + + remark-gfm@4.0.0: + resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==} + + remark-parse@11.0.0: + resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} + + remark-stringify@11.0.0: + resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} + + remove-trailing-separator@1.1.0: + resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + + renderkid@3.0.0: + resolution: {integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==} + + repeat-element@1.1.4: + resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} + engines: {node: '>=0.10.0'} + + repeat-string@1.6.1: + resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==} + engines: {node: '>=0.10'} + + replace-ext@1.0.1: + resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} + engines: {node: '>= 0.10'} + + request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + + request-promise-core@1.1.4: + resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} + engines: {node: '>=0.10.0'} + peerDependencies: + request: ^2.34 + + request-promise-native@1.0.9: + resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} + engines: {node: '>=0.12.0'} + deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 + peerDependencies: + request: ^2.34 + + request@2.88.2: + resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} + engines: {node: '>= 6'} + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + require-package-name@2.0.1: + resolution: {integrity: sha512-uuoJ1hU/k6M0779t3VMVIYpb2VMJk05cehCaABFhXaibcbvfgR8wKiozLjVFSzJPmQMRqIcO0HMyTFqfV09V6Q==} + + requireindex@1.2.0: + resolution: {integrity: sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==} + engines: {node: '>=0.10.5'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-cwd@2.0.0: + resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} + engines: {node: '>=4'} + + resolve-cwd@3.0.0: + resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} + engines: {node: '>=8'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pathname@3.0.0: + resolution: {integrity: sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve-url-loader@3.1.5: + resolution: {integrity: sha512-mgFMCmrV/tA4738EsFmPFE5/MaqSgUMe8LK971kVEKA/RrNVb7+VqFsg/qmKyythf34eyq476qIobP/gfFBGSQ==} + engines: {node: '>=6.0.0'} + + resolve-url@0.2.1: + resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} + deprecated: https://github.com/lydell/resolve-url#deprecated + + resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + + resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + resolve@2.0.0-next.5: + resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} + hasBin: true + + responselike@1.0.2: + resolution: {integrity: sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==} + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + restore-cursor@2.0.0: + resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} + engines: {node: '>=4'} + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + ret@0.1.15: + resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} + engines: {node: '>=0.12'} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rework-visit@1.0.0: + resolution: {integrity: sha512-W6V2fix7nCLUYX1v6eGPrBOZlc03/faqzP4sUxMAJMBMOPYhfV/RyLegTufn5gJKaOITyi+gvf0LXDZ9NzkHnQ==} + + rework@1.0.1: + resolution: {integrity: sha512-eEjL8FdkdsxApd0yWVZgBGzfCQiT8yqSc2H1p4jpZpQdtz7ohETiDMoje5PlM8I9WgkqkreVxFUKYOiJdVWDXw==} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rgb-regex@1.0.1: + resolution: {integrity: sha512-gDK5mkALDFER2YLqH6imYvK6g02gpNGM4ILDZ472EwWfXZnC2ZEpoB2ECXTyOVUKuk/bPJZMzwQPBYICzP+D3w==} + + rgba-regex@1.0.0: + resolution: {integrity: sha512-zgn5OjNQXLUTdq8m17KdaicF6w89TZs8ZU8y0AYENIU6wG8GG6LLm0yLSiPY8DmaYmHdgRW8rnApjoT0fQRfMg==} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rollup@4.24.0: + resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + rrule@2.7.1: + resolution: {integrity: sha512-4p20u/1U7WqR3Nb1hOUrm0u1nSI7sO93ZUVZEZ5HeF6Gr5OlJuyhwEGRvUHq8ZfrPsq5gfa5b9dqnUs/kPqpIw==} + + rrweb-cssom@0.6.0: + resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + + rsvp@4.8.5: + resolution: {integrity: sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==} + engines: {node: 6.* || >= 7.*} + + run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + + run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-async@3.0.0: + resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + run-queue@1.0.3: + resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + sade@1.8.1: + resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} + engines: {node: '>=6'} + + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + + safe-regex@1.1.0: + resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sane@4.1.0: + resolution: {integrity: sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==} + engines: {node: 6.* || 8.* || >= 10.*} + deprecated: some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added + hasBin: true + + sass-loader@10.5.2: + resolution: {integrity: sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + fibers: '>= 3.1.0' + node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + sass: ^1.3.0 + webpack: ^4.36.0 || ^5.0.0 + peerDependenciesMeta: + fibers: + optional: true + node-sass: + optional: true + sass: + optional: true + + sass@1.80.4: + resolution: {integrity: sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==} + engines: {node: '>=14.0.0'} + hasBin: true + + sax@1.2.4: + resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} + + sax@1.4.1: + resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} + + saxes@5.0.1: + resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} + engines: {node: '>=10'} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + scheduler@0.23.2: + resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + + schema-utils@2.7.1: + resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} + engines: {node: '>= 8.9.0'} + + schema-utils@3.3.0: + resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} + engines: {node: '>= 10.13.0'} + + schema-utils@4.2.0: + resolution: {integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==} + engines: {node: '>= 12.13.0'} + + scoped-regex@2.1.0: + resolution: {integrity: sha512-g3WxHrqSWCZHGHlSrF51VXFdjImhwvH8ZO/pryFH56Qi0cDsZfylQa/t0jCzVQFNbNvM00HfHjkDPEuarKDSWQ==} + engines: {node: '>=8'} + + scroll-into-view-if-needed@2.2.31: + resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} + + seamless-immutable@7.1.4: + resolution: {integrity: sha512-XiUO1QP4ki4E2PHegiGAlu6r82o5A+6tRh7IkGGTVg/h+UoeX4nFBeCGPOhb4CYjvkqsfm/TUtvOMYC1xmV30A==} + + select-hose@2.0.0: + resolution: {integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==} + + selfsigned@2.4.1: + resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} + engines: {node: '>=10'} + + semantic-ui-less@2.4.1: + resolution: {integrity: sha512-/+nhPV6If2ydCz89/SSWzYD8ualDtjh4Tk3F6cqRj2luZj1DRjJ2nM9NKqmeyLlQFNFM94wpnpKXcjxRzZh5GA==} + + semantic-ui-react@2.1.5: + resolution: {integrity: sha512-nIqmmUNpFHfovEb+RI2w3E2/maZQutd8UIWyRjf1SLse+XF51hI559xbz/sLN3O6RpLjr/echLOOXwKCirPy3Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + + semver-diff@3.1.1: + resolution: {integrity: sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==} + engines: {node: '>=8'} + + semver-diff@4.0.0: + resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} + engines: {node: '>=12'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + send@0.18.0: + resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + engines: {node: '>= 0.8.0'} + + serialize-javascript@3.1.0: + resolution: {integrity: sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==} + + serialize-javascript@4.0.0: + resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==} + + serialize-javascript@5.0.1: + resolution: {integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==} + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + serve-index@1.9.1: + resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==} + engines: {node: '>= 0.8.0'} + + serve-static@1.15.0: + resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + engines: {node: '>= 0.8.0'} + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + + set-value@2.0.1: + resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} + engines: {node: '>=0.10.0'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.1.0: + resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + shallow-equal@1.2.1: + resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==} + + shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.7.2: + resolution: {integrity: sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + shellwords@0.1.1: + resolution: {integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==} + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sigstore@1.9.0: + resolution: {integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + simple-git@3.27.0: + resolution: {integrity: sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==} + + simple-swizzle@0.2.2: + resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==} + + sinon@10.0.1: + resolution: {integrity: sha512-1rf86mvW4Mt7JitEIgmNaLXaWnrWd/UrVKZZlL+kbeOujXVf9fmC4kQEQ/YeHoiIA23PLNngYWK+dngIx/AumA==} + deprecated: 16.1.1 + + sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@1.0.0: + resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} + engines: {node: '>=0.10.0'} + + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slash@4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} + engines: {node: '>=12'} + + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slate-history@0.100.0: + resolution: {integrity: sha512-x5rUuWLNtH97hs9PrFovGgt3Qc5zkTm/5mcUB+0NR/TK923eLax4HsL6xACLHMs245nI6aJElyM1y6hN0y5W/Q==} + peerDependencies: + slate: '>=0.65.3' + + slate-hyperscript@0.100.0: + resolution: {integrity: sha512-fb2KdAYg6RkrQGlqaIi4wdqz3oa0S4zKNBJlbnJbNOwa23+9FLD6oPVx9zUGqCSIpy+HIpOeqXrg0Kzwh/Ii4A==} + peerDependencies: + slate: '>=0.65.3' + + slate-react@0.98.4: + resolution: {integrity: sha512-8Of3v9hFuX8rIRc86LuuBhU9t8ps+9ARKL4yyhCrKQYZ93Ep/LFA3GvPGvtf3zYuVadZ8tkhRH8tbHOGNAndLw==} + peerDependencies: + react: '>=16.8.0' + react-dom: '>=16.8.0' + slate: '>=0.65.3' + + slate@0.100.0: + resolution: {integrity: sha512-cK+xwLBrbQof4rEfTzgC8loBWsDFEXq8nOBY7QahwY59Zq4bsBNcwiMw2VIzTv+WGNsmyHp4eAk/HJbz2aAUkQ==} + + sleep-promise@9.1.0: + resolution: {integrity: sha512-UHYzVpz9Xn8b+jikYSD6bqvf754xL2uBUzDFwiU6NcdZeifPr6UfgU43xpkPu67VMS88+TI2PSI7Eohgqf2fKA==} + + slice-ansi@3.0.0: + resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + snapdragon-node@2.1.1: + resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} + engines: {node: '>=0.10.0'} + + snapdragon-util@3.0.1: + resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} + engines: {node: '>=0.10.0'} + + snapdragon@0.8.2: + resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} + engines: {node: '>=0.10.0'} + + sockjs-client@1.4.0: + resolution: {integrity: sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==} + + sockjs@0.3.24: + resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} + + socks-proxy-agent@6.2.1: + resolution: {integrity: sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==} + engines: {node: '>= 10'} + + socks-proxy-agent@7.0.0: + resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} + engines: {node: '>= 10'} + + socks-proxy-agent@8.0.4: + resolution: {integrity: sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==} + engines: {node: '>= 14'} + + socks@2.8.3: + resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sort-keys@4.2.0: + resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==} + engines: {node: '>=8'} + + source-list-map@2.0.1: + resolution: {integrity: sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-resolve@0.5.3: + resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} + deprecated: See https://github.com/lydell/source-map-resolve#deprecated + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map-url@0.4.1: + resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} + deprecated: See https://github.com/lydell/source-map-url#deprecated + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + source-map@0.7.4: + resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==} + engines: {node: '>= 8'} + + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + + space-separated-tokens@2.0.2: + resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + + spdy-transport@3.0.0: + resolution: {integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==} + + spdy@4.0.2: + resolution: {integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==} + engines: {node: '>=6.0.0'} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split-on-first@3.0.0: + resolution: {integrity: sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==} + engines: {node: '>=12'} + + split-string@3.1.0: + resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} + engines: {node: '>=0.10.0'} + + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + sprintf-js@1.1.3: + resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + + srcset@4.0.0: + resolution: {integrity: sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==} + engines: {node: '>=12'} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + ssri@10.0.6: + resolution: {integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ssri@7.1.1: + resolution: {integrity: sha512-w+daCzXN89PseTL99MkA+fxJEcU3wfaE/ah0i0lnOlpG1CYLJ2ZjzEry68YBKfLs4JfoTShrTEsJkAZuNZ/stw==} + engines: {node: '>= 8'} + + ssri@8.0.1: + resolution: {integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==} + engines: {node: '>= 8'} + + ssri@9.0.1: + resolution: {integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + stable@0.1.8: + resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} + deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + + stack-utils@1.0.5: + resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} + engines: {node: '>=8'} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackframe@1.3.4: + resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} + + start-server-and-test@1.14.0: + resolution: {integrity: sha512-on5ELuxO2K0t8EmNj9MtVlFqwBMxfWOhu4U7uZD1xccVpFlOQKR93CSe0u98iQzfNxRyaNTb/CdadbNllplTsw==} + engines: {node: '>=6'} + hasBin: true + + static-extend@0.1.2: + resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==} + engines: {node: '>=0.10.0'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + std-env@3.7.0: + resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + + stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + + stealthy-require@1.1.1: + resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} + engines: {node: '>=0.10.0'} + + stop-iteration-iterator@1.0.0: + resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} + engines: {node: '>= 0.4'} + + storybook@8.3.6: + resolution: {integrity: sha512-9GVbtej6ZzPRUM7KRQ7848506FfHrUiJGqPuIQdoSJd09EmuEoLjmLAgEOmrHBQKgGYMaM7Vh9GsTLim6vwZTQ==} + hasBin: true + + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-hash@1.1.3: + resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + + string-length@2.0.0: + resolution: {integrity: sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==} + engines: {node: '>=4'} + + string-length@4.0.2: + resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} + engines: {node: '>=10'} + + string-natural-compare@3.0.1: + resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + + string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string.prototype.includes@2.0.1: + resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} + engines: {node: '>= 0.4'} + + string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} + + string.prototype.repeat@1.0.0: + resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} + + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@3.0.1: + resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} + engines: {node: '>=0.10.0'} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + + strip-ansi@6.0.0: + resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} + engines: {node: '>=8'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom-buf@1.0.0: + resolution: {integrity: sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==} + engines: {node: '>=4'} + + strip-bom-stream@2.0.0: + resolution: {integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==} + engines: {node: '>=0.10.0'} + + strip-bom@2.0.0: + resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} + engines: {node: '>=0.10.0'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-indent@4.0.0: + resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} + engines: {node: '>=12'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@2.1.0: + resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} + + style-loader@2.0.0: + resolution: {integrity: sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + style-loader@3.3.1: + resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^5.0.0 + + stylehacks@4.0.3: + resolution: {integrity: sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==} + engines: {node: '>=6.9.0'} + + stylelint-config-idiomatic-order@10.0.0: + resolution: {integrity: sha512-gJjT1nwhgnHS52+mRn+5Iw6keZIPRN4W+vbzct9Elb+tWOo61jC/CzXzAJHvvOYQZqUYItfs2aQ8fU5hnCvuGg==} + engines: {node: '>=12'} + peerDependencies: + stylelint: '>=11' + + stylelint-order@6.0.4: + resolution: {integrity: sha512-0UuKo4+s1hgQ/uAxlYU4h0o0HS4NiQDud0NAUNI0aa8FJdmYHA5ZZTFHiV5FpmE3071e9pZx5j0QpVJW5zOCUA==} + peerDependencies: + stylelint: ^14.0.0 || ^15.0.0 || ^16.0.1 + + stylelint-prettier@5.0.0: + resolution: {integrity: sha512-RHfSlRJIsaVg5Br94gZVdWlz/rBTyQzZflNE6dXvSxt/GthWMY3gEHsWZEBaVGg7GM+XrtVSp4RznFlB7i0oyw==} + engines: {node: '>=18.12.0'} + peerDependencies: + prettier: '>=3.0.0' + stylelint: '>=16.0.0' + + stylelint@16.10.0: + resolution: {integrity: sha512-z/8X2rZ52dt2c0stVwI9QL2AFJhLhbPkyfpDFcizs200V/g7v+UYY6SNcB9hKOLcDDX/yGLDsY/pX08sLkz9xQ==} + engines: {node: '>=18.12.0'} + hasBin: true + + stylis@4.2.0: + resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} + + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superagent@3.8.2: + resolution: {integrity: sha512-gVH4QfYHcY3P0f/BZzavLreHW3T1v7hG9B+hpMQotGQqurOvhv87GcMCd6LWySmBuf+BDR44TQd0aISjVHLeNQ==} + engines: {node: '>= 4.0'} + deprecated: Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at . + + supports-color@2.0.0: + resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@6.1.0: + resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==} + engines: {node: '>=6'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-hyperlinks@2.3.0: + resolution: {integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==} + engines: {node: '>=8'} + + supports-hyperlinks@3.1.0: + resolution: {integrity: sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==} + engines: {node: '>=14.18'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + svg-loader@0.0.2: + resolution: {integrity: sha512-otmaUALijTGJJpvPVTHhHIzseEsrB7DyJJxygb0XkiZPeJT9t+PiK7tDT9YWSUDqHqqqutTqF0ldXth/+T72wg==} + + svg-tags@1.0.0: + resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + + svgo-loader@3.0.3: + resolution: {integrity: sha512-6YdWYge3h0aCb8xHvPhGP4hofIU1OWfZm0I8bteab7hddeRN4fl3aIkN8Z/ZB/ji9QrMOd6C8wT8F1p31GUwuQ==} + + svgo@1.3.2: + resolution: {integrity: sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==} + engines: {node: '>=4.0.0'} + deprecated: This SVGO version is no longer supported. Upgrade to v2.x.x. + hasBin: true + + svgo@2.8.0: + resolution: {integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==} + engines: {node: '>=10.13.0'} + hasBin: true + + symbol-observable@1.2.0: + resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==} + engines: {node: '>=0.10.0'} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.9.2: + resolution: {integrity: sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==} + engines: {node: ^14.18.0 || >=16.0.0} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tapable@1.1.3: + resolution: {integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==} + engines: {node: '>=6'} + + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + + tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} + engines: {node: '>=10'} + + telejson@7.2.0: + resolution: {integrity: sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==} + + temp-dir@2.0.0: + resolution: {integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==} + engines: {node: '>=8'} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + terminal-link@2.1.1: + resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} + engines: {node: '>=8'} + + terminate@2.8.0: + resolution: {integrity: sha512-bcbjJEg0wY5nuJXvGxxHfmoEPkyHLCctUKO6suwtxy7jVSgGcgPeGwpbLDLELFhIaxCGRr3dPvyNg1yuz2V0eg==} + engines: {node: '>=12'} + + terser-webpack-plugin@2.3.8: + resolution: {integrity: sha512-/fKw3R+hWyHfYx7Bv6oPqmk4HGQcrWLtV3X6ggvPuwPNHSnzvVV51z6OaaCOus4YLjutYGOz3pEpbhe6Up2s1w==} + engines: {node: '>= 8.9.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + terser-webpack-plugin@5.3.10: + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser-webpack-plugin@5.3.6: + resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + + terser@4.8.1: + resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==} + engines: {node: '>=6.0.0'} + hasBin: true + + terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} + engines: {node: '>=10'} + hasBin: true + + test-exclude@5.2.3: + resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} + engines: {node: '>=6'} + + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + textextensions@5.16.0: + resolution: {integrity: sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw==} + engines: {node: '>=0.8'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + throat@4.1.0: + resolution: {integrity: sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==} + + throat@5.0.0: + resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} + + throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + thunky@1.1.0: + resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + + timsort@0.3.0: + resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + + tiny-async-pool@1.3.0: + resolution: {integrity: sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA==} + + tiny-invariant@1.0.6: + resolution: {integrity: sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-warning@1.0.3: + resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.1: + resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} + + tinyglobby@0.2.10: + resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} + engines: {node: '>=12.0.0'} + + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + + tinypool@1.0.1: + resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@1.2.0: + resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} + engines: {node: '>=14.0.0'} + + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + + tinyspy@3.0.2: + resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} + engines: {node: '>=14.0.0'} + + titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + + tlds@1.203.1: + resolution: {integrity: sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw==} + hasBin: true + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + + tmpl@1.0.5: + resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} + + to-fast-properties@1.0.3: + resolution: {integrity: sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==} + engines: {node: '>=0.10.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-object-path@0.3.0: + resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==} + engines: {node: '>=0.10.0'} + + to-readable-stream@1.0.0: + resolution: {integrity: sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==} + engines: {node: '>=6'} + + to-regex-range@2.1.1: + resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==} + engines: {node: '>=0.10.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + to-regex@3.0.2: + resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} + engines: {node: '>=0.10.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@2.5.0: + resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} + engines: {node: '>=0.8'} + + tough-cookie@4.1.4: + resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} + engines: {node: '>=6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + + tr46@2.1.0: + resolution: {integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==} + engines: {node: '>=8'} + + tr46@4.1.1: + resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} + engines: {node: '>=14'} + + traverse@0.6.6: + resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + treeverse@1.0.4: + resolution: {integrity: sha512-whw60l7r+8ZU8Tu/Uc2yxtc4ZTZbR/PF3u1IPNKGQ6p8EICLb3Z2lAgoqw9bqYd8IkgnsaOcLzYHFckjqNsf0g==} + + trough@2.2.0: + resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-dedent@2.2.0: + resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} + engines: {node: '>=6.10'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-jest@26.5.6: + resolution: {integrity: sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==} + engines: {node: '>= 10'} + hasBin: true + peerDependencies: + jest: '>=26 <27' + typescript: '>=3.8 <5.0' + + ts-loader@9.4.4: + resolution: {integrity: sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==} + engines: {node: '>=12.0.0'} + peerDependencies: + typescript: '*' + webpack: ^5.0.0 + + ts-pnp@1.2.0: + resolution: {integrity: sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==} + engines: {node: '>=6'} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + + tsconfig-paths@4.2.0: + resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} + engines: {node: '>=6'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + + tsup@8.3.5: + resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + + tsutils@3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + + tuf-js@1.1.7: + resolution: {integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.0.8: + resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + engines: {node: '>=4'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} + + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} + + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + ua-parser-js@0.7.39: + resolution: {integrity: sha512-IZ6acm6RhQHNibSt7+c09hhvsKy9WUr4DVbeq9U8o71qxyYtJpQeDxQnMrVqnIFMLcQjHO0I9wgfO2vIahht4w==} + hasBin: true + + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + + unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undoo@0.5.0: + resolution: {integrity: sha512-SPlDcde+AUHoFKeVlH2uBJxqVkw658I4WR2rPoygC1eRCzm3GeoP8S6xXZVJeBVOQQid8X2xUBW0N4tOvvHH3Q==} + + unicode-canonical-property-names-ecmascript@2.0.1: + resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} + engines: {node: '>=4'} + + unicode-match-property-ecmascript@2.0.0: + resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} + engines: {node: '>=4'} + + unicode-match-property-value-ecmascript@2.2.0: + resolution: {integrity: sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==} + engines: {node: '>=4'} + + unicode-property-aliases-ecmascript@2.1.0: + resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} + engines: {node: '>=4'} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + + unified@11.0.5: + resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} + + union-value@1.0.1: + resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} + engines: {node: '>=0.10.0'} + + uniq@1.0.1: + resolution: {integrity: sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==} + + uniqs@2.0.0: + resolution: {integrity: sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==} + + unique-filename@1.1.1: + resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==} + + unique-filename@2.0.1: + resolution: {integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-filename@3.0.0: + resolution: {integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-slug@2.0.2: + resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==} + + unique-slug@3.0.0: + resolution: {integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + unique-slug@4.0.0: + resolution: {integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + unique-string@2.0.0: + resolution: {integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==} + engines: {node: '>=8'} + + unique-string@3.0.0: + resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} + engines: {node: '>=12'} + + unist-util-is@6.0.0: + resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==} + + unist-util-stringify-position@4.0.0: + resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} + + unist-util-visit-parents@6.0.1: + resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==} + + unist-util-visit@5.0.0: + resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} + + universal-cookie-express@4.0.3: + resolution: {integrity: sha512-hDZW9UsRpFMdbtC0JjgTMfwEp42gGWLD5Q9qkS72cogLAqX6SyWK9klWAZWsNSNkInZZrPlRQhQie79qFugZSQ==} + + universal-cookie@4.0.4: + resolution: {integrity: sha512-lbRVHoOMtItjWbM7TwDLdl8wug7izB0tq3/YVKhT/ahB4VDvWMyvnADfnJI8y6fSvsjh51Ix7lTGC6Tn4rMPhw==} + + universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@0.2.0: + resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin@1.14.1: + resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + engines: {node: '>=14.0.0'} + peerDependencies: + webpack-sources: ^3 + peerDependenciesMeta: + webpack-sources: + optional: true + + unquote@1.1.1: + resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + + unset-value@1.0.0: + resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==} + engines: {node: '>=0.10.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + update-notifier@5.1.0: + resolution: {integrity: sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==} + engines: {node: '>=10'} + + update-notifier@6.0.2: + resolution: {integrity: sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==} + engines: {node: '>=14.16'} + + update-notifier@7.0.0: + resolution: {integrity: sha512-Hv25Bh+eAbOLlsjJreVPOs4vd51rrtCrmhyOJtbpAojro34jS4KQaEp4/EvlHJX7jSO42VvEFpkastVyXyIsdQ==} + engines: {node: '>=18'} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + urix@0.1.0: + resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==} + deprecated: Please see https://github.com/lydell/urix#deprecated + + url-join@5.0.0: + resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + url-loader@2.3.0: + resolution: {integrity: sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==} + engines: {node: '>= 8.9.0'} + peerDependencies: + file-loader: '*' + webpack: ^4.0.0 + peerDependenciesMeta: + file-loader: + optional: true + + url-parse-lax@3.0.0: + resolution: {integrity: sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==} + engines: {node: '>=4'} + + url-parse@1.5.10: + resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + + url@0.11.4: + resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} + engines: {node: '>= 0.4'} + + use-deep-compare-effect@1.8.1: + resolution: {integrity: sha512-kbeNVZ9Zkc0RFGpfMN3MNfaKNvcLNyxOAAd9O4CBZ+kCBXXscn9s/4I+8ytUER4RDpEYs5+O6Rs4PqiZ+rHr5Q==} + engines: {node: '>=10', npm: '>=6'} + peerDependencies: + react: '>=16.13' + + use-memo-one@1.1.3: + resolution: {integrity: sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + use-sync-external-store@1.2.2: + resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + + use-trace-update@1.3.2: + resolution: {integrity: sha512-iQ5/z1IgFNTM/gYGineNa/i+Tq/efDY5m7cvema//YoWT5C0tP5rY0ttwiJKbLiAgfdIPptMI3mCc18iVfEu6Q==} + + use@3.1.1: + resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} + engines: {node: '>=0.10.0'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + util.promisify@1.0.1: + resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} + + util.promisify@1.1.2: + resolution: {integrity: sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA==} + + util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} + + utila@0.4.0: + resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + utils-merge@1.0.1: + resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + engines: {node: '>= 0.4.0'} + + uuid@3.4.0: + resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + v8-to-istanbul@7.1.2: + resolution: {integrity: sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==} + engines: {node: '>=10.10.0'} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@3.0.0: + resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + + value-equal@1.0.1: + resolution: {integrity: sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + + vendors@1.0.4: + resolution: {integrity: sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vfile-message@4.0.2: + resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==} + + vfile@6.0.3: + resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} + + vinyl-file@3.0.0: + resolution: {integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==} + engines: {node: '>=4'} + + vinyl@2.2.1: + resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} + engines: {node: '>= 0.10'} + + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-node@2.1.3: + resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + + vite-plugin-dts@3.9.1: + resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@5.4.10: + resolution: {integrity: sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + sass-embedded: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + + vitest-axe@0.1.0: + resolution: {integrity: sha512-jvtXxeQPg8R/2ANTY8QicA5pvvdRP4F0FsVUAHANJ46YCDASie/cuhlSzu0DGcLmZvGBSBNsNuK3HqfaeknyvA==} + peerDependencies: + vitest: '>=0.16.0' + + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vitest@2.1.3: + resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 2.1.3 + '@vitest/ui': 2.1.3 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + + vue-tsc@1.8.27: + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + + w3c-hr-time@1.0.2: + resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==} + deprecated: Use your platform's native performance.now() and performance.timeOrigin. + + w3c-xmlserializer@2.0.0: + resolution: {integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==} + engines: {node: '>=10'} + + w3c-xmlserializer@4.0.0: + resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} + engines: {node: '>=14'} + + wait-for-expect@3.0.2: + resolution: {integrity: sha512-cfS1+DZxuav1aBYbaO/kE06EOS8yRw7qOFoD3XtjTkYvCvh3zUvNST8DXK/nPaeqIzIv3P3kL3lRJn8iwOiSag==} + + wait-on@6.0.0: + resolution: {integrity: sha512-tnUJr9p5r+bEYXPUdRseolmz5XqJTTj98JgOsfBn7Oz2dxfE2g3zw1jE+Mo8lopM3j3et/Mq1yW7kKX6qw7RVw==} + engines: {node: '>=10.0.0'} + hasBin: true + + wait-on@7.2.0: + resolution: {integrity: sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==} + engines: {node: '>=12.0.0'} + hasBin: true + + walk-up-path@1.0.0: + resolution: {integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==} + + walker@1.0.8: + resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} + + warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + + watchpack@2.4.2: + resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + engines: {node: '>=10.13.0'} + + wbuf@1.7.3: + resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + weak-key@1.0.3: + resolution: {integrity: sha512-+rUqNjaFsPhwrPdfmrHhKxbufsSUojAbX26PBawFWRHmKn01V1z6GWiizkpbXt225MxrvFm/ULYVxdFpkdY3cQ==} + + weak-lru-cache@1.2.2: + resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + + webidl-conversions@5.0.0: + resolution: {integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==} + engines: {node: '>=8'} + + webidl-conversions@6.1.0: + resolution: {integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==} + engines: {node: '>=10.4'} + + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + webpack-bundle-analyzer@4.10.1: + resolution: {integrity: sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==} + engines: {node: '>= 10.13.0'} + hasBin: true + + webpack-dev-middleware@5.3.4: + resolution: {integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==} + engines: {node: '>= 12.13.0'} + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 + + webpack-dev-middleware@6.1.3: + resolution: {integrity: sha512-A4ChP0Qj8oGociTs6UdlRUGANIGrCDL3y+pmQMc+dSsraXHCatFpmMey4mYELA+juqwUqwQsUgJJISXl1KWmiw==} + engines: {node: '>= 14.15.0'} + peerDependencies: + webpack: ^5.0.0 + peerDependenciesMeta: + webpack: + optional: true + + webpack-dev-server@4.11.1: + resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} + engines: {node: '>= 12.13.0'} + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpack-hot-middleware@2.26.1: + resolution: {integrity: sha512-khZGfAeJx6I8K9zKohEWWYN6KDlVw2DHownoe+6Vtwj1LP9WFgegXnVMSkZ/dBEBtXFwrkkydsaPFlB7f8wU2A==} + + webpack-manifest-plugin@3.2.0: + resolution: {integrity: sha512-68b94EUjHrvUy+um+lmkIKHyfsFkJFDr+7s/GqLIhTSB6i9QzprQph8XOYnJU7ANqTyYr5g5Ng/DrAH0g3wjog==} + engines: {node: '>=10.22.1'} + peerDependencies: + webpack: ^4.44.2 + + webpack-node-externals@3.0.0: + resolution: {integrity: sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==} + engines: {node: '>=6'} + + webpack-sources@1.4.3: + resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} + + webpack-sources@2.3.1: + resolution: {integrity: sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==} + engines: {node: '>=10.13.0'} + + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + + webpack@5.90.1: + resolution: {integrity: sha512-SstPdlAC5IvgFnhiRok8hqJo/+ArAbNv7rhU4fnWGHNVfN59HSQFaxZDSAL3IFG2YmqxuRs+IU33milSxbPlog==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + + webpackbar@5.0.2: + resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} + engines: {node: '>=12'} + peerDependencies: + webpack: 3 || 4 || 5 + + websocket-driver@0.7.4: + resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} + engines: {node: '>=0.8.0'} + + websocket-extensions@0.1.4: + resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} + engines: {node: '>=0.8.0'} + + whatwg-encoding@1.0.5: + resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + + whatwg-fetch@3.6.20: + resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} + + whatwg-mimetype@2.3.0: + resolution: {integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==} + + whatwg-mimetype@3.0.0: + resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} + engines: {node: '>=12'} + + whatwg-url@12.0.1: + resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} + engines: {node: '>=14'} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + whatwg-url@6.5.0: + resolution: {integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==} + + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + + whatwg-url@8.7.0: + resolution: {integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==} + engines: {node: '>=10'} + + which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + + which-builtin-type@1.1.4: + resolution: {integrity: sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==} + engines: {node: '>= 0.4'} + + which-collection@1.0.2: + resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} + engines: {node: '>= 0.4'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which-pm@2.2.0: + resolution: {integrity: sha512-MOiaDbA5ZZgUjkeMWM5EkJp4loW5ZRoa5bc3/aeMox/PJelMhE6t7S/mLuiY43DBupyxH+S0U1bTui9kWUlmsw==} + engines: {node: '>=8.15'} + + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@3.0.1: + resolution: {integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + why@0.6.2: + resolution: {integrity: sha512-7M43dnp3p+5HRMYS5ImUftNAQQSIZmwnAd8yyjEj3cpK+6nbBfikwTvxXRUFvydaPJmgu+EofRnJKNDMbIuzXg==} + hasBin: true + + wide-align@1.1.5: + resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + widest-line@4.0.1: + resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==} + engines: {node: '>=12'} + + wildcard-match@5.1.2: + resolution: {integrity: sha512-qNXwI591Z88c8bWxp+yjV60Ch4F8Riawe3iGxbzquhy8Xs9m+0+SLFBGb/0yCTIDElawtaImC37fYZ+dr32KqQ==} + + windows-release@5.1.1: + resolution: {integrity: sha512-NMD00arvqcq2nwqc5Q6KtrSRHK+fVD31erE5FEMahAw5PmVCgD7MUXodq3pdZSUkqA9Cda2iWx6s1XYwiJWRmw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + worker-rpc@0.1.1: + resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} + + wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + write-file-atomic@2.4.1: + resolution: {integrity: sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==} + + write-file-atomic@3.0.3: + resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} + + write-file-atomic@4.0.2: + resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} + engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} + + write-file-atomic@5.0.1: + resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + ws@5.2.4: + resolution: {integrity: sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xdg-basedir@4.0.0: + resolution: {integrity: sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==} + engines: {node: '>=8'} + + xdg-basedir@5.1.0: + resolution: {integrity: sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==} + engines: {node: '>=12'} + + xml-name-validator@3.0.0: + resolution: {integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==} + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + yallist@2.1.2: + resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@1.10.2: + resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + engines: {node: '>= 6'} + + yargs-parser@13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yeoman-assert@3.1.1: + resolution: {integrity: sha512-bCuLb/j/WzpvrJZCTdJJLFzm7KK8IYQJ3+dF9dYtNs2CUYyezFJDuULiZ2neM4eqjf45GN1KH/MzCTT3i90wUQ==} + engines: {node: '>=4'} + + yeoman-environment@3.19.3: + resolution: {integrity: sha512-/+ODrTUHtlDPRH9qIC0JREH8+7nsRcjDl3Bxn2Xo/rvAaVvixH5275jHwg0C85g4QsF4P6M2ojfScPPAl+pLAg==} + engines: {node: '>=12.10.0'} + hasBin: true + + yeoman-generator@5.10.0: + resolution: {integrity: sha512-iDUKykV7L4nDNzeYSedRmSeJ5eMYFucnKDi6KN1WNASXErgPepKqsQw55TgXPHnmpcyOh2Dd/LAZkyc+f0qaAw==} + engines: {node: '>=12.10.0'} + peerDependencies: + yeoman-environment: ^3.2.0 + peerDependenciesMeta: + yeoman-environment: + optional: true + + yeoman-test@6.3.0: + resolution: {integrity: sha512-FpaLV5AiVFlYe4pizAB/QLWc+5BSyttk/TcFQfi/r8g/rz290uqEkV4waN3rHEvP/DCmoMNSJykKTZNWL2y07g==} + engines: {node: '>=12.10.0'} + peerDependencies: + mem-fs: ^2.1.0 + yeoman-environment: ^3.3.0 + yeoman-generator: '*' + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yocto-queue@1.1.1: + resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + engines: {node: '>=12.20'} + + z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + + zod@3.23.8: + resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} + + zwitch@2.0.4: + resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} + +snapshots: + + '@adobe/css-tools@4.4.0': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@babel/code-frame@7.10.4': + dependencies: + '@babel/highlight': 7.25.9 + + '@babel/code-frame@7.26.0': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.26.0': {} + + '@babel/core@7.26.0': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + convert-source-map: 2.0.0 + debug: 4.3.4(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/eslint-parser@7.22.15(@babel/core@7.26.0)(eslint@8.57.1)': + dependencies: + '@babel/core': 7.26.0 + '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 + eslint: 8.57.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.1 + + '@babel/generator@7.26.0': + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.0.2 + + '@babel/helper-annotate-as-pure@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-compilation-targets@7.25.9': + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/traverse': 7.25.9 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + regexpu-core: 6.1.1 + semver: 6.3.1 + + '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + debug: 4.3.4(supports-color@8.1.1) + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-member-expression-to-functions@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.25.9': + dependencies: + '@babel/types': 7.26.0 + + '@babel/helper-plugin-utils@7.25.9': {} + + '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-wrap-function': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-replace-supers@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-member-expression-to-functions': 7.25.9 + '@babel/helper-optimise-call-expression': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.25.9': + dependencies: + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.25.9': {} + + '@babel/helper-validator-identifier@7.25.9': {} + + '@babel/helper-validator-option@7.25.9': {} + + '@babel/helper-wrap-function@7.25.9': + dependencies: + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/helpers@7.26.0': + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + + '@babel/highlight@7.25.9': + dependencies: + '@babel/helper-validator-identifier': 7.25.9 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/parser@7.26.1': + dependencies: + '@babel/types': 7.26.0 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-decorators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-decorators': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-export-default-from@7.18.10(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-export-default-from': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.26.0) + + '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + + '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + + '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-proposal-throw-expressions@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-throw-expressions': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-decorators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-export-default-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-throw-expressions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-async-generator-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-classes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + '@babel/traverse': 7.25.9 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.25.9 + + '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-flow-strip-types@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) + + '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-simple-access': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + + '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-replace-supers': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-jsx-self@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-react-jsx-source@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + regenerator-transform: 0.15.2 + + '@babel/plugin-transform-regexp-modifiers@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-runtime@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-spread@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-typescript@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.26.0) + '@babel/helper-plugin-utils': 7.25.9 + + '@babel/preset-env@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/core': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.0) + '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-generator-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-regexp-modifiers': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.26.0) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.0) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) + babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.38.1 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.20.5 + esutils: 2.0.3 + + '@babel/preset-react@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime-corejs3@7.26.0': + dependencies: + core-js-pure: 3.38.1 + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.20.6': + dependencies: + regenerator-runtime: 0.13.11 + + '@babel/runtime@7.26.0': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.4(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.20.5': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + to-fast-properties: 2.0.0 + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@base2/pretty-print-object@1.0.1': {} + + '@bcoe/v8-coverage@0.2.3': {} + + '@cnakazawa/watch@1.0.4': + dependencies: + exec-sh: 0.3.6 + minimist: 1.2.8 + + '@colors/colors@1.5.0': + optional: true + + '@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/media-query-list-parser@3.0.1(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/selector-specificity@4.0.0(postcss-selector-parser@6.1.2)': + dependencies: + postcss-selector-parser: 6.1.2 + + '@cypress/request@3.0.5': + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 4.0.1 + http-signature: 1.4.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.13.0 + safe-buffer: 5.2.1 + tough-cookie: 4.1.4 + tunnel-agent: 0.6.0 + uuid: 8.3.2 + + '@cypress/xvfb@1.2.4(supports-color@8.1.1)': + dependencies: + debug: 3.2.7(supports-color@8.1.1) + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + + '@discoveryjs/json-ext@0.5.7': {} + + '@dnd-kit/accessibility@3.1.0(react@18.2.0)': + dependencies: + react: 18.2.0 + tslib: 2.8.0 + + '@dnd-kit/core@6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@dnd-kit/accessibility': 3.1.0(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.8.0 + + '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)': + dependencies: + '@dnd-kit/core': 6.0.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@dnd-kit/utilities': 3.2.2(react@18.2.0) + react: 18.2.0 + tslib: 2.8.0 + + '@dnd-kit/utilities@3.2.2(react@18.2.0)': + dependencies: + react: 18.2.0 + tslib: 2.8.0 + + '@dual-bundle/import-meta-resolve@4.1.0': {} + + '@emotion/babel-plugin@11.12.0': + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/runtime': 7.20.6 + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/serialize': 1.3.2 + babel-plugin-macros: 3.1.0 + convert-source-map: 1.9.0 + escape-string-regexp: 4.0.0 + find-root: 1.1.0 + source-map: 0.5.7 + stylis: 4.2.0 + transitivePeerDependencies: + - supports-color + + '@emotion/cache@11.13.1': + dependencies: + '@emotion/memoize': 0.9.0 + '@emotion/sheet': 1.4.0 + '@emotion/utils': 1.4.1 + '@emotion/weak-memoize': 0.4.0 + stylis: 4.2.0 + + '@emotion/hash@0.9.2': {} + + '@emotion/memoize@0.9.0': {} + + '@emotion/react@11.13.3(@types/react@18.2.27)(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@emotion/babel-plugin': 11.12.0 + '@emotion/cache': 11.13.1 + '@emotion/serialize': 1.3.2 + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.2.0) + '@emotion/utils': 1.4.1 + '@emotion/weak-memoize': 0.4.0 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.27 + transitivePeerDependencies: + - supports-color + + '@emotion/serialize@1.3.2': + dependencies: + '@emotion/hash': 0.9.2 + '@emotion/memoize': 0.9.0 + '@emotion/unitless': 0.10.0 + '@emotion/utils': 1.4.1 + csstype: 3.1.3 + + '@emotion/sheet@1.4.0': {} + + '@emotion/unitless@0.10.0': {} + + '@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@emotion/utils@1.4.1': {} + + '@emotion/weak-memoize@0.4.0': {} + + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/aix-ppc64@0.24.0': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.24.0': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-arm@0.24.0': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/android-x64@0.24.0': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.24.0': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.24.0': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.24.0': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.24.0': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.24.0': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-arm@0.24.0': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.24.0': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.24.0': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.24.0': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.24.0': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.24.0': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.24.0': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/linux-x64@0.24.0': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.24.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.24.0': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.24.0': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.24.0': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.24.0': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.24.0': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@esbuild/win32-x64@0.24.0': + optional: true + + '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': + dependencies: + eslint: 8.57.1 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.2': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.1': {} + + '@fiverr/afterbuild-webpack-plugin@1.0.0': {} + + '@fluentui/react-component-event-listener@0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@fluentui/react-component-ref@0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 16.13.1 + + '@formatjs/ecma402-abstract@2.2.1': + dependencies: + '@formatjs/fast-memoize': 2.2.2 + '@formatjs/intl-localematcher': 0.5.6 + tslib: 2.8.0 + + '@formatjs/fast-memoize@2.2.2': + dependencies: + tslib: 2.8.0 + + '@formatjs/icu-messageformat-parser@2.9.1': + dependencies: + '@formatjs/ecma402-abstract': 2.2.1 + '@formatjs/icu-skeleton-parser': 1.8.5 + tslib: 2.8.0 + + '@formatjs/icu-skeleton-parser@1.8.5': + dependencies: + '@formatjs/ecma402-abstract': 2.2.1 + tslib: 2.8.0 + + '@formatjs/intl-displaynames@1.2.10': + dependencies: + '@formatjs/intl-utils': 2.3.0 + + '@formatjs/intl-listformat@1.4.8': + dependencies: + '@formatjs/intl-utils': 2.3.0 + + '@formatjs/intl-localematcher@0.5.6': + dependencies: + tslib: 2.8.0 + + '@formatjs/intl-relativetimeformat@4.5.16': + dependencies: + '@formatjs/intl-utils': 2.3.0 + + '@formatjs/intl-unified-numberformat@3.3.7': + dependencies: + '@formatjs/intl-utils': 2.3.0 + + '@formatjs/intl-utils@2.3.0': {} + + '@gar/promisify@1.1.3': {} + + '@hapi/hoek@9.3.0': {} + + '@hapi/topo@5.1.0': + dependencies: + '@hapi/hoek': 9.3.0 + + '@humanwhocodes/config-array@0.13.0': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.4(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@iarna/toml@2.2.5': {} + + '@internationalized/date@3.5.6': + dependencies: + '@swc/helpers': 0.5.13 + + '@internationalized/message@3.1.5': + dependencies: + '@swc/helpers': 0.5.13 + intl-messageformat: 10.7.3 + + '@internationalized/number@3.5.4': + dependencies: + '@swc/helpers': 0.5.13 + + '@internationalized/string@3.2.4': + dependencies: + '@swc/helpers': 0.5.13 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/string-locale-compare@1.1.0': {} + + '@istanbuljs/load-nyc-config@1.1.0': + dependencies: + camelcase: 5.3.1 + find-up: 4.1.0 + get-package-type: 0.1.0 + js-yaml: 3.14.1 + resolve-from: 5.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@jest/console@24.9.0': + dependencies: + '@jest/source-map': 24.9.0 + chalk: 2.4.2 + slash: 2.0.0 + + '@jest/console@26.6.2': + dependencies: + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + chalk: 4.1.2 + jest-message-util: 26.6.2 + jest-util: 26.6.2 + slash: 3.0.0 + + '@jest/core@24.9.0': + dependencies: + '@jest/console': 24.9.0 + '@jest/reporters': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + ansi-escapes: 3.2.0 + chalk: 2.4.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 24.9.0 + jest-config: 24.9.0 + jest-haste-map: 24.9.0 + jest-message-util: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-resolve-dependencies: 24.9.0 + jest-runner: 24.9.0 + jest-runtime: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + jest-watcher: 24.9.0 + micromatch: 3.1.10 + p-each-series: 1.0.0 + realpath-native: 1.1.0 + rimraf: 2.7.1 + slash: 2.0.0 + strip-ansi: 5.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@jest/core@26.6.3': + dependencies: + '@jest/console': 26.6.2 + '@jest/reporters': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 26.6.2 + jest-config: 26.6.3 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-resolve-dependencies: 26.6.3 + jest-runner: 26.6.3 + jest-runtime: 26.6.3 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + jest-watcher: 26.6.2 + micromatch: 4.0.8 + p-each-series: 2.2.0 + rimraf: 3.0.2 + slash: 3.0.0 + strip-ansi: 6.0.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/environment@24.9.0': + dependencies: + '@jest/fake-timers': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + transitivePeerDependencies: + - supports-color + + '@jest/environment@26.6.2': + dependencies: + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + jest-mock: 26.6.2 + + '@jest/environment@29.7.0': + dependencies: + '@jest/fake-timers': 29.7.0 + '@jest/types': 29.6.3 + '@types/node': 22.8.1 + jest-mock: 29.7.0 + + '@jest/expect-utils@29.7.0': + dependencies: + jest-get-type: 29.6.3 + + '@jest/expect@29.7.0': + dependencies: + expect: 29.7.0 + jest-snapshot: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@24.9.0': + dependencies: + '@jest/types': 24.9.0 + jest-message-util: 24.9.0 + jest-mock: 24.9.0 + transitivePeerDependencies: + - supports-color + + '@jest/fake-timers@26.6.2': + dependencies: + '@jest/types': 26.6.2 + '@sinonjs/fake-timers': 6.0.1 + '@types/node': 22.8.1 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-util: 26.6.2 + + '@jest/fake-timers@29.7.0': + dependencies: + '@jest/types': 29.6.3 + '@sinonjs/fake-timers': 10.3.0 + '@types/node': 22.8.1 + jest-message-util: 29.7.0 + jest-mock: 29.7.0 + jest-util: 29.7.0 + + '@jest/globals@26.6.2': + dependencies: + '@jest/environment': 26.6.2 + '@jest/types': 26.6.2 + expect: 26.6.2 + + '@jest/globals@29.7.0': + dependencies: + '@jest/environment': 29.7.0 + '@jest/expect': 29.7.0 + '@jest/types': 29.6.3 + jest-mock: 29.7.0 + transitivePeerDependencies: + - supports-color + + '@jest/reporters@24.9.0': + dependencies: + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + glob: 7.1.6 + istanbul-lib-coverage: 2.0.5 + istanbul-lib-instrument: 3.3.0 + istanbul-lib-report: 2.0.8 + istanbul-lib-source-maps: 3.0.6 + istanbul-reports: 2.2.7 + jest-haste-map: 24.9.0 + jest-resolve: 24.9.0 + jest-runtime: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + node-notifier: 5.4.5 + slash: 2.0.0 + source-map: 0.6.1 + string-length: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@jest/reporters@26.6.2': + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@jest/console': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.1.6 + graceful-fs: 4.2.11 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-instrument: 4.0.3 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 4.0.1 + istanbul-reports: 3.1.7 + jest-haste-map: 26.6.2 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + slash: 3.0.0 + source-map: 0.6.1 + string-length: 4.0.2 + terminal-link: 2.1.1 + v8-to-istanbul: 7.1.2 + optionalDependencies: + node-notifier: 8.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/schemas@29.6.3': + dependencies: + '@sinclair/typebox': 0.27.8 + + '@jest/source-map@24.9.0': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/source-map@26.6.2': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + + '@jest/test-result@24.9.0': + dependencies: + '@jest/console': 24.9.0 + '@jest/types': 24.9.0 + '@types/istanbul-lib-coverage': 2.0.6 + + '@jest/test-result@26.6.2': + dependencies: + '@jest/console': 26.6.2 + '@jest/types': 26.6.2 + '@types/istanbul-lib-coverage': 2.0.6 + collect-v8-coverage: 1.0.2 + + '@jest/test-sequencer@24.9.0': + dependencies: + '@jest/test-result': 24.9.0 + jest-haste-map: 24.9.0 + jest-runner: 24.9.0 + jest-runtime: 24.9.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@jest/test-sequencer@26.6.3': + dependencies: + '@jest/test-result': 26.6.2 + graceful-fs: 4.2.11 + jest-haste-map: 26.6.2 + jest-runner: 26.6.3 + jest-runtime: 26.6.3 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + '@jest/transform@24.9.0': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 24.9.0 + babel-plugin-istanbul: 5.2.0 + chalk: 2.4.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 24.9.0 + jest-regex-util: 24.9.0 + jest-util: 24.9.0 + micromatch: 3.1.10 + pirates: 4.0.6 + realpath-native: 1.1.0 + slash: 2.0.0 + source-map: 0.6.1 + write-file-atomic: 2.4.1 + transitivePeerDependencies: + - supports-color + + '@jest/transform@26.6.2': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 26.6.2 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 26.6.2 + jest-regex-util: 26.0.0 + jest-util: 26.6.2 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + source-map: 0.6.1 + write-file-atomic: 3.0.3 + transitivePeerDependencies: + - supports-color + + '@jest/transform@29.7.0': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 29.6.3 + '@jridgewell/trace-mapping': 0.3.25 + babel-plugin-istanbul: 6.1.1 + chalk: 4.1.2 + convert-source-map: 2.0.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 29.7.0 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + micromatch: 4.0.8 + pirates: 4.0.6 + slash: 3.0.0 + write-file-atomic: 4.0.2 + transitivePeerDependencies: + - supports-color + + '@jest/types@24.9.0': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 1.1.2 + '@types/yargs': 13.0.12 + + '@jest/types@25.5.0': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 1.1.2 + '@types/yargs': 15.0.19 + chalk: 3.0.0 + + '@jest/types@26.6.2': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.8.1 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + + '@jest/types@29.6.3': + dependencies: + '@jest/schemas': 29.6.3 + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports': 3.0.4 + '@types/node': 22.8.1 + '@types/yargs': 17.0.33 + chalk: 4.1.2 + + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + glob: 7.2.3 + glob-promise: 4.2.2(glob@7.2.3) + magic-string: 0.27.0 + react-docgen-typescript: 2.2.2(typescript@5.6.3) + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + optionalDependencies: + typescript: 5.6.3 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@juggle/resize-observer@3.4.0': {} + + '@kwsites/file-exists@1.1.1': + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@kwsites/promise-deferred@1.1.1': {} + + '@leichtgewicht/ip-codec@2.0.5': {} + + '@lezer/common@1.2.3': {} + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@ljharb/through@2.3.13': + dependencies: + call-bind: 1.0.7 + + '@lmdb/lmdb-darwin-arm64@2.8.5': + optional: true + + '@lmdb/lmdb-darwin-x64@2.8.5': + optional: true + + '@lmdb/lmdb-linux-arm64@2.8.5': + optional: true + + '@lmdb/lmdb-linux-arm@2.8.5': + optional: true + + '@lmdb/lmdb-linux-x64@2.8.5': + optional: true + + '@lmdb/lmdb-win32-x64@2.8.5': + optional: true + + '@loadable/babel-plugin@5.13.2(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + + '@loadable/component@5.14.1(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 16.13.1 + + '@loadable/server@5.14.0(@loadable/component@5.14.1(react@18.2.0))(react@18.2.0)': + dependencies: + '@loadable/component': 5.14.1(react@18.2.0) + lodash: 4.17.21 + react: 18.2.0 + + '@loadable/webpack-plugin@5.15.2(webpack@5.90.1)': + dependencies: + make-dir: 3.1.0 + webpack: 5.90.1 + + '@mdx-js/react@3.1.0(@types/react@18.2.27)(react@18.2.0)': + dependencies: + '@types/mdx': 2.0.13 + '@types/react': 18.2.27 + react: 18.2.0 + + '@microsoft/api-extractor-model@7.28.13(@types/node@22.8.1)': + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@22.8.1) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.43.0(@types/node@22.8.1)': + dependencies: + '@microsoft/api-extractor-model': 7.28.13(@types/node@22.8.1) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@22.8.1) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0(@types/node@22.8.1) + '@rushstack/ts-command-line': 4.19.1(@types/node@22.8.1) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.16.2': + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + + '@microsoft/tsdoc@0.14.2': {} + + '@mischnic/json-sourcemap@0.1.1': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/lr': 1.4.2 + json5: 2.2.3 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': + optional: true + + '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': + dependencies: + eslint-scope: 5.1.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@nolyfill/is-core-module@1.0.39': {} + + '@npmcli/arborist@4.3.1': + dependencies: + '@isaacs/string-locale-compare': 1.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/map-workspaces': 2.0.4 + '@npmcli/metavuln-calculator': 2.0.0 + '@npmcli/move-file': 1.1.2 + '@npmcli/name-from-folder': 1.0.1 + '@npmcli/node-gyp': 1.0.3 + '@npmcli/package-json': 1.0.1 + '@npmcli/run-script': 2.0.0 + bin-links: 3.0.3 + cacache: 15.3.0 + common-ancestor-path: 1.0.1 + json-parse-even-better-errors: 2.3.1 + json-stringify-nice: 1.1.4 + mkdirp: 1.0.4 + mkdirp-infer-owner: 2.0.0 + npm-install-checks: 4.0.0 + npm-package-arg: 8.1.5 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 12.0.2 + pacote: 12.0.3 + parse-conflict-json: 2.0.2 + proc-log: 1.0.0 + promise-all-reject-late: 1.0.1 + promise-call-limit: 1.0.2 + read-package-json-fast: 2.0.3 + readdir-scoped-modules: 1.1.0 + rimraf: 3.0.2 + semver: 7.6.3 + ssri: 8.0.1 + treeverse: 1.0.4 + walk-up-path: 1.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + + '@npmcli/fs@1.1.1': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.3 + + '@npmcli/fs@2.1.2': + dependencies: + '@gar/promisify': 1.1.3 + semver: 7.6.3 + + '@npmcli/fs@3.1.1': + dependencies: + semver: 7.6.3 + + '@npmcli/git@2.1.0': + dependencies: + '@npmcli/promise-spawn': 1.3.2 + lru-cache: 6.0.0 + mkdirp: 1.0.4 + npm-pick-manifest: 6.1.1 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.3 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + + '@npmcli/git@4.1.0': + dependencies: + '@npmcli/promise-spawn': 6.0.2 + lru-cache: 7.18.3 + npm-pick-manifest: 8.0.2 + proc-log: 3.0.0 + promise-inflight: 1.0.1 + promise-retry: 2.0.1 + semver: 7.6.3 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + + '@npmcli/installed-package-contents@1.0.7': + dependencies: + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + + '@npmcli/installed-package-contents@2.1.0': + dependencies: + npm-bundled: 3.0.1 + npm-normalize-package-bin: 3.0.1 + + '@npmcli/map-workspaces@2.0.4': + dependencies: + '@npmcli/name-from-folder': 1.0.1 + glob: 8.1.0 + minimatch: 5.1.6 + read-package-json-fast: 2.0.3 + + '@npmcli/metavuln-calculator@2.0.0': + dependencies: + cacache: 15.3.0 + json-parse-even-better-errors: 2.3.1 + pacote: 12.0.3 + semver: 7.6.3 + transitivePeerDependencies: + - bluebird + - supports-color + + '@npmcli/move-file@1.1.2': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@npmcli/move-file@2.0.1': + dependencies: + mkdirp: 1.0.4 + rimraf: 3.0.2 + + '@npmcli/name-from-folder@1.0.1': {} + + '@npmcli/node-gyp@1.0.3': {} + + '@npmcli/node-gyp@3.0.0': {} + + '@npmcli/package-json@1.0.1': + dependencies: + json-parse-even-better-errors: 2.3.1 + + '@npmcli/promise-spawn@1.3.2': + dependencies: + infer-owner: 1.0.4 + + '@npmcli/promise-spawn@6.0.2': + dependencies: + which: 3.0.1 + + '@npmcli/run-script@2.0.0': + dependencies: + '@npmcli/node-gyp': 1.0.3 + '@npmcli/promise-spawn': 1.3.2 + node-gyp: 8.4.1 + read-package-json-fast: 2.0.3 + transitivePeerDependencies: + - bluebird + - supports-color + + '@npmcli/run-script@6.0.2': + dependencies: + '@npmcli/node-gyp': 3.0.0 + '@npmcli/promise-spawn': 6.0.2 + node-gyp: 9.4.1 + read-package-json-fast: 3.0.2 + which: 3.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + '@octokit/auth-token@2.5.0': + dependencies: + '@octokit/types': 6.41.0 + + '@octokit/auth-token@3.0.4': {} + + '@octokit/auth-token@4.0.0': {} + + '@octokit/core@3.6.0(encoding@0.1.13)': + dependencies: + '@octokit/auth-token': 2.5.0 + '@octokit/graphql': 4.8.0(encoding@0.1.13) + '@octokit/request': 5.6.3(encoding@0.1.13) + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/core@4.2.4(encoding@0.1.13)': + dependencies: + '@octokit/auth-token': 3.0.4 + '@octokit/graphql': 5.0.6(encoding@0.1.13) + '@octokit/request': 6.2.8(encoding@0.1.13) + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.3.2 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/core@5.2.0': + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.1.0 + '@octokit/request': 8.4.0 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.6.1 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + + '@octokit/endpoint@6.0.12': + dependencies: + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + + '@octokit/endpoint@7.0.6': + dependencies: + '@octokit/types': 9.3.2 + is-plain-object: 5.0.0 + universal-user-agent: 6.0.1 + + '@octokit/endpoint@9.0.5': + dependencies: + '@octokit/types': 13.6.1 + universal-user-agent: 6.0.1 + + '@octokit/graphql@4.8.0(encoding@0.1.13)': + dependencies: + '@octokit/request': 5.6.3(encoding@0.1.13) + '@octokit/types': 6.41.0 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/graphql@5.0.6(encoding@0.1.13)': + dependencies: + '@octokit/request': 6.2.8(encoding@0.1.13) + '@octokit/types': 9.3.2 + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/graphql@7.1.0': + dependencies: + '@octokit/request': 8.4.0 + '@octokit/types': 13.6.1 + universal-user-agent: 6.0.1 + + '@octokit/openapi-types@12.11.0': {} + + '@octokit/openapi-types@18.1.1': {} + + '@octokit/openapi-types@20.0.0': {} + + '@octokit/openapi-types@22.2.0': {} + + '@octokit/plugin-paginate-rest@2.21.3(@octokit/core@3.6.0(encoding@0.1.13))': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + '@octokit/types': 6.41.0 + + '@octokit/plugin-paginate-rest@6.1.2(@octokit/core@4.2.4(encoding@0.1.13))': + dependencies: + '@octokit/core': 4.2.4(encoding@0.1.13) + '@octokit/tsconfig': 1.0.2 + '@octokit/types': 9.3.2 + + '@octokit/plugin-paginate-rest@9.2.1(@octokit/core@5.2.0)': + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 12.6.0 + + '@octokit/plugin-request-log@1.0.4(@octokit/core@3.6.0(encoding@0.1.13))': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + + '@octokit/plugin-request-log@1.0.4(@octokit/core@4.2.4(encoding@0.1.13))': + dependencies: + '@octokit/core': 4.2.4(encoding@0.1.13) + + '@octokit/plugin-request-log@4.0.1(@octokit/core@5.2.0)': + dependencies: + '@octokit/core': 5.2.0 + + '@octokit/plugin-rest-endpoint-methods@10.4.1(@octokit/core@5.2.0)': + dependencies: + '@octokit/core': 5.2.0 + '@octokit/types': 12.6.0 + + '@octokit/plugin-rest-endpoint-methods@5.16.2(@octokit/core@3.6.0(encoding@0.1.13))': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + + '@octokit/plugin-rest-endpoint-methods@7.2.3(@octokit/core@4.2.4(encoding@0.1.13))': + dependencies: + '@octokit/core': 4.2.4(encoding@0.1.13) + '@octokit/types': 10.0.0 + + '@octokit/request-error@2.1.0': + dependencies: + '@octokit/types': 6.41.0 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request-error@3.0.3': + dependencies: + '@octokit/types': 9.3.2 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request-error@5.1.0': + dependencies: + '@octokit/types': 13.6.1 + deprecation: 2.3.1 + once: 1.4.0 + + '@octokit/request@5.6.3(encoding@0.1.13)': + dependencies: + '@octokit/endpoint': 6.0.12 + '@octokit/request-error': 2.1.0 + '@octokit/types': 6.41.0 + is-plain-object: 5.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/request@6.2.8(encoding@0.1.13)': + dependencies: + '@octokit/endpoint': 7.0.6 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.3.2 + is-plain-object: 5.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding + + '@octokit/request@8.4.0': + dependencies: + '@octokit/endpoint': 9.0.5 + '@octokit/request-error': 5.1.0 + '@octokit/types': 13.6.1 + universal-user-agent: 6.0.1 + + '@octokit/rest@18.12.0(encoding@0.1.13)': + dependencies: + '@octokit/core': 3.6.0(encoding@0.1.13) + '@octokit/plugin-paginate-rest': 2.21.3(@octokit/core@3.6.0(encoding@0.1.13)) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@3.6.0(encoding@0.1.13)) + '@octokit/plugin-rest-endpoint-methods': 5.16.2(@octokit/core@3.6.0(encoding@0.1.13)) + transitivePeerDependencies: + - encoding + + '@octokit/rest@19.0.13(encoding@0.1.13)': + dependencies: + '@octokit/core': 4.2.4(encoding@0.1.13) + '@octokit/plugin-paginate-rest': 6.1.2(@octokit/core@4.2.4(encoding@0.1.13)) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4(encoding@0.1.13)) + '@octokit/plugin-rest-endpoint-methods': 7.2.3(@octokit/core@4.2.4(encoding@0.1.13)) + transitivePeerDependencies: + - encoding + + '@octokit/rest@20.0.2': + dependencies: + '@octokit/core': 5.2.0 + '@octokit/plugin-paginate-rest': 9.2.1(@octokit/core@5.2.0) + '@octokit/plugin-request-log': 4.0.1(@octokit/core@5.2.0) + '@octokit/plugin-rest-endpoint-methods': 10.4.1(@octokit/core@5.2.0) + + '@octokit/tsconfig@1.0.2': {} + + '@octokit/types@10.0.0': + dependencies: + '@octokit/openapi-types': 18.1.1 + + '@octokit/types@12.6.0': + dependencies: + '@octokit/openapi-types': 20.0.0 + + '@octokit/types@13.6.1': + dependencies: + '@octokit/openapi-types': 22.2.0 + + '@octokit/types@6.41.0': + dependencies: + '@octokit/openapi-types': 12.11.0 + + '@octokit/types@9.3.2': + dependencies: + '@octokit/openapi-types': 18.1.1 + + '@parcel/bundler-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/graph': 3.2.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/cache@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/utils': 2.12.0 + lmdb: 2.8.5 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/cache@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/utils': 2.12.0 + lmdb: 2.8.5 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/codeframe@2.12.0': + dependencies: + chalk: 4.1.2 + + '@parcel/compressor-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': + dependencies: + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': + dependencies: + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + dependencies: + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/core@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/graph': 3.2.0 + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/profiler': 2.12.0 + '@parcel/rust': 2.12.0 + '@parcel/source-map': 2.1.1 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + abortcontroller-polyfill: 1.7.5 + base-x: 3.0.10 + browserslist: 4.24.2 + clone: 2.1.2 + dotenv: 7.0.0 + dotenv-expand: 5.1.0 + json5: 2.2.3 + msgpackr: 1.11.0 + nullthrows: 1.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/diagnostic@2.12.0': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + nullthrows: 1.1.1 + + '@parcel/events@2.12.0': {} + + '@parcel/fs@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + '@parcel/watcher': 2.4.1 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/fs@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/rust': 2.12.0 + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + '@parcel/watcher': 2.4.1 + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/graph@3.2.0': + dependencies: + nullthrows: 1.1.1 + + '@parcel/logger@2.12.0': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + + '@parcel/markdown-ansi@2.12.0': + dependencies: + chalk: 4.1.2 + + '@parcel/namer-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/node-resolver-core@3.3.0': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - '@parcel/core' + + '@parcel/node-resolver-core@3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + dependencies: + '@mischnic/json-sourcemap': 0.1.1 + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - '@parcel/core' + + '@parcel/optimizer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + browserslist: 4.24.2 + lightningcss: 1.27.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2) + nullthrows: 1.1.1 + posthtml: 0.16.6 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2) + nullthrows: 1.1.1 + posthtml: 0.16.6 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) + nullthrows: 1.1.1 + posthtml: 0.16.6 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + '@swc/core': 1.7.40(@swc/helpers@0.5.13) + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/optimizer-terser@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + terser: 5.36.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/package-manager@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@swc/core': 1.7.40(@swc/helpers@0.5.13) + semver: 7.6.3 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/package-manager@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/node-resolver-core': 3.3.0 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@swc/core': 1.7.40(@swc/helpers@0.5.13) + semver: 7.6.3 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/packager-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + lightningcss: 1.27.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + posthtml: 0.16.6 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/source-map': 2.1.1 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + globals: 13.24.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + posthtml: 0.16.6 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-ts@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-ts@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/packager-wasm@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/plugin@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/plugin@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/profiler@2.12.0': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + chrome-trace-event: 1.0.4 + + '@parcel/reporter-cli@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + term-size: 2.2.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/reporter-dev-server@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/reporter-tracer@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chrome-trace-event: 1.0.4 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/resolver-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/runtime-browser-hmr@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/runtime-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/runtime-react-refresh@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + react-error-overlay: 6.0.9 + react-refresh: 0.9.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/runtime-service-worker@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/rust@2.12.0': {} + + '@parcel/source-map@2.1.1': + dependencies: + detect-libc: 1.0.3 + + '@parcel/transformer-babel@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + browserslist: 4.24.2 + json5: 2.2.3 + nullthrows: 1.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-css@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + browserslist: 4.24.2 + lightningcss: 1.27.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-html@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + nullthrows: 1.1.1 + posthtml: 0.16.6 + posthtml-parser: 0.10.2 + posthtml-render: 3.0.0 + semver: 7.6.3 + srcset: 4.0.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/transformer-js@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/source-map': 2.1.1 + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@swc/helpers': 0.5.13 + browserslist: 4.24.2 + nullthrows: 1.1.1 + regenerator-runtime: 0.13.11 + semver: 7.6.3 + + '@parcel/transformer-json@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + json5: 2.2.3 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-postcss@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + clone: 2.1.2 + nullthrows: 1.1.1 + postcss-value-parser: 4.2.0 + semver: 7.6.3 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-posthtml@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + posthtml: 0.16.6 + posthtml-parser: 0.10.2 + posthtml-render: 3.0.0 + semver: 7.6.3 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-raw@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-react-refresh-wrap@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + react-refresh: 0.9.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-svg@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + nullthrows: 1.1.1 + posthtml: 0.16.6 + posthtml-parser: 0.10.2 + posthtml-render: 3.0.0 + semver: 7.6.3 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.2.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.2.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.4.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.6.3) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.6.3 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.2.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.2.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.4.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/ts-utils@2.12.0(typescript@5.2.2)': + dependencies: + nullthrows: 1.1.1 + typescript: 5.2.2 + + '@parcel/ts-utils@2.12.0(typescript@5.4.2)': + dependencies: + nullthrows: 1.1.1 + typescript: 5.4.2 + + '@parcel/ts-utils@2.12.0(typescript@5.6.3)': + dependencies: + nullthrows: 1.1.1 + typescript: 5.6.3 + + '@parcel/types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/cache': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + utility-types: 3.11.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/types@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/cache': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) + '@parcel/package-manager': 2.12.0(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + utility-types: 3.11.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/utils@2.12.0': + dependencies: + '@parcel/codeframe': 2.12.0 + '@parcel/diagnostic': 2.12.0 + '@parcel/logger': 2.12.0 + '@parcel/markdown-ansi': 2.12.0 + '@parcel/rust': 2.12.0 + '@parcel/source-map': 2.1.1 + chalk: 4.1.2 + nullthrows: 1.1.1 + + '@parcel/watcher-android-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-arm64@2.4.1': + optional: true + + '@parcel/watcher-darwin-x64@2.4.1': + optional: true + + '@parcel/watcher-freebsd-x64@2.4.1': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.4.1': + optional: true + + '@parcel/watcher-linux-x64-musl@2.4.1': + optional: true + + '@parcel/watcher-win32-arm64@2.4.1': + optional: true + + '@parcel/watcher-win32-ia32@2.4.1': + optional: true + + '@parcel/watcher-win32-x64@2.4.1': + optional: true + + '@parcel/watcher@2.4.1': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.4.1 + '@parcel/watcher-darwin-arm64': 2.4.1 + '@parcel/watcher-darwin-x64': 2.4.1 + '@parcel/watcher-freebsd-x64': 2.4.1 + '@parcel/watcher-linux-arm-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-glibc': 2.4.1 + '@parcel/watcher-linux-arm64-musl': 2.4.1 + '@parcel/watcher-linux-x64-glibc': 2.4.1 + '@parcel/watcher-linux-x64-musl': 2.4.1 + '@parcel/watcher-win32-arm64': 2.4.1 + '@parcel/watcher-win32-ia32': 2.4.1 + '@parcel/watcher-win32-x64': 2.4.1 + + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/logger': 2.12.0 + '@parcel/profiler': 2.12.0 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/workers@2.12.0(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/logger': 2.12.0 + '@parcel/profiler': 2.12.0 + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} + + '@plone/scripts@3.6.2': + dependencies: + '@babel/core': 7.26.0 + babel-plugin-react-intl: 5.1.17 + babel-preset-razzle: 4.2.17 + chalk: 4.1.2 + commander: 8.2.0 + comment-json: 4.2.5 + execa: 0.6.3 + find-parent-dir: 0.3.1 + fs-extra: 10.1.0 + git-url-parse: 13.1.1 + glob: 7.1.6 + lodash: 4.17.21 + mrs-developer: 2.2.0 + pofile: 1.0.10 + wait-on: 7.2.0 + transitivePeerDependencies: + - debug + - supports-color + + '@pmmmwh/react-refresh-webpack-plugin@0.4.3(react-refresh@0.9.0)(sockjs-client@1.4.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1)': + dependencies: + ansi-html: 0.0.7 + error-stack-parser: 2.1.4 + html-entities: 1.4.0 + native-url: 0.2.6 + react-refresh: 0.9.0 + schema-utils: 2.7.1 + source-map: 0.7.4 + webpack: 5.90.1 + optionalDependencies: + sockjs-client: 1.4.0 + webpack-dev-server: 4.11.1(debug@4.3.2)(webpack@5.90.1) + webpack-hot-middleware: 2.26.1 + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@2.3.1': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@polka/url@1.0.0-next.28': {} + + '@popperjs/core@2.11.8': {} + + '@react-aria/accordion@3.0.0-alpha.35(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/button': 3.10.1(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/tree': 3.8.5(react@18.2.0) + '@react-types/accordion': 3.0.0-alpha.24(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/breadcrumbs@3.5.18(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/link': 3.7.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/breadcrumbs': 3.7.8(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/button@3.10.1(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/toggle': 3.7.8(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/calendar@3.5.13(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/calendar': 3.5.5(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/calendar': 3.4.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/checkbox@3.14.8(react@18.2.0)': + dependencies: + '@react-aria/form': 3.0.10(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/toggle': 3.10.9(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/checkbox': 3.6.9(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/toggle': 3.7.8(react@18.2.0) + '@react-types/checkbox': 3.8.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/collections@3.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + use-sync-external-store: 1.2.2(react@18.2.0) + + '@react-aria/color@3.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/numberfield': 3.11.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/slider': 3.7.13(react@18.2.0) + '@react-aria/spinbutton': 3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.14.10(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/visually-hidden': 3.8.17(react@18.2.0) + '@react-stately/color': 3.8.0(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-types/color': 3.0.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/combobox@3.10.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/listbox': 3.13.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/menu': 3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/overlays': 3.23.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.14.10(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/combobox': 3.10.0(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/combobox': 3.13.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/datepicker@3.11.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@internationalized/number': 3.5.4 + '@internationalized/string': 3.2.4 + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/form': 3.0.10(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/spinbutton': 3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/datepicker': 3.10.3(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/calendar': 3.4.10(react@18.2.0) + '@react-types/datepicker': 3.8.3(react@18.2.0) + '@react-types/dialog': 3.5.13(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/dialog@3.5.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/overlays': 3.23.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/dialog': 3.5.13(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/disclosure@3.0.0-alpha.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/button': 3.10.1(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/disclosure': 3.0.0-alpha.0(react@18.2.0) + '@react-stately/toggle': 3.7.8(react@18.2.0) + '@react-stately/tree': 3.8.5(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/dnd@3.7.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@internationalized/string': 3.2.4 + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/overlays': 3.23.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/dnd': 3.4.3(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/focus@3.18.4(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + clsx: 2.1.1 + react: 18.2.0 + + '@react-aria/form@3.0.10(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/grid@3.10.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/grid': 3.9.3(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-types/checkbox': 3.8.4(react@18.2.0) + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/gridlist@3.9.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/grid': 3.10.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-stately/tree': 3.8.5(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/i18n@3.12.3(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@internationalized/message': 3.1.5 + '@internationalized/number': 3.5.4 + '@internationalized/string': 3.2.4 + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/interactions@3.22.4(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/label@3.7.12(react@18.2.0)': + dependencies: + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/link@3.7.6(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/link': 3.5.8(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/listbox@3.13.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-types/listbox': 3.5.2(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/live-announcer@3.4.0': + dependencies: + '@swc/helpers': 0.5.13 + + '@react-aria/menu@3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/overlays': 3.23.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/menu': 3.8.3(react@18.2.0) + '@react-stately/tree': 3.8.5(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/menu': 3.9.12(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/meter@3.4.17(react@18.2.0)': + dependencies: + '@react-aria/progress': 3.4.17(react@18.2.0) + '@react-types/meter': 3.4.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/numberfield@3.11.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/spinbutton': 3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.14.10(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/numberfield': 3.9.7(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/numberfield': 3.8.6(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/overlays@3.23.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/visually-hidden': 3.8.17(react@18.2.0) + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/overlays': 3.8.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/progress@3.4.17(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/progress': 3.5.7(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/radio@3.10.9(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/form': 3.0.10(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/radio': 3.10.8(react@18.2.0) + '@react-types/radio': 3.8.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/searchfield@3.7.10(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/textfield': 3.14.10(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/searchfield': 3.5.7(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/searchfield': 3.5.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/select@3.14.11(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/form': 3.0.10(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/listbox': 3.13.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/menu': 3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/visually-hidden': 3.8.17(react@18.2.0) + '@react-stately/select': 3.6.8(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/select': 3.9.7(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/selection@3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/separator@3.4.3(react@18.2.0)': + dependencies: + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/slider@3.7.13(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/slider': 3.5.8(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/slider': 3.7.6(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/spinbutton@3.6.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/ssr@3.9.6(react@18.2.0)': + dependencies: + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/switch@3.6.9(react@18.2.0)': + dependencies: + '@react-aria/toggle': 3.10.9(react@18.2.0) + '@react-stately/toggle': 3.7.8(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/switch': 3.5.6(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/table@3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/grid': 3.10.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/visually-hidden': 3.8.17(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/flags': 3.0.4 + '@react-stately/table': 3.12.3(react@18.2.0) + '@react-types/checkbox': 3.8.4(react@18.2.0) + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/table': 3.10.2(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/tabs@3.9.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/tabs': 3.6.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/tabs': 3.3.10(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/tag@3.4.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/gridlist': 3.9.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/textfield@3.14.10(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/form': 3.0.10(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/textfield': 3.9.7(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/toggle@3.10.9(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/toggle': 3.7.8(react@18.2.0) + '@react-types/checkbox': 3.8.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/toolbar@3.0.0-beta.10(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/tooltip@3.7.9(react@18.2.0)': + dependencies: + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/tooltip': 3.4.13(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/tooltip': 3.4.12(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-aria/tree@3.0.0-beta.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/gridlist': 3.9.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/tree': 3.8.5(react@18.2.0) + '@react-types/button': 3.10.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/utils@3.25.3(react@18.2.0)': + dependencies: + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + clsx: 2.1.1 + react: 18.2.0 + + '@react-aria/virtualizer@4.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-stately/virtualizer': 4.1.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@react-aria/visually-hidden@3.8.17(react@18.2.0)': + dependencies: + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-spectrum/utils@3.11.11(react@18.2.0)': + dependencies: + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + clsx: 2.1.1 + react: 18.2.0 + + '@react-stately/calendar@3.5.5(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/calendar': 3.4.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/checkbox@3.6.9(react@18.2.0)': + dependencies: + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/checkbox': 3.8.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/collections@3.11.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/color@3.8.0(react@18.2.0)': + dependencies: + '@internationalized/number': 3.5.4 + '@internationalized/string': 3.2.4 + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/numberfield': 3.9.7(react@18.2.0) + '@react-stately/slider': 3.5.8(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/color': 3.0.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/combobox@3.10.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-stately/select': 3.6.8(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/combobox': 3.13.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/data@3.11.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/datepicker@3.10.3(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@internationalized/string': 3.2.4 + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/datepicker': 3.8.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/disclosure@3.0.0-alpha.0(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/dnd@3.4.3(react@18.2.0)': + dependencies: + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/flags@3.0.4': + dependencies: + '@swc/helpers': 0.5.13 + + '@react-stately/form@3.0.6(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/grid@3.9.3(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/layout@4.0.3(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/table': 3.12.3(react@18.2.0) + '@react-stately/virtualizer': 4.1.0(react@18.2.0) + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/table': 3.10.2(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/list@3.11.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/menu@3.8.3(react@18.2.0)': + dependencies: + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-types/menu': 3.9.12(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/numberfield@3.9.7(react@18.2.0)': + dependencies: + '@internationalized/number': 3.5.4 + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/numberfield': 3.8.6(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/overlays@3.6.11(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/overlays': 3.8.10(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/radio@3.10.8(react@18.2.0)': + dependencies: + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/radio': 3.8.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/searchfield@3.5.7(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/searchfield': 3.5.9(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/select@3.6.8(react@18.2.0)': + dependencies: + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-types/select': 3.9.7(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/selection@3.17.0(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/slider@3.5.8(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/slider': 3.7.6(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/table@3.12.3(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/flags': 3.0.4 + '@react-stately/grid': 3.9.3(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/table': 3.10.2(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/tabs@3.6.10(react@18.2.0)': + dependencies: + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/tabs': 3.3.10(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/toggle@3.7.8(react@18.2.0)': + dependencies: + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/checkbox': 3.8.4(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/tooltip@3.4.13(react@18.2.0)': + dependencies: + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-types/tooltip': 3.4.12(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/tree@3.8.5(react@18.2.0)': + dependencies: + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/utils@3.10.4(react@18.2.0)': + dependencies: + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-stately/virtualizer@4.1.0(react@18.2.0)': + dependencies: + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@swc/helpers': 0.5.13 + react: 18.2.0 + + '@react-types/accordion@3.0.0-alpha.24(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/breadcrumbs@3.7.8(react@18.2.0)': + dependencies: + '@react-types/link': 3.5.8(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/button@3.10.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/calendar@3.4.10(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/checkbox@3.8.4(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/color@3.0.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/slider': 3.7.6(react@18.2.0) + react: 18.2.0 + + '@react-types/combobox@3.13.0(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/datepicker@3.8.3(react@18.2.0)': + dependencies: + '@internationalized/date': 3.5.6 + '@react-types/calendar': 3.4.10(react@18.2.0) + '@react-types/overlays': 3.8.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/dialog@3.5.13(react@18.2.0)': + dependencies: + '@react-types/overlays': 3.8.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/form@3.7.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/grid@3.2.9(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/link@3.5.8(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/listbox@3.5.2(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/menu@3.9.12(react@18.2.0)': + dependencies: + '@react-types/overlays': 3.8.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/meter@3.4.4(react@18.2.0)': + dependencies: + '@react-types/progress': 3.5.7(react@18.2.0) + react: 18.2.0 + + '@react-types/numberfield@3.8.6(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/overlays@3.8.10(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/progress@3.5.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/radio@3.8.4(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/searchfield@3.5.9(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/textfield': 3.9.7(react@18.2.0) + react: 18.2.0 + + '@react-types/select@3.9.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/shared@3.25.0(react@18.2.0)': + dependencies: + react: 18.2.0 + + '@react-types/slider@3.7.6(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/switch@3.5.6(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/table@3.10.2(react@18.2.0)': + dependencies: + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/tabs@3.3.10(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/textfield@3.9.7(react@18.2.0)': + dependencies: + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@react-types/tooltip@3.4.12(react@18.2.0)': + dependencies: + '@react-types/overlays': 3.8.10(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + '@redux-devtools/extension@3.3.0(redux@4.2.1)': + dependencies: + '@babel/runtime': 7.26.0 + immutable: 4.3.7 + redux: 4.2.1 + + '@rollup/pluginutils@5.1.3(rollup@4.24.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/rollup-android-arm-eabi@4.24.0': + optional: true + + '@rollup/rollup-android-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.0': + optional: true + + '@rollup/rollup-darwin-x64@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.0': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.0': + optional: true + + '@rtsao/scc@1.1.0': {} + + '@rushstack/eslint-patch@1.10.4': {} + + '@rushstack/node-core-library@4.0.2(@types/node@22.8.1)': + dependencies: + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.8 + semver: 7.5.4 + z-schema: 5.0.5 + optionalDependencies: + '@types/node': 22.8.1 + + '@rushstack/rig-package@0.5.2': + dependencies: + resolve: 1.22.8 + strip-json-comments: 3.1.1 + + '@rushstack/terminal@0.10.0(@types/node@22.8.1)': + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@22.8.1) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 22.8.1 + + '@rushstack/ts-command-line@4.19.1(@types/node@22.8.1)': + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@22.8.1) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@semantic-ui-react/event-stack@3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + exenv: 1.2.2 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@seznam/compose-react-refs@1.0.6': {} + + '@sheerun/mutationobserver-shim@0.3.3': {} + + '@sideway/address@4.1.5': + dependencies: + '@hapi/hoek': 9.3.0 + + '@sideway/formula@3.0.1': {} + + '@sideway/pinpoint@2.0.0': {} + + '@sigstore/bundle@1.1.0': + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + + '@sigstore/protobuf-specs@0.2.1': {} + + '@sigstore/sign@1.0.0': + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + + '@sigstore/tuf@1.0.3': + dependencies: + '@sigstore/protobuf-specs': 0.2.1 + tuf-js: 1.1.7 + transitivePeerDependencies: + - supports-color + + '@sinclair/typebox@0.27.8': {} + + '@sindresorhus/is@0.14.0': {} + + '@sindresorhus/is@5.6.0': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sinonjs/commons@1.8.6': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/commons@3.0.1': + dependencies: + type-detect: 4.0.8 + + '@sinonjs/fake-timers@10.3.0': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@sinonjs/fake-timers@11.3.1': + dependencies: + '@sinonjs/commons': 3.0.1 + + '@sinonjs/fake-timers@6.0.1': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@sinonjs/fake-timers@7.1.2': + dependencies: + '@sinonjs/commons': 1.8.6 + + '@sinonjs/samsam@6.1.3': + dependencies: + '@sinonjs/commons': 1.8.6 + lodash.get: 4.4.2 + type-detect: 4.1.0 + + '@sinonjs/text-encoding@0.7.3': {} + + '@storybook/addon-actions@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 8.3.6 + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + lodash: 4.17.21 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.3.6(storybook@8.3.6)(webpack-sources@3.2.3)': + dependencies: + '@mdx-js/react': 3.1.0(@types/react@18.2.27)(react@18.2.0) + '@storybook/blocks': 8.3.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6) + '@storybook/csf-plugin': 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) + '@storybook/global': 5.0.0 + '@storybook/react-dom-shim': 8.3.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6) + '@types/react': 18.2.27 + fs-extra: 11.2.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + rehype-external-links: 3.0.0 + rehype-slug: 6.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - webpack-sources + + '@storybook/addon-essentials@8.3.6(storybook@8.3.6)(webpack-sources@3.2.3)': + dependencies: + '@storybook/addon-actions': 8.3.6(storybook@8.3.6) + '@storybook/addon-backgrounds': 8.3.6(storybook@8.3.6) + '@storybook/addon-controls': 8.3.6(storybook@8.3.6) + '@storybook/addon-docs': 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) + '@storybook/addon-highlight': 8.3.6(storybook@8.3.6) + '@storybook/addon-measure': 8.3.6(storybook@8.3.6) + '@storybook/addon-outline': 8.3.6(storybook@8.3.6) + '@storybook/addon-toolbars': 8.3.6(storybook@8.3.6) + '@storybook/addon-viewport': 8.3.6(storybook@8.3.6) + storybook: 8.3.6 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - webpack-sources + + '@storybook/addon-highlight@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.3.6 + + '@storybook/addon-interactions@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.6(storybook@8.3.6) + '@storybook/test': 8.3.6(storybook@8.3.6) + polished: 4.3.1 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-links@8.3.6(react@18.2.0)(storybook@8.3.6)': + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + optionalDependencies: + react: 18.2.0 + + '@storybook/addon-mdx-gfm@8.3.6(storybook@8.3.6)': + dependencies: + remark-gfm: 4.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + + '@storybook/addon-measure@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.3.6 + tiny-invariant: 1.3.3 + + '@storybook/addon-outline@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/addon-viewport@8.3.6(storybook@8.3.6)': + dependencies: + memoizerific: 1.11.3 + storybook: 8.3.6 + + '@storybook/addon-webpack5-compiler-babel@3.0.3(webpack@5.90.1)': + dependencies: + '@babel/core': 7.26.0 + babel-loader: 9.2.1(@babel/core@7.26.0)(webpack@5.90.1) + transitivePeerDependencies: + - supports-color + - webpack + + '@storybook/blocks@8.3.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)': + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/icons': 1.2.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@types/lodash': 4.17.12 + color-convert: 2.0.1 + dequal: 2.0.3 + lodash: 4.17.21 + markdown-to-jsx: 7.5.0(react@18.2.0) + memoizerific: 1.11.3 + polished: 4.3.1 + react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + storybook: 8.3.6 + telejson: 7.2.0 + ts-dedent: 2.2.0 + util-deprecate: 1.0.2 + optionalDependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@storybook/builder-vite@8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + '@storybook/csf-plugin': 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) + '@types/find-cache-dir': 3.2.1 + browser-assert: 1.2.1 + es-module-lexer: 1.5.4 + express: 4.19.2 + find-cache-dir: 3.3.2 + fs-extra: 11.2.0 + magic-string: 0.30.12 + storybook: 8.3.6 + ts-dedent: 2.2.0 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + - webpack-sources + + '@storybook/builder-webpack5@8.3.6(storybook@8.3.6)(typescript@5.6.3)': + dependencies: + '@storybook/core-webpack': 8.3.6(storybook@8.3.6) + '@types/node': 22.8.1 + '@types/semver': 7.5.8 + browser-assert: 1.2.1 + case-sensitive-paths-webpack-plugin: 2.4.0 + cjs-module-lexer: 1.4.1 + constants-browserify: 1.0.0 + css-loader: 6.11.0(webpack@5.90.1) + es-module-lexer: 1.5.4 + express: 4.19.2 + fork-ts-checker-webpack-plugin: 8.0.0(typescript@5.6.3)(webpack@5.90.1) + fs-extra: 11.2.0 + html-webpack-plugin: 5.5.0(webpack@5.90.1) + magic-string: 0.30.12 + path-browserify: 1.0.1 + process: 0.11.10 + semver: 7.6.3 + storybook: 8.3.6 + style-loader: 3.3.1(webpack@5.90.1) + terser-webpack-plugin: 5.3.6(webpack@5.90.1) + ts-dedent: 2.2.0 + url: 0.11.4 + util: 0.12.5 + util-deprecate: 1.0.2 + webpack: 5.90.1 + webpack-dev-middleware: 6.1.3(webpack@5.90.1) + webpack-hot-middleware: 2.26.1 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - '@rspack/core' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@storybook/components@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/core-webpack@8.3.6(storybook@8.3.6)': + dependencies: + '@types/node': 22.8.1 + storybook: 8.3.6 + ts-dedent: 2.2.0 + + '@storybook/core@8.3.6': + dependencies: + '@storybook/csf': 0.1.11 + '@types/express': 4.17.21 + better-opn: 3.0.2 + browser-assert: 1.2.1 + esbuild: 0.23.1 + esbuild-register: 3.6.0(esbuild@0.23.1) + express: 4.19.2 + jsdoc-type-pratt-parser: 4.1.0 + process: 0.11.10 + recast: 0.23.9 + semver: 7.6.3 + util: 0.12.5 + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@storybook/csf-plugin@8.3.6(storybook@8.3.6)(webpack-sources@3.2.3)': + dependencies: + storybook: 8.3.6 + unplugin: 1.14.1(webpack-sources@3.2.3) + transitivePeerDependencies: + - webpack-sources + + '@storybook/csf@0.0.1': + dependencies: + lodash: 4.17.21 + + '@storybook/csf@0.1.11': + dependencies: + type-fest: 2.19.0 + + '@storybook/global@5.0.0': {} + + '@storybook/icons@1.2.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@storybook/instrumenter@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/global': 5.0.0 + '@vitest/utils': 2.1.3 + storybook: 8.3.6 + util: 0.12.5 + + '@storybook/manager-api@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/preset-react-webpack@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3)': + dependencies: + '@storybook/core-webpack': 8.3.6(storybook@8.3.6) + '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.90.1) + '@types/node': 22.8.1 + '@types/semver': 7.5.8 + find-up: 5.0.0 + fs-extra: 11.2.0 + magic-string: 0.30.12 + react: 18.2.0 + react-docgen: 7.1.0 + react-dom: 18.2.0(react@18.2.0) + resolve: 1.22.8 + semver: 7.6.3 + storybook: 8.3.6 + tsconfig-paths: 4.2.0 + webpack: 5.90.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - '@storybook/test' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@storybook/preview-api@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.90.1)': + dependencies: + debug: 4.3.4(supports-color@8.1.1) + endent: 2.1.0 + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.8 + react-docgen-typescript: 2.2.2(typescript@5.6.3) + tslib: 2.8.0 + typescript: 5.6.3 + webpack: 5.90.1 + transitivePeerDependencies: + - supports-color + + '@storybook/react-dom-shim@8.3.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)': + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 8.3.6 + + '@storybook/react-vite@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@rollup/pluginutils': 5.1.3(rollup@4.24.0) + '@storybook/builder-vite': 8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + find-up: 5.0.0 + magic-string: 0.30.12 + react: 18.2.0 + react-docgen: 7.1.0 + react-dom: 18.2.0(react@18.2.0) + resolve: 1.22.8 + storybook: 8.3.6 + tsconfig-paths: 4.2.0 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - '@preact/preset-vite' + - '@storybook/test' + - rollup + - supports-color + - typescript + - vite-plugin-glimmerx + - webpack-sources + + '@storybook/react-webpack5@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3)': + dependencies: + '@storybook/builder-webpack5': 8.3.6(storybook@8.3.6)(typescript@5.6.3) + '@storybook/preset-react-webpack': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) + '@types/node': 22.8.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + storybook: 8.3.6 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - '@rspack/core' + - '@storybook/test' + - '@swc/core' + - esbuild + - supports-color + - uglify-js + - webpack-cli + + '@storybook/react@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3)': + dependencies: + '@storybook/components': 8.3.6(storybook@8.3.6) + '@storybook/global': 5.0.0 + '@storybook/manager-api': 8.3.6(storybook@8.3.6) + '@storybook/preview-api': 8.3.6(storybook@8.3.6) + '@storybook/react-dom-shim': 8.3.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6) + '@storybook/theming': 8.3.6(storybook@8.3.6) + '@types/escodegen': 0.0.6 + '@types/estree': 0.0.51 + '@types/node': 22.8.1 + acorn: 7.4.1 + acorn-jsx: 5.3.2(acorn@7.4.1) + acorn-walk: 7.2.0 + escodegen: 2.1.0 + html-tags: 3.3.1 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-element-to-jsx-string: 15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + semver: 7.6.3 + storybook: 8.3.6 + ts-dedent: 2.2.0 + type-fest: 2.19.0 + util-deprecate: 1.0.2 + optionalDependencies: + '@storybook/test': 8.3.6(storybook@8.3.6) + typescript: 5.6.3 + + '@storybook/test@8.3.6(storybook@8.3.6)': + dependencies: + '@storybook/csf': 0.1.11 + '@storybook/global': 5.0.0 + '@storybook/instrumenter': 8.3.6(storybook@8.3.6) + '@testing-library/dom': 10.4.0 + '@testing-library/jest-dom': 6.5.0 + '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) + '@vitest/expect': 2.0.5 + '@vitest/spy': 2.0.5 + storybook: 8.3.6 + util: 0.12.5 + + '@storybook/theming@8.3.6(storybook@8.3.6)': + dependencies: + storybook: 8.3.6 + + '@swc/core-darwin-arm64@1.7.40': + optional: true + + '@swc/core-darwin-x64@1.7.40': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.40': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.40': + optional: true + + '@swc/core-linux-arm64-musl@1.7.40': + optional: true + + '@swc/core-linux-x64-gnu@1.7.40': + optional: true + + '@swc/core-linux-x64-musl@1.7.40': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.40': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.40': + optional: true + + '@swc/core-win32-x64-msvc@1.7.40': + optional: true + + '@swc/core@1.7.40(@swc/helpers@0.5.13)': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.13 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.40 + '@swc/core-darwin-x64': 1.7.40 + '@swc/core-linux-arm-gnueabihf': 1.7.40 + '@swc/core-linux-arm64-gnu': 1.7.40 + '@swc/core-linux-arm64-musl': 1.7.40 + '@swc/core-linux-x64-gnu': 1.7.40 + '@swc/core-linux-x64-musl': 1.7.40 + '@swc/core-win32-arm64-msvc': 1.7.40 + '@swc/core-win32-ia32-msvc': 1.7.40 + '@swc/core-win32-x64-msvc': 1.7.40 + '@swc/helpers': 0.5.13 + + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.13': + dependencies: + tslib: 2.8.0 + + '@swc/types@0.1.13': + dependencies: + '@swc/counter': 0.1.3 + + '@szmarczak/http-timer@1.1.2': + dependencies: + defer-to-connect: 1.1.3 + + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + + '@tanstack/query-core@5.59.16': {} + + '@tanstack/react-query@5.59.16(react@18.2.0)': + dependencies: + '@tanstack/query-core': 5.59.16 + react: 18.2.0 + + '@testing-library/cypress@10.0.1(cypress@13.13.2)': + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 9.3.4 + cypress: 13.13.2 + + '@testing-library/dom@10.4.0': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/runtime': 7.20.6 + '@types/aria-query': 5.0.4 + aria-query: 5.3.0 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/dom@6.16.0': + dependencies: + '@babel/runtime': 7.20.6 + '@sheerun/mutationobserver-shim': 0.3.3 + '@types/testing-library__dom': 6.14.0 + aria-query: 4.2.2 + dom-accessibility-api: 0.3.0 + pretty-format: 25.5.0 + wait-for-expect: 3.0.2 + + '@testing-library/dom@8.20.1': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/runtime': 7.20.6 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/dom@9.3.4': + dependencies: + '@babel/code-frame': 7.26.0 + '@babel/runtime': 7.20.6 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + + '@testing-library/jest-dom@5.16.5': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.20.6 + '@types/testing-library__jest-dom': 5.14.9 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.5.16 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@26.6.3)(vitest@2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4))': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.20.6 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.14 + jest: 26.6.3 + vitest: 2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4) + + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.20.6 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.14 + vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + '@testing-library/jest-dom@6.5.0': + dependencies: + '@adobe/css-tools': 4.4.0 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + + '@testing-library/react-hooks@8.0.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react-test-renderer@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + react-error-boundary: 3.1.4(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.27 + react-dom: 18.2.0(react@18.2.0) + react-test-renderer: 18.2.0(react@18.2.0) + + '@testing-library/react@12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 8.20.1 + '@types/react-dom': 17.0.25 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@testing-library/react@13.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 8.20.1 + '@types/react-dom': 18.2.12 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@testing-library/react@14.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.2.12 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@testing-library/react@14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 9.3.4 + '@types/react-dom': 18.2.12 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@testing-library/react@9.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + dependencies: + '@babel/runtime': 7.20.6 + '@testing-library/dom': 6.16.0 + '@types/testing-library__react': 9.1.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + '@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0)': + dependencies: + '@testing-library/dom': 10.4.0 + + '@tootallnate/once@1.1.2': {} + + '@tootallnate/once@2.0.0': {} + + '@tootallnate/quickjs-emscripten@0.23.0': {} + + '@trysound/sax@0.2.0': {} + + '@tufjs/canonical-json@1.0.0': {} + + '@tufjs/models@1.0.4': + dependencies: + '@tufjs/canonical-json': 1.0.0 + minimatch: 9.0.5 + + '@types/argparse@1.0.38': {} + + '@types/aria-query@5.0.4': {} + + '@types/babel__core@7.20.5': + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + '@types/babel__generator': 7.6.8 + '@types/babel__template': 7.4.4 + '@types/babel__traverse': 7.20.6 + + '@types/babel__generator@7.6.8': + dependencies: + '@babel/types': 7.20.5 + + '@types/babel__template@7.4.4': + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.20.5 + + '@types/babel__traverse@7.20.6': + dependencies: + '@babel/types': 7.26.0 + + '@types/body-parser@1.19.5': + dependencies: + '@types/connect': 3.4.38 + '@types/node': 22.8.1 + + '@types/bonjour@3.5.13': + dependencies: + '@types/node': 22.8.1 + + '@types/connect-history-api-fallback@1.5.4': + dependencies: + '@types/express-serve-static-core': 5.0.1 + '@types/node': 22.8.1 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 22.8.1 + + '@types/cookie@0.3.3': {} + + '@types/debug@4.1.12': + dependencies: + '@types/ms': 0.7.34 + + '@types/doctrine@0.0.9': {} + + '@types/escodegen@0.0.6': {} + + '@types/eslint-scope@3.7.7': + dependencies: + '@types/eslint': 9.6.1 + '@types/estree': 1.0.6 + + '@types/eslint@9.6.1': + dependencies: + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 + + '@types/estree@0.0.51': {} + + '@types/estree@1.0.6': {} + + '@types/expect@1.20.4': {} + + '@types/express-serve-static-core@4.19.6': + dependencies: + '@types/node': 22.8.1 + '@types/qs': 6.9.16 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express-serve-static-core@5.0.1': + dependencies: + '@types/node': 22.8.1 + '@types/qs': 6.9.16 + '@types/range-parser': 1.2.7 + '@types/send': 0.17.4 + + '@types/express@4.17.21': + dependencies: + '@types/body-parser': 1.19.5 + '@types/express-serve-static-core': 4.19.6 + '@types/qs': 6.9.16 + '@types/serve-static': 1.15.7 + + '@types/find-cache-dir@3.2.1': {} + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 22.8.1 + + '@types/graceful-fs@4.1.9': + dependencies: + '@types/node': 22.8.1 + + '@types/hast@3.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/history@4.7.11': {} + + '@types/hoist-non-react-statics@3.3.5': + dependencies: + '@types/react': 18.2.27 + hoist-non-react-statics: 3.3.2 + + '@types/html-minifier-terser@6.1.0': {} + + '@types/http-cache-semantics@4.0.4': {} + + '@types/http-errors@2.0.4': {} + + '@types/http-proxy@1.17.15': + dependencies: + '@types/node': 22.8.1 + + '@types/invariant@2.2.37': {} + + '@types/is-hotkey@0.1.10': {} + + '@types/istanbul-lib-coverage@2.0.6': {} + + '@types/istanbul-lib-report@3.0.3': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + + '@types/istanbul-reports@1.1.2': + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-lib-report': 3.0.3 + + '@types/istanbul-reports@3.0.4': + dependencies: + '@types/istanbul-lib-report': 3.0.3 + + '@types/jest-axe@3.5.9': + dependencies: + '@types/jest': 29.5.14 + axe-core: 3.5.6 + + '@types/jest@29.5.14': + dependencies: + expect: 29.7.0 + pretty-format: 29.7.0 + + '@types/json-schema@7.0.15': {} + + '@types/json5@0.0.29': {} + + '@types/keyv@3.1.4': + dependencies: + '@types/node': 22.8.1 + + '@types/loadable__component@5.13.9': + dependencies: + '@types/react': 18.2.27 + + '@types/lodash@4.17.12': {} + + '@types/mdast@4.0.4': + dependencies: + '@types/unist': 3.0.3 + + '@types/mdx@2.0.13': {} + + '@types/mime@1.3.5': {} + + '@types/minimatch@3.0.5': {} + + '@types/minimatch@5.1.2': {} + + '@types/ms@0.7.34': {} + + '@types/node-forge@1.3.11': + dependencies: + '@types/node': 22.8.1 + + '@types/node@15.14.9': {} + + '@types/node@22.8.1': + dependencies: + undici-types: 6.19.8 + + '@types/normalize-package-data@2.4.4': {} + + '@types/parse-json@4.0.2': {} + + '@types/prettier@2.7.3': {} + + '@types/prop-types@15.7.13': {} + + '@types/q@1.5.8': {} + + '@types/qs@6.9.16': {} + + '@types/range-parser@1.2.7': {} + + '@types/react-dom@17.0.25': + dependencies: + '@types/react': 17.0.83 + + '@types/react-dom@18.2.12': + dependencies: + '@types/react': 18.2.27 + + '@types/react-redux@7.1.34': + dependencies: + '@types/hoist-non-react-statics': 3.3.5 + '@types/react': 18.2.27 + hoist-non-react-statics: 3.3.2 + redux: 4.2.1 + + '@types/react-router-dom@5.3.3': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.27 + '@types/react-router': 5.1.20 + + '@types/react-router@5.1.20': + dependencies: + '@types/history': 4.7.11 + '@types/react': 18.2.27 + + '@types/react-test-renderer@18.0.7': + dependencies: + '@types/react': 18.2.27 + + '@types/react@17.0.83': + dependencies: + '@types/prop-types': 15.7.13 + '@types/scheduler': 0.16.8 + csstype: 3.1.3 + + '@types/react@18.2.27': + dependencies: + '@types/prop-types': 15.7.13 + '@types/scheduler': 0.23.0 + csstype: 3.1.3 + + '@types/resolve@1.20.6': {} + + '@types/responselike@1.0.3': + dependencies: + '@types/node': 22.8.1 + + '@types/retry@0.12.0': {} + + '@types/scheduler@0.16.8': {} + + '@types/scheduler@0.23.0': {} + + '@types/schema-utils@1.0.0': {} + + '@types/semver@7.5.8': {} + + '@types/send@0.17.4': + dependencies: + '@types/mime': 1.3.5 + '@types/node': 22.8.1 + + '@types/serve-index@1.9.4': + dependencies: + '@types/express': 4.17.21 + + '@types/serve-static@1.15.7': + dependencies: + '@types/http-errors': 2.0.4 + '@types/node': 22.8.1 + '@types/send': 0.17.4 + + '@types/sinonjs__fake-timers@8.1.1': {} + + '@types/sizzle@2.3.9': {} + + '@types/sockjs@0.3.36': + dependencies: + '@types/node': 22.8.1 + + '@types/stack-utils@1.0.1': {} + + '@types/stack-utils@2.0.3': {} + + '@types/testing-library__dom@6.14.0': + dependencies: + pretty-format: 24.9.0 + + '@types/testing-library__dom@7.5.0': + dependencies: + '@testing-library/dom': 6.16.0 + + '@types/testing-library__jest-dom@5.14.9': + dependencies: + '@types/jest': 29.5.14 + + '@types/testing-library__react@9.1.3': + dependencies: + '@types/react-dom': 18.2.12 + '@types/testing-library__dom': 7.5.0 + pretty-format: 25.5.0 + + '@types/unist@3.0.3': {} + + '@types/use-sync-external-store@0.0.3': {} + + '@types/uuid@9.0.8': {} + + '@types/vinyl@2.0.12': + dependencies: + '@types/expect': 1.20.4 + '@types/node': 22.8.1 + + '@types/ws@8.5.12': + dependencies: + '@types/node': 22.8.1 + + '@types/yargs-parser@21.0.3': {} + + '@types/yargs@13.0.12': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@15.0.19': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yargs@17.0.33': + dependencies: + '@types/yargs-parser': 21.0.3 + + '@types/yauzl@2.10.3': + dependencies: + '@types/node': 22.8.1 + optional: true + + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.11.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare-lite: 1.4.0 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/regexpp': 4.11.2 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.1 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/experimental-utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.1 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + debug: 4.3.4(supports-color@8.1.1) + eslint: 8.57.1 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/visitor-keys': 5.62.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.3)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.4(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.8 + '@typescript-eslint/scope-manager': 5.62.0 + '@typescript-eslint/types': 5.62.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + eslint: 8.57.1 + eslint-scope: 5.1.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.6.3)': + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@5.62.0': + dependencies: + '@typescript-eslint/types': 5.62.0 + eslint-visitor-keys: 3.4.3 + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) + '@types/babel__core': 7.20.5 + react-refresh: 0.14.2 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.12 + magicast: 0.3.5 + picocolors: 1.1.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + test-exclude: 6.0.0 + vitest: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-v8@1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.12 + magicast: 0.3.5 + picocolors: 1.1.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + test-exclude: 6.0.0 + vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + + '@vitest/expect@2.0.5': + dependencies: + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.2 + tinyrainbow: 1.2.0 + + '@vitest/expect@2.1.3': + dependencies: + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + tinyrainbow: 1.2.0 + + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': + dependencies: + '@vitest/spy': 2.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + '@vitest/pretty-format@2.0.5': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/pretty-format@2.1.3': + dependencies: + tinyrainbow: 1.2.0 + + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + + '@vitest/runner@2.1.3': + dependencies: + '@vitest/utils': 2.1.3 + pathe: 1.1.2 + + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.12 + pathe: 1.1.2 + pretty-format: 29.7.0 + + '@vitest/snapshot@2.1.3': + dependencies: + '@vitest/pretty-format': 2.1.3 + magic-string: 0.30.12 + pathe: 1.1.2 + + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + + '@vitest/spy@2.0.5': + dependencies: + tinyspy: 3.0.2 + + '@vitest/spy@2.1.3': + dependencies: + tinyspy: 3.0.2 + + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + + '@vitest/utils@2.0.5': + dependencies: + '@vitest/pretty-format': 2.0.5 + estree-walker: 3.0.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + + '@vitest/utils@2.1.3': + dependencies: + '@vitest/pretty-format': 2.1.3 + loupe: 3.1.2 + tinyrainbow: 1.2.0 + + '@volar/language-core@1.11.1': + dependencies: + '@volar/source-map': 1.11.1 + + '@volar/source-map@1.11.1': + dependencies: + muggle-string: 0.3.1 + + '@volar/typescript@1.11.1': + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + + '@vue/compiler-core@3.5.12': + dependencies: + '@babel/parser': 7.26.1 + '@vue/shared': 3.5.12 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.12': + dependencies: + '@vue/compiler-core': 3.5.12 + '@vue/shared': 3.5.12 + + '@vue/language-core@1.8.27(typescript@5.4.2)': + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.5.12 + '@vue/shared': 3.5.12 + computeds: 0.0.1 + minimatch: 9.0.5 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.4.2 + + '@vue/shared@3.5.12': {} + + '@webassemblyjs/ast@1.12.1': + dependencies: + '@webassemblyjs/helper-numbers': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + + '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + + '@webassemblyjs/helper-api-error@1.11.6': {} + + '@webassemblyjs/helper-buffer@1.12.1': {} + + '@webassemblyjs/helper-numbers@1.11.6': + dependencies: + '@webassemblyjs/floating-point-hex-parser': 1.11.6 + '@webassemblyjs/helper-api-error': 1.11.6 + '@xtuc/long': 4.2.2 + + '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + + '@webassemblyjs/helper-wasm-section@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/wasm-gen': 1.12.1 + + '@webassemblyjs/ieee754@1.11.6': + dependencies: + '@xtuc/ieee754': 1.2.0 + + '@webassemblyjs/leb128@1.11.6': + dependencies: + '@xtuc/long': 4.2.2 + + '@webassemblyjs/utf8@1.11.6': {} + + '@webassemblyjs/wasm-edit@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-wasm-section': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-opt': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/wast-printer': 1.12.1 + + '@webassemblyjs/wasm-gen@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wasm-opt@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-buffer': 1.12.1 + '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + + '@webassemblyjs/wasm-parser@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/ieee754': 1.11.6 + '@webassemblyjs/leb128': 1.11.6 + '@webassemblyjs/utf8': 1.11.6 + + '@webassemblyjs/wast-printer@1.12.1': + dependencies: + '@webassemblyjs/ast': 1.12.1 + '@xtuc/long': 4.2.2 + + '@xtuc/ieee754@1.2.0': {} + + '@xtuc/long@4.2.2': {} + + abab@2.0.6: {} + + abbrev@1.1.1: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + abortcontroller-polyfill@1.7.5: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + + acorn-globals@4.3.4: + dependencies: + acorn: 6.4.2 + acorn-walk: 6.2.0 + + acorn-globals@6.0.0: + dependencies: + acorn: 7.4.1 + acorn-walk: 7.2.0 + + acorn-globals@7.0.1: + dependencies: + acorn: 8.13.0 + acorn-walk: 8.3.4 + + acorn-import-assertions@1.9.0(acorn@8.13.0): + dependencies: + acorn: 8.13.0 + + acorn-jsx@5.3.2(acorn@7.4.1): + dependencies: + acorn: 7.4.1 + + acorn-jsx@5.3.2(acorn@8.13.0): + dependencies: + acorn: 8.13.0 + + acorn-walk@6.2.0: {} + + acorn-walk@7.2.0: {} + + acorn-walk@8.3.4: + dependencies: + acorn: 8.13.0 + + acorn@5.7.4: {} + + acorn@6.4.2: {} + + acorn@7.4.1: {} + + acorn@8.13.0: {} + + add-dom-event-listener@1.1.0: + dependencies: + object-assign: 4.1.1 + + address@1.1.2: {} + + adjust-sourcemap-loader@3.0.0: + dependencies: + loader-utils: 2.0.4 + regex-parser: 2.3.0 + + agent-base@6.0.2: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + agent-base@7.1.1: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + airbnb-prop-types@2.16.0(react@18.2.0): + dependencies: + array.prototype.find: 2.2.3 + function.prototype.name: 1.1.6 + is-regex: 1.1.4 + object-is: 1.1.6 + object.assign: 4.1.5 + object.entries: 1.1.8 + prop-types: 15.7.2 + prop-types-exact: 1.2.5 + react: 18.2.0 + react-is: 16.13.1 + + ajv-formats@2.1.1(ajv@8.17.1): + optionalDependencies: + ajv: 8.17.1 + + ajv-keywords@3.5.2(ajv@6.12.6): + dependencies: + ajv: 6.12.6 + + ajv-keywords@5.1.0(ajv@8.17.1): + dependencies: + ajv: 8.17.1 + fast-deep-equal: 3.1.3 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alphanum-sort@1.0.2: {} + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@4.1.3: {} + + ansi-escapes@2.0.0: {} + + ansi-escapes@3.2.0: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-html-community@0.0.8: {} + + ansi-html@0.0.7: {} + + ansi-regex@2.1.1: {} + + ansi-regex@3.0.1: {} + + ansi-regex@4.1.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@2.2.1: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@5.2.0: {} + + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + + anymatch@2.0.0: + dependencies: + micromatch: 3.1.10 + normalize-path: 2.1.1 + transitivePeerDependencies: + - supports-color + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + aproba@1.2.0: {} + + aproba@2.0.0: {} + + arch@2.2.0: {} + + are-we-there-yet@2.0.0: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + are-we-there-yet@3.0.1: + dependencies: + delegates: 1.0.0 + readable-stream: 3.6.2 + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + aria-query@4.2.2: + dependencies: + '@babel/runtime': 7.20.6 + '@babel/runtime-corejs3': 7.26.0 + + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 + + aria-query@5.3.0: + dependencies: + dequal: 2.0.3 + + aria-query@5.3.2: {} + + arity-n@1.0.4: {} + + arr-diff@4.0.0: {} + + arr-flatten@1.1.0: {} + + arr-union@3.1.0: {} + + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + + array-differ@3.0.0: {} + + array-equal@1.0.2: {} + + array-flatten@1.1.1: {} + + array-includes@3.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + is-string: 1.0.7 + + array-timsort@1.0.3: {} + + array-union@2.1.0: {} + + array-unique@0.3.2: {} + + array.prototype.find@2.2.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlast@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.findlastindex@1.2.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-shim-unscopables: 1.0.2 + + array.prototype.flat@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.flatmap@1.3.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-shim-unscopables: 1.0.2 + + array.prototype.map@1.0.7: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-array-method-boxes-properly: 1.0.0 + es-object-atoms: 1.0.0 + is-string: 1.0.7 + + array.prototype.reduce@1.0.7: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-array-method-boxes-properly: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + is-string: 1.0.7 + + array.prototype.tosorted@1.1.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-shim-unscopables: 1.0.2 + + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + + arrify@2.0.1: {} + + asap@2.0.6: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + assertion-error@1.1.0: {} + + assertion-error@2.0.1: {} + + assign-symbols@1.0.0: {} + + ast-types-flow@0.0.8: {} + + ast-types@0.13.4: + dependencies: + tslib: 2.8.0 + + ast-types@0.16.1: + dependencies: + tslib: 2.8.0 + + astral-regex@1.0.0: {} + + astral-regex@2.0.0: {} + + async-limiter@1.0.1: {} + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + async@3.2.6: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atob@2.1.2: {} + + attr-accept@2.2.4: {} + + autobind-decorator@2.4.0: {} + + autoprefixer@10.4.8(postcss@8.4.31): + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001671 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axe-core@3.5.6: {} + + axe-core@4.10.2: {} + + axe-core@4.4.2: {} + + axe-core@4.7.2: {} + + axe-core@4.8.4: {} + + axios@0.21.4(debug@4.3.2): + dependencies: + follow-redirects: 1.15.9(debug@4.3.2) + transitivePeerDependencies: + - debug + + axios@0.24.0(debug@4.3.2): + dependencies: + follow-redirects: 1.15.9(debug@4.3.2) + transitivePeerDependencies: + - debug + + axios@1.7.7: + dependencies: + follow-redirects: 1.15.9(debug@4.3.2) + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.7.7(debug@4.3.4): + dependencies: + follow-redirects: 1.15.9(debug@4.3.4) + form-data: 4.0.1 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axobject-query@4.1.0: {} + + babel-code-frame@6.26.0: + dependencies: + chalk: 1.1.3 + esutils: 2.0.3 + js-tokens: 3.0.2 + + babel-helper-function-name@6.24.1: + dependencies: + babel-helper-get-function-arity: 6.24.1 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + transitivePeerDependencies: + - supports-color + + babel-helper-get-function-arity@6.24.1: + dependencies: + babel-runtime: 6.26.0 + babel-types: 6.26.0 + + babel-jest@24.9.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 5.2.0 + babel-preset-jest: 24.9.0(@babel/core@7.26.0) + chalk: 2.4.2 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + + babel-jest@26.6.3(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 6.1.1 + babel-preset-jest: 26.6.2(@babel/core@7.26.0) + chalk: 4.1.2 + graceful-fs: 4.2.11 + slash: 3.0.0 + transitivePeerDependencies: + - supports-color + + babel-loader@8.4.1(@babel/core@7.26.0)(webpack@5.90.1): + dependencies: + '@babel/core': 7.26.0 + find-cache-dir: 3.3.2 + loader-utils: 2.0.4 + make-dir: 3.1.0 + schema-utils: 2.7.1 + webpack: 5.90.1 + + babel-loader@9.1.0(@babel/core@7.26.0)(webpack@5.90.1): + dependencies: + '@babel/core': 7.26.0 + find-cache-dir: 3.3.2 + schema-utils: 4.2.0 + webpack: 5.90.1 + + babel-loader@9.2.1(@babel/core@7.26.0)(webpack@5.90.1): + dependencies: + '@babel/core': 7.26.0 + find-cache-dir: 4.0.0 + schema-utils: 4.2.0 + webpack: 5.90.1 + + babel-messages@6.23.0: + dependencies: + babel-runtime: 6.26.0 + + babel-plugin-add-module-exports@0.2.1: {} + + babel-plugin-istanbul@5.2.0: + dependencies: + '@babel/helper-plugin-utils': 7.25.9 + find-up: 3.0.0 + istanbul-lib-instrument: 3.3.0 + test-exclude: 5.2.3 + transitivePeerDependencies: + - supports-color + + babel-plugin-istanbul@6.1.1: + dependencies: + '@babel/helper-plugin-utils': 7.25.9 + '@istanbuljs/load-nyc-config': 1.1.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-instrument: 5.2.1 + test-exclude: 6.0.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-jest-hoist@24.9.0: + dependencies: + '@types/babel__traverse': 7.20.6 + + babel-plugin-jest-hoist@26.6.2: + dependencies: + '@babel/template': 7.25.9 + '@babel/types': 7.20.5 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + + babel-plugin-lodash@3.3.4: + dependencies: + '@babel/helper-module-imports': 7.25.9 + '@babel/types': 7.20.5 + glob: 7.1.6 + lodash: 4.17.21 + require-package-name: 2.0.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-macros@3.1.0: + dependencies: + '@babel/runtime': 7.20.6 + cosmiconfig: 7.1.0 + resolve: 1.22.8 + + babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): + dependencies: + '@babel/compat-data': 7.26.0 + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-corejs3@0.10.6(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + core-js-compat: 3.38.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + babel-plugin-react-intl@5.1.17: + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@types/babel__core': 7.20.5 + '@types/schema-utils': 1.0.0 + fs-extra: 8.1.0 + intl-messageformat-parser: 3.6.4 + schema-utils: 2.7.1 + transitivePeerDependencies: + - supports-color + + babel-plugin-root-import@6.1.0: + dependencies: + slash: 1.0.0 + + babel-plugin-syntax-class-properties@6.13.0: {} + + babel-plugin-syntax-jsx@6.18.0: {} + + babel-plugin-transform-class-properties@6.24.1: + dependencies: + babel-helper-function-name: 6.24.1 + babel-plugin-syntax-class-properties: 6.13.0 + babel-runtime: 6.26.0 + babel-template: 6.26.0 + transitivePeerDependencies: + - supports-color + + babel-plugin-transform-define@2.1.4: + dependencies: + lodash: 4.17.21 + traverse: 0.6.6 + + babel-plugin-transform-react-remove-prop-types@0.4.24: {} + + babel-preset-current-node-syntax@1.1.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.26.0) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.26.0) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + + babel-preset-jest@24.9.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + babel-plugin-jest-hoist: 24.9.0 + + babel-preset-jest@26.6.2(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + babel-plugin-jest-hoist: 26.6.2 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + + babel-preset-razzle@4.2.17: + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-react': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.20.6 + babel-plugin-syntax-jsx: 6.18.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + chalk: 4.1.2 + transitivePeerDependencies: + - supports-color + + babel-preset-razzle@4.2.18: + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-react': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.20.6 + babel-plugin-syntax-jsx: 6.18.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + chalk: 4.1.2 + transitivePeerDependencies: + - supports-color + + babel-preset-react-app@10.0.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-decorators': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.26.0) + '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.26.0) + '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.26.0) + '@babel/plugin-transform-flow-strip-types': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-runtime': 7.25.9(@babel/core@7.26.0) + '@babel/preset-env': 7.26.0(@babel/core@7.26.0) + '@babel/preset-react': 7.25.9(@babel/core@7.26.0) + '@babel/preset-typescript': 7.26.0(@babel/core@7.26.0) + '@babel/runtime': 7.20.6 + babel-plugin-macros: 3.1.0 + babel-plugin-transform-react-remove-prop-types: 0.4.24 + transitivePeerDependencies: + - supports-color + + babel-runtime@6.26.0: + dependencies: + core-js: 2.6.12 + regenerator-runtime: 0.11.1 + + babel-template@6.26.0: + dependencies: + babel-runtime: 6.26.0 + babel-traverse: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + + babel-traverse@6.26.0: + dependencies: + babel-code-frame: 6.26.0 + babel-messages: 6.23.0 + babel-runtime: 6.26.0 + babel-types: 6.26.0 + babylon: 6.18.0 + debug: 2.6.9 + globals: 9.18.0 + invariant: 2.2.4 + lodash: 4.17.21 + transitivePeerDependencies: + - supports-color + + babel-types@6.26.0: + dependencies: + babel-runtime: 6.26.0 + esutils: 2.0.3 + lodash: 4.17.21 + to-fast-properties: 1.0.3 + + babylon@6.18.0: {} + + bail@2.0.2: {} + + balanced-match@1.0.2: {} + + balanced-match@2.0.0: {} + + base-x@3.0.10: + dependencies: + safe-buffer: 5.2.1 + + base64-js@1.5.1: {} + + base@0.11.2: + dependencies: + cache-base: 1.0.1 + class-utils: 0.3.6 + component-emitter: 1.3.1 + define-property: 1.0.0 + isobject: 3.0.1 + mixin-deep: 1.3.2 + pascalcase: 0.1.1 + + basic-ftp@5.0.5: {} + + batch@0.6.1: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + before-after-hook@2.2.3: {} + + better-opn@3.0.2: + dependencies: + open: 8.4.2 + + big-integer@1.6.52: {} + + big.js@5.2.2: {} + + bin-links@3.0.3: + dependencies: + cmd-shim: 5.0.0 + mkdirp-infer-owner: 2.0.0 + npm-normalize-package-bin: 2.0.0 + read-cmd-shim: 3.0.1 + rimraf: 3.0.2 + write-file-atomic: 4.0.2 + + binary-extensions@2.3.0: {} + + binaryextensions@4.19.0: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blob-util@2.0.2: {} + + bluebird@3.7.2: {} + + body-parser@1.20.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + on-finished: 2.4.1 + qs: 6.11.0 + raw-body: 2.5.2 + type-is: 1.6.18 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + bonjour-service@1.2.1: + dependencies: + fast-deep-equal: 3.1.3 + multicast-dns: 7.2.5 + + boolbase@1.0.0: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + boxen@7.1.1: + dependencies: + ansi-align: 3.0.1 + camelcase: 7.0.1 + chalk: 5.3.0 + cli-boxes: 3.0.0 + string-width: 5.1.2 + type-fest: 2.19.0 + widest-line: 4.0.1 + wrap-ansi: 8.1.0 + + bplist-parser@0.2.0: + dependencies: + big-integer: 1.6.52 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@2.3.2: + dependencies: + arr-flatten: 1.1.0 + array-unique: 0.3.2 + extend-shallow: 2.0.1 + fill-range: 4.0.0 + isobject: 3.0.1 + repeat-element: 1.1.4 + snapdragon: 0.8.2 + snapdragon-node: 2.1.1 + split-string: 3.1.0 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brcast@2.0.2: {} + + browser-assert@1.2.1: {} + + browser-process-hrtime@1.0.0: {} + + browser-resolve@1.11.3: + dependencies: + resolve: 1.1.7 + + browserslist@4.14.2: + dependencies: + caniuse-lite: 1.0.30001671 + electron-to-chromium: 1.5.47 + escalade: 3.2.0 + node-releases: 1.1.77 + + browserslist@4.24.2: + dependencies: + caniuse-lite: 1.0.30001671 + electron-to-chromium: 1.5.47 + node-releases: 2.0.18 + update-browserslist-db: 1.1.1(browserslist@4.24.2) + + bs-logger@0.2.6: + dependencies: + fast-json-stable-stringify: 2.1.0 + + bser@2.1.1: + dependencies: + node-int64: 0.4.0 + + buffer-crc32@0.2.13: {} + + buffer-equal-constant-time@1.0.1: {} + + buffer-from@1.1.2: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + builtins@1.0.3: {} + + bundle-name@3.0.0: + dependencies: + run-applescript: 5.0.0 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.0.0 + + bundle-require@5.0.0(esbuild@0.24.0): + dependencies: + esbuild: 0.24.0 + load-tsconfig: 0.2.5 + + bundlewatch@0.3.3(debug@4.3.2): + dependencies: + axios: 0.24.0(debug@4.3.2) + bytes: 3.1.2 + chalk: 4.1.2 + ci-env: 1.17.0 + commander: 5.1.0 + glob: 7.1.6 + gzip-size: 6.0.0 + jsonpack: 1.1.5 + lodash.merge: 4.6.2 + read-pkg-up: 7.0.1 + transitivePeerDependencies: + - debug + + bytes@3.0.0: {} + + bytes@3.1.2: {} + + cac@6.7.14: {} + + cacache@13.0.1: + dependencies: + chownr: 1.1.4 + figgy-pudding: 3.5.2 + fs-minipass: 2.1.0 + glob: 7.1.6 + graceful-fs: 4.2.11 + infer-owner: 1.0.4 + lru-cache: 5.1.1 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 0.5.6 + move-concurrently: 1.0.1 + p-map: 3.0.0 + promise-inflight: 1.0.1 + rimraf: 2.7.1 + ssri: 7.1.1 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + + cacache@15.3.0: + dependencies: + '@npmcli/fs': 1.1.1 + '@npmcli/move-file': 1.1.2 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 7.1.6 + infer-owner: 1.0.4 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.2.1 + unique-filename: 1.1.1 + transitivePeerDependencies: + - bluebird + + cacache@16.1.3: + dependencies: + '@npmcli/fs': 2.1.2 + '@npmcli/move-file': 2.0.1 + chownr: 2.0.0 + fs-minipass: 2.1.0 + glob: 8.1.0 + infer-owner: 1.0.4 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + mkdirp: 1.0.4 + p-map: 4.0.0 + promise-inflight: 1.0.1 + rimraf: 3.0.2 + ssri: 9.0.1 + tar: 6.2.1 + unique-filename: 2.0.1 + transitivePeerDependencies: + - bluebird + + cacache@17.1.4: + dependencies: + '@npmcli/fs': 3.1.1 + fs-minipass: 3.0.3 + glob: 10.4.5 + lru-cache: 7.18.3 + minipass: 7.1.2 + minipass-collect: 1.0.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + p-map: 4.0.0 + ssri: 10.0.6 + tar: 6.2.1 + unique-filename: 3.0.0 + + cache-base@1.0.1: + dependencies: + collection-visit: 1.0.0 + component-emitter: 1.3.1 + get-value: 2.0.6 + has-value: 1.0.0 + isobject: 3.0.1 + set-value: 2.0.1 + to-object-path: 0.3.0 + union-value: 1.0.1 + unset-value: 1.0.0 + + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + + cacheable-request@6.1.0: + dependencies: + clone-response: 1.0.3 + get-stream: 5.2.0 + http-cache-semantics: 4.1.1 + keyv: 3.1.0 + lowercase-keys: 2.0.0 + normalize-url: 4.5.1 + responselike: 1.0.2 + + cachedir@2.4.0: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + caller-callsite@2.0.0: + dependencies: + callsites: 2.0.0 + + caller-path@2.0.0: + dependencies: + caller-callsite: 2.0.0 + + callsites@2.0.0: {} + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.0 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + camelcase@7.0.1: {} + + caniuse-api@3.0.0: + dependencies: + browserslist: 4.24.2 + caniuse-lite: 1.0.30001671 + lodash.memoize: 4.1.2 + lodash.uniq: 4.5.0 + + caniuse-lite@1.0.30001671: {} + + capture-exit@2.0.0: + dependencies: + rsvp: 4.8.5 + + case-sensitive-paths-webpack-plugin@2.4.0: {} + + caseless@0.12.0: {} + + ccount@2.0.1: {} + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chai@5.1.2: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.1.2 + pathval: 2.0.0 + + chalk@1.1.3: + dependencies: + ansi-styles: 2.2.1 + escape-string-regexp: 1.0.5 + has-ansi: 2.0.0 + strip-ansi: 3.0.1 + supports-color: 2.0.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@3.0.0: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + change-emitter@0.1.6: {} + + char-regex@1.0.2: {} + + character-entities@2.0.2: {} + + chardet@0.7.0: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + check-error@2.1.1: {} + + check-more-types@2.24.0: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + + chownr@1.1.4: {} + + chownr@2.0.0: {} + + chrome-trace-event@1.0.4: {} + + ci-env@1.17.0: {} + + ci-info@2.0.0: {} + + ci-info@3.9.0: {} + + circular-dependency-plugin@5.2.2(webpack@5.90.1): + dependencies: + webpack: 5.90.1 + + cjs-module-lexer@0.6.0: {} + + cjs-module-lexer@1.4.1: {} + + class-utils@0.3.6: + dependencies: + arr-union: 3.1.0 + define-property: 0.2.5 + isobject: 3.0.1 + static-extend: 0.1.2 + + classnames@2.2.6: {} + + clean-css@5.3.3: + dependencies: + source-map: 0.6.1 + + clean-stack@2.2.0: {} + + cli-boxes@2.2.1: {} + + cli-boxes@3.0.0: {} + + cli-cursor@2.1.0: + dependencies: + restore-cursor: 2.0.0 + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@1.3.1: {} + + cli-spinners@2.9.2: {} + + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-table@0.3.11: + dependencies: + colors: 1.0.3 + + cli-truncate@2.1.0: + dependencies: + slice-ansi: 3.0.0 + string-width: 4.2.3 + + cli-width@3.0.0: {} + + cli-width@4.1.0: {} + + client-only@0.0.1: {} + + cliui@5.0.0: + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + clone-buffer@1.0.0: {} + + clone-response@1.0.3: + dependencies: + mimic-response: 1.0.1 + + clone-stats@1.0.0: {} + + clone@1.0.4: {} + + clone@2.1.2: {} + + cloneable-readable@1.1.3: + dependencies: + inherits: 2.0.4 + process-nextick-args: 2.0.1 + readable-stream: 2.3.8 + + clsx@1.2.1: {} + + clsx@2.1.1: {} + + cmd-shim@5.0.0: + dependencies: + mkdirp-infer-owner: 2.0.0 + + co@4.6.0: {} + + coa@2.0.2: + dependencies: + '@types/q': 1.5.8 + chalk: 2.4.2 + q: 1.5.1 + + collect-v8-coverage@1.0.2: {} + + collection-visit@1.0.0: + dependencies: + map-visit: 1.0.0 + object-visit: 1.0.1 + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + color-string@1.9.1: + dependencies: + color-name: 1.1.4 + simple-swizzle: 0.2.2 + + color-support@1.1.3: {} + + color@3.2.1: + dependencies: + color-convert: 1.9.3 + color-string: 1.9.1 + + colord@2.9.3: {} + + colorette@2.0.20: {} + + colors@1.0.3: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@2.20.3: {} + + commander@2.9.0: + dependencies: + graceful-readlink: 1.0.1 + + commander@4.1.1: {} + + commander@5.1.0: {} + + commander@6.2.1: {} + + commander@7.1.0: {} + + commander@7.2.0: {} + + commander@8.2.0: {} + + commander@8.3.0: {} + + commander@9.5.0: + optional: true + + comment-json@4.2.5: + dependencies: + array-timsort: 1.0.3 + core-util-is: 1.0.3 + esprima: 4.0.1 + has-own-prop: 2.0.0 + repeat-string: 1.6.1 + + common-ancestor-path@1.0.1: {} + + common-path-prefix@3.0.0: {} + + common-tags@1.8.2: {} + + commondir@1.0.1: {} + + component-classes@1.2.6: + dependencies: + component-indexof: 0.0.3 + + component-emitter@1.3.1: {} + + component-indexof@0.0.3: {} + + compose-function@3.0.3: + dependencies: + arity-n: 1.0.4 + + compressible@2.0.18: + dependencies: + mime-db: 1.53.0 + + compression@1.7.4: + dependencies: + accepts: 1.3.8 + bytes: 3.0.0 + compressible: 2.0.18 + debug: 2.6.9 + on-headers: 1.0.2 + safe-buffer: 5.1.2 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + compute-scroll-into-view@1.0.20: {} + + computeds@0.0.1: {} + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + configstore@5.0.1: + dependencies: + dot-prop: 5.3.0 + graceful-fs: 4.2.11 + make-dir: 3.1.0 + unique-string: 2.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 4.0.0 + + configstore@6.0.0: + dependencies: + dot-prop: 6.0.1 + graceful-fs: 4.2.11 + unique-string: 3.0.0 + write-file-atomic: 3.0.3 + xdg-basedir: 5.1.0 + + confusing-browser-globals@1.0.11: {} + + connect-history-api-fallback@2.0.0: {} + + connected-react-router@6.8.0(history@4.10.1)(immutable@3.8.2)(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router@5.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1)(seamless-immutable@7.1.4): + dependencies: + history: 4.10.1 + immutable: 3.8.2 + prop-types: 15.7.2 + react: 18.2.0 + react-redux: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + react-router: 5.2.0(react@18.2.0) + redux: 4.2.1 + seamless-immutable: 7.1.4 + + consola@2.15.3: {} + + consola@3.2.3: {} + + console-control-strings@1.1.0: {} + + consolidated-events@2.0.2: {} + + constants-browserify@1.0.0: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + + content-type@1.0.5: {} + + convert-source-map@0.3.5: {} + + convert-source-map@1.7.0: + dependencies: + safe-buffer: 5.1.2 + + convert-source-map@1.9.0: {} + + convert-source-map@2.0.0: {} + + cookie-signature@1.0.6: {} + + cookie@0.4.2: {} + + cookie@0.6.0: {} + + cookiejar@2.1.4: {} + + copy-concurrently@1.0.5: + dependencies: + aproba: 1.2.0 + fs-write-stream-atomic: 1.0.10 + iferr: 0.1.5 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + + copy-descriptor@0.1.1: {} + + copy-webpack-plugin@6.4.1(webpack@5.90.1): + dependencies: + cacache: 15.3.0 + fast-glob: 3.3.2 + find-cache-dir: 3.3.2 + glob-parent: 5.1.2 + globby: 11.1.0 + loader-utils: 2.0.4 + normalize-path: 3.0.0 + p-limit: 3.1.0 + schema-utils: 3.3.0 + serialize-javascript: 5.0.1 + webpack: 5.90.1 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + + core-js-compat@3.38.1: + dependencies: + browserslist: 4.24.2 + + core-js-pure@3.38.1: {} + + core-js@1.2.7: {} + + core-js@2.6.12: {} + + core-util-is@1.0.2: {} + + core-util-is@1.0.3: {} + + cosmiconfig@5.2.1: + dependencies: + import-fresh: 2.0.0 + is-directory: 0.3.1 + js-yaml: 3.14.1 + parse-json: 4.0.0 + + cosmiconfig@7.1.0: + dependencies: + '@types/parse-json': 4.0.2 + import-fresh: 3.3.0 + parse-json: 5.2.0 + path-type: 4.0.0 + yaml: 1.10.2 + + cosmiconfig@8.3.6(typescript@5.4.2): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.4.2 + + cosmiconfig@8.3.6(typescript@5.6.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.6.3 + + cosmiconfig@9.0.0(typescript@5.2.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.2.2 + + cosmiconfig@9.0.0(typescript@5.4.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.4.2 + + cosmiconfig@9.0.0(typescript@5.6.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.6.3 + + coveralls@3.1.1: + dependencies: + js-yaml: 3.14.1 + lcov-parse: 1.0.0 + log-driver: 1.2.7 + minimist: 1.2.8 + request: 2.88.2 + + cross-spawn@5.1.0: + dependencies: + lru-cache: 4.1.5 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@6.0.5: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypto-random-string@2.0.0: {} + + crypto-random-string@3.2.0: + dependencies: + type-fest: 0.8.1 + + crypto-random-string@4.0.0: + dependencies: + type-fest: 1.4.0 + + css-animation@1.6.1: + dependencies: + babel-runtime: 6.26.0 + component-classes: 1.2.6 + + css-box-model@1.2.1: + dependencies: + tiny-invariant: 1.3.3 + + css-color-names@0.0.4: {} + + css-declaration-sorter@4.0.1: + dependencies: + postcss: 7.0.39 + timsort: 0.3.0 + + css-functions-list@3.2.3: {} + + css-loader@5.2.7(webpack@5.90.1): + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + loader-utils: 2.0.4 + postcss: 8.4.31 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.31) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.31) + postcss-modules-scope: 3.2.0(postcss@8.4.31) + postcss-modules-values: 4.0.0(postcss@8.4.31) + postcss-value-parser: 4.2.0 + schema-utils: 3.3.0 + semver: 7.6.3 + webpack: 5.90.1 + + css-loader@6.11.0(webpack@5.90.1): + dependencies: + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-modules-extract-imports: 3.1.0(postcss@8.4.47) + postcss-modules-local-by-default: 4.0.5(postcss@8.4.47) + postcss-modules-scope: 3.2.0(postcss@8.4.47) + postcss-modules-values: 4.0.0(postcss@8.4.47) + postcss-value-parser: 4.2.0 + semver: 7.6.3 + optionalDependencies: + webpack: 5.90.1 + + css-minimizer-webpack-plugin@1.3.0(webpack@5.90.1): + dependencies: + cacache: 15.3.0 + cssnano: 4.1.11 + find-cache-dir: 3.3.2 + jest-worker: 26.6.2 + p-limit: 3.1.0 + schema-utils: 3.3.0 + serialize-javascript: 5.0.1 + source-map: 0.6.1 + webpack: 5.90.1 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + + css-select-base-adapter@0.1.1: {} + + css-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 3.4.2 + domutils: 1.7.0 + nth-check: 1.0.2 + + css-select@4.3.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 4.3.1 + domutils: 2.8.0 + nth-check: 2.1.1 + + css-tree@1.0.0-alpha.37: + dependencies: + mdn-data: 2.0.4 + source-map: 0.6.1 + + css-tree@1.1.3: + dependencies: + mdn-data: 2.0.14 + source-map: 0.6.1 + + css-tree@3.0.0: + dependencies: + mdn-data: 2.10.0 + source-map-js: 1.2.1 + + css-what@3.4.2: {} + + css-what@6.1.0: {} + + css.escape@1.5.1: {} + + css@2.2.4: + dependencies: + inherits: 2.0.4 + source-map: 0.6.1 + source-map-resolve: 0.5.3 + urix: 0.1.0 + + cssesc@3.0.0: {} + + cssnano-preset-default@4.0.8: + dependencies: + css-declaration-sorter: 4.0.1 + cssnano-util-raw-cache: 4.0.1 + postcss: 7.0.39 + postcss-calc: 7.0.5 + postcss-colormin: 4.0.3 + postcss-convert-values: 4.0.1 + postcss-discard-comments: 4.0.2 + postcss-discard-duplicates: 4.0.2 + postcss-discard-empty: 4.0.1 + postcss-discard-overridden: 4.0.1 + postcss-merge-longhand: 4.0.11 + postcss-merge-rules: 4.0.3 + postcss-minify-font-values: 4.0.2 + postcss-minify-gradients: 4.0.2 + postcss-minify-params: 4.0.2 + postcss-minify-selectors: 4.0.2 + postcss-normalize-charset: 4.0.1 + postcss-normalize-display-values: 4.0.2 + postcss-normalize-positions: 4.0.2 + postcss-normalize-repeat-style: 4.0.2 + postcss-normalize-string: 4.0.2 + postcss-normalize-timing-functions: 4.0.2 + postcss-normalize-unicode: 4.0.1 + postcss-normalize-url: 4.0.1 + postcss-normalize-whitespace: 4.0.2 + postcss-ordered-values: 4.1.2 + postcss-reduce-initial: 4.0.3 + postcss-reduce-transforms: 4.0.2 + postcss-svgo: 4.0.3 + postcss-unique-selectors: 4.0.1 + + cssnano-util-get-arguments@4.0.0: {} + + cssnano-util-get-match@4.0.0: {} + + cssnano-util-raw-cache@4.0.1: + dependencies: + postcss: 7.0.39 + + cssnano-util-same-parent@4.0.1: {} + + cssnano@4.1.11: + dependencies: + cosmiconfig: 5.2.1 + cssnano-preset-default: 4.0.8 + is-resolvable: 1.1.0 + postcss: 7.0.39 + + csso@4.2.0: + dependencies: + css-tree: 1.1.3 + + cssom@0.3.8: {} + + cssom@0.4.4: {} + + cssstyle@1.4.0: + dependencies: + cssom: 0.3.8 + + cssstyle@2.3.0: + dependencies: + cssom: 0.3.8 + + cssstyle@3.0.0: + dependencies: + rrweb-cssom: 0.6.0 + + csstype@3.1.3: {} + + cypress-axe@1.5.0(axe-core@4.4.2)(cypress@13.13.2): + dependencies: + axe-core: 4.4.2 + cypress: 13.13.2 + + cypress-axe@1.5.0(axe-core@4.8.4)(cypress@13.13.2): + dependencies: + axe-core: 4.8.4 + cypress: 13.13.2 + + cypress-file-upload@5.0.8(cypress@13.13.2): + dependencies: + cypress: 13.13.2 + + cypress@13.13.2: + dependencies: + '@cypress/request': 3.0.5 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.9 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.4.0 + chalk: 4.1.2 + check-more-types: 2.24.0 + cli-cursor: 3.1.0 + cli-table3: 0.6.5 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.13 + debug: 4.3.4(supports-color@8.1.1) + enquirer: 2.4.1 + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + extract-zip: 2.0.1(supports-color@8.1.1) + figures: 3.2.0 + fs-extra: 9.1.0 + getos: 3.2.1 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + lazy-ass: 1.6.0 + listr2: 3.14.0(enquirer@2.4.1) + lodash: 4.17.21 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + semver: 7.6.3 + supports-color: 8.1.1 + tmp: 0.2.3 + untildify: 4.0.0 + yauzl: 2.10.0 + + d@1.0.2: + dependencies: + es5-ext: 0.10.64 + type: 2.7.3 + + damerau-levenshtein@1.0.8: {} + + dargs@7.0.0: {} + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-uri-to-buffer@4.0.1: {} + + data-uri-to-buffer@6.0.2: {} + + data-urls@1.1.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 7.1.0 + + data-urls@2.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + + data-urls@4.0.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + dateformat@4.6.3: {} + + dayjs@1.11.13: {} + + de-indent@1.0.2: {} + + debounce@1.2.1: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@3.2.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.3.2: + dependencies: + ms: 2.1.2 + + debug@4.3.4(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + debuglog@1.0.1: {} + + decamelize@1.2.0: {} + + decimal.js@10.4.3: {} + + decode-named-character-reference@1.0.2: + dependencies: + character-entities: 2.0.2 + + decode-uri-component@0.2.2: {} + + decode-uri-component@0.4.1: {} + + decompress-response@3.3.0: + dependencies: + mimic-response: 1.0.1 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + decorate-component-with-props@1.2.1(react@18.2.0): + dependencies: + react: 18.2.0 + + dedent@0.7.0: {} + + deep-copy@1.4.2: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-eql@5.0.2: {} + + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + es-get-iterator: 1.1.3 + get-intrinsic: 1.2.4 + is-arguments: 1.1.1 + is-array-buffer: 3.0.4 + is-date-object: 1.0.5 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + side-channel: 1.0.6 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + deep-extend@0.6.0: {} + + deep-freeze@0.0.1: {} + + deep-is@0.1.4: {} + + deepmerge@1.5.2: {} + + deepmerge@4.3.1: {} + + default-browser-id@3.0.0: + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + + default-browser-id@5.0.0: {} + + default-browser@4.0.0: + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + + default-browser@5.2.1: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + + default-gateway@6.0.3: + dependencies: + execa: 5.1.1 + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + defaulty@2.1.0: + dependencies: + deep-copy: 1.4.2 + + defer-to-connect@1.1.3: {} + + defer-to-connect@2.0.1: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + define-lazy-prop@3.0.0: {} + + define-properties@1.2.1: + dependencies: + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 + object-keys: 1.1.1 + + define-property@0.2.5: + dependencies: + is-descriptor: 0.1.7 + + define-property@1.0.0: + dependencies: + is-descriptor: 1.0.3 + + define-property@2.0.2: + dependencies: + is-descriptor: 1.0.3 + isobject: 3.0.1 + + degenerator@5.0.1: + dependencies: + ast-types: 0.13.4 + escodegen: 2.1.0 + esprima: 4.0.1 + + delayed-stream@1.0.0: {} + + delegates@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + dependency-graph@0.10.0: {} + + deprecation@2.3.1: {} + + dequal@2.0.3: {} + + destroy@1.2.0: {} + + detect-browser@5.1.0: {} + + detect-libc@1.0.3: {} + + detect-libc@2.0.3: {} + + detect-newline@2.1.0: {} + + detect-newline@3.1.0: {} + + detect-node@2.1.0: {} + + detect-port-alt@1.1.6: + dependencies: + address: 1.1.2 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + + devlop@1.1.0: + dependencies: + dequal: 2.0.3 + + dezalgo@1.0.4: + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + + diff-sequences@24.9.0: {} + + diff-sequences@26.6.2: {} + + diff-sequences@29.6.3: {} + + diff@3.5.0: {} + + diff@4.0.2: {} + + diff@5.2.0: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + direction@1.0.4: {} + + dnd-core@4.0.5: + dependencies: + asap: 2.0.6 + invariant: 2.2.4 + lodash: 4.17.21 + redux: 4.2.1 + + dns-packet@5.6.1: + dependencies: + '@leichtgewicht/ip-codec': 2.0.5 + + doctrine@2.1.0: + dependencies: + esutils: 2.0.3 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + document.contains@1.0.2: + dependencies: + define-properties: 1.2.1 + + dom-accessibility-api@0.3.0: {} + + dom-accessibility-api@0.5.16: {} + + dom-accessibility-api@0.6.3: {} + + dom-align@1.12.4: {} + + dom-converter@0.2.0: + dependencies: + utila: 0.4.0 + + dom-helpers@5.2.1: + dependencies: + '@babel/runtime': 7.20.6 + csstype: 3.1.3 + + dom-serializer@0.2.2: + dependencies: + domelementtype: 2.3.0 + entities: 2.2.0 + + dom-serializer@1.4.1: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + entities: 2.2.0 + + domelementtype@1.3.1: {} + + domelementtype@2.3.0: {} + + domexception@1.0.1: + dependencies: + webidl-conversions: 4.0.2 + + domexception@2.0.1: + dependencies: + webidl-conversions: 5.0.0 + + domexception@4.0.0: + dependencies: + webidl-conversions: 7.0.0 + + domhandler@4.3.1: + dependencies: + domelementtype: 2.3.0 + + domutils@1.7.0: + dependencies: + dom-serializer: 0.2.2 + domelementtype: 1.3.1 + + domutils@2.8.0: + dependencies: + dom-serializer: 1.4.1 + domelementtype: 2.3.0 + domhandler: 4.3.1 + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.0 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dot-prop@6.0.1: + dependencies: + is-obj: 2.0.0 + + dotenv-expand@5.1.0: {} + + dotenv@7.0.0: {} + + dotenv@8.6.0: {} + + duplexer3@0.1.5: {} + + duplexer@0.1.2: {} + + eastasianwidth@0.2.0: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + ecdsa-sig-formatter@1.0.11: + dependencies: + safe-buffer: 5.2.1 + + ee-first@1.1.1: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.2 + + electron-to-chromium@1.5.47: {} + + emittery@0.7.2: {} + + emoji-regex@10.4.0: {} + + emoji-regex@7.0.3: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + emojis-list@3.0.0: {} + + encodeurl@1.0.2: {} + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + + endent@2.1.0: + dependencies: + dedent: 0.7.0 + fast-json-parse: 1.0.3 + objectorarray: 1.0.5 + + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@2.2.0: {} + + entities@3.0.1: {} + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + enzyme-shallow-equal@1.0.7: + dependencies: + hasown: 2.0.2 + object-is: 1.1.6 + + err-code@2.0.3: {} + + errno@0.1.8: + dependencies: + prr: 1.0.1 + optional: true + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + error-stack-parser@2.1.4: + dependencies: + stackframe: 1.3.4 + + error@10.4.0: {} + + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + + es-array-method-boxes-properly@1.0.0: {} + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + is-arguments: 1.1.1 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.0.7 + isarray: 2.0.5 + stop-iteration-iterator: 1.0.0 + + es-iterator-helpers@1.1.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-set-tostringtag: 2.0.3 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + iterator.prototype: 1.1.3 + safe-array-concat: 1.1.2 + + es-module-lexer@1.5.4: {} + + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es-shim-unscopables@1.0.2: + dependencies: + hasown: 2.0.2 + + es-to-primitive@1.2.1: + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + + es5-ext@0.10.64: + dependencies: + es6-iterator: 2.0.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 + next-tick: 1.1.0 + + es6-iterator@2.0.3: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 + + es6-symbol@3.1.4: + dependencies: + d: 1.0.2 + ext: 1.7.0 + + esbuild-register@3.6.0(esbuild@0.23.1): + dependencies: + debug: 4.3.4(supports-color@8.1.1) + esbuild: 0.23.1 + transitivePeerDependencies: + - supports-color + + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + esbuild@0.24.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 + + escalade@3.2.0: {} + + escape-goat@2.1.1: {} + + escape-goat@4.0.0: {} + + escape-html@1.0.3: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@2.0.0: {} + + escape-string-regexp@4.0.0: {} + + escape-string-regexp@5.0.0: {} + + escodegen@1.14.3: + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + + escodegen@2.1.0: + dependencies: + esprima: 4.0.1 + estraverse: 5.3.0 + esutils: 2.0.3 + optionalDependencies: + source-map: 0.6.1 + + eslint-config-prettier@9.1.0(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-config-react-app@7.0.1(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1)(jest@26.6.3)(typescript@5.6.3): + dependencies: + '@babel/core': 7.26.0 + '@babel/eslint-parser': 7.22.15(@babel/core@7.26.0)(eslint@8.57.1) + '@rushstack/eslint-patch': 1.10.4 + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + babel-preset-react-app: 10.0.1 + confusing-browser-globals: 1.0.11 + eslint: 8.57.1 + eslint-plugin-flowtype: 8.0.3(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0))(eslint@8.57.1) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-jest: 25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(jest@26.6.3)(typescript@5.6.3) + eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) + eslint-plugin-react: 7.37.2(eslint@8.57.1) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + eslint-plugin-testing-library: 5.11.1(eslint@8.57.1)(typescript@5.6.3) + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - '@babel/plugin-syntax-flow' + - '@babel/plugin-transform-react-jsx' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - jest + - supports-color + + eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)): + dependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + + eslint-import-resolver-babel-plugin-root-import@1.1.1(babel-plugin-root-import@6.1.0)(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1)): + dependencies: + babel-plugin-root-import: 6.1.0 + eslint-import-resolver-node: 0.2.3 + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + json5: 0.5.1 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-node@0.2.3: + dependencies: + debug: 2.6.9 + object-assign: 4.1.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-node@0.3.9: + dependencies: + debug: 3.2.7(supports-color@8.1.1) + is-core-module: 2.15.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + + eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1): + dependencies: + '@nolyfill/is-core-module': 1.0.39 + debug: 4.3.7 + enhanced-resolve: 5.17.1 + eslint: 8.57.1 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + fast-glob: 3.3.2 + get-tsconfig: 4.8.1 + is-bun-module: 1.2.1 + is-glob: 4.0.3 + optionalDependencies: + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1) + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + dependencies: + debug: 3.2.7(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + dependencies: + debug: 3.2.7(supports-color@8.1.1) + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1) + transitivePeerDependencies: + - supports-color + + eslint-plugin-flowtype@8.0.3(@babel/plugin-syntax-flow@7.26.0(@babel/core@7.26.0))(@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0))(eslint@8.57.1): + dependencies: + '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + eslint: 8.57.1 + lodash: 4.17.21 + string-natural-compare: 3.0.1 + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.1): + dependencies: + '@rtsao/scc': 1.1.0 + array-includes: 3.1.8 + array.prototype.findlastindex: 1.2.5 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7(supports-color@8.1.1) + doctrine: 2.1.0 + eslint: 8.57.1 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint-plugin-import@2.31.0)(eslint@8.57.1))(eslint@8.57.1) + hasown: 2.0.2 + is-core-module: 2.15.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + object.groupby: 1.0.3 + object.values: 1.2.0 + semver: 6.3.1 + string.prototype.trimend: 1.0.8 + tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + + eslint-plugin-jest@25.7.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(jest@26.6.3)(typescript@5.6.3): + dependencies: + '@typescript-eslint/experimental-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + eslint: 8.57.1 + optionalDependencies: + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3) + jest: 26.6.3 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + dependencies: + aria-query: 5.3.2 + array-includes: 3.1.8 + array.prototype.flatmap: 1.3.2 + ast-types-flow: 0.0.8 + axe-core: 4.10.2 + axobject-query: 4.1.0 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.57.1 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.9 + minimatch: 3.1.2 + object.fromentries: 2.0.8 + safe-regex-test: 1.0.3 + string.prototype.includes: 2.0.1 + + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.2.5): + dependencies: + eslint: 8.57.1 + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + synckit: 0.9.2 + optionalDependencies: + '@types/eslint': 9.6.1 + eslint-config-prettier: 9.1.0(eslint@8.57.1) + + eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + dependencies: + eslint: 8.57.1 + + eslint-plugin-react@7.37.2(eslint@8.57.1): + dependencies: + array-includes: 3.1.8 + array.prototype.findlast: 1.2.5 + array.prototype.flatmap: 1.3.2 + array.prototype.tosorted: 1.1.4 + doctrine: 2.1.0 + es-iterator-helpers: 1.1.0 + eslint: 8.57.1 + estraverse: 5.3.0 + hasown: 2.0.2 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.8 + object.fromentries: 2.0.8 + object.values: 1.2.0 + prop-types: 15.8.1 + resolve: 2.0.0-next.5 + semver: 6.3.1 + string.prototype.matchall: 4.0.11 + string.prototype.repeat: 1.0.0 + + eslint-plugin-storybook@0.8.0(eslint@8.57.1)(typescript@5.6.3): + dependencies: + '@storybook/csf': 0.0.1 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + eslint: 8.57.1 + requireindex: 1.2.0 + ts-dedent: 2.2.0 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-plugin-testing-library@5.11.1(eslint@8.57.1)(typescript@5.6.3): + dependencies: + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + eslint: 8.57.1 + transitivePeerDependencies: + - supports-color + - typescript + + eslint-scope@5.1.1: + dependencies: + esrecurse: 4.3.0 + estraverse: 4.3.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@2.1.0: {} + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.1: + dependencies: + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.11.2 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + + espree@9.6.1: + dependencies: + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) + eslint-visitor-keys: 3.4.3 + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@4.3.0: {} + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.6 + + esutils@2.0.3: {} + + etag@1.8.1: {} + + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + + event-target-shim@5.0.1: {} + + eventemitter2@6.4.7: {} + + eventemitter3@4.0.7: {} + + events@3.3.0: {} + + eventsource@1.1.2: {} + + exec-sh@0.3.6: {} + + execa@0.6.3: + dependencies: + cross-spawn: 5.1.0 + get-stream: 3.0.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + execa@1.0.0: + dependencies: + cross-spawn: 6.0.5 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + execa@4.1.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + execa@8.0.1: + 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.3.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + + executable@4.1.1: + dependencies: + pify: 2.3.0 + + exenv@1.2.2: {} + + exit@0.1.2: {} + + expand-brackets@2.1.4: + dependencies: + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + posix-character-classes: 0.1.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + expect@24.9.0: + dependencies: + '@jest/types': 24.9.0 + ansi-styles: 3.2.1 + jest-get-type: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-regex-util: 24.9.0 + transitivePeerDependencies: + - supports-color + + expect@26.6.2: + dependencies: + '@jest/types': 26.6.2 + ansi-styles: 4.3.0 + jest-get-type: 26.3.0 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-regex-util: 26.0.0 + + expect@29.7.0: + dependencies: + '@jest/expect-utils': 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + + exponential-backoff@3.1.1: {} + + express@4.19.2: + dependencies: + accepts: 1.3.8 + array-flatten: 1.1.1 + body-parser: 1.20.2 + content-disposition: 0.5.4 + content-type: 1.0.5 + cookie: 0.6.0 + cookie-signature: 1.0.6 + debug: 2.6.9 + depd: 2.0.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + finalhandler: 1.2.0 + fresh: 0.5.2 + http-errors: 2.0.0 + merge-descriptors: 1.0.1 + methods: 1.1.2 + on-finished: 2.4.1 + parseurl: 1.3.3 + path-to-regexp: 0.1.7 + proxy-addr: 2.0.7 + qs: 6.11.0 + range-parser: 1.2.1 + safe-buffer: 5.2.1 + send: 0.18.0 + serve-static: 1.15.0 + setprototypeof: 1.2.0 + statuses: 2.0.1 + type-is: 1.6.18 + utils-merge: 1.0.1 + vary: 1.1.2 + transitivePeerDependencies: + - supports-color + + ext@1.7.0: + dependencies: + type: 2.7.3 + + extend-shallow@2.0.1: + dependencies: + is-extendable: 0.1.1 + + extend-shallow@3.0.2: + dependencies: + assign-symbols: 1.0.0 + is-extendable: 1.0.1 + + extend@3.0.2: {} + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + extglob@2.0.4: + dependencies: + array-unique: 0.3.2 + define-property: 1.0.0 + expand-brackets: 2.1.4 + extend-shallow: 2.0.1 + fragment-cache: 0.2.1 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + extract-zip@2.0.1(supports-color@8.1.1): + dependencies: + debug: 4.3.4(supports-color@8.1.1) + get-stream: 5.2.0 + yauzl: 2.10.0 + optionalDependencies: + '@types/yauzl': 2.10.3 + transitivePeerDependencies: + - supports-color + + extsprintf@1.3.0: {} + + fast-deep-equal@1.1.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-parse@1.0.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.3: {} + + fastest-levenshtein@1.0.16: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + faye-websocket@0.11.4: + dependencies: + websocket-driver: 0.7.4 + + fb-watchman@2.0.2: + dependencies: + bser: 2.1.1 + + fbjs@0.8.18: + dependencies: + core-js: 1.2.7 + isomorphic-fetch: 2.2.1 + loose-envify: 1.4.0 + object-assign: 4.1.1 + promise: 7.1.1 + setimmediate: 1.0.5 + ua-parser-js: 0.7.39 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.4.2(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + + fetch-blob@3.2.0: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 3.3.3 + + figgy-pudding@3.5.2: {} + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + figures@5.0.0: + dependencies: + escape-string-regexp: 5.0.0 + is-unicode-supported: 1.3.0 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + file-entry-cache@9.1.0: + dependencies: + flat-cache: 5.0.0 + + file-loader@4.3.0(webpack@5.90.1): + dependencies: + loader-utils: 1.4.2 + schema-utils: 2.7.1 + webpack: 5.90.1 + + file-selector@0.1.19: + dependencies: + tslib: 2.8.0 + + file-uri-to-path@1.0.0: + optional: true + + filelist@1.0.4: + dependencies: + minimatch: 5.1.6 + + filesize@6.1.0: {} + + filesize@6.4.0: {} + + fill-range@4.0.0: + dependencies: + extend-shallow: 2.0.1 + is-number: 3.0.0 + repeat-string: 1.6.1 + to-regex-range: 2.1.1 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + filter-obj@1.1.0: {} + + filter-obj@5.1.0: {} + + finalhandler@1.2.0: + dependencies: + debug: 2.6.9 + encodeurl: 1.0.2 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.1 + unpipe: 1.0.0 + transitivePeerDependencies: + - supports-color + + find-cache-dir@3.3.2: + dependencies: + commondir: 1.0.1 + make-dir: 3.1.0 + pkg-dir: 4.2.0 + + find-cache-dir@4.0.0: + dependencies: + common-path-prefix: 3.0.0 + pkg-dir: 7.0.0 + + find-parent-dir@0.3.1: {} + + find-root@1.1.0: {} + + find-up@3.0.0: + dependencies: + locate-path: 3.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-up@6.3.0: + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + + find-yarn-workspace-root2@1.2.16: + dependencies: + micromatch: 4.0.8 + pkg-dir: 4.2.0 + + first-chunk-stream@2.0.0: + dependencies: + readable-stream: 2.3.8 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat-cache@5.0.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + + flatted@3.3.1: {} + + follow-redirects@1.15.9(debug@4.3.2): + optionalDependencies: + debug: 4.3.2 + + follow-redirects@1.15.9(debug@4.3.4): + optionalDependencies: + debug: 4.3.4(supports-color@8.1.1) + + for-each@0.3.3: + dependencies: + is-callable: 1.2.7 + + for-in@1.0.2: {} + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + fork-ts-checker-webpack-plugin@4.1.6(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1): + dependencies: + '@babel/code-frame': 7.10.4 + chalk: 2.4.2 + micromatch: 3.1.10 + minimatch: 3.1.2 + semver: 5.7.2 + tapable: 1.1.3 + typescript: 5.6.3 + webpack: 5.90.1 + worker-rpc: 0.1.1 + optionalDependencies: + eslint: 8.57.1 + vue-template-compiler: 2.7.16 + transitivePeerDependencies: + - supports-color + + fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.90.1): + dependencies: + '@babel/code-frame': 7.26.0 + chalk: 4.1.2 + chokidar: 3.6.0 + cosmiconfig: 7.1.0 + deepmerge: 4.3.1 + fs-extra: 10.1.0 + memfs: 3.5.3 + minimatch: 3.1.2 + node-abort-controller: 3.1.1 + schema-utils: 3.3.0 + semver: 7.6.3 + tapable: 2.2.1 + typescript: 5.6.3 + webpack: 5.90.1 + + form-data-encoder@2.1.4: {} + + form-data@2.3.3: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@2.5.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + safe-buffer: 5.2.1 + + form-data@3.0.2: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + formdata-polyfill@4.0.10: + dependencies: + fetch-blob: 3.2.0 + + formidable@1.2.6: {} + + forwarded@0.2.0: {} + + fraction.js@4.3.7: {} + + fragment-cache@0.2.1: + dependencies: + map-cache: 0.2.2 + + fresh@0.5.2: {} + + from@0.1.7: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@3.0.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 3.0.1 + universalify: 0.1.2 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-minipass@2.1.0: + dependencies: + minipass: 3.3.6 + + fs-minipass@3.0.3: + dependencies: + minipass: 7.1.2 + + fs-monkey@1.0.6: {} + + fs-write-stream-atomic@1.0.10: + dependencies: + graceful-fs: 4.2.11 + iferr: 0.1.5 + imurmurhash: 0.1.4 + readable-stream: 2.3.8 + + fs.realpath@1.0.0: {} + + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.22.0 + optional: true + + fsevents@2.3.3: + optional: true + + full-icu@1.4.0: + dependencies: + yauzl: 2.10.0 + + function-bind@1.1.2: {} + + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + + functions-have-names@1.2.3: {} + + gauge@3.0.2: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + object-assign: 4.1.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gauge@4.0.4: + dependencies: + aproba: 2.0.0 + color-support: 1.1.3 + console-control-strings: 1.1.0 + has-unicode: 2.0.1 + signal-exit: 3.0.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wide-align: 1.1.5 + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.3.0: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-package-type@0.1.0: {} + + get-port@4.2.0: {} + + get-stream@3.0.0: {} + + get-stream@4.1.0: + dependencies: + pump: 3.0.2 + + get-stream@5.2.0: + dependencies: + pump: 3.0.2 + + get-stream@6.0.1: {} + + get-stream@8.0.1: {} + + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + + get-tsconfig@4.8.1: + dependencies: + resolve-pkg-maps: 1.0.0 + + get-uri@6.0.3: + dependencies: + basic-ftp: 5.0.5 + data-uri-to-buffer: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + fs-extra: 11.2.0 + transitivePeerDependencies: + - supports-color + + get-value@2.0.6: {} + + getos@3.2.1: + dependencies: + async: 3.2.6 + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + git-up@7.0.0: + dependencies: + is-ssh: 1.4.0 + parse-url: 8.1.0 + + git-url-parse@13.1.0: + dependencies: + git-up: 7.0.0 + + git-url-parse@13.1.1: + dependencies: + git-up: 7.0.0 + + git-url-parse@14.0.0: + dependencies: + git-up: 7.0.0 + + github-slugger@1.4.0: {} + + github-slugger@2.0.0: {} + + github-username@6.0.0(encoding@0.1.13): + dependencies: + '@octokit/rest': 18.12.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + gitly@2.0.3: + dependencies: + axios: 0.21.4(debug@4.3.2) + tar: 6.2.1 + transitivePeerDependencies: + - debug + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob-promise@4.2.2(glob@7.2.3): + dependencies: + '@types/glob': 7.2.0 + glob: 7.2.3 + + glob-to-regexp@0.4.1: {} + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.1.6: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-cache@1.2.1: + dependencies: + define-properties: 1.2.1 + is-symbol: 1.0.4 + + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globals@9.18.0: {} + + globalthis@1.0.4: + dependencies: + define-properties: 1.2.1 + gopd: 1.0.1 + + globby@11.0.1: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@13.2.2: + dependencies: + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 4.0.0 + + globby@14.0.1: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.2 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + + globjoin@0.1.4: {} + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + got@12.6.1: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + got@13.0.0: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + got@9.6.0: + dependencies: + '@sindresorhus/is': 0.14.0 + '@szmarczak/http-timer': 1.1.2 + '@types/keyv': 3.1.4 + '@types/responselike': 1.0.3 + cacheable-request: 6.1.0 + decompress-response: 3.3.0 + duplexer3: 0.1.5 + get-stream: 4.1.0 + lowercase-keys: 1.0.1 + mimic-response: 1.0.1 + p-cancelable: 1.1.0 + to-readable-stream: 1.0.0 + url-parse-lax: 3.0.0 + + graceful-fs@4.2.10: {} + + graceful-fs@4.2.11: {} + + graceful-readlink@1.0.1: {} + + graphemer@1.4.0: {} + + grouped-queue@2.0.0: {} + + growly@1.3.0: {} + + gzip-size@5.1.1: + dependencies: + duplexer: 0.1.2 + pify: 4.0.1 + + gzip-size@6.0.0: + dependencies: + duplexer: 0.1.2 + + handle-thing@2.0.1: {} + + har-schema@2.0.0: {} + + har-validator@5.1.5: + dependencies: + ajv: 6.12.6 + har-schema: 2.0.0 + + harmony-reflect@1.6.2: {} + + has-ansi@2.0.0: + dependencies: + ansi-regex: 2.1.1 + + has-bigints@1.0.2: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-own-prop@2.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + + has-unicode@2.0.1: {} + + has-value@0.3.1: + dependencies: + get-value: 2.0.6 + has-values: 0.1.4 + isobject: 2.1.0 + + has-value@1.0.0: + dependencies: + get-value: 2.0.6 + has-values: 1.0.0 + isobject: 3.0.1 + + has-values@0.1.4: {} + + has-values@1.0.0: + dependencies: + is-number: 3.0.0 + kind-of: 4.0.0 + + has-yarn@2.1.0: {} + + has-yarn@3.0.0: {} + + has@1.0.4: {} + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hast-util-heading-rank@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-is-element@3.0.0: + dependencies: + '@types/hast': 3.0.4 + + hast-util-to-string@3.0.1: + dependencies: + '@types/hast': 3.0.4 + + he@1.2.0: {} + + hex-color-regex@1.1.0: {} + + history@4.10.1: + dependencies: + '@babel/runtime': 7.20.6 + loose-envify: 1.4.0 + resolve-pathname: 3.0.0 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + value-equal: 1.0.1 + + history@5.3.0: + dependencies: + '@babel/runtime': 7.20.6 + + hoist-non-react-statics@2.5.5: {} + + hoist-non-react-statics@3.3.2: + dependencies: + react-is: 16.13.1 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + hosted-git-info@6.1.1: + dependencies: + lru-cache: 7.18.3 + + hpack.js@2.1.6: + dependencies: + inherits: 2.0.4 + obuf: 1.1.2 + readable-stream: 2.3.8 + wbuf: 1.7.3 + + hsl-regex@1.0.0: {} + + hsla-regex@1.0.0: {} + + html-encoding-sniffer@1.0.2: + dependencies: + whatwg-encoding: 1.0.5 + + html-encoding-sniffer@2.0.1: + dependencies: + whatwg-encoding: 1.0.5 + + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + html-entities@1.4.0: {} + + html-entities@2.5.2: {} + + html-escaper@2.0.2: {} + + html-minifier-terser@6.1.0: + dependencies: + camel-case: 4.1.2 + clean-css: 5.3.3 + commander: 8.3.0 + he: 1.2.0 + param-case: 3.0.4 + relateurl: 0.2.7 + terser: 5.36.0 + + html-tags@3.3.1: {} + + html-webpack-plugin@5.5.0(webpack@5.90.1): + dependencies: + '@types/html-minifier-terser': 6.1.0 + html-minifier-terser: 6.1.0 + lodash: 4.17.21 + pretty-error: 4.0.0 + tapable: 2.2.1 + webpack: 5.90.1 + + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2): + dependencies: + cosmiconfig: 9.0.0(typescript@5.2.2) + posthtml: 0.16.6 + timsort: 0.3.0 + optionalDependencies: + postcss: 8.4.47 + relateurl: 0.2.7 + svgo: 2.8.0 + terser: 5.36.0 + transitivePeerDependencies: + - typescript + + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2): + dependencies: + cosmiconfig: 9.0.0(typescript@5.4.2) + posthtml: 0.16.6 + timsort: 0.3.0 + optionalDependencies: + postcss: 8.4.47 + relateurl: 0.2.7 + svgo: 2.8.0 + terser: 5.36.0 + transitivePeerDependencies: + - typescript + + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3): + dependencies: + cosmiconfig: 9.0.0(typescript@5.6.3) + posthtml: 0.16.6 + timsort: 0.3.0 + optionalDependencies: + postcss: 8.4.47 + relateurl: 0.2.7 + svgo: 2.8.0 + terser: 5.36.0 + transitivePeerDependencies: + - typescript + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 + + htmlparser2@7.2.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 3.0.1 + + http-cache-semantics@4.1.1: {} + + http-deceiver@1.2.7: {} + + http-errors@1.6.3: + dependencies: + depd: 1.1.2 + inherits: 2.0.3 + setprototypeof: 1.1.0 + statuses: 1.5.0 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-parser-js@0.5.8: {} + + http-proxy-agent@4.0.1: + dependencies: + '@tootallnate/once': 1.1.2 + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-proxy-agent@5.0.0: + dependencies: + '@tootallnate/once': 2.0.0 + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-proxy-middleware@2.0.1(debug@4.3.2): + dependencies: + '@types/http-proxy': 1.17.15 + http-proxy: 1.18.1(debug@4.3.2) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + transitivePeerDependencies: + - debug + + http-proxy-middleware@2.0.7(@types/express@4.17.21)(debug@4.3.2): + dependencies: + '@types/http-proxy': 1.17.15 + http-proxy: 1.18.1(debug@4.3.2) + is-glob: 4.0.3 + is-plain-obj: 3.0.0 + micromatch: 4.0.8 + optionalDependencies: + '@types/express': 4.17.21 + transitivePeerDependencies: + - debug + + http-proxy@1.18.1(debug@4.3.2): + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9(debug@4.3.2) + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-signature@1.2.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 1.4.2 + sshpk: 1.18.0 + + http-signature@1.4.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.18.0 + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.5: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + human-signals@1.1.1: {} + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + human-signals@5.0.0: {} + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + icss-utils@5.1.0(postcss@8.4.31): + dependencies: + postcss: 8.4.31 + + icss-utils@5.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + + identity-obj-proxy@3.0.0: + dependencies: + harmony-reflect: 1.6.2 + + ieee754@1.2.1: {} + + iferr@0.1.5: {} + + ignore-walk@4.0.1: + dependencies: + minimatch: 3.1.2 + + ignore-walk@6.0.5: + dependencies: + minimatch: 9.0.5 + + ignore@5.3.2: {} + + ignore@6.0.2: {} + + image-extensions@1.1.0: {} + + image-size@0.5.5: + optional: true + + immer@10.1.1: {} + + immer@8.0.1: {} + + immutable@3.8.2: {} + + immutable@4.3.7: {} + + import-fresh@2.0.0: + dependencies: + caller-path: 2.0.0 + resolve-from: 3.0.0 + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-lazy@2.1.0: {} + + import-lazy@4.0.0: {} + + import-local@2.0.0: + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + + import-local@3.2.0: + dependencies: + pkg-dir: 4.2.0 + resolve-cwd: 3.0.0 + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + indexes-of@1.0.1: {} + + infer-owner@1.0.4: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.3: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + inquirer@7.3.3: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + run-async: 2.4.1 + rxjs: 6.6.7 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + + inquirer@8.2.6: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + + inquirer@9.2.11: + dependencies: + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 5.0.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + inquirer@9.2.14: + dependencies: + '@ljharb/through': 2.3.13 + ansi-escapes: 4.3.2 + chalk: 5.3.0 + cli-cursor: 3.1.0 + cli-width: 4.1.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 1.0.0 + ora: 5.4.1 + run-async: 3.0.0 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.6 + + interpret@1.4.0: {} + + intl-format-cache@4.3.1: {} + + intl-messageformat-parser@3.6.4: + dependencies: + '@formatjs/intl-unified-numberformat': 3.3.7 + + intl-messageformat@10.7.3: + dependencies: + '@formatjs/ecma402-abstract': 2.2.1 + '@formatjs/fast-memoize': 2.2.2 + '@formatjs/icu-messageformat-parser': 2.9.1 + tslib: 2.8.0 + + intl-messageformat@7.8.4: + dependencies: + intl-format-cache: 4.3.1 + intl-messageformat-parser: 3.6.4 + + invariant@2.2.4: + dependencies: + loose-envify: 1.4.0 + + ip-address@9.0.5: + dependencies: + jsbn: 1.1.0 + sprintf-js: 1.1.3 + + ipaddr.js@1.9.1: {} + + ipaddr.js@2.2.0: {} + + is-absolute-url@2.1.0: {} + + is-absolute-url@4.0.1: {} + + is-accessor-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-arguments@1.1.1: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-arrayish@0.2.1: {} + + is-arrayish@0.3.2: {} + + is-async-function@2.0.0: + dependencies: + has-tostringtag: 1.0.2 + + is-bigint@1.0.4: + dependencies: + has-bigints: 1.0.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-boolean-object@1.1.2: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-buffer@1.1.6: {} + + is-bun-module@1.2.1: + dependencies: + semver: 7.6.3 + + is-callable@1.2.7: {} + + is-ci@2.0.0: + dependencies: + ci-info: 2.0.0 + + is-ci@3.0.1: + dependencies: + ci-info: 3.9.0 + + is-color-stop@1.1.0: + dependencies: + css-color-names: 0.0.4 + hex-color-regex: 1.1.0 + hsl-regex: 1.0.0 + hsla-regex: 1.0.0 + rgb-regex: 1.0.1 + rgba-regex: 1.0.0 + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-data-descriptor@1.0.1: + dependencies: + hasown: 2.0.2 + + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + + is-date-object@1.0.5: + dependencies: + has-tostringtag: 1.0.2 + + is-descriptor@0.1.7: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-descriptor@1.0.3: + dependencies: + is-accessor-descriptor: 1.0.1 + is-data-descriptor: 1.0.1 + + is-directory@0.3.1: {} + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extendable@0.1.1: {} + + is-extendable@1.0.1: + dependencies: + is-plain-object: 2.0.4 + + is-extglob@2.1.1: {} + + is-finalizationregistry@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-generator-fn@2.1.0: {} + + is-generator-function@1.0.10: + dependencies: + has-tostringtag: 1.0.2 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hotkey@0.1.8: {} + + is-hotkey@0.2.0: {} + + is-in-ci@0.1.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + + is-interactive@1.0.0: {} + + is-interactive@2.0.0: {} + + is-json@2.0.1: {} + + is-lambda@1.0.1: {} + + is-map@2.0.3: {} + + is-negative-zero@2.0.3: {} + + is-npm@5.0.0: {} + + is-npm@6.0.0: {} + + is-number-object@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-number@3.0.0: + dependencies: + kind-of: 3.2.2 + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@2.1.0: {} + + is-plain-obj@3.0.0: {} + + is-plain-obj@4.1.0: {} + + is-plain-object@2.0.4: + dependencies: + isobject: 3.0.1 + + is-plain-object@5.0.0: {} + + is-potential-custom-element-name@1.0.1: {} + + is-regex@1.1.4: + dependencies: + call-bind: 1.0.7 + has-tostringtag: 1.0.2 + + is-resolvable@1.1.0: {} + + is-root@2.1.0: {} + + is-scoped@2.1.0: + dependencies: + scoped-regex: 2.1.0 + + is-set@2.0.3: {} + + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + + is-ssh@1.4.0: + dependencies: + protocols: 2.0.1 + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-string@1.0.7: + dependencies: + has-tostringtag: 1.0.2 + + is-symbol@1.0.4: + dependencies: + has-symbols: 1.0.3 + + is-touch-device@1.0.1: {} + + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + + is-typedarray@1.0.0: {} + + is-unicode-supported@0.1.0: {} + + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} + + is-url@1.2.4: {} + + is-utf8@0.2.1: {} + + is-weakmap@2.0.2: {} + + is-weakref@1.0.2: + dependencies: + call-bind: 1.0.7 + + is-weakset@2.0.3: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + + is-windows@1.0.2: {} + + is-wsl@1.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + + is-yarn-global@0.3.0: {} + + is-yarn-global@0.4.1: {} + + isarray@0.0.1: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isbinaryfile@4.0.10: {} + + isbinaryfile@5.0.4: {} + + isexe@2.0.0: {} + + isobject@2.1.0: + dependencies: + isarray: 1.0.0 + + isobject@3.0.1: {} + + isomorphic-fetch@2.2.1: + dependencies: + node-fetch: 1.7.3 + whatwg-fetch: 3.6.20 + + isstream@0.1.2: {} + + issue-parser@6.0.0: + 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 + + istanbul-lib-coverage@2.0.5: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-instrument@3.3.0: + dependencies: + '@babel/generator': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.20.5 + istanbul-lib-coverage: 2.0.5 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@4.0.3: + dependencies: + '@babel/core': 7.26.0 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-instrument@5.2.1: + dependencies: + '@babel/core': 7.26.0 + '@babel/parser': 7.26.1 + '@istanbuljs/schema': 0.1.3 + istanbul-lib-coverage: 3.2.2 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-report@2.0.8: + dependencies: + istanbul-lib-coverage: 2.0.5 + make-dir: 2.1.0 + supports-color: 6.1.0 + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@3.0.6: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 2.0.5 + make-dir: 2.1.0 + rimraf: 2.7.1 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-source-maps@4.0.1: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@2.2.7: + dependencies: + html-escaper: 2.0.2 + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + iterate-iterator@1.0.2: {} + + iterate-value@1.0.2: + dependencies: + es-get-iterator: 1.1.3 + iterate-iterator: 1.0.2 + + iterator.prototype@1.1.3: + dependencies: + define-properties: 1.2.1 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + reflect.getprototypeof: 1.0.6 + set-function-name: 2.0.2 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.2: + dependencies: + async: 3.2.6 + chalk: 4.1.2 + filelist: 1.0.4 + minimatch: 3.1.2 + + jest-axe@8.0.0: + dependencies: + axe-core: 4.7.2 + chalk: 4.1.2 + jest-matcher-utils: 29.2.2 + lodash.merge: 4.6.2 + + jest-changed-files@24.9.0: + dependencies: + '@jest/types': 24.9.0 + execa: 1.0.0 + throat: 4.1.0 + + jest-changed-files@26.6.2: + dependencies: + '@jest/types': 26.6.2 + execa: 4.1.0 + throat: 5.0.0 + + jest-cli@24.9.0: + dependencies: + '@jest/core': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + import-local: 2.0.0 + is-ci: 2.0.0 + jest-config: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + prompts: 2.4.2 + realpath-native: 1.1.0 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-cli@26.6.3: + dependencies: + '@jest/core': 26.6.3 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + chalk: 4.1.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + import-local: 3.2.0 + is-ci: 2.0.0 + jest-config: 26.6.3 + jest-util: 26.6.2 + jest-validate: 26.6.2 + prompts: 2.4.2 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-config@24.9.0: + dependencies: + '@babel/core': 7.26.0 + '@jest/test-sequencer': 24.9.0 + '@jest/types': 24.9.0 + babel-jest: 24.9.0(@babel/core@7.26.0) + chalk: 2.4.2 + glob: 7.1.6 + jest-environment-jsdom: 24.9.0 + jest-environment-node: 24.9.0 + jest-get-type: 24.9.0 + jest-jasmine2: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + micromatch: 3.1.10 + pretty-format: 24.9.0 + realpath-native: 1.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-config@26.6.3: + dependencies: + '@babel/core': 7.26.0 + '@jest/test-sequencer': 26.6.3 + '@jest/types': 26.6.2 + babel-jest: 26.6.3(@babel/core@7.26.0) + chalk: 4.1.2 + deepmerge: 4.3.1 + glob: 7.1.6 + graceful-fs: 4.2.11 + jest-environment-jsdom: 26.6.2 + jest-environment-node: 26.6.2 + jest-get-type: 26.3.0 + jest-jasmine2: 26.6.3 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + micromatch: 4.0.8 + pretty-format: 26.6.2 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-diff@24.9.0: + dependencies: + chalk: 2.4.2 + diff-sequences: 24.9.0 + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + + jest-diff@26.6.2: + dependencies: + chalk: 4.1.2 + diff-sequences: 26.6.2 + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + + jest-diff@29.7.0: + dependencies: + chalk: 4.1.2 + diff-sequences: 29.6.3 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-docblock@24.9.0: + dependencies: + detect-newline: 2.1.0 + + jest-docblock@26.0.0: + dependencies: + detect-newline: 3.1.0 + + jest-each@24.9.0: + dependencies: + '@jest/types': 24.9.0 + chalk: 2.4.2 + jest-get-type: 24.9.0 + jest-util: 24.9.0 + pretty-format: 24.9.0 + transitivePeerDependencies: + - supports-color + + jest-each@26.6.2: + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + jest-get-type: 26.3.0 + jest-util: 26.6.2 + pretty-format: 26.6.2 + + jest-environment-jsdom@24.9.0: + dependencies: + '@jest/environment': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + jest-util: 24.9.0 + jsdom: 11.12.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-environment-jsdom@26.6.2: + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + jest-mock: 26.6.2 + jest-util: 26.6.2 + jsdom: 16.7.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - utf-8-validate + + jest-environment-node@24.9.0: + dependencies: + '@jest/environment': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + jest-util: 24.9.0 + transitivePeerDependencies: + - supports-color + + jest-environment-node@26.6.2: + dependencies: + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + jest-mock: 26.6.2 + jest-util: 26.6.2 + + jest-file@1.0.0: {} + + jest-get-type@24.9.0: {} + + jest-get-type@26.3.0: {} + + jest-get-type@29.6.3: {} + + jest-haste-map@24.9.0: + dependencies: + '@jest/types': 24.9.0 + anymatch: 2.0.0 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-serializer: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + micromatch: 3.1.10 + sane: 4.1.0 + walker: 1.0.8 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + + jest-haste-map@26.6.2: + dependencies: + '@jest/types': 26.6.2 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.8.1 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 26.0.0 + jest-serializer: 26.6.2 + jest-util: 26.6.2 + jest-worker: 26.6.2 + micromatch: 4.0.8 + sane: 4.1.0 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + transitivePeerDependencies: + - supports-color + + jest-haste-map@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/graceful-fs': 4.1.9 + '@types/node': 22.8.1 + anymatch: 3.1.3 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + jest-regex-util: 29.6.3 + jest-util: 29.7.0 + jest-worker: 29.7.0 + micromatch: 4.0.8 + walker: 1.0.8 + optionalDependencies: + fsevents: 2.3.3 + + jest-jasmine2@24.9.0: + dependencies: + '@babel/traverse': 7.25.9 + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + co: 4.6.0 + expect: 24.9.0 + is-generator-fn: 2.1.0 + jest-each: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-runtime: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + pretty-format: 24.9.0 + throat: 4.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-jasmine2@26.6.3: + dependencies: + '@babel/traverse': 7.25.9 + '@jest/environment': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + chalk: 4.1.2 + co: 4.6.0 + expect: 26.6.2 + is-generator-fn: 2.1.0 + jest-each: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-runtime: 26.6.3 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + pretty-format: 26.6.2 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-leak-detector@24.9.0: + dependencies: + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + + jest-leak-detector@26.6.2: + dependencies: + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + + jest-matcher-utils@24.9.0: + dependencies: + chalk: 2.4.2 + jest-diff: 24.9.0 + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + + jest-matcher-utils@26.6.2: + dependencies: + chalk: 4.1.2 + jest-diff: 26.6.2 + jest-get-type: 26.3.0 + pretty-format: 26.6.2 + + jest-matcher-utils@29.2.2: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-matcher-utils@29.7.0: + dependencies: + chalk: 4.1.2 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + pretty-format: 29.7.0 + + jest-message-util@24.9.0: + dependencies: + '@babel/code-frame': 7.26.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + '@types/stack-utils': 1.0.1 + chalk: 2.4.2 + micromatch: 3.1.10 + slash: 2.0.0 + stack-utils: 1.0.5 + transitivePeerDependencies: + - supports-color + + jest-message-util@26.6.2: + dependencies: + '@babel/code-frame': 7.26.0 + '@jest/types': 26.6.2 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 26.6.2 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-message-util@29.7.0: + dependencies: + '@babel/code-frame': 7.26.0 + '@jest/types': 29.6.3 + '@types/stack-utils': 2.0.3 + chalk: 4.1.2 + graceful-fs: 4.2.11 + micromatch: 4.0.8 + pretty-format: 29.7.0 + slash: 3.0.0 + stack-utils: 2.0.6 + + jest-mock@24.9.0: + dependencies: + '@jest/types': 24.9.0 + + jest-mock@26.6.2: + dependencies: + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + + jest-mock@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.8.1 + jest-util: 29.7.0 + + jest-pnp-resolver@1.2.3(jest-resolve@24.9.0): + optionalDependencies: + jest-resolve: 24.9.0 + + jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): + optionalDependencies: + jest-resolve: 26.6.2 + + jest-regex-util@24.9.0: {} + + jest-regex-util@26.0.0: {} + + jest-regex-util@29.6.3: {} + + jest-resolve-dependencies@24.9.0: + dependencies: + '@jest/types': 24.9.0 + jest-regex-util: 24.9.0 + jest-snapshot: 24.9.0 + transitivePeerDependencies: + - supports-color + + jest-resolve-dependencies@26.6.3: + dependencies: + '@jest/types': 26.6.2 + jest-regex-util: 26.0.0 + jest-snapshot: 26.6.2 + transitivePeerDependencies: + - supports-color + + jest-resolve@24.9.0: + dependencies: + '@jest/types': 24.9.0 + browser-resolve: 1.11.3 + chalk: 2.4.2 + jest-pnp-resolver: 1.2.3(jest-resolve@24.9.0) + realpath-native: 1.1.0 + + jest-resolve@26.6.2: + dependencies: + '@jest/types': 26.6.2 + chalk: 4.1.2 + graceful-fs: 4.2.11 + jest-pnp-resolver: 1.2.3(jest-resolve@26.6.2) + jest-util: 26.6.2 + read-pkg-up: 7.0.1 + resolve: 1.22.8 + slash: 3.0.0 + + jest-runner@24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 24.9.0 + jest-docblock: 24.9.0 + jest-haste-map: 24.9.0 + jest-jasmine2: 24.9.0 + jest-leak-detector: 24.9.0 + jest-message-util: 24.9.0 + jest-resolve: 24.9.0 + jest-runtime: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + source-map-support: 0.5.21 + throat: 4.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-runner@26.6.3: + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + chalk: 4.1.2 + emittery: 0.7.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 26.6.3 + jest-docblock: 26.0.0 + jest-haste-map: 26.6.2 + jest-leak-detector: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + jest-runtime: 26.6.3 + jest-util: 26.6.2 + jest-worker: 26.6.2 + source-map-support: 0.5.21 + throat: 5.0.0 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-runtime@24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/environment': 24.9.0 + '@jest/source-map': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + '@types/yargs': 13.0.12 + chalk: 2.4.2 + exit: 0.1.2 + glob: 7.1.6 + graceful-fs: 4.2.11 + jest-config: 24.9.0 + jest-haste-map: 24.9.0 + jest-message-util: 24.9.0 + jest-mock: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + realpath-native: 1.1.0 + slash: 2.0.0 + strip-bom: 3.0.0 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest-runtime@26.6.3: + dependencies: + '@jest/console': 26.6.2 + '@jest/environment': 26.6.2 + '@jest/fake-timers': 26.6.2 + '@jest/globals': 26.6.2 + '@jest/source-map': 26.6.2 + '@jest/test-result': 26.6.2 + '@jest/transform': 26.6.2 + '@jest/types': 26.6.2 + '@types/yargs': 15.0.19 + chalk: 4.1.2 + cjs-module-lexer: 0.6.0 + collect-v8-coverage: 1.0.2 + exit: 0.1.2 + glob: 7.1.6 + graceful-fs: 4.2.11 + jest-config: 26.6.3 + jest-haste-map: 26.6.2 + jest-message-util: 26.6.2 + jest-mock: 26.6.2 + jest-regex-util: 26.0.0 + jest-resolve: 26.6.2 + jest-snapshot: 26.6.2 + jest-util: 26.6.2 + jest-validate: 26.6.2 + slash: 3.0.0 + strip-bom: 4.0.0 + yargs: 15.4.1 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jest-serializer@24.9.0: {} + + jest-serializer@26.6.2: + dependencies: + '@types/node': 22.8.1 + graceful-fs: 4.2.11 + + jest-snapshot@24.9.0: + dependencies: + '@babel/types': 7.20.5 + '@jest/types': 24.9.0 + chalk: 2.4.2 + expect: 24.9.0 + jest-diff: 24.9.0 + jest-get-type: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-resolve: 24.9.0 + mkdirp: 0.5.6 + natural-compare: 1.4.0 + pretty-format: 24.9.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + jest-snapshot@26.6.2: + dependencies: + '@babel/types': 7.20.5 + '@jest/types': 26.6.2 + '@types/babel__traverse': 7.20.6 + '@types/prettier': 2.7.3 + chalk: 4.1.2 + expect: 26.6.2 + graceful-fs: 4.2.11 + jest-diff: 26.6.2 + jest-get-type: 26.3.0 + jest-haste-map: 26.6.2 + jest-matcher-utils: 26.6.2 + jest-message-util: 26.6.2 + jest-resolve: 26.6.2 + natural-compare: 1.4.0 + pretty-format: 26.6.2 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + jest-snapshot@29.7.0: + dependencies: + '@babel/core': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.20.5 + '@jest/expect-utils': 29.7.0 + '@jest/transform': 29.7.0 + '@jest/types': 29.6.3 + babel-preset-current-node-syntax: 1.1.0(@babel/core@7.26.0) + chalk: 4.1.2 + expect: 29.7.0 + graceful-fs: 4.2.11 + jest-diff: 29.7.0 + jest-get-type: 29.6.3 + jest-matcher-utils: 29.7.0 + jest-message-util: 29.7.0 + jest-util: 29.7.0 + natural-compare: 1.4.0 + pretty-format: 29.7.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + + jest-util@24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/source-map': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + callsites: 3.1.0 + chalk: 2.4.2 + graceful-fs: 4.2.11 + is-ci: 2.0.0 + mkdirp: 0.5.6 + slash: 2.0.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + + jest-util@26.6.2: + dependencies: + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + chalk: 4.1.2 + graceful-fs: 4.2.11 + is-ci: 2.0.0 + micromatch: 4.0.8 + + jest-util@29.7.0: + dependencies: + '@jest/types': 29.6.3 + '@types/node': 22.8.1 + chalk: 4.1.2 + ci-info: 3.9.0 + graceful-fs: 4.2.11 + picomatch: 2.3.1 + + jest-validate@24.9.0: + dependencies: + '@jest/types': 24.9.0 + camelcase: 5.3.1 + chalk: 2.4.2 + jest-get-type: 24.9.0 + leven: 3.1.0 + pretty-format: 24.9.0 + + jest-validate@26.6.2: + dependencies: + '@jest/types': 26.6.2 + camelcase: 6.3.0 + chalk: 4.1.2 + jest-get-type: 26.3.0 + leven: 3.1.0 + pretty-format: 26.6.2 + + jest-watcher@24.9.0: + dependencies: + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + '@types/yargs': 13.0.12 + ansi-escapes: 3.2.0 + chalk: 2.4.2 + jest-util: 24.9.0 + string-length: 2.0.0 + transitivePeerDependencies: + - supports-color + + jest-watcher@26.6.2: + dependencies: + '@jest/test-result': 26.6.2 + '@jest/types': 26.6.2 + '@types/node': 22.8.1 + ansi-escapes: 4.3.2 + chalk: 4.1.2 + jest-util: 26.6.2 + string-length: 4.0.2 + + jest-worker@24.9.0: + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + + jest-worker@25.5.0: + dependencies: + merge-stream: 2.0.0 + supports-color: 7.2.0 + + jest-worker@26.6.2: + dependencies: + '@types/node': 22.8.1 + merge-stream: 2.0.0 + supports-color: 7.2.0 + + jest-worker@27.5.1: + dependencies: + '@types/node': 22.8.1 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest-worker@29.7.0: + dependencies: + '@types/node': 22.8.1 + jest-util: 29.7.0 + merge-stream: 2.0.0 + supports-color: 8.1.1 + + jest@24.9.0: + dependencies: + import-local: 2.0.0 + jest-cli: 24.9.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jest@26.6.3: + dependencies: + '@jest/core': 26.6.3 + import-local: 3.2.0 + jest-cli: 26.6.3 + transitivePeerDependencies: + - bufferutil + - canvas + - supports-color + - ts-node + - utf-8-validate + + jju@1.4.0: {} + + joi@17.13.3: + dependencies: + '@hapi/hoek': 9.3.0 + '@hapi/topo': 5.1.0 + '@sideway/address': 4.1.5 + '@sideway/formula': 3.0.1 + '@sideway/pinpoint': 2.0.0 + + jotai@2.0.3(react@18.2.0): + optionalDependencies: + react: 18.2.0 + + joycon@3.1.1: {} + + jquery@3.7.1: {} + + js-tokens@3.0.2: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + jsbn@1.1.0: {} + + jsdoc-type-pratt-parser@4.1.0: {} + + jsdom@11.12.0: + dependencies: + abab: 2.0.6 + acorn: 5.7.4 + acorn-globals: 4.3.4 + array-equal: 1.0.2 + cssom: 0.3.8 + cssstyle: 1.4.0 + data-urls: 1.1.0 + domexception: 1.0.1 + escodegen: 1.14.3 + html-encoding-sniffer: 1.0.2 + left-pad: 1.3.0 + nwsapi: 2.2.13 + parse5: 4.0.0 + pn: 1.1.0 + request: 2.88.2 + request-promise-native: 1.0.9(request@2.88.2) + sax: 1.4.1 + symbol-tree: 3.2.4 + tough-cookie: 2.5.0 + w3c-hr-time: 1.0.2 + webidl-conversions: 4.0.2 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 6.5.0 + ws: 5.2.4 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + jsdom@16.7.0: + dependencies: + abab: 2.0.6 + acorn: 8.13.0 + acorn-globals: 6.0.0 + cssom: 0.4.4 + cssstyle: 2.3.0 + data-urls: 2.0.0 + decimal.js: 10.4.3 + domexception: 2.0.1 + escodegen: 2.1.0 + form-data: 3.0.2 + html-encoding-sniffer: 2.0.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.13 + parse5: 6.0.1 + saxes: 5.0.1 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-hr-time: 1.0.2 + w3c-xmlserializer: 2.0.0 + webidl-conversions: 6.1.0 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 8.7.0 + ws: 7.5.10 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@21.1.2: + dependencies: + abab: 2.0.6 + acorn: 8.13.0 + acorn-globals: 7.0.1 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 + domexception: 4.0.0 + escodegen: 2.1.0 + form-data: 4.0.1 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.13 + parse5: 7.2.0 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.18.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsdom@22.1.0: + dependencies: + abab: 2.0.6 + cssstyle: 3.0.0 + data-urls: 4.0.0 + decimal.js: 10.4.3 + domexception: 4.0.0 + form-data: 4.0.1 + html-encoding-sniffer: 3.0.0 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-potential-custom-element-name: 1.0.1 + nwsapi: 2.2.13 + parse5: 7.2.0 + rrweb-cssom: 0.6.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 4.1.4 + w3c-xmlserializer: 4.0.0 + webidl-conversions: 7.0.0 + whatwg-encoding: 2.0.0 + whatwg-mimetype: 3.0.0 + whatwg-url: 12.0.1 + ws: 8.18.0 + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.0.2: {} + + json-buffer@3.0.0: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-parse-even-better-errors@3.0.2: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-nice@1.1.4: {} + + json-stringify-safe@5.0.1: {} + + json3@3.3.3: {} + + json5@0.5.1: {} + + json5@1.0.2: + dependencies: + minimist: 1.2.8 + + json5@2.2.3: {} + + jsonfile@3.0.1: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonpack@1.1.5: {} + + jsonparse@1.3.1: {} + + jsonwebtoken@9.0.0: + dependencies: + jws: 3.2.2 + lodash: 4.17.21 + ms: 2.1.3 + semver: 7.6.3 + + jsprim@1.4.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jsprim@2.0.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + jsx-ast-utils@3.3.5: + dependencies: + array-includes: 3.1.8 + array.prototype.flat: 1.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + + just-curry-it@5.3.0: {} + + just-diff-apply@5.5.0: {} + + just-diff@5.2.0: {} + + just-extend@6.2.0: {} + + jwa@1.4.1: + dependencies: + buffer-equal-constant-time: 1.0.1 + ecdsa-sig-formatter: 1.0.11 + safe-buffer: 5.2.1 + + jws@3.2.2: + dependencies: + jwa: 1.4.1 + safe-buffer: 5.2.1 + + jwt-decode@2.2.0: {} + + keyboard-key@1.1.0: {} + + keyv@3.1.0: + dependencies: + json-buffer: 3.0.0 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@3.2.2: + dependencies: + is-buffer: 1.1.6 + + kind-of@4.0.0: + dependencies: + is-buffer: 1.1.6 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + klona@2.0.6: {} + + known-css-properties@0.34.0: {} + + kolorist@1.8.0: {} + + language-subtag-registry@0.3.23: {} + + language-tags@1.0.9: + dependencies: + language-subtag-registry: 0.3.23 + + latest-version@5.1.0: + dependencies: + package-json: 6.5.0 + + latest-version@7.0.0: + dependencies: + package-json: 8.1.1 + + lazy-ass@1.6.0: {} + + lcov-parse@1.0.0: {} + + left-pad@1.3.0: {} + + less-loader@11.1.0(less@3.11.1)(webpack@5.90.1): + dependencies: + klona: 2.0.6 + less: 3.11.1 + webpack: 5.90.1 + + less@3.11.1: + dependencies: + clone: 2.1.2 + tslib: 1.14.1 + optionalDependencies: + errno: 0.1.8 + graceful-fs: 4.2.11 + image-size: 0.5.5 + mime: 1.6.0 + mkdirp: 0.5.6 + promise: 7.1.1 + request: 2.88.2 + source-map: 0.6.1 + + leven@3.1.0: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-cli-darwin-arm64@1.27.0: + optional: true + + lightningcss-cli-darwin-x64@1.27.0: + optional: true + + lightningcss-cli-freebsd-x64@1.27.0: + optional: true + + lightningcss-cli-linux-arm-gnueabihf@1.27.0: + optional: true + + lightningcss-cli-linux-arm64-gnu@1.27.0: + optional: true + + lightningcss-cli-linux-arm64-musl@1.27.0: + optional: true + + lightningcss-cli-linux-x64-gnu@1.27.0: + optional: true + + lightningcss-cli-linux-x64-musl@1.27.0: + optional: true + + lightningcss-cli-win32-arm64-msvc@1.27.0: + optional: true + + lightningcss-cli-win32-x64-msvc@1.27.0: + optional: true + + lightningcss-cli@1.27.0: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-cli-darwin-arm64: 1.27.0 + lightningcss-cli-darwin-x64: 1.27.0 + lightningcss-cli-freebsd-x64: 1.27.0 + lightningcss-cli-linux-arm-gnueabihf: 1.27.0 + lightningcss-cli-linux-arm64-gnu: 1.27.0 + lightningcss-cli-linux-arm64-musl: 1.27.0 + lightningcss-cli-linux-x64-gnu: 1.27.0 + lightningcss-cli-linux-x64-musl: 1.27.0 + lightningcss-cli-win32-arm64-msvc: 1.27.0 + lightningcss-cli-win32-x64-msvc: 1.27.0 + + lightningcss-darwin-arm64@1.27.0: + optional: true + + lightningcss-darwin-x64@1.27.0: + optional: true + + lightningcss-freebsd-x64@1.27.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.27.0: + optional: true + + lightningcss-linux-arm64-gnu@1.27.0: + optional: true + + lightningcss-linux-arm64-musl@1.27.0: + optional: true + + lightningcss-linux-x64-gnu@1.27.0: + optional: true + + lightningcss-linux-x64-musl@1.27.0: + optional: true + + lightningcss-win32-arm64-msvc@1.27.0: + optional: true + + lightningcss-win32-x64-msvc@1.27.0: + optional: true + + lightningcss@1.27.0: + dependencies: + detect-libc: 1.0.3 + optionalDependencies: + lightningcss-darwin-arm64: 1.27.0 + lightningcss-darwin-x64: 1.27.0 + lightningcss-freebsd-x64: 1.27.0 + lightningcss-linux-arm-gnueabihf: 1.27.0 + lightningcss-linux-arm64-gnu: 1.27.0 + lightningcss-linux-arm64-musl: 1.27.0 + lightningcss-linux-x64-gnu: 1.27.0 + lightningcss-linux-x64-musl: 1.27.0 + lightningcss-win32-arm64-msvc: 1.27.0 + lightningcss-win32-x64-msvc: 1.27.0 + + lilconfig@2.1.0: {} + + lilconfig@3.1.2: {} + + lines-and-columns@1.2.4: {} + + linkify-it@3.0.2: + dependencies: + uc.micro: 1.0.6 + + listr2@3.14.0(enquirer@2.4.1): + dependencies: + cli-truncate: 2.1.0 + colorette: 2.0.20 + log-update: 4.0.0 + p-map: 4.0.0 + rfdc: 1.4.1 + rxjs: 7.8.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + optionalDependencies: + enquirer: 2.4.1 + + lmdb@2.8.5: + dependencies: + msgpackr: 1.11.0 + node-addon-api: 6.1.0 + node-gyp-build-optional-packages: 5.1.1 + ordered-binary: 1.5.2 + weak-lru-cache: 1.2.2 + optionalDependencies: + '@lmdb/lmdb-darwin-arm64': 2.8.5 + '@lmdb/lmdb-darwin-x64': 2.8.5 + '@lmdb/lmdb-linux-arm': 2.8.5 + '@lmdb/lmdb-linux-arm64': 2.8.5 + '@lmdb/lmdb-linux-x64': 2.8.5 + '@lmdb/lmdb-win32-x64': 2.8.5 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + load-tsconfig@0.2.5: {} + + load-yaml-file@0.2.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.14.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + loader-runner@4.3.0: {} + + loader-utils@1.4.2: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 1.0.2 + + loader-utils@2.0.0: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + loader-utils@2.0.4: + dependencies: + big.js: 5.2.2 + emojis-list: 3.0.0 + json5: 2.2.3 + + local-pkg@0.5.0: + dependencies: + mlly: 1.7.2 + pkg-types: 1.2.1 + + locale@0.1.0: {} + + locate-path@3.0.0: + dependencies: + p-locate: 3.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + locate-path@7.2.0: + dependencies: + p-locate: 6.0.0 + + lodash-es@4.17.21: {} + + lodash-move@1.1.1: + dependencies: + lodash: 4.17.21 + + lodash-webpack-plugin@0.11.6(webpack@5.90.1): + dependencies: + lodash: 4.17.21 + webpack: 5.90.1 + + lodash.capitalize@4.2.1: {} + + lodash.debounce@4.0.8: {} + + lodash.difference@4.5.0: {} + + lodash.escaperegexp@4.1.2: {} + + lodash.get@4.4.2: {} + + lodash.isequal@4.5.0: {} + + lodash.isplainobject@4.0.6: {} + + lodash.isstring@4.0.1: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash.sortby@4.7.0: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.uniqby@4.7.0: {} + + lodash@4.17.21: {} + + log-driver@1.2.7: {} + + log-symbols@1.0.2: + dependencies: + chalk: 1.1.3 + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-symbols@5.1.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + + log-symbols@6.0.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + + log-update@4.0.0: + dependencies: + ansi-escapes: 4.3.2 + cli-cursor: 3.1.0 + slice-ansi: 4.0.0 + wrap-ansi: 6.2.0 + + longest-streak@3.1.0: {} + + loose-envify@1.4.0: + dependencies: + js-tokens: 4.0.0 + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + loupe@3.1.2: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.0 + + lowercase-keys@1.0.1: {} + + lowercase-keys@2.0.0: {} + + lowercase-keys@3.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@4.1.5: + dependencies: + pseudomap: 1.0.2 + yallist: 2.1.2 + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru-cache@7.18.3: {} + + lz-string@1.5.0: {} + + macos-release@3.3.0: {} + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.12: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magicast@0.3.5: + dependencies: + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 + source-map-js: 1.2.1 + + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + + make-dir@3.1.0: + dependencies: + semver: 6.3.1 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + make-error@1.3.6: {} + + make-fetch-happen@10.2.1: + dependencies: + agentkeepalive: 4.5.0 + cacache: 16.1.3 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 2.1.2 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 9.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + make-fetch-happen@11.1.1: + dependencies: + agentkeepalive: 4.5.0 + cacache: 17.1.4 + http-cache-semantics: 4.1.1 + http-proxy-agent: 5.0.0 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 7.18.3 + minipass: 5.0.0 + minipass-fetch: 3.0.5 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + promise-retry: 2.0.1 + socks-proxy-agent: 7.0.0 + ssri: 10.0.6 + transitivePeerDependencies: + - supports-color + + make-fetch-happen@9.1.0: + dependencies: + agentkeepalive: 4.5.0 + cacache: 15.3.0 + http-cache-semantics: 4.1.1 + http-proxy-agent: 4.0.1 + https-proxy-agent: 5.0.1 + is-lambda: 1.0.1 + lru-cache: 6.0.0 + minipass: 3.3.6 + minipass-collect: 1.0.2 + minipass-fetch: 1.4.1 + minipass-flush: 1.0.5 + minipass-pipeline: 1.2.4 + negotiator: 0.6.4 + promise-retry: 2.0.1 + socks-proxy-agent: 6.2.1 + ssri: 8.0.1 + transitivePeerDependencies: + - bluebird + - supports-color + + makeerror@1.0.12: + dependencies: + tmpl: 1.0.5 + + map-cache@0.2.2: {} + + map-or-similar@1.5.0: {} + + map-stream@0.1.0: {} + + map-visit@1.0.0: + dependencies: + object-visit: 1.0.1 + + markdown-table@3.0.4: {} + + markdown-to-jsx@7.5.0(react@18.2.0): + dependencies: + react: 18.2.0 + + mathml-tag-names@2.1.3: {} + + mdast-util-find-and-replace@3.0.1: + dependencies: + '@types/mdast': 4.0.4 + escape-string-regexp: 5.0.0 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + mdast-util-from-markdown@2.0.2: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + mdast-util-to-string: 4.0.0 + micromark: 4.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-decode-string: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-stringify-position: 4.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-autolink-literal@2.0.1: + dependencies: + '@types/mdast': 4.0.4 + ccount: 2.0.1 + devlop: 1.1.0 + mdast-util-find-and-replace: 3.0.1 + micromark-util-character: 2.1.0 + + mdast-util-gfm-footnote@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-strikethrough@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-table@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + markdown-table: 3.0.4 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm-task-list-item@2.0.0: + dependencies: + '@types/mdast': 4.0.4 + devlop: 1.1.0 + mdast-util-from-markdown: 2.0.2 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-gfm@3.0.0: + dependencies: + mdast-util-from-markdown: 2.0.2 + mdast-util-gfm-autolink-literal: 2.0.1 + mdast-util-gfm-footnote: 2.0.0 + mdast-util-gfm-strikethrough: 2.0.0 + mdast-util-gfm-table: 2.0.0 + mdast-util-gfm-task-list-item: 2.0.0 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + + mdast-util-phrasing@4.1.0: + dependencies: + '@types/mdast': 4.0.4 + unist-util-is: 6.0.0 + + mdast-util-to-markdown@2.1.0: + dependencies: + '@types/mdast': 4.0.4 + '@types/unist': 3.0.3 + longest-streak: 3.1.0 + mdast-util-phrasing: 4.1.0 + mdast-util-to-string: 4.0.0 + micromark-util-decode-string: 2.0.0 + unist-util-visit: 5.0.0 + zwitch: 2.0.4 + + mdast-util-to-string@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + + mdn-data@2.0.14: {} + + mdn-data@2.0.4: {} + + mdn-data@2.10.0: {} + + media-typer@0.3.0: {} + + mem-fs-editor@9.7.0(mem-fs@2.3.0): + dependencies: + binaryextensions: 4.19.0 + commondir: 1.0.1 + deep-extend: 0.6.0 + ejs: 3.1.10 + globby: 11.1.0 + isbinaryfile: 5.0.4 + minimatch: 7.4.6 + multimatch: 5.0.0 + normalize-path: 3.0.0 + textextensions: 5.16.0 + optionalDependencies: + mem-fs: 2.3.0 + + mem-fs@2.3.0: + dependencies: + '@types/node': 15.14.9 + '@types/vinyl': 2.0.12 + vinyl: 2.2.1 + vinyl-file: 3.0.0 + + memfs@3.5.3: + dependencies: + fs-monkey: 1.0.6 + + memoize-one@5.2.1: {} + + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + + meow@13.2.0: {} + + merge-descriptors@1.0.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + methods@1.1.2: {} + + microevent.ts@0.1.1: {} + + micromark-core-commonmark@2.0.1: + dependencies: + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-factory-destination: 2.0.0 + micromark-factory-label: 2.0.0 + micromark-factory-space: 2.0.0 + micromark-factory-title: 2.0.0 + micromark-factory-whitespace: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-html-tag-name: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-autolink-literal@2.1.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-footnote@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-strikethrough@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-classify-character: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-table@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm-tagfilter@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-extension-gfm-task-list-item@2.1.0: + dependencies: + devlop: 1.1.0 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-extension-gfm@3.0.0: + dependencies: + micromark-extension-gfm-autolink-literal: 2.1.0 + micromark-extension-gfm-footnote: 2.1.0 + micromark-extension-gfm-strikethrough: 2.1.0 + micromark-extension-gfm-table: 2.1.0 + micromark-extension-gfm-tagfilter: 2.0.0 + micromark-extension-gfm-task-list-item: 2.1.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-destination@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-label@2.0.0: + dependencies: + devlop: 1.1.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-space@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-types: 2.0.0 + + micromark-factory-title@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-factory-whitespace@2.0.0: + dependencies: + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-character@2.1.0: + dependencies: + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-chunked@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-classify-character@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-combine-extensions@2.0.0: + dependencies: + micromark-util-chunked: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-decode-numeric-character-reference@2.0.1: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-decode-string@2.0.0: + dependencies: + decode-named-character-reference: 1.0.2 + micromark-util-character: 2.1.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-symbol: 2.0.0 + + micromark-util-encode@2.0.0: {} + + micromark-util-html-tag-name@2.0.0: {} + + micromark-util-normalize-identifier@2.0.0: + dependencies: + micromark-util-symbol: 2.0.0 + + micromark-util-resolve-all@2.0.0: + dependencies: + micromark-util-types: 2.0.0 + + micromark-util-sanitize-uri@2.0.0: + dependencies: + micromark-util-character: 2.1.0 + micromark-util-encode: 2.0.0 + micromark-util-symbol: 2.0.0 + + micromark-util-subtokenize@2.0.1: + dependencies: + devlop: 1.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + + micromark-util-symbol@2.0.0: {} + + micromark-util-types@2.0.0: {} + + micromark@4.0.0: + dependencies: + '@types/debug': 4.1.12 + debug: 4.3.4(supports-color@8.1.1) + decode-named-character-reference: 1.0.2 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.1.0 + micromark-util-chunked: 2.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-decode-numeric-character-reference: 2.0.1 + micromark-util-encode: 2.0.0 + micromark-util-normalize-identifier: 2.0.0 + micromark-util-resolve-all: 2.0.0 + micromark-util-sanitize-uri: 2.0.0 + micromark-util-subtokenize: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + transitivePeerDependencies: + - supports-color + + micromatch@3.1.10: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + braces: 2.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + extglob: 2.0.4 + fragment-cache: 0.2.1 + kind-of: 6.0.3 + nanomatch: 1.2.13 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-db@1.53.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@1.2.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + mimic-response@1.0.1: {} + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + min-indent@1.0.1: {} + + mini-create-react-context@0.4.1(prop-types@15.7.2)(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + prop-types: 15.7.2 + react: 18.2.0 + tiny-warning: 1.0.3 + + mini-css-extract-plugin@2.7.2(webpack@5.90.1): + dependencies: + schema-utils: 4.2.0 + webpack: 5.90.1 + + minimalistic-assert@1.0.1: {} + + minimatch@3.0.4: + dependencies: + brace-expansion: 1.1.11 + + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.11 + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@7.4.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist@1.2.8: {} + + minipass-collect@1.0.2: + dependencies: + minipass: 3.3.6 + + minipass-fetch@1.4.1: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-fetch@2.1.2: + dependencies: + minipass: 3.3.6 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-fetch@3.0.5: + dependencies: + minipass: 7.1.2 + minipass-sized: 1.0.3 + minizlib: 2.1.2 + optionalDependencies: + encoding: 0.1.13 + + minipass-flush@1.0.5: + dependencies: + minipass: 3.3.6 + + minipass-json-stream@1.0.2: + dependencies: + jsonparse: 1.3.1 + minipass: 3.3.6 + + minipass-pipeline@1.2.4: + dependencies: + minipass: 3.3.6 + + minipass-sized@1.0.3: + dependencies: + minipass: 3.3.6 + + minipass@3.3.6: + dependencies: + yallist: 4.0.0 + + minipass@5.0.0: {} + + minipass@7.1.2: {} + + minizlib@2.1.2: + dependencies: + minipass: 3.3.6 + yallist: 4.0.0 + + mixin-deep@1.3.2: + dependencies: + for-in: 1.0.2 + is-extendable: 1.0.1 + + mkdirp-infer-owner@2.0.0: + dependencies: + chownr: 2.0.0 + infer-owner: 1.0.4 + mkdirp: 1.0.4 + + mkdirp-then@1.2.0: + dependencies: + any-promise: 1.3.0 + mkdirp: 0.5.6 + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mlly@1.7.2: + dependencies: + acorn: 8.13.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + + moment-locales-webpack-plugin@1.2.0(moment@2.29.4)(webpack@5.90.1): + dependencies: + lodash.difference: 4.5.0 + moment: 2.29.4 + webpack: 5.90.1 + + moment@2.29.4: {} + + move-concurrently@1.0.1: + dependencies: + aproba: 1.2.0 + copy-concurrently: 1.0.5 + fs-write-stream-atomic: 1.0.10 + mkdirp: 0.5.6 + rimraf: 2.7.1 + run-queue: 1.0.3 + + mri@1.2.0: {} + + mrmime@2.0.0: {} + + mrs-developer@2.2.0: + dependencies: + async: 3.2.6 + chalk: 2.4.2 + simple-git: 3.27.0 + transitivePeerDependencies: + - supports-color + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + msgpackr-extract@3.0.3: + dependencies: + node-gyp-build-optional-packages: 5.2.2 + optionalDependencies: + '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 + '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 + optional: true + + msgpackr@1.11.0: + optionalDependencies: + msgpackr-extract: 3.0.3 + + muggle-string@0.3.1: {} + + multicast-dns@7.2.5: + dependencies: + dns-packet: 5.6.1 + thunky: 1.1.0 + + multimatch@5.0.0: + dependencies: + '@types/minimatch': 3.0.5 + array-differ: 3.0.0 + array-union: 2.1.0 + arrify: 2.0.1 + minimatch: 3.1.2 + + mute-stream@0.0.8: {} + + mute-stream@1.0.0: {} + + mz@2.6.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nan@2.22.0: + optional: true + + nanoid@3.3.7: {} + + nanomatch@1.2.13: + dependencies: + arr-diff: 4.0.0 + array-unique: 0.3.2 + define-property: 2.0.2 + extend-shallow: 3.0.2 + fragment-cache: 0.2.1 + is-windows: 1.0.2 + kind-of: 6.0.3 + object.pick: 1.3.0 + regex-not: 1.0.2 + snapdragon: 0.8.2 + to-regex: 3.0.2 + transitivePeerDependencies: + - supports-color + + native-url@0.2.6: + dependencies: + querystring: 0.2.1 + + natural-compare-lite@1.4.0: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + negotiator@0.6.4: {} + + neo-async@2.6.2: {} + + netmask@2.0.2: {} + + new-github-release-url@2.0.0: + dependencies: + type-fest: 2.19.0 + + next-tick@1.1.0: {} + + nice-try@1.0.5: {} + + nise@5.1.9: + dependencies: + '@sinonjs/commons': 3.0.1 + '@sinonjs/fake-timers': 11.3.1 + '@sinonjs/text-encoding': 0.7.3 + just-extend: 6.2.0 + path-to-regexp: 6.3.0 + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.0 + + node-abort-controller@3.1.1: {} + + node-addon-api@6.1.0: {} + + node-addon-api@7.1.1: {} + + node-domexception@1.0.0: {} + + node-fetch@1.7.3: + dependencies: + encoding: 0.1.13 + is-stream: 1.1.0 + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@3.3.2: + dependencies: + data-uri-to-buffer: 4.0.1 + fetch-blob: 3.2.0 + formdata-polyfill: 4.0.10 + + node-forge@1.3.1: {} + + node-gyp-build-optional-packages@5.1.1: + dependencies: + detect-libc: 2.0.3 + + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.0.3 + optional: true + + node-gyp@8.4.1: + dependencies: + env-paths: 2.2.1 + glob: 7.1.6 + graceful-fs: 4.2.11 + make-fetch-happen: 9.1.0 + nopt: 5.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.6.3 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + node-gyp@9.4.1: + dependencies: + env-paths: 2.2.1 + exponential-backoff: 3.1.1 + glob: 7.1.6 + graceful-fs: 4.2.11 + make-fetch-happen: 10.2.1 + nopt: 6.0.0 + npmlog: 6.0.2 + rimraf: 3.0.2 + semver: 7.6.3 + tar: 6.2.1 + which: 2.0.2 + transitivePeerDependencies: + - bluebird + - supports-color + + node-int64@0.4.0: {} + + node-notifier@5.4.5: + dependencies: + growly: 1.3.0 + is-wsl: 1.1.0 + semver: 5.7.2 + shellwords: 0.1.1 + which: 1.3.1 + + node-notifier@8.0.2: + dependencies: + growly: 1.3.0 + is-wsl: 2.2.0 + semver: 7.6.3 + shellwords: 0.1.1 + uuid: 8.3.2 + which: 2.0.2 + optional: true + + node-releases@1.1.77: {} + + node-releases@2.0.18: {} + + nopt@5.0.0: + dependencies: + abbrev: 1.1.1 + + nopt@6.0.0: + dependencies: + abbrev: 1.1.1 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@5.0.0: + dependencies: + hosted-git-info: 6.1.1 + is-core-module: 2.15.1 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + + normalize-path@2.1.1: + dependencies: + remove-trailing-separator: 1.1.0 + + normalize-path@3.0.0: {} + + normalize-range@0.1.2: {} + + normalize-url@3.3.0: {} + + normalize-url@4.5.1: {} + + normalize-url@8.0.1: {} + + npm-bundled@1.1.2: + dependencies: + npm-normalize-package-bin: 1.0.1 + + npm-bundled@3.0.1: + dependencies: + npm-normalize-package-bin: 3.0.1 + + npm-install-checks@4.0.0: + dependencies: + semver: 7.6.3 + + npm-install-checks@6.3.0: + dependencies: + semver: 7.6.3 + + npm-normalize-package-bin@1.0.1: {} + + npm-normalize-package-bin@2.0.0: {} + + npm-normalize-package-bin@3.0.1: {} + + npm-package-arg@10.1.0: + dependencies: + hosted-git-info: 6.1.1 + proc-log: 3.0.0 + semver: 7.6.3 + validate-npm-package-name: 5.0.1 + + npm-package-arg@8.1.5: + dependencies: + hosted-git-info: 4.1.0 + semver: 7.6.3 + validate-npm-package-name: 3.0.0 + + npm-packlist@3.0.0: + dependencies: + glob: 7.1.6 + ignore-walk: 4.0.1 + npm-bundled: 1.1.2 + npm-normalize-package-bin: 1.0.1 + + npm-packlist@7.0.4: + dependencies: + ignore-walk: 6.0.5 + + npm-pick-manifest@6.1.1: + dependencies: + npm-install-checks: 4.0.0 + npm-normalize-package-bin: 1.0.1 + npm-package-arg: 8.1.5 + semver: 7.6.3 + + npm-pick-manifest@8.0.2: + dependencies: + npm-install-checks: 6.3.0 + npm-normalize-package-bin: 3.0.1 + npm-package-arg: 10.1.0 + semver: 7.6.3 + + npm-registry-fetch@12.0.2: + dependencies: + make-fetch-happen: 10.2.1 + minipass: 3.3.6 + minipass-fetch: 1.4.1 + minipass-json-stream: 1.0.2 + minizlib: 2.1.2 + npm-package-arg: 8.1.5 + transitivePeerDependencies: + - bluebird + - supports-color + + npm-registry-fetch@14.0.5: + dependencies: + make-fetch-happen: 11.1.1 + minipass: 5.0.0 + minipass-fetch: 3.0.5 + minipass-json-stream: 1.0.2 + minizlib: 2.1.2 + npm-package-arg: 10.1.0 + proc-log: 3.0.0 + transitivePeerDependencies: + - supports-color + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + npmlog@5.0.1: + dependencies: + are-we-there-yet: 2.0.0 + console-control-strings: 1.1.0 + gauge: 3.0.2 + set-blocking: 2.0.0 + + npmlog@6.0.2: + dependencies: + are-we-there-yet: 3.0.1 + console-control-strings: 1.1.0 + gauge: 4.0.4 + set-blocking: 2.0.0 + + nth-check@1.0.2: + dependencies: + boolbase: 1.0.0 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + null-loader@4.0.1(webpack@5.90.1): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.90.1 + + nullthrows@1.1.1: {} + + nwsapi@2.2.13: {} + + oauth-sign@0.9.0: {} + + object-assign@4.1.1: {} + + object-copy@0.1.0: + dependencies: + copy-descriptor: 0.1.1 + define-property: 0.2.5 + kind-of: 3.2.2 + + object-inspect@1.13.2: {} + + object-is@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + + object-keys@1.1.1: {} + + object-visit@1.0.1: + dependencies: + isobject: 3.0.1 + + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + + object.entries@1.1.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + object.fromentries@2.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + object.getownpropertydescriptors@2.1.8: + dependencies: + array.prototype.reduce: 1.0.7 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + gopd: 1.0.1 + safe-array-concat: 1.1.2 + + object.groupby@1.0.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + object.pick@1.3.0: + dependencies: + isobject: 3.0.1 + + object.values@1.2.0: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + objectorarray@1.0.5: {} + + obuf@1.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + + on-headers@1.0.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@2.0.1: + dependencies: + mimic-fn: 1.2.0 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@10.0.3: + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + + open@7.4.2: + dependencies: + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + open@9.1.0: + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + + opener@1.5.2: {} + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@1.2.0: + dependencies: + chalk: 1.1.3 + cli-cursor: 2.1.0 + cli-spinners: 1.3.1 + log-symbols: 1.0.2 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ora@7.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + string-width: 6.1.0 + strip-ansi: 7.1.0 + + ora@8.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 + + ordered-binary@1.5.2: {} + + os-name@5.1.0: + dependencies: + macos-release: 3.3.0 + windows-release: 5.1.1 + + os-tmpdir@1.0.2: {} + + ospath@1.2.2: {} + + p-cancelable@1.1.0: {} + + p-cancelable@3.0.0: {} + + p-each-series@1.0.0: + dependencies: + p-reduce: 1.0.0 + + p-each-series@2.2.0: {} + + p-finally@1.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-limit@4.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + + p-locate@3.0.0: + dependencies: + p-limit: 2.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-locate@6.0.0: + dependencies: + p-limit: 4.0.0 + + p-map@3.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-queue@6.6.2: + dependencies: + eventemitter3: 4.0.7 + p-timeout: 3.2.0 + + p-reduce@1.0.0: {} + + p-retry@4.6.2: + dependencies: + '@types/retry': 0.12.0 + retry: 0.13.1 + + p-timeout@3.2.0: + dependencies: + p-finally: 1.0.0 + + p-transform@1.3.0: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + p-queue: 6.6.2 + transitivePeerDependencies: + - supports-color + + p-try@2.2.0: {} + + pac-proxy-agent@7.0.2: + dependencies: + '@tootallnate/quickjs-emscripten': 0.23.0 + agent-base: 7.1.1 + debug: 4.3.4(supports-color@8.1.1) + get-uri: 6.0.3 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + pac-resolver: 7.0.1 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + pac-resolver@7.0.1: + dependencies: + degenerator: 5.0.1 + netmask: 2.0.2 + + package-json-from-dist@1.0.1: {} + + package-json@6.5.0: + dependencies: + got: 9.6.0 + registry-auth-token: 4.2.2 + registry-url: 5.1.0 + semver: 6.3.1 + + package-json@8.1.1: + dependencies: + got: 12.6.1 + registry-auth-token: 5.0.2 + registry-url: 6.0.1 + semver: 7.6.0 + + pacote@12.0.3: + dependencies: + '@npmcli/git': 2.1.0 + '@npmcli/installed-package-contents': 1.0.7 + '@npmcli/promise-spawn': 1.3.2 + '@npmcli/run-script': 2.0.0 + cacache: 15.3.0 + chownr: 2.0.0 + fs-minipass: 2.1.0 + infer-owner: 1.0.4 + minipass: 3.3.6 + mkdirp: 1.0.4 + npm-package-arg: 8.1.5 + npm-packlist: 3.0.0 + npm-pick-manifest: 6.1.1 + npm-registry-fetch: 12.0.2 + promise-retry: 2.0.1 + read-package-json-fast: 2.0.3 + rimraf: 3.0.2 + ssri: 8.0.1 + tar: 6.2.1 + transitivePeerDependencies: + - bluebird + - supports-color + + pacote@15.2.0: + dependencies: + '@npmcli/git': 4.1.0 + '@npmcli/installed-package-contents': 2.1.0 + '@npmcli/promise-spawn': 6.0.2 + '@npmcli/run-script': 6.0.2 + cacache: 17.1.4 + fs-minipass: 3.0.3 + minipass: 5.0.0 + npm-package-arg: 10.1.0 + npm-packlist: 7.0.4 + npm-pick-manifest: 8.0.2 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 6.0.4 + read-package-json-fast: 3.0.2 + sigstore: 1.9.0 + ssri: 10.0.6 + tar: 6.2.1 + transitivePeerDependencies: + - bluebird + - supports-color + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.0 + + parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2): + dependencies: + '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + commander: 7.2.0 + get-port: 4.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2): + dependencies: + '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + commander: 7.2.0 + get-port: 4.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3): + dependencies: + '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + commander: 7.2.0 + get-port: 4.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-conflict-json@2.0.2: + dependencies: + json-parse-even-better-errors: 2.3.1 + just-diff: 5.2.0 + just-diff-apply: 5.5.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.0 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-path@7.0.0: + dependencies: + protocols: 2.0.1 + + parse-url@8.1.0: + dependencies: + parse-path: 7.0.0 + + parse5@4.0.0: {} + + parse5@6.0.1: {} + + parse5@7.2.0: + dependencies: + entities: 4.5.0 + + parseurl@1.3.3: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.0 + + pascalcase@0.1.1: {} + + path-browserify@1.0.1: {} + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-exists@5.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-to-regexp@0.1.7: {} + + path-to-regexp@1.9.0: + dependencies: + isarray: 0.0.1 + + path-to-regexp@6.3.0: {} + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + path-type@4.0.0: {} + + path-type@5.0.0: {} + + pathe@1.1.2: {} + + pathval@1.1.1: {} + + pathval@2.0.0: {} + + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + + pend@1.2.0: {} + + performance-now@2.1.0: {} + + picocolors@0.2.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.1: {} + + picomatch@4.0.2: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pirates@4.0.6: {} + + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + + pkg-dir@4.2.0: + dependencies: + find-up: 4.1.0 + + pkg-dir@7.0.0: + dependencies: + find-up: 6.3.0 + + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.2 + pathe: 1.1.2 + + pkg-up@3.1.0: + dependencies: + find-up: 3.0.0 + + pn@1.1.0: {} + + pnp-webpack-plugin@1.7.0(typescript@5.6.3): + dependencies: + ts-pnp: 1.2.0(typescript@5.6.3) + transitivePeerDependencies: + - typescript + + pofile@1.0.10: {} + + polished@4.3.1: + dependencies: + '@babel/runtime': 7.20.6 + + posix-character-classes@0.1.1: {} + + possible-typed-array-names@1.0.0: {} + + postcss-calc@7.0.5: + dependencies: + postcss: 7.0.39 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-colormin@4.0.3: + dependencies: + browserslist: 4.24.2 + color: 3.2.1 + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-convert-values@4.0.1: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-discard-comments@4.0.2: + dependencies: + postcss: 7.0.39 + + postcss-discard-duplicates@4.0.2: + dependencies: + postcss: 7.0.39 + + postcss-discard-empty@4.0.1: + dependencies: + postcss: 7.0.39 + + postcss-discard-overridden@4.0.1: + dependencies: + postcss: 7.0.39 + + postcss-flexbugs-fixes@5.0.2(postcss@8.4.31): + dependencies: + postcss: 8.4.31 + + postcss-less@6.0.0(postcss@8.4.31): + dependencies: + postcss: 8.4.31 + + postcss-load-config@3.1.4(postcss@8.4.31): + dependencies: + lilconfig: 2.1.0 + yaml: 1.10.2 + optionalDependencies: + postcss: 8.4.31 + + postcss-load-config@6.0.1(postcss@8.4.47): + dependencies: + lilconfig: 3.1.2 + optionalDependencies: + postcss: 8.4.47 + + postcss-loader@4.3.0(postcss@8.4.31)(webpack@5.90.1): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + loader-utils: 2.0.4 + postcss: 8.4.31 + schema-utils: 3.3.0 + semver: 7.6.3 + webpack: 5.90.1 + + postcss-loader@7.0.2(postcss@8.4.31)(webpack@5.90.1): + dependencies: + cosmiconfig: 7.1.0 + klona: 2.0.6 + postcss: 8.4.31 + semver: 7.6.3 + webpack: 5.90.1 + + postcss-merge-longhand@4.0.11: + dependencies: + css-color-names: 0.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + stylehacks: 4.0.3 + + postcss-merge-rules@4.0.3: + dependencies: + browserslist: 4.24.2 + caniuse-api: 3.0.0 + cssnano-util-same-parent: 4.0.1 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + vendors: 1.0.4 + + postcss-minify-font-values@4.0.2: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-minify-gradients@4.0.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + is-color-stop: 1.1.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-minify-params@4.0.2: + dependencies: + alphanum-sort: 1.0.2 + browserslist: 4.24.2 + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + uniqs: 2.0.0 + + postcss-minify-selectors@4.0.2: + dependencies: + alphanum-sort: 1.0.2 + has: 1.0.4 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + + postcss-modules-extract-imports@3.1.0(postcss@8.4.31): + dependencies: + postcss: 8.4.31 + + postcss-modules-extract-imports@3.1.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.31): + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-modules-local-by-default@4.0.5(postcss@8.4.47): + dependencies: + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.0(postcss@8.4.31): + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.1.2 + + postcss-modules-scope@3.2.0(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + postcss-selector-parser: 6.1.2 + + postcss-modules-values@4.0.0(postcss@8.4.31): + dependencies: + icss-utils: 5.1.0(postcss@8.4.31) + postcss: 8.4.31 + + postcss-modules-values@4.0.0(postcss@8.4.47): + dependencies: + icss-utils: 5.1.0(postcss@8.4.47) + postcss: 8.4.47 + + postcss-normalize-charset@4.0.1: + dependencies: + postcss: 7.0.39 + + postcss-normalize-display-values@4.0.2: + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-positions@4.0.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-repeat-style@4.0.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-string@4.0.2: + dependencies: + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-timing-functions@4.0.2: + dependencies: + cssnano-util-get-match: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-unicode@4.0.1: + dependencies: + browserslist: 4.24.2 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-url@4.0.1: + dependencies: + is-absolute-url: 2.1.0 + normalize-url: 3.3.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-normalize-whitespace@4.0.2: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-ordered-values@4.1.2: + dependencies: + cssnano-util-get-arguments: 4.0.0 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-overrides@3.1.4: + dependencies: + postcss: 7.0.39 + + postcss-reduce-initial@4.0.3: + dependencies: + browserslist: 4.24.2 + caniuse-api: 3.0.0 + has: 1.0.4 + postcss: 7.0.39 + + postcss-reduce-transforms@4.0.2: + dependencies: + cssnano-util-get-match: 4.0.0 + has: 1.0.4 + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + + postcss-resolve-nested-selector@0.1.6: {} + + postcss-safe-parser@7.0.1(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + + postcss-scss@3.0.5: + dependencies: + postcss: 8.4.31 + + postcss-scss@4.0.6(postcss@8.4.31): + dependencies: + postcss: 8.4.31 + + postcss-selector-parser@3.1.2: + dependencies: + dot-prop: 5.3.0 + indexes-of: 1.0.1 + uniq: 1.0.1 + + postcss-selector-parser@6.1.2: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-sorting@8.0.2(postcss@8.4.47): + dependencies: + postcss: 8.4.47 + + postcss-svgo@4.0.3: + dependencies: + postcss: 7.0.39 + postcss-value-parser: 3.3.1 + svgo: 1.3.2 + + postcss-unique-selectors@4.0.1: + dependencies: + alphanum-sort: 1.0.2 + postcss: 7.0.39 + uniqs: 2.0.0 + + postcss-value-parser@3.3.1: {} + + postcss-value-parser@4.2.0: {} + + postcss@7.0.36: + dependencies: + chalk: 2.4.2 + source-map: 0.6.1 + supports-color: 6.1.0 + + postcss@7.0.39: + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + + postcss@8.4.31: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + posthtml-parser@0.10.2: + dependencies: + htmlparser2: 7.2.0 + + posthtml-parser@0.11.0: + dependencies: + htmlparser2: 7.2.0 + + posthtml-render@3.0.0: + dependencies: + is-json: 2.0.1 + + posthtml@0.16.6: + dependencies: + posthtml-parser: 0.11.0 + posthtml-render: 3.0.0 + + preferred-pm@3.1.4: + dependencies: + find-up: 5.0.0 + find-yarn-workspace-root2: 1.2.16 + path-exists: 4.0.0 + which-pm: 2.2.0 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + prepend-http@2.0.0: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier@3.2.5: {} + + pretty-bytes@5.3.0: {} + + pretty-bytes@5.6.0: {} + + pretty-error@4.0.0: + dependencies: + lodash: 4.17.21 + renderkid: 3.0.0 + + pretty-format@24.9.0: + dependencies: + '@jest/types': 24.9.0 + ansi-regex: 4.1.1 + ansi-styles: 3.2.1 + react-is: 16.13.1 + + pretty-format@25.5.0: + dependencies: + '@jest/types': 25.5.0 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 16.13.1 + + pretty-format@26.6.2: + dependencies: + '@jest/types': 26.6.2 + ansi-regex: 5.0.1 + ansi-styles: 4.3.0 + react-is: 17.0.2 + + pretty-format@27.5.1: + dependencies: + ansi-regex: 5.0.1 + ansi-styles: 5.2.0 + react-is: 17.0.2 + + pretty-format@29.7.0: + dependencies: + '@jest/schemas': 29.6.3 + ansi-styles: 5.2.0 + react-is: 18.3.1 + + pretty-time@1.1.0: {} + + prismjs@1.27.0: {} + + proc-log@1.0.0: {} + + proc-log@3.0.0: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + promise-all-reject-late@1.0.1: {} + + promise-call-limit@1.0.2: {} + + promise-file-reader@1.0.2: {} + + promise-inflight@1.0.1: {} + + promise-retry@2.0.1: + dependencies: + err-code: 2.0.3 + retry: 0.12.0 + + promise.allsettled@1.0.7: + dependencies: + array.prototype.map: 1.0.7 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + get-intrinsic: 1.2.4 + iterate-value: 1.0.2 + + promise@7.1.1: + dependencies: + asap: 2.0.6 + + prompts@2.4.0: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + prop-types-exact@1.2.5: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + hasown: 2.0.2 + isarray: 2.0.5 + object.assign: 4.1.5 + reflect.ownkeys: 1.1.4 + + prop-types@15.7.2: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + prop-types@15.8.1: + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + + proto-list@1.2.4: {} + + protocols@2.0.1: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + + proxy-agent@6.3.1: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4(supports-color@8.1.1) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.2 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + proxy-agent@6.4.0: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4(supports-color@8.1.1) + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + lru-cache: 7.18.3 + pac-proxy-agent: 7.0.2 + proxy-from-env: 1.1.0 + socks-proxy-agent: 8.0.4 + transitivePeerDependencies: + - supports-color + + proxy-from-env@1.0.0: {} + + proxy-from-env@1.1.0: {} + + prr@1.0.1: + optional: true + + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + + pseudomap@1.0.2: {} + + psl@1.9.0: {} + + pump@3.0.2: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + + punycode@1.4.1: {} + + punycode@2.3.1: {} + + pupa@2.1.1: + dependencies: + escape-goat: 2.1.1 + + pupa@3.1.0: + dependencies: + escape-goat: 4.0.0 + + q@1.5.1: {} + + qs@6.11.0: + dependencies: + side-channel: 1.0.6 + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + qs@6.5.3: {} + + query-string@7.1.0: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + query-string@9.1.1: + dependencies: + decode-uri-component: 0.4.1 + filter-obj: 5.1.0 + split-on-first: 3.0.0 + + querystring@0.2.1: {} + + querystringify@2.2.0: {} + + queue-microtask@1.2.3: {} + + quick-lru@5.1.1: {} + + raf-schd@4.0.3: {} + + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + range-parser@1.2.1: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1): + dependencies: + '@babel/code-frame': 7.26.0 + chalk: 4.1.2 + filesize: 6.4.0 + gzip-size: 6.0.0 + jest-message-util: 26.6.2 + react-dev-utils: 11.0.4(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1) + react-error-overlay: 6.0.9 + recursive-readdir: 2.2.3 + resolve: 1.22.8 + sockjs-client: 1.4.0 + strip-ansi: 6.0.1 + webpack: 5.90.1 + webpack-dev-server: 4.11.1(debug@4.3.2)(webpack@5.90.1) + transitivePeerDependencies: + - eslint + - supports-color + - typescript + - vue-template-compiler + + razzle-plugin-scss@4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1))(webpack@5.90.1): + dependencies: + autoprefixer: 10.4.8(postcss@8.4.31) + css-loader: 5.2.7(webpack@5.90.1) + deepmerge: 4.3.1 + mini-css-extract-plugin: 2.7.2(webpack@5.90.1) + postcss-load-config: 3.1.4(postcss@8.4.31) + postcss-loader: 4.3.0(postcss@8.4.31)(webpack@5.90.1) + postcss-scss: 3.0.5 + razzle: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) + razzle-dev-utils: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) + resolve-url-loader: 3.1.5 + sass: 1.80.4 + sass-loader: 10.5.2(sass@1.80.4)(webpack@5.90.1) + transitivePeerDependencies: + - fibers + - node-sass + - postcss + - ts-node + - webpack + + razzle-start-server-webpack-plugin@4.2.18(webpack@5.90.1): + dependencies: + webpack: 5.90.1 + + razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1): + dependencies: + '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) + '@pmmmwh/react-refresh-webpack-plugin': 0.4.3(react-refresh@0.9.0)(sockjs-client@1.4.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) + autoprefixer: 10.4.8(postcss@8.4.31) + babel-jest: 26.6.3(@babel/core@7.26.0) + babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@5.90.1) + babel-plugin-transform-define: 2.1.4 + babel-preset-razzle: 4.2.18 + buffer: 6.0.3 + chalk: 4.1.2 + clean-css: 5.3.3 + copy-webpack-plugin: 6.4.1(webpack@5.90.1) + css-loader: 5.2.7(webpack@5.90.1) + css-minimizer-webpack-plugin: 1.3.0(webpack@5.90.1) + deepmerge: 4.3.1 + dotenv: 8.6.0 + dotenv-expand: 5.1.0 + file-loader: 4.3.0(webpack@5.90.1) + fs-extra: 9.1.0 + html-webpack-plugin: 5.5.0(webpack@5.90.1) + inquirer: 7.3.3 + jest: 26.6.3 + mini-css-extract-plugin: 2.7.2(webpack@5.90.1) + mri: 1.2.0 + null-loader: 4.0.1(webpack@5.90.1) + pnp-webpack-plugin: 1.7.0(typescript@5.6.3) + postcss: 8.4.31 + postcss-load-config: 3.1.4(postcss@8.4.31) + postcss-loader: 4.3.0(postcss@8.4.31)(webpack@5.90.1) + process: 0.11.10 + razzle-dev-utils: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) + razzle-start-server-webpack-plugin: 4.2.18(webpack@5.90.1) + react-dev-utils: 11.0.4(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1) + react-refresh: 0.9.0 + resolve: 1.22.8 + sade: 1.8.1 + source-map-support: 0.5.21 + string-hash: 1.1.3 + style-loader: 2.0.0(webpack@5.90.1) + terminate: 2.8.0 + terser-webpack-plugin: 2.3.8(webpack@5.90.1) + tiny-async-pool: 1.3.0 + url-loader: 2.3.0(file-loader@4.3.0(webpack@5.90.1))(webpack@5.90.1) + webpack: 5.90.1 + webpack-dev-server: 4.11.1(debug@4.3.2)(webpack@5.90.1) + webpack-manifest-plugin: 3.2.0(webpack@5.90.1) + webpackbar: 5.0.2(webpack@5.90.1) + transitivePeerDependencies: + - '@babel/core' + - '@types/webpack' + - bluebird + - bufferutil + - canvas + - eslint + - sockjs-client + - supports-color + - ts-node + - type-fest + - typescript + - utf-8-validate + - vue-template-compiler + - webpack-hot-middleware + - webpack-plugin-serve + + rc-align@2.4.5: + dependencies: + babel-runtime: 6.26.0 + dom-align: 1.12.4 + prop-types: 15.7.2 + rc-util: 4.21.1 + + rc-animate@2.11.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + babel-runtime: 6.26.0 + classnames: 2.2.6 + css-animation: 1.6.1 + prop-types: 15.7.2 + raf: 3.4.1 + rc-util: 4.21.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + + rc-time-picker@3.7.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + classnames: 2.2.6 + moment: 2.29.4 + prop-types: 15.7.2 + raf: 3.4.1 + rc-trigger: 2.6.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-lifecycles-compat: 3.0.4 + transitivePeerDependencies: + - react + - react-dom + + rc-trigger@2.6.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + babel-runtime: 6.26.0 + classnames: 2.2.6 + prop-types: 15.7.2 + rc-align: 2.4.5 + rc-animate: 2.11.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + rc-util: 4.21.1 + react-lifecycles-compat: 3.0.4 + transitivePeerDependencies: + - react + - react-dom + + rc-util@4.21.1: + dependencies: + add-dom-event-listener: 1.1.0 + prop-types: 15.7.2 + react-is: 16.13.1 + react-lifecycles-compat: 3.0.4 + shallowequal: 1.1.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-anchor-link-smooth-scroll@1.0.12: {} + + react-animate-height@2.0.17(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + classnames: 2.2.6 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-aria-components@1.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@internationalized/date': 3.5.6 + '@internationalized/string': 3.2.4 + '@react-aria/accordion': 3.0.0-alpha.35(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/collections': 3.0.0-alpha.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/color': 3.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/disclosure': 3.0.0-alpha.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/dnd': 3.7.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/live-announcer': 3.4.0 + '@react-aria/menu': 3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/toolbar': 3.0.0-beta.10(react@18.2.0) + '@react-aria/tree': 3.0.0-beta.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/virtualizer': 4.0.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-stately/color': 3.8.0(react@18.2.0) + '@react-stately/disclosure': 3.0.0-alpha.0(react@18.2.0) + '@react-stately/layout': 4.0.3(react@18.2.0) + '@react-stately/menu': 3.8.3(react@18.2.0) + '@react-stately/table': 3.12.3(react@18.2.0) + '@react-stately/utils': 3.10.4(react@18.2.0) + '@react-stately/virtualizer': 4.1.0(react@18.2.0) + '@react-types/color': 3.0.0(react@18.2.0) + '@react-types/form': 3.7.7(react@18.2.0) + '@react-types/grid': 3.2.9(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + '@react-types/table': 3.10.2(react@18.2.0) + '@swc/helpers': 0.5.13 + client-only: 0.0.1 + react: 18.2.0 + react-aria: 3.35.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-dom: 18.2.0(react@18.2.0) + react-stately: 3.33.0(react@18.2.0) + use-sync-external-store: 1.2.2(react@18.2.0) + + react-aria@3.35.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@internationalized/string': 3.2.4 + '@react-aria/breadcrumbs': 3.5.18(react@18.2.0) + '@react-aria/button': 3.10.1(react@18.2.0) + '@react-aria/calendar': 3.5.13(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/checkbox': 3.14.8(react@18.2.0) + '@react-aria/color': 3.0.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/combobox': 3.10.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/datepicker': 3.11.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/dialog': 3.5.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/dnd': 3.7.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/focus': 3.18.4(react@18.2.0) + '@react-aria/gridlist': 3.9.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/i18n': 3.12.3(react@18.2.0) + '@react-aria/interactions': 3.22.4(react@18.2.0) + '@react-aria/label': 3.7.12(react@18.2.0) + '@react-aria/link': 3.7.6(react@18.2.0) + '@react-aria/listbox': 3.13.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/menu': 3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/meter': 3.4.17(react@18.2.0) + '@react-aria/numberfield': 3.11.8(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/overlays': 3.23.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/progress': 3.4.17(react@18.2.0) + '@react-aria/radio': 3.10.9(react@18.2.0) + '@react-aria/searchfield': 3.7.10(react@18.2.0) + '@react-aria/select': 3.14.11(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/selection': 3.20.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/separator': 3.4.3(react@18.2.0) + '@react-aria/slider': 3.7.13(react@18.2.0) + '@react-aria/ssr': 3.9.6(react@18.2.0) + '@react-aria/switch': 3.6.9(react@18.2.0) + '@react-aria/table': 3.15.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/tabs': 3.9.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/tag': 3.4.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@react-aria/textfield': 3.14.10(react@18.2.0) + '@react-aria/tooltip': 3.7.9(react@18.2.0) + '@react-aria/utils': 3.25.3(react@18.2.0) + '@react-aria/visually-hidden': 3.8.17(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-beautiful-dnd@13.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + css-box-model: 1.2.1 + memoize-one: 5.2.1 + raf-schd: 4.0.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-redux: 7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + redux: 4.2.1 + use-memo-one: 1.1.3(react@18.2.0) + transitivePeerDependencies: + - react-native + + react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-cookie@4.1.1(react@18.2.0): + dependencies: + '@types/hoist-non-react-statics': 3.3.5 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + universal-cookie: 4.0.4 + + react-dates@21.5.1(@babel/runtime@7.20.6)(moment@2.29.4)(react-dom@18.2.0(react@18.2.0))(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + airbnb-prop-types: 2.16.0(react@18.2.0) + consolidated-events: 2.0.2 + enzyme-shallow-equal: 1.0.7 + is-touch-device: 1.0.1 + lodash: 4.17.21 + moment: 2.29.4 + object.assign: 4.1.5 + object.values: 1.2.0 + prop-types: 15.7.2 + raf: 3.4.1 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-moment-proptypes: 1.8.1(moment@2.29.4) + react-outside-click-handler: 1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-portal: 4.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-with-direction: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-with-styles: 4.2.0(@babel/runtime@7.20.6)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + react-with-styles-interface-css: 6.0.0(@babel/runtime@7.20.6)(react-with-styles@4.2.0(@babel/runtime@7.20.6)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)) + + react-detect-click-outside@1.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-dev-utils@11.0.4(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1): + dependencies: + '@babel/code-frame': 7.10.4 + address: 1.1.2 + browserslist: 4.14.2 + chalk: 2.4.2 + cross-spawn: 7.0.3 + detect-port-alt: 1.1.6 + escape-string-regexp: 2.0.0 + filesize: 6.1.0 + find-up: 4.1.0 + fork-ts-checker-webpack-plugin: 4.1.6(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1) + global-modules: 2.0.0 + globby: 11.0.1 + gzip-size: 5.1.1 + immer: 8.0.1 + is-root: 2.1.0 + loader-utils: 2.0.0 + open: 7.4.2 + pkg-up: 3.1.0 + prompts: 2.4.0 + react-error-overlay: 6.0.9 + recursive-readdir: 2.2.2 + shell-quote: 1.7.2 + strip-ansi: 6.0.0 + text-table: 0.2.0 + webpack: 5.90.1 + optionalDependencies: + typescript: 5.6.3 + transitivePeerDependencies: + - eslint + - supports-color + - vue-template-compiler + + react-dnd-html5-backend@5.0.1: + dependencies: + autobind-decorator: 2.4.0 + dnd-core: 4.0.5 + lodash: 4.17.21 + shallowequal: 1.1.0 + + react-dnd@5.0.0(react@18.2.0): + dependencies: + dnd-core: 4.0.5 + hoist-non-react-statics: 2.5.5 + invariant: 2.2.4 + lodash: 4.17.21 + react: 18.2.0 + recompose: 0.27.1(react@18.2.0) + shallowequal: 1.1.0 + + react-docgen-typescript-plugin@1.0.8(typescript@5.6.3)(webpack@5.90.1): + dependencies: + debug: 4.3.4(supports-color@8.1.1) + find-cache-dir: 3.3.2 + flat-cache: 3.2.0 + micromatch: 4.0.8 + react-docgen-typescript: 2.2.2(typescript@5.6.3) + tslib: 2.8.0 + typescript: 5.6.3 + webpack: 5.90.1 + transitivePeerDependencies: + - supports-color + + react-docgen-typescript@2.2.2(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + react-docgen@7.1.0: + dependencies: + '@babel/core': 7.26.0 + '@babel/traverse': 7.25.9 + '@babel/types': 7.20.5 + '@types/babel__core': 7.20.5 + '@types/babel__traverse': 7.20.6 + '@types/doctrine': 0.0.9 + '@types/resolve': 1.20.6 + doctrine: 3.0.0 + resolve: 1.22.8 + strip-indent: 4.0.0 + transitivePeerDependencies: + - supports-color + + react-dom@18.2.0(react@18.2.0): + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.2 + + react-dropzone@11.1.0(react@18.2.0): + dependencies: + attr-accept: 2.2.4 + file-selector: 0.1.19 + prop-types: 15.7.2 + react: 18.2.0 + + react-element-to-jsx-string@15.0.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@base2/pretty-print-object': 1.0.1 + is-plain-object: 5.0.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.1.0 + + react-error-boundary@3.1.4(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + + react-error-overlay@6.0.9: {} + + react-fast-compare@2.0.4: {} + + react-fast-compare@3.2.2: {} + + react-image-gallery@1.2.7(react@18.2.0): + dependencies: + react: 18.2.0 + + react-input-autosize@3.0.0(react@18.2.0): + dependencies: + prop-types: 15.7.2 + react: 18.2.0 + + react-intersection-observer@9.1.0(react@18.2.0): + dependencies: + react: 18.2.0 + + react-intl-redux@2.3.0(@babel/runtime@7.20.6)(prop-types@15.7.2)(react-intl@3.12.1(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + prop-types: 15.7.2 + react: 18.2.0 + react-intl: 3.12.1(react@18.2.0) + react-redux: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + + react-intl@3.12.1(react@18.2.0): + dependencies: + '@formatjs/intl-displaynames': 1.2.10 + '@formatjs/intl-listformat': 1.4.8 + '@formatjs/intl-relativetimeformat': 4.5.16 + '@formatjs/intl-unified-numberformat': 3.3.7 + '@formatjs/intl-utils': 2.3.0 + '@types/hoist-non-react-statics': 3.3.5 + '@types/invariant': 2.2.37 + hoist-non-react-statics: 3.3.2 + intl-format-cache: 4.3.1 + intl-messageformat: 7.8.4 + intl-messageformat-parser: 3.6.4 + react: 18.2.0 + shallow-equal: 1.2.1 + + react-is-mounted-hook@1.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-is@16.13.1: {} + + react-is@17.0.2: {} + + react-is@18.1.0: {} + + react-is@18.3.1: {} + + react-lifecycles-compat@3.0.4: {} + + react-medium-image-zoom@3.0.15(prop-types@15.7.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-moment-proptypes@1.8.1(moment@2.29.4): + dependencies: + moment: 2.29.4 + + react-outside-click-handler@1.3.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + airbnb-prop-types: 2.16.0(react@18.2.0) + consolidated-events: 2.0.2 + document.contains: 1.0.2 + object.values: 1.2.0 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@popperjs/core': 2.11.8 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-fast-compare: 3.2.2 + warning: 4.0.3 + + react-portal@4.2.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-redux@7.2.9(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + '@types/react-redux': 7.1.34 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + prop-types: 15.7.2 + react: 18.2.0 + react-is: 17.0.2 + optionalDependencies: + react-dom: 18.2.0(react@18.2.0) + + react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1): + dependencies: + '@babel/runtime': 7.20.6 + '@types/hoist-non-react-statics': 3.3.5 + '@types/use-sync-external-store': 0.0.3 + hoist-non-react-statics: 3.3.2 + react: 18.2.0 + react-is: 18.3.1 + use-sync-external-store: 1.2.2(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.27 + '@types/react-dom': 18.2.12 + react-dom: 18.2.0(react@18.2.0) + redux: 4.2.1 + + react-refresh@0.14.2: {} + + react-refresh@0.9.0: {} + + react-router-config@5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + react: 18.2.0 + react-router: 5.2.0(react@18.2.0) + + react-router-dom@5.2.0(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + history: 4.10.1 + loose-envify: 1.4.0 + prop-types: 15.7.2 + react: 18.2.0 + react-router: 5.2.0(react@18.2.0) + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-router-hash-link@2.4.3(react-router-dom@5.2.0(react@18.2.0))(react@18.2.0): + dependencies: + prop-types: 15.7.2 + react: 18.2.0 + react-router-dom: 5.2.0(react@18.2.0) + + react-router@5.2.0(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + history: 4.10.1 + hoist-non-react-statics: 3.3.2 + loose-envify: 1.4.0 + mini-create-react-context: 0.4.1(prop-types@15.7.2)(react@18.2.0) + path-to-regexp: 1.9.0 + prop-types: 15.7.2 + react: 18.2.0 + react-is: 16.13.1 + tiny-invariant: 1.3.3 + tiny-warning: 1.0.3 + + react-select-async-paginate@0.5.3(react-dom@18.2.0(react@18.2.0))(react-select@4.3.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + '@seznam/compose-react-refs': 1.0.6 + react: 18.2.0 + react-is-mounted-hook: 1.1.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-select: 4.3.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + sleep-promise: 9.1.0 + transitivePeerDependencies: + - react-dom + + react-select@4.3.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + '@emotion/cache': 11.13.1 + '@emotion/react': 11.13.3(@types/react@18.2.27)(react@18.2.0) + memoize-one: 5.2.1 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-input-autosize: 3.0.0(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + transitivePeerDependencies: + - '@types/react' + - supports-color + + react-shallow-renderer@16.15.0(react@18.2.0): + dependencies: + object-assign: 4.1.1 + react: 18.2.0 + react-is: 18.3.1 + + react-side-effect@2.1.2(react@18.2.0): + dependencies: + react: 18.2.0 + + react-simple-code-editor@0.7.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-sortable-hoc@2.0.0(prop-types@15.7.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + invariant: 2.2.4 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-stately@3.33.0(react@18.2.0): + dependencies: + '@react-stately/calendar': 3.5.5(react@18.2.0) + '@react-stately/checkbox': 3.6.9(react@18.2.0) + '@react-stately/collections': 3.11.0(react@18.2.0) + '@react-stately/color': 3.8.0(react@18.2.0) + '@react-stately/combobox': 3.10.0(react@18.2.0) + '@react-stately/data': 3.11.7(react@18.2.0) + '@react-stately/datepicker': 3.10.3(react@18.2.0) + '@react-stately/dnd': 3.4.3(react@18.2.0) + '@react-stately/form': 3.0.6(react@18.2.0) + '@react-stately/list': 3.11.0(react@18.2.0) + '@react-stately/menu': 3.8.3(react@18.2.0) + '@react-stately/numberfield': 3.9.7(react@18.2.0) + '@react-stately/overlays': 3.6.11(react@18.2.0) + '@react-stately/radio': 3.10.8(react@18.2.0) + '@react-stately/searchfield': 3.5.7(react@18.2.0) + '@react-stately/select': 3.6.8(react@18.2.0) + '@react-stately/selection': 3.17.0(react@18.2.0) + '@react-stately/slider': 3.5.8(react@18.2.0) + '@react-stately/table': 3.12.3(react@18.2.0) + '@react-stately/tabs': 3.6.10(react@18.2.0) + '@react-stately/toggle': 3.7.8(react@18.2.0) + '@react-stately/tooltip': 3.4.13(react@18.2.0) + '@react-stately/tree': 3.8.5(react@18.2.0) + '@react-types/shared': 3.25.0(react@18.2.0) + react: 18.2.0 + + react-test-renderer@18.2.0(react@18.2.0): + dependencies: + react: 18.2.0 + react-is: 18.3.1 + react-shallow-renderer: 16.15.0(react@18.2.0) + scheduler: 0.23.2 + + react-toastify@5.5.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + classnames: 2.2.6 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + react-transition-group@4.4.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-virtualized@9.22.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + clsx: 1.2.1 + dom-helpers: 5.2.1 + loose-envify: 1.4.0 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-lifecycles-compat: 3.0.4 + + react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + airbnb-prop-types: 2.16.0(react@18.2.0) + brcast: 2.0.2 + deepmerge: 1.5.2 + direction: 1.0.4 + hoist-non-react-statics: 3.3.2 + object.assign: 4.1.5 + object.values: 1.2.0 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + react-with-styles-interface-css@6.0.0(@babel/runtime@7.20.6)(react-with-styles@4.2.0(@babel/runtime@7.20.6)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0)): + dependencies: + '@babel/runtime': 7.20.6 + array.prototype.flat: 1.3.2 + global-cache: 1.2.1 + react-with-styles: 4.2.0(@babel/runtime@7.20.6)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0) + + react-with-styles@4.2.0(@babel/runtime@7.20.6)(react-with-direction@1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + airbnb-prop-types: 2.16.0(react@18.2.0) + hoist-non-react-statics: 3.3.2 + object.assign: 4.1.5 + prop-types: 15.7.2 + react: 18.2.0 + react-with-direction: 1.4.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + + react@18.2.0: + dependencies: + loose-envify: 1.4.0 + + read-cmd-shim@3.0.1: {} + + read-package-json-fast@2.0.3: + dependencies: + json-parse-even-better-errors: 2.3.1 + npm-normalize-package-bin: 1.0.1 + + read-package-json-fast@3.0.2: + dependencies: + json-parse-even-better-errors: 3.0.2 + npm-normalize-package-bin: 3.0.1 + + read-package-json@6.0.4: + dependencies: + glob: 10.4.5 + json-parse-even-better-errors: 3.0.2 + normalize-package-data: 5.0.0 + npm-normalize-package-bin: 3.0.1 + + read-pkg-up@4.0.0: + dependencies: + find-up: 3.0.0 + read-pkg: 3.0.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-scoped-modules@1.1.0: + dependencies: + debuglog: 1.0.1 + dezalgo: 1.0.4 + graceful-fs: 4.2.11 + once: 1.4.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + readdirp@4.0.2: {} + + realpath-native@1.1.0: + dependencies: + util.promisify: 1.1.2 + + recast@0.23.9: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.0 + + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + + recompose@0.27.1(react@18.2.0): + dependencies: + babel-runtime: 6.26.0 + change-emitter: 0.1.6 + fbjs: 0.8.18 + hoist-non-react-statics: 2.5.5 + react: 18.2.0 + react-lifecycles-compat: 3.0.4 + symbol-observable: 1.2.0 + + recursive-readdir@2.2.2: + dependencies: + minimatch: 3.0.4 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reduce-reducers@1.0.4: {} + + redux-actions@3.0.0: + dependencies: + just-curry-it: 5.3.0 + reduce-reducers: 1.0.4 + + redux-connect@10.0.0(prop-types@15.7.2)(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react-router-config@5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0))(react-router-dom@5.2.0(react@18.2.0))(react-router@5.2.0(react@18.2.0))(react@18.2.0)(redux-actions@3.0.0): + dependencies: + prop-types: 15.7.2 + react: 18.2.0 + react-redux: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + react-router: 5.2.0(react@18.2.0) + react-router-config: 5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0) + react-router-dom: 5.2.0(react@18.2.0) + redux-actions: 3.0.0 + + redux-localstorage-simple@2.5.1: + dependencies: + merge: 2.1.1 + + redux-mock-store@1.5.4: + dependencies: + lodash.isplainobject: 4.0.6 + + redux-thunk@2.4.2(redux@4.2.1): + dependencies: + redux: 4.2.1 + + redux@4.2.1: + dependencies: + '@babel/runtime': 7.20.6 + + reflect.getprototypeof@1.0.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + globalthis: 1.0.4 + which-builtin-type: 1.1.4 + + reflect.ownkeys@1.1.4: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-set-tostringtag: 2.0.3 + globalthis: 1.0.4 + + regenerate-unicode-properties@10.2.0: + dependencies: + regenerate: 1.4.2 + + regenerate@1.4.2: {} + + regenerator-runtime@0.11.1: {} + + regenerator-runtime@0.13.11: {} + + regenerator-runtime@0.14.1: {} + + regenerator-transform@0.15.2: + dependencies: + '@babel/runtime': 7.20.6 + + regex-not@1.0.2: + dependencies: + extend-shallow: 3.0.2 + safe-regex: 1.1.0 + + regex-parser@2.3.0: {} + + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + + regexpu-core@6.1.1: + dependencies: + regenerate: 1.4.2 + regenerate-unicode-properties: 10.2.0 + regjsgen: 0.8.0 + regjsparser: 0.11.1 + unicode-match-property-ecmascript: 2.0.0 + unicode-match-property-value-ecmascript: 2.2.0 + + registry-auth-token@4.2.2: + dependencies: + rc: 1.2.8 + + registry-auth-token@5.0.2: + dependencies: + '@pnpm/npm-conf': 2.3.1 + + registry-url@5.1.0: + dependencies: + rc: 1.2.8 + + registry-url@6.0.1: + dependencies: + rc: 1.2.8 + + regjsgen@0.8.0: {} + + regjsparser@0.11.1: + dependencies: + jsesc: 3.0.2 + + rehype-external-links@3.0.0: + dependencies: + '@types/hast': 3.0.4 + '@ungap/structured-clone': 1.2.0 + hast-util-is-element: 3.0.0 + is-absolute-url: 4.0.1 + space-separated-tokens: 2.0.2 + unist-util-visit: 5.0.0 + + rehype-slug@6.0.0: + dependencies: + '@types/hast': 3.0.4 + github-slugger: 2.0.0 + hast-util-heading-rank: 3.0.0 + hast-util-to-string: 3.0.1 + unist-util-visit: 5.0.0 + + relateurl@0.2.7: {} + + release-it@16.2.1(encoding@0.1.13)(typescript@5.4.2): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 19.0.13(encoding@0.1.13) + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 8.3.6(typescript@5.4.2) + execa: 7.2.0 + git-url-parse: 13.1.0 + globby: 13.2.2 + got: 13.0.0 + inquirer: 9.2.11 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 9.1.0 + ora: 7.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.3.1 + semver: 7.5.4 + shelljs: 0.8.5 + update-notifier: 6.0.2 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding + - supports-color + - typescript + + release-it@16.2.1(encoding@0.1.13)(typescript@5.6.3): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 19.0.13(encoding@0.1.13) + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 8.3.6(typescript@5.6.3) + execa: 7.2.0 + git-url-parse: 13.1.0 + globby: 13.2.2 + got: 13.0.0 + inquirer: 9.2.11 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 9.1.0 + ora: 7.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.3.1 + semver: 7.5.4 + shelljs: 0.8.5 + update-notifier: 6.0.2 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding + - supports-color + - typescript + + release-it@17.1.1(typescript@5.2.2): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 20.0.2 + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.2.2) + execa: 8.0.1 + git-url-parse: 14.0.0 + globby: 14.0.1 + got: 13.0.0 + inquirer: 9.2.14 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 10.0.3 + ora: 8.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.4.0 + semver: 7.6.0 + shelljs: 0.8.5 + update-notifier: 7.0.0 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + release-it@17.1.1(typescript@5.4.2): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 20.0.2 + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.4.2) + execa: 8.0.1 + git-url-parse: 14.0.0 + globby: 14.0.1 + got: 13.0.0 + inquirer: 9.2.14 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 10.0.3 + ora: 8.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.4.0 + semver: 7.6.0 + shelljs: 0.8.5 + update-notifier: 7.0.0 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + release-it@17.1.1(typescript@5.6.3): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 20.0.2 + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.6.3) + execa: 8.0.1 + git-url-parse: 14.0.0 + globby: 14.0.1 + got: 13.0.0 + inquirer: 9.2.14 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 10.0.3 + ora: 8.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.4.0 + semver: 7.6.0 + shelljs: 0.8.5 + update-notifier: 7.0.0 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + remark-gfm@4.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-gfm: 3.0.0 + micromark-extension-gfm: 3.0.0 + remark-parse: 11.0.0 + remark-stringify: 11.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-parse@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-from-markdown: 2.0.2 + micromark-util-types: 2.0.0 + unified: 11.0.5 + transitivePeerDependencies: + - supports-color + + remark-stringify@11.0.0: + dependencies: + '@types/mdast': 4.0.4 + mdast-util-to-markdown: 2.1.0 + unified: 11.0.5 + + remove-trailing-separator@1.1.0: {} + + renderkid@3.0.0: + dependencies: + css-select: 4.3.0 + dom-converter: 0.2.0 + htmlparser2: 6.1.0 + lodash: 4.17.21 + strip-ansi: 6.0.1 + + repeat-element@1.1.4: {} + + repeat-string@1.6.1: {} + + replace-ext@1.0.1: {} + + request-progress@3.0.0: + dependencies: + throttleit: 1.0.1 + + request-promise-core@1.1.4(request@2.88.2): + dependencies: + lodash: 4.17.21 + request: 2.88.2 + + request-promise-native@1.0.9(request@2.88.2): + dependencies: + request: 2.88.2 + request-promise-core: 1.1.4(request@2.88.2) + stealthy-require: 1.1.1 + tough-cookie: 2.5.0 + + request@2.88.2: + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 2.3.3 + har-validator: 5.1.5 + http-signature: 1.2.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + oauth-sign: 0.9.0 + performance-now: 2.1.0 + qs: 6.5.3 + safe-buffer: 5.2.1 + tough-cookie: 2.5.0 + tunnel-agent: 0.6.0 + uuid: 3.4.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@2.0.0: {} + + require-package-name@2.0.1: {} + + requireindex@1.2.0: {} + + requires-port@1.0.0: {} + + resolve-alpn@1.2.1: {} + + resolve-cwd@2.0.0: + dependencies: + resolve-from: 3.0.0 + + resolve-cwd@3.0.0: + dependencies: + resolve-from: 5.0.0 + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-pathname@3.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve-url-loader@3.1.5: + dependencies: + adjust-sourcemap-loader: 3.0.0 + camelcase: 5.3.1 + compose-function: 3.0.3 + convert-source-map: 1.7.0 + es6-iterator: 2.0.3 + loader-utils: 1.4.2 + postcss: 7.0.36 + rework: 1.0.1 + rework-visit: 1.0.0 + source-map: 0.6.1 + + resolve-url@0.2.1: {} + + resolve@1.1.7: {} + + resolve@1.19.0: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + resolve@2.0.0-next.5: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + responselike@1.0.2: + dependencies: + lowercase-keys: 1.0.1 + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + restore-cursor@2.0.0: + dependencies: + onetime: 2.0.1 + signal-exit: 3.0.7 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + ret@0.1.15: {} + + retry@0.12.0: {} + + retry@0.13.1: {} + + reusify@1.0.4: {} + + rework-visit@1.0.0: {} + + rework@1.0.1: + dependencies: + convert-source-map: 0.3.5 + css: 2.2.4 + + rfdc@1.4.1: {} + + rgb-regex@1.0.1: {} + + rgba-regex@1.0.0: {} + + rimraf@2.7.1: + dependencies: + glob: 7.1.6 + + rimraf@3.0.2: + dependencies: + glob: 7.1.6 + + rollup@4.24.0: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.0 + '@rollup/rollup-android-arm64': 4.24.0 + '@rollup/rollup-darwin-arm64': 4.24.0 + '@rollup/rollup-darwin-x64': 4.24.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 + '@rollup/rollup-linux-arm-musleabihf': 4.24.0 + '@rollup/rollup-linux-arm64-gnu': 4.24.0 + '@rollup/rollup-linux-arm64-musl': 4.24.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 + '@rollup/rollup-linux-riscv64-gnu': 4.24.0 + '@rollup/rollup-linux-s390x-gnu': 4.24.0 + '@rollup/rollup-linux-x64-gnu': 4.24.0 + '@rollup/rollup-linux-x64-musl': 4.24.0 + '@rollup/rollup-win32-arm64-msvc': 4.24.0 + '@rollup/rollup-win32-ia32-msvc': 4.24.0 + '@rollup/rollup-win32-x64-msvc': 4.24.0 + fsevents: 2.3.3 + + rrule@2.7.1: + dependencies: + tslib: 2.8.0 + + rrweb-cssom@0.6.0: {} + + rsvp@4.8.5: {} + + run-applescript@5.0.0: + dependencies: + execa: 5.1.1 + + run-applescript@7.0.0: {} + + run-async@2.4.1: {} + + run-async@3.0.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + run-queue@1.0.3: + dependencies: + aproba: 1.2.0 + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.1: + dependencies: + tslib: 2.8.0 + + sade@1.8.1: + dependencies: + mri: 1.2.0 + + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + + safe-regex@1.1.0: + dependencies: + ret: 0.1.15 + + safer-buffer@2.1.2: {} + + sane@4.1.0: + dependencies: + '@cnakazawa/watch': 1.0.4 + anymatch: 2.0.0 + capture-exit: 2.0.0 + exec-sh: 0.3.6 + execa: 1.0.0 + fb-watchman: 2.0.2 + micromatch: 3.1.10 + minimist: 1.2.8 + walker: 1.0.8 + transitivePeerDependencies: + - supports-color + + sass-loader@10.5.2(sass@1.80.4)(webpack@5.90.1): + dependencies: + klona: 2.0.6 + loader-utils: 2.0.4 + neo-async: 2.6.2 + schema-utils: 3.3.0 + semver: 7.6.3 + webpack: 5.90.1 + optionalDependencies: + sass: 1.80.4 + + sass@1.80.4: + dependencies: + '@parcel/watcher': 2.4.1 + chokidar: 4.0.1 + immutable: 4.3.7 + source-map-js: 1.2.1 + + sax@1.2.4: {} + + sax@1.4.1: {} + + saxes@5.0.1: + dependencies: + xmlchars: 2.2.0 + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + scheduler@0.23.2: + dependencies: + loose-envify: 1.4.0 + + schema-utils@2.7.1: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@3.3.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 6.12.6 + ajv-keywords: 3.5.2(ajv@6.12.6) + + schema-utils@4.2.0: + dependencies: + '@types/json-schema': 7.0.15 + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) + + scoped-regex@2.1.0: {} + + scroll-into-view-if-needed@2.2.31: + dependencies: + compute-scroll-into-view: 1.0.20 + + seamless-immutable@7.1.4: {} + + select-hose@2.0.0: {} + + selfsigned@2.4.1: + dependencies: + '@types/node-forge': 1.3.11 + node-forge: 1.3.1 + + semantic-ui-less@2.4.1: + dependencies: + jquery: 3.7.1 + + semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + '@fluentui/react-component-event-listener': 0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@fluentui/react-component-ref': 0.63.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@popperjs/core': 2.11.8 + '@semantic-ui-react/event-stack': 3.1.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + clsx: 1.2.1 + keyboard-key: 1.1.0 + lodash: 4.17.21 + lodash-es: 4.17.21 + prop-types: 15.7.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-is: 18.3.1 + react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + shallowequal: 1.1.0 + + semver-diff@3.1.1: + dependencies: + semver: 6.3.1 + + semver-diff@4.0.0: + dependencies: + semver: 7.6.0 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.0: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.3: {} + + send@0.18.0: + dependencies: + debug: 2.6.9 + depd: 2.0.0 + destroy: 1.2.0 + encodeurl: 1.0.2 + escape-html: 1.0.3 + etag: 1.8.1 + fresh: 0.5.2 + http-errors: 2.0.0 + mime: 1.6.0 + ms: 2.1.3 + on-finished: 2.4.1 + range-parser: 1.2.1 + statuses: 2.0.1 + transitivePeerDependencies: + - supports-color + + serialize-javascript@3.1.0: + dependencies: + randombytes: 2.1.0 + + serialize-javascript@4.0.0: + dependencies: + randombytes: 2.1.0 + + serialize-javascript@5.0.1: + dependencies: + randombytes: 2.1.0 + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + serve-index@1.9.1: + dependencies: + accepts: 1.3.8 + batch: 0.6.1 + debug: 2.6.9 + escape-html: 1.0.3 + http-errors: 1.6.3 + mime-types: 2.1.35 + parseurl: 1.3.3 + transitivePeerDependencies: + - supports-color + + serve-static@1.15.0: + dependencies: + encodeurl: 1.0.2 + escape-html: 1.0.3 + parseurl: 1.3.3 + send: 0.18.0 + transitivePeerDependencies: + - supports-color + + set-blocking@2.0.0: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + + set-value@2.0.1: + dependencies: + extend-shallow: 2.0.1 + is-extendable: 0.1.1 + is-plain-object: 2.0.4 + split-string: 3.1.0 + + setimmediate@1.0.5: {} + + setprototypeof@1.1.0: {} + + setprototypeof@1.2.0: {} + + shallow-equal@1.2.1: {} + + shallowequal@1.1.0: {} + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shell-quote@1.7.2: {} + + shelljs@0.8.5: + dependencies: + glob: 7.1.6 + interpret: 1.4.0 + rechoir: 0.6.2 + + shellwords@0.1.1: {} + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sigstore@1.9.0: + dependencies: + '@sigstore/bundle': 1.1.0 + '@sigstore/protobuf-specs': 0.2.1 + '@sigstore/sign': 1.0.0 + '@sigstore/tuf': 1.0.3 + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + + simple-git@3.27.0: + dependencies: + '@kwsites/file-exists': 1.1.1 + '@kwsites/promise-deferred': 1.1.1 + debug: 4.3.7 + transitivePeerDependencies: + - supports-color + + simple-swizzle@0.2.2: + dependencies: + is-arrayish: 0.3.2 + + sinon@10.0.1: + dependencies: + '@sinonjs/commons': 1.8.6 + '@sinonjs/fake-timers': 7.1.2 + '@sinonjs/samsam': 6.1.3 + diff: 4.0.2 + nise: 5.1.9 + supports-color: 7.2.0 + + sirv@2.0.4: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.0 + totalist: 3.0.1 + + sisteransi@1.0.5: {} + + slash@1.0.0: {} + + slash@2.0.0: {} + + slash@3.0.0: {} + + slash@4.0.0: {} + + slash@5.1.0: {} + + slate-history@0.100.0(slate@0.100.0): + dependencies: + is-plain-object: 5.0.0 + slate: 0.100.0 + + slate-hyperscript@0.100.0(slate@0.100.0): + dependencies: + is-plain-object: 5.0.0 + slate: 0.100.0 + + slate-react@0.98.4(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(slate@0.100.0): + dependencies: + '@juggle/resize-observer': 3.4.0 + '@types/is-hotkey': 0.1.10 + '@types/lodash': 4.17.12 + direction: 1.0.4 + is-hotkey: 0.1.8 + is-plain-object: 5.0.0 + lodash: 4.17.21 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + scroll-into-view-if-needed: 2.2.31 + slate: 0.100.0 + tiny-invariant: 1.0.6 + + slate@0.100.0: + dependencies: + immer: 10.1.1 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + + sleep-promise@9.1.0: {} + + slice-ansi@3.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + smart-buffer@4.2.0: {} + + snapdragon-node@2.1.1: + dependencies: + define-property: 1.0.0 + isobject: 3.0.1 + snapdragon-util: 3.0.1 + + snapdragon-util@3.0.1: + dependencies: + kind-of: 3.2.2 + + snapdragon@0.8.2: + dependencies: + base: 0.11.2 + debug: 2.6.9 + define-property: 0.2.5 + extend-shallow: 2.0.1 + map-cache: 0.2.2 + source-map: 0.5.7 + source-map-resolve: 0.5.3 + use: 3.1.1 + transitivePeerDependencies: + - supports-color + + sockjs-client@1.4.0: + dependencies: + debug: 3.2.7(supports-color@8.1.1) + eventsource: 1.1.2 + faye-websocket: 0.11.4 + inherits: 2.0.4 + json3: 3.3.3 + url-parse: 1.5.10 + transitivePeerDependencies: + - supports-color + + sockjs@0.3.24: + dependencies: + faye-websocket: 0.11.4 + uuid: 8.3.2 + websocket-driver: 0.7.4 + + socks-proxy-agent@6.2.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks-proxy-agent@7.0.0: + dependencies: + agent-base: 6.0.2 + debug: 4.3.4(supports-color@8.1.1) + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks-proxy-agent@8.0.4: + dependencies: + agent-base: 7.1.1 + debug: 4.3.4(supports-color@8.1.1) + socks: 2.8.3 + transitivePeerDependencies: + - supports-color + + socks@2.8.3: + dependencies: + ip-address: 9.0.5 + smart-buffer: 4.2.0 + + sort-keys@4.2.0: + dependencies: + is-plain-obj: 2.1.0 + + source-list-map@2.0.1: {} + + source-map-js@1.2.1: {} + + source-map-resolve@0.5.3: + dependencies: + atob: 2.1.2 + decode-uri-component: 0.2.2 + resolve-url: 0.2.1 + source-map-url: 0.4.1 + urix: 0.1.0 + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map-url@0.4.1: {} + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + source-map@0.7.4: {} + + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + + space-separated-tokens@2.0.2: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + + spdy-transport@3.0.0: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + detect-node: 2.1.0 + hpack.js: 2.1.6 + obuf: 1.1.2 + readable-stream: 3.6.2 + wbuf: 1.7.3 + transitivePeerDependencies: + - supports-color + + spdy@4.0.2: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + handle-thing: 2.0.1 + http-deceiver: 1.2.7 + select-hose: 2.0.0 + spdy-transport: 3.0.0 + transitivePeerDependencies: + - supports-color + + split-on-first@1.1.0: {} + + split-on-first@3.0.0: {} + + split-string@3.1.0: + dependencies: + extend-shallow: 3.0.2 + + split@0.3.3: + dependencies: + through: 2.3.8 + + sprintf-js@1.0.3: {} + + sprintf-js@1.1.3: {} + + srcset@4.0.0: {} + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + ssri@10.0.6: + dependencies: + minipass: 7.1.2 + + ssri@7.1.1: + dependencies: + figgy-pudding: 3.5.2 + minipass: 3.3.6 + + ssri@8.0.1: + dependencies: + minipass: 3.3.6 + + ssri@9.0.1: + dependencies: + minipass: 3.3.6 + + stable@0.1.8: {} + + stack-utils@1.0.5: + dependencies: + escape-string-regexp: 2.0.0 + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + + stackback@0.0.2: {} + + stackframe@1.3.4: {} + + start-server-and-test@1.14.0: + dependencies: + bluebird: 3.7.2 + check-more-types: 2.24.0 + debug: 4.3.2 + execa: 5.1.1 + lazy-ass: 1.6.0 + ps-tree: 1.2.0 + wait-on: 6.0.0(debug@4.3.2) + transitivePeerDependencies: + - supports-color + + static-extend@0.1.2: + dependencies: + define-property: 0.2.5 + object-copy: 0.1.0 + + statuses@1.5.0: {} + + statuses@2.0.1: {} + + std-env@3.7.0: {} + + stdin-discarder@0.1.0: + dependencies: + bl: 5.1.0 + + stdin-discarder@0.2.2: {} + + stealthy-require@1.1.1: {} + + stop-iteration-iterator@1.0.0: + dependencies: + internal-slot: 1.0.7 + + storybook@8.3.6: + dependencies: + '@storybook/core': 8.3.6 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + + strict-uri-encode@2.0.0: {} + + string-argv@0.3.2: {} + + string-hash@1.1.3: {} + + string-length@2.0.0: + dependencies: + astral-regex: 1.0.0 + strip-ansi: 4.0.0 + + string-length@4.0.2: + dependencies: + char-regex: 1.0.2 + strip-ansi: 6.0.1 + + string-natural-compare@3.0.1: {} + + string-width@3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.4.0 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.4.0 + get-east-asian-width: 1.3.0 + strip-ansi: 7.1.0 + + string.prototype.includes@2.0.1: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.matchall@4.0.11: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.7 + regexp.prototype.flags: 1.5.3 + set-function-name: 2.0.2 + side-channel: 1.0.6 + + string.prototype.repeat@1.0.0: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@3.0.1: + dependencies: + ansi-regex: 2.1.1 + + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + + strip-ansi@6.0.0: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom-buf@1.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom-stream@2.0.0: + dependencies: + first-chunk-stream: 2.0.0 + strip-bom: 2.0.0 + + strip-bom@2.0.0: + dependencies: + is-utf8: 0.2.1 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-eof@1.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-indent@4.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@2.0.1: {} + + strip-json-comments@3.1.1: {} + + strip-literal@2.1.0: + dependencies: + js-tokens: 9.0.0 + + style-loader@2.0.0(webpack@5.90.1): + dependencies: + loader-utils: 2.0.4 + schema-utils: 3.3.0 + webpack: 5.90.1 + + style-loader@3.3.1(webpack@5.90.1): + dependencies: + webpack: 5.90.1 + + stylehacks@4.0.3: + dependencies: + browserslist: 4.24.2 + postcss: 7.0.39 + postcss-selector-parser: 3.1.2 + + stylelint-config-idiomatic-order@10.0.0(stylelint@16.10.0(typescript@5.6.3)): + dependencies: + stylelint: 16.10.0(typescript@5.6.3) + stylelint-order: 6.0.4(stylelint@16.10.0(typescript@5.6.3)) + + stylelint-order@6.0.4(stylelint@16.10.0(typescript@5.6.3)): + dependencies: + postcss: 8.4.47 + postcss-sorting: 8.0.2(postcss@8.4.47) + stylelint: 16.10.0(typescript@5.6.3) + + stylelint-prettier@5.0.0(prettier@3.2.5)(stylelint@16.10.0(typescript@5.6.3)): + dependencies: + prettier: 3.2.5 + prettier-linter-helpers: 1.0.0 + stylelint: 16.10.0(typescript@5.6.3) + + stylelint@16.10.0(typescript@5.6.3): + dependencies: + '@csstools/css-parser-algorithms': 3.0.3(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 3.0.1(@csstools/css-parser-algorithms@3.0.3(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/selector-specificity': 4.0.0(postcss-selector-parser@6.1.2) + '@dual-bundle/import-meta-resolve': 4.1.0 + balanced-match: 2.0.0 + colord: 2.9.3 + cosmiconfig: 9.0.0(typescript@5.6.3) + css-functions-list: 3.2.3 + css-tree: 3.0.0 + debug: 4.3.7 + fast-glob: 3.3.2 + fastest-levenshtein: 1.0.16 + file-entry-cache: 9.1.0 + global-modules: 2.0.0 + globby: 11.1.0 + globjoin: 0.1.4 + html-tags: 3.3.1 + ignore: 6.0.2 + imurmurhash: 0.1.4 + is-plain-object: 5.0.0 + known-css-properties: 0.34.0 + mathml-tag-names: 2.1.3 + meow: 13.2.0 + micromatch: 4.0.8 + normalize-path: 3.0.0 + picocolors: 1.1.1 + postcss: 8.4.47 + postcss-resolve-nested-selector: 0.1.6 + postcss-safe-parser: 7.0.1(postcss@8.4.47) + postcss-selector-parser: 6.1.2 + postcss-value-parser: 4.2.0 + resolve-from: 5.0.0 + string-width: 4.2.3 + supports-hyperlinks: 3.1.0 + svg-tags: 1.0.0 + table: 6.8.2 + write-file-atomic: 5.0.1 + transitivePeerDependencies: + - supports-color + - typescript + + stylis@4.2.0: {} + + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superagent@3.8.2: + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 3.2.7(supports-color@8.1.1) + extend: 3.0.2 + form-data: 2.5.2 + formidable: 1.2.6 + methods: 1.1.2 + mime: 1.6.0 + qs: 6.13.0 + readable-stream: 2.3.8 + transitivePeerDependencies: + - supports-color + + supports-color@2.0.0: {} + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@6.1.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-hyperlinks@2.3.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-hyperlinks@3.1.0: + dependencies: + has-flag: 4.0.0 + supports-color: 7.2.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + svg-loader@0.0.2: {} + + svg-tags@1.0.0: {} + + svgo-loader@3.0.3: + dependencies: + loader-utils: 2.0.4 + svgo: 2.8.0 + + svgo@1.3.2: + dependencies: + chalk: 2.4.2 + coa: 2.0.2 + css-select: 2.1.0 + css-select-base-adapter: 0.1.1 + css-tree: 1.0.0-alpha.37 + csso: 4.2.0 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + object.values: 1.2.0 + sax: 1.2.4 + stable: 0.1.8 + unquote: 1.1.1 + util.promisify: 1.0.1 + + svgo@2.8.0: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 4.3.0 + css-tree: 1.1.3 + csso: 4.2.0 + picocolors: 1.1.1 + stable: 0.1.8 + + symbol-observable@1.2.0: {} + + symbol-tree@3.2.4: {} + + synckit@0.9.2: + dependencies: + '@pkgr/core': 0.1.1 + tslib: 2.8.0 + + table@6.8.2: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tapable@1.1.3: {} + + tapable@2.2.1: {} + + tar@6.2.1: + dependencies: + chownr: 2.0.0 + fs-minipass: 2.1.0 + minipass: 5.0.0 + minizlib: 2.1.2 + mkdirp: 1.0.4 + yallist: 4.0.0 + + telejson@7.2.0: + dependencies: + memoizerific: 1.11.3 + + temp-dir@2.0.0: {} + + term-size@2.2.1: {} + + terminal-link@2.1.1: + dependencies: + ansi-escapes: 4.3.2 + supports-hyperlinks: 2.3.0 + + terminate@2.8.0: + dependencies: + ps-tree: 1.2.0 + + terser-webpack-plugin@2.3.8(webpack@5.90.1): + dependencies: + cacache: 13.0.1 + find-cache-dir: 3.3.2 + jest-worker: 25.5.0 + p-limit: 2.3.0 + schema-utils: 2.7.1 + serialize-javascript: 4.0.0 + source-map: 0.6.1 + terser: 4.8.1 + webpack: 5.90.1 + webpack-sources: 1.4.3 + transitivePeerDependencies: + - bluebird + + terser-webpack-plugin@5.3.10(webpack@5.90.1): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.36.0 + webpack: 5.90.1 + + terser-webpack-plugin@5.3.6(webpack@5.90.1): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.2 + terser: 5.36.0 + webpack: 5.90.1 + + terser@4.8.1: + dependencies: + acorn: 8.13.0 + commander: 2.20.3 + source-map: 0.6.1 + source-map-support: 0.5.21 + + terser@5.36.0: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.13.0 + commander: 2.20.3 + source-map-support: 0.5.21 + + test-exclude@5.2.3: + dependencies: + glob: 7.1.6 + minimatch: 3.1.2 + read-pkg-up: 4.0.0 + require-main-filename: 2.0.0 + + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.1.6 + minimatch: 3.1.2 + + text-table@0.2.0: {} + + textextensions@5.16.0: {} + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + throat@4.1.0: {} + + throat@5.0.0: {} + + throttleit@1.0.1: {} + + through@2.3.8: {} + + thunky@1.1.0: {} + + timsort@0.3.0: {} + + tiny-async-pool@1.3.0: + dependencies: + semver: 5.7.2 + + tiny-invariant@1.0.6: {} + + tiny-invariant@1.3.3: {} + + tiny-warning@1.0.3: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.1: {} + + tinyglobby@0.2.10: + dependencies: + fdir: 6.4.2(picomatch@4.0.2) + picomatch: 4.0.2 + + tinypool@0.8.4: {} + + tinypool@1.0.1: {} + + tinyrainbow@1.2.0: {} + + tinyspy@2.2.1: {} + + tinyspy@3.0.2: {} + + titleize@3.0.0: {} + + tlds@1.203.1: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + tmp@0.2.1: + dependencies: + rimraf: 3.0.2 + + tmp@0.2.3: {} + + tmpl@1.0.5: {} + + to-fast-properties@1.0.3: {} + + to-fast-properties@2.0.0: {} + + to-object-path@0.3.0: + dependencies: + kind-of: 3.2.2 + + to-readable-stream@1.0.0: {} + + to-regex-range@2.1.1: + dependencies: + is-number: 3.0.0 + repeat-string: 1.6.1 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + to-regex@3.0.2: + dependencies: + define-property: 2.0.2 + extend-shallow: 3.0.2 + regex-not: 1.0.2 + safe-regex: 1.1.0 + + toidentifier@1.0.1: {} + + totalist@3.0.1: {} + + tough-cookie@2.5.0: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + + tough-cookie@4.1.4: + dependencies: + psl: 1.9.0 + punycode: 2.3.1 + universalify: 0.2.0 + url-parse: 1.5.10 + + tr46@0.0.3: {} + + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + + tr46@2.1.0: + dependencies: + punycode: 2.3.1 + + tr46@4.1.1: + dependencies: + punycode: 2.3.1 + + traverse@0.6.6: {} + + tree-kill@1.2.2: {} + + treeverse@1.0.4: {} + + trough@2.2.0: {} + + ts-api-utils@1.3.0(typescript@5.6.3): + dependencies: + typescript: 5.6.3 + + ts-dedent@2.2.0: {} + + ts-interface-checker@0.1.13: {} + + ts-jest@26.5.6(jest@26.6.3)(typescript@5.6.3): + dependencies: + bs-logger: 0.2.6 + buffer-from: 1.1.2 + fast-json-stable-stringify: 2.1.0 + jest: 26.6.3 + jest-util: 26.6.2 + json5: 2.2.3 + lodash: 4.17.21 + make-error: 1.3.6 + mkdirp: 1.0.4 + semver: 7.6.3 + typescript: 5.6.3 + yargs-parser: 20.2.9 + + ts-loader@9.4.4(typescript@5.6.3)(webpack@5.90.1): + dependencies: + chalk: 4.1.2 + enhanced-resolve: 5.17.1 + micromatch: 4.0.8 + semver: 7.6.3 + typescript: 5.6.3 + webpack: 5.90.1 + + ts-pnp@1.2.0(typescript@5.6.3): + optionalDependencies: + typescript: 5.6.3 + + tsconfig-paths@3.15.0: + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tsconfig-paths@4.2.0: + dependencies: + json5: 2.2.3 + minimist: 1.2.8 + strip-bom: 3.0.0 + + tslib@1.14.1: {} + + tslib@2.8.0: {} + + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2): + dependencies: + bundle-require: 5.0.0(esbuild@0.24.0) + cac: 6.7.14 + chokidar: 4.0.1 + consola: 3.2.3 + debug: 4.3.7 + esbuild: 0.24.0 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(postcss@8.4.47) + resolve-from: 5.0.0 + rollup: 4.24.0 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tinyexec: 0.3.1 + tinyglobby: 0.2.10 + tree-kill: 1.2.2 + optionalDependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) + '@swc/core': 1.7.40(@swc/helpers@0.5.13) + postcss: 8.4.47 + typescript: 5.4.2 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + + tsutils@3.21.0(typescript@5.6.3): + dependencies: + tslib: 1.14.1 + typescript: 5.6.3 + + tuf-js@1.1.7: + dependencies: + '@tufjs/models': 1.0.4 + debug: 4.3.4(supports-color@8.1.1) + make-fetch-happen: 11.1.1 + transitivePeerDependencies: + - supports-color + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tweetnacl@0.14.5: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.0.8: {} + + type-detect@4.1.0: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.8.1: {} + + type-fest@1.4.0: {} + + type-fest@2.19.0: {} + + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + + type@2.7.3: {} + + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typescript@5.2.2: {} + + typescript@5.4.2: {} + + typescript@5.6.3: {} + + ua-parser-js@0.7.39: {} + + uc.micro@1.0.6: {} + + ufo@1.5.4: {} + + unbox-primitive@1.0.2: + dependencies: + call-bind: 1.0.7 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + + undici-types@6.19.8: {} + + undoo@0.5.0: + dependencies: + defaulty: 2.1.0 + fast-deep-equal: 1.1.0 + + unicode-canonical-property-names-ecmascript@2.0.1: {} + + unicode-match-property-ecmascript@2.0.0: + dependencies: + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.1.0 + + unicode-match-property-value-ecmascript@2.2.0: {} + + unicode-property-aliases-ecmascript@2.1.0: {} + + unicorn-magic@0.1.0: {} + + unified@11.0.5: + dependencies: + '@types/unist': 3.0.3 + bail: 2.0.2 + devlop: 1.1.0 + extend: 3.0.2 + is-plain-obj: 4.1.0 + trough: 2.2.0 + vfile: 6.0.3 + + union-value@1.0.1: + dependencies: + arr-union: 3.1.0 + get-value: 2.0.6 + is-extendable: 0.1.1 + set-value: 2.0.1 + + uniq@1.0.1: {} + + uniqs@2.0.0: {} + + unique-filename@1.1.1: + dependencies: + unique-slug: 2.0.2 + + unique-filename@2.0.1: + dependencies: + unique-slug: 3.0.0 + + unique-filename@3.0.0: + dependencies: + unique-slug: 4.0.0 + + unique-slug@2.0.2: + dependencies: + imurmurhash: 0.1.4 + + unique-slug@3.0.0: + dependencies: + imurmurhash: 0.1.4 + + unique-slug@4.0.0: + dependencies: + imurmurhash: 0.1.4 + + unique-string@2.0.0: + dependencies: + crypto-random-string: 2.0.0 + + unique-string@3.0.0: + dependencies: + crypto-random-string: 4.0.0 + + unist-util-is@6.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-stringify-position@4.0.0: + dependencies: + '@types/unist': 3.0.3 + + unist-util-visit-parents@6.0.1: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + + unist-util-visit@5.0.0: + dependencies: + '@types/unist': 3.0.3 + unist-util-is: 6.0.0 + unist-util-visit-parents: 6.0.1 + + universal-cookie-express@4.0.3: + dependencies: + universal-cookie: 4.0.4 + + universal-cookie@4.0.4: + dependencies: + '@types/cookie': 0.3.3 + cookie: 0.4.2 + + universal-user-agent@6.0.1: {} + + universalify@0.1.2: {} + + universalify@0.2.0: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + unplugin@1.14.1(webpack-sources@3.2.3): + dependencies: + acorn: 8.13.0 + webpack-virtual-modules: 0.6.2 + optionalDependencies: + webpack-sources: 3.2.3 + + unquote@1.1.1: {} + + unset-value@1.0.0: + dependencies: + has-value: 0.3.1 + isobject: 3.0.1 + + untildify@4.0.0: {} + + update-browserslist-db@1.1.1(browserslist@4.24.2): + dependencies: + browserslist: 4.24.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + update-notifier@5.1.0: + dependencies: + boxen: 5.1.2 + chalk: 4.1.2 + configstore: 5.0.1 + has-yarn: 2.1.0 + import-lazy: 2.1.0 + is-ci: 2.0.0 + is-installed-globally: 0.4.0 + is-npm: 5.0.0 + is-yarn-global: 0.3.0 + latest-version: 5.1.0 + pupa: 2.1.1 + semver: 7.6.3 + semver-diff: 3.1.1 + xdg-basedir: 4.0.0 + + update-notifier@6.0.2: + dependencies: + boxen: 7.1.1 + chalk: 5.3.0 + configstore: 6.0.0 + has-yarn: 3.0.0 + import-lazy: 4.0.0 + is-ci: 3.0.1 + is-installed-globally: 0.4.0 + is-npm: 6.0.0 + is-yarn-global: 0.4.1 + latest-version: 7.0.0 + pupa: 3.1.0 + semver: 7.5.4 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + + update-notifier@7.0.0: + dependencies: + boxen: 7.1.1 + chalk: 5.3.0 + configstore: 6.0.0 + import-lazy: 4.0.0 + is-in-ci: 0.1.0 + is-installed-globally: 0.4.0 + is-npm: 6.0.0 + latest-version: 7.0.0 + pupa: 3.1.0 + semver: 7.6.0 + semver-diff: 4.0.0 + xdg-basedir: 5.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + urix@0.1.0: {} + + url-join@5.0.0: {} + + url-loader@2.3.0(file-loader@4.3.0(webpack@5.90.1))(webpack@5.90.1): + dependencies: + loader-utils: 1.4.2 + mime: 2.6.0 + schema-utils: 2.7.1 + webpack: 5.90.1 + optionalDependencies: + file-loader: 4.3.0(webpack@5.90.1) + + url-parse-lax@3.0.0: + dependencies: + prepend-http: 2.0.0 + + url-parse@1.5.10: + dependencies: + querystringify: 2.2.0 + requires-port: 1.0.0 + + url@0.11.4: + dependencies: + punycode: 1.4.1 + qs: 6.13.0 + + use-deep-compare-effect@1.8.1(react@18.2.0): + dependencies: + '@babel/runtime': 7.20.6 + dequal: 2.0.3 + react: 18.2.0 + + use-memo-one@1.1.3(react@18.2.0): + dependencies: + react: 18.2.0 + + use-sync-external-store@1.2.2(react@18.2.0): + dependencies: + react: 18.2.0 + + use-trace-update@1.3.2: {} + + use@3.1.1: {} + + util-deprecate@1.0.2: {} + + util.promisify@1.0.1: + dependencies: + define-properties: 1.2.1 + es-abstract: 1.23.3 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.8 + + util.promisify@1.1.2: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + for-each: 0.3.3 + has-proto: 1.0.3 + has-symbols: 1.0.3 + object.getownpropertydescriptors: 2.1.8 + safe-array-concat: 1.1.2 + + util@0.12.5: + dependencies: + inherits: 2.0.4 + is-arguments: 1.1.1 + is-generator-function: 1.0.10 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 + + utila@0.4.0: {} + + utility-types@3.11.0: {} + + utils-merge@1.0.1: {} + + uuid@3.4.0: {} + + uuid@8.3.2: {} + + uuid@9.0.1: {} + + v8-to-istanbul@7.1.2: + dependencies: + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 1.9.0 + source-map: 0.7.4 + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@3.0.0: + dependencies: + builtins: 1.0.3 + + validate-npm-package-name@5.0.1: {} + + validator@13.12.0: {} + + value-equal@1.0.1: {} + + vary@1.1.2: {} + + vendors@1.0.4: {} + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vfile-message@4.0.2: + dependencies: + '@types/unist': 3.0.3 + unist-util-stringify-position: 4.0.0 + + vfile@6.0.3: + dependencies: + '@types/unist': 3.0.3 + vfile-message: 4.0.2 + + vinyl-file@3.0.0: + dependencies: + graceful-fs: 4.2.11 + pify: 2.3.0 + strip-bom-buf: 1.0.0 + strip-bom-stream: 2.0.0 + vinyl: 2.2.1 + + vinyl@2.2.1: + dependencies: + clone: 2.1.2 + clone-buffer: 1.0.0 + clone-stats: 1.0.0 + cloneable-readable: 1.1.3 + remove-trailing-separator: 1.1.0 + replace-ext: 1.0.1 + + vite-node@1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + cac: 6.7.14 + debug: 4.3.4(supports-color@8.1.1) + pathe: 1.1.2 + picocolors: 1.1.1 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-node@2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + cac: 6.7.14 + debug: 4.3.7 + pathe: 1.1.2 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + dependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) + '@rollup/pluginutils': 5.1.3(rollup@4.24.0) + '@vue/language-core': 1.8.27(typescript@5.4.2) + debug: 4.3.4(supports-color@8.1.1) + kolorist: 1.8.0 + magic-string: 0.30.12 + typescript: 5.4.2 + vue-tsc: 1.8.27(typescript@5.4.2) + optionalDependencies: + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + + vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.8.1 + fsevents: 2.3.3 + less: 3.11.1 + lightningcss: 1.27.0 + sass: 1.80.4 + terser: 5.36.0 + + vitest-axe@0.1.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + dependencies: + aria-query: 5.3.2 + axe-core: 4.8.4 + chalk: 5.3.0 + dom-accessibility-api: 0.5.16 + lodash-es: 4.17.21 + redent: 3.0.0 + vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + + vitest@1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.3.4(supports-color@8.1.1) + execa: 8.0.1 + local-pkg: 0.5.0 + magic-string: 0.30.12 + pathe: 1.1.2 + picocolors: 1.1.1 + std-env: 3.7.0 + strip-literal: 2.1.0 + tinybench: 2.9.0 + tinypool: 0.8.4 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.8.1 + jsdom: 22.1.0 + transitivePeerDependencies: + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + debug: 4.3.7 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.8.1 + jsdom: 21.1.2 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + debug: 4.3.7 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.8.1 + jsdom: 22.1.0 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + + vitest@2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4): + dependencies: + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + debug: 4.3.7 + magic-string: 0.30.12 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + why-is-node-running: 2.3.0 + optionalDependencies: + jsdom: 16.7.0 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + optional: true + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.27(typescript@5.4.2): + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.4.2) + semver: 7.6.3 + typescript: 5.4.2 + + w3c-hr-time@1.0.2: + dependencies: + browser-process-hrtime: 1.0.0 + + w3c-xmlserializer@2.0.0: + dependencies: + xml-name-validator: 3.0.0 + + w3c-xmlserializer@4.0.0: + dependencies: + xml-name-validator: 4.0.0 + + wait-for-expect@3.0.2: {} + + wait-on@6.0.0(debug@4.3.2): + dependencies: + axios: 0.21.4(debug@4.3.2) + joi: 17.13.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + + wait-on@7.2.0: + dependencies: + axios: 1.7.7 + joi: 17.13.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + + wait-on@7.2.0(debug@4.3.4): + dependencies: + axios: 1.7.7(debug@4.3.4) + joi: 17.13.3 + lodash: 4.17.21 + minimist: 1.2.8 + rxjs: 7.8.1 + transitivePeerDependencies: + - debug + + walk-up-path@1.0.0: {} + + walker@1.0.8: + dependencies: + makeerror: 1.0.12 + + warning@4.0.3: + dependencies: + loose-envify: 1.4.0 + + watchpack@2.4.2: + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + + wbuf@1.7.3: + dependencies: + minimalistic-assert: 1.0.1 + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + weak-key@1.0.3: {} + + weak-lru-cache@1.2.2: {} + + web-streams-polyfill@3.3.3: {} + + webidl-conversions@3.0.1: {} + + webidl-conversions@4.0.2: {} + + webidl-conversions@5.0.0: {} + + webidl-conversions@6.1.0: {} + + webidl-conversions@7.0.0: {} + + webpack-bundle-analyzer@4.10.1: + dependencies: + '@discoveryjs/json-ext': 0.5.7 + acorn: 8.13.0 + acorn-walk: 8.3.4 + commander: 7.2.0 + debounce: 1.2.1 + escape-string-regexp: 4.0.0 + gzip-size: 6.0.0 + html-escaper: 2.0.2 + is-plain-object: 5.0.0 + opener: 1.5.2 + picocolors: 1.1.1 + sirv: 2.0.4 + ws: 7.5.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + webpack-dev-middleware@5.3.4(webpack@5.90.1): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + webpack: 5.90.1 + + webpack-dev-middleware@6.1.3(webpack@5.90.1): + dependencies: + colorette: 2.0.20 + memfs: 3.5.3 + mime-types: 2.1.35 + range-parser: 1.2.1 + schema-utils: 4.2.0 + optionalDependencies: + webpack: 5.90.1 + + webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.21 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.7 + '@types/sockjs': 0.3.36 + '@types/ws': 8.5.12 + ansi-html-community: 0.0.8 + bonjour-service: 1.2.1 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.7.4 + connect-history-api-fallback: 2.0.0 + default-gateway: 6.0.3 + express: 4.19.2 + graceful-fs: 4.2.11 + html-entities: 2.5.2 + http-proxy-middleware: 2.0.7(@types/express@4.17.21)(debug@4.3.2) + ipaddr.js: 2.2.0 + open: 8.4.2 + p-retry: 4.6.2 + rimraf: 3.0.2 + schema-utils: 4.2.0 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack: 5.90.1 + webpack-dev-middleware: 5.3.4(webpack@5.90.1) + ws: 8.18.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-hot-middleware@2.26.1: + dependencies: + ansi-html-community: 0.0.8 + html-entities: 2.5.2 + strip-ansi: 6.0.1 + + webpack-manifest-plugin@3.2.0(webpack@5.90.1): + dependencies: + tapable: 2.2.1 + webpack: 5.90.1 + webpack-sources: 2.3.1 + + webpack-node-externals@3.0.0: {} + + webpack-sources@1.4.3: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@2.3.1: + dependencies: + source-list-map: 2.0.1 + source-map: 0.6.1 + + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.2: {} + + webpack@5.90.1: + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.6 + '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/wasm-edit': 1.12.1 + '@webassemblyjs/wasm-parser': 1.12.1 + acorn: 8.13.0 + acorn-import-assertions: 1.9.0(acorn@8.13.0) + browserslist: 4.24.2 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.17.1 + es-module-lexer: 1.5.4 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 3.3.0 + tapable: 2.2.1 + terser-webpack-plugin: 5.3.10(webpack@5.90.1) + watchpack: 2.4.2 + webpack-sources: 3.2.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + + webpackbar@5.0.2(webpack@5.90.1): + dependencies: + chalk: 4.1.2 + consola: 2.15.3 + pretty-time: 1.1.0 + std-env: 3.7.0 + webpack: 5.90.1 + + websocket-driver@0.7.4: + dependencies: + http-parser-js: 0.5.8 + safe-buffer: 5.2.1 + websocket-extensions: 0.1.4 + + websocket-extensions@0.1.4: {} + + whatwg-encoding@1.0.5: + dependencies: + iconv-lite: 0.4.24 + + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + + whatwg-fetch@3.6.20: {} + + whatwg-mimetype@2.3.0: {} + + whatwg-mimetype@3.0.0: {} + + whatwg-url@12.0.1: + dependencies: + tr46: 4.1.1 + webidl-conversions: 7.0.0 + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + whatwg-url@6.5.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + + whatwg-url@8.7.0: + dependencies: + lodash: 4.17.21 + tr46: 2.1.0 + webidl-conversions: 6.1.0 + + which-boxed-primitive@1.0.2: + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + + which-builtin-type@1.1.4: + dependencies: + function.prototype.name: 1.1.6 + has-tostringtag: 1.0.2 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.2 + which-typed-array: 1.1.15 + + which-collection@1.0.2: + dependencies: + is-map: 2.0.3 + is-set: 2.0.3 + is-weakmap: 2.0.2 + is-weakset: 2.0.3 + + which-module@2.0.1: {} + + which-pm@2.2.0: + dependencies: + load-yaml-file: 0.2.0 + path-exists: 4.0.0 + + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@3.0.1: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + why@0.6.2: {} + + wide-align@1.1.5: + dependencies: + string-width: 4.2.3 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + widest-line@4.0.1: + dependencies: + string-width: 5.1.2 + + wildcard-match@5.1.2: {} + + windows-release@5.1.1: + dependencies: + execa: 5.1.1 + + word-wrap@1.2.5: {} + + worker-rpc@0.1.1: + dependencies: + microevent.ts: 0.1.1 + + wrap-ansi@5.1.0: + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + write-file-atomic@2.4.1: + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + write-file-atomic@3.0.3: + dependencies: + imurmurhash: 0.1.4 + is-typedarray: 1.0.0 + signal-exit: 3.0.7 + typedarray-to-buffer: 3.1.5 + + write-file-atomic@4.0.2: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + + write-file-atomic@5.0.1: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + + ws@5.2.4: + dependencies: + async-limiter: 1.0.1 + + ws@7.5.10: {} + + ws@8.18.0: {} + + xdg-basedir@4.0.0: {} + + xdg-basedir@5.1.0: {} + + xml-name-validator@3.0.0: {} + + xml-name-validator@4.0.0: {} + + xmlchars@2.2.0: {} + + y18n@4.0.3: {} + + yallist@2.1.2: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@1.10.2: {} + + yargs-parser@13.1.2: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs@13.3.2: + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 13.1.2 + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yeoman-assert@3.1.1: {} + + yeoman-environment@3.19.3: + dependencies: + '@npmcli/arborist': 4.3.1 + are-we-there-yet: 2.0.0 + arrify: 2.0.1 + binaryextensions: 4.19.0 + chalk: 4.1.2 + cli-table: 0.3.11 + commander: 7.1.0 + dateformat: 4.6.3 + debug: 4.3.4(supports-color@8.1.1) + diff: 5.2.0 + error: 10.4.0 + escape-string-regexp: 4.0.0 + execa: 5.1.1 + find-up: 5.0.0 + globby: 11.1.0 + grouped-queue: 2.0.0 + inquirer: 8.2.6 + is-scoped: 2.1.0 + isbinaryfile: 4.0.10 + lodash: 4.17.21 + log-symbols: 4.1.0 + mem-fs: 2.3.0 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + minimatch: 3.1.2 + npmlog: 5.0.1 + p-queue: 6.6.2 + p-transform: 1.3.0 + pacote: 12.0.3 + preferred-pm: 3.1.4 + pretty-bytes: 5.3.0 + readable-stream: 4.5.2 + semver: 7.6.3 + slash: 3.0.0 + strip-ansi: 6.0.1 + text-table: 0.2.0 + textextensions: 5.16.0 + untildify: 4.0.0 + transitivePeerDependencies: + - bluebird + - supports-color + + yeoman-generator@5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3): + dependencies: + chalk: 4.1.2 + dargs: 7.0.0 + debug: 4.3.4(supports-color@8.1.1) + execa: 5.1.1 + github-username: 6.0.0(encoding@0.1.13) + lodash: 4.17.21 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + minimist: 1.2.8 + pacote: 15.2.0 + read-pkg-up: 7.0.1 + run-async: 2.4.1 + semver: 7.6.3 + shelljs: 0.8.5 + sort-keys: 4.2.0 + text-table: 0.2.0 + optionalDependencies: + yeoman-environment: 3.19.3 + transitivePeerDependencies: + - bluebird + - encoding + - mem-fs + - supports-color + + yeoman-test@6.3.0(mem-fs@2.3.0)(yeoman-environment@3.19.3)(yeoman-generator@5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3)): + dependencies: + inquirer: 8.2.6 + lodash: 4.17.21 + mem-fs: 2.3.0 + mem-fs-editor: 9.7.0(mem-fs@2.3.0) + sinon: 10.0.1 + temp-dir: 2.0.0 + yeoman-environment: 3.19.3 + yeoman-generator: 5.10.0(encoding@0.1.13)(mem-fs@2.3.0)(yeoman-environment@3.19.3) + + yocto-queue@0.1.0: {} + + yocto-queue@1.1.1: {} + + z-schema@5.0.5: + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.12.0 + optionalDependencies: + commander: 9.5.0 + + zod@3.23.8: {} + + zwitch@2.0.4: {} From b0733d9645e4180fe08dda5a2e0e3dc6b5cea1d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 08:04:27 +0100 Subject: [PATCH 06/98] Remove searchkit.block package --- backend/src/searchkit/__init__.py | 1 - backend/src/searchkit/block/__init__.py | 12 - backend/src/searchkit/block/configure.zcml | 22 -- .../src/searchkit/block/content/__init__.py | 0 .../searchkit/block/controlpanel/__init__.py | 0 .../block/controlpanel/configure.zcml | 8 - backend/src/searchkit/block/dependencies.zcml | 7 - .../src/searchkit/block/indexers/__init__.py | 0 .../searchkit/block/indexers/configure.zcml | 5 - backend/src/searchkit/block/interfaces.py | 7 - .../src/searchkit/block/locales/__init__.py | 0 .../locales/en/LC_MESSAGES/searchkit.block.po | 15 - .../block/locales/searchkit.block.pot | 18 -- backend/src/searchkit/block/locales/update.py | 79 ------ backend/src/searchkit/block/profiles.zcml | 41 --- .../block/profiles/default/browserlayer.xml | 6 - .../block/profiles/default/catalog.xml | 13 - .../block/profiles/default/controlpanel.xml | 4 - .../block/profiles/default/diff_tool.xml | 6 - .../block/profiles/default/metadata.xml | 7 - .../block/profiles/default/registry/.gitkeep | 0 ...se.interfaces.controlpanel.IMailSchema.xml | 9 - ...se.interfaces.controlpanel.ISiteSchema.xml | 9 - .../plone.i18n.interfaces.ILanguageSchema.xml | 12 - .../block/profiles/default/repositorytool.xml | 6 - .../block/profiles/default/rolemap.xml | 6 - .../block/profiles/default/theme.xml | 5 - .../block/profiles/default/types.xml | 10 - .../block/profiles/default/types/.gitkeep | 0 .../block/profiles/initial/metadata.xml | 4 - .../block/profiles/uninstall/browserlayer.xml | 6 - .../searchkit/block/serializers/__init__.py | 0 .../block/serializers/configure.zcml | 10 - .../searchkit/block/serializers/summary.py | 10 - .../searchkit/block/setuphandlers/__init__.py | 11 - .../setuphandlers/examplecontent/.gitkeep | 0 .../examplecontent/content/__metadata__.json | 40 --- .../data.json | 56 ---- .../image/plone-foundation.png | Bin 50737 -> 0 bytes .../data.json | 98 ------- .../content/plone_site_root/data.json | 267 ------------------ .../examplecontent/discussions.json | 1 - .../examplecontent/portlets.json | 1 - .../examplecontent/principals.json | 4 - .../examplecontent/redirects.json | 1 - .../examplecontent/relations.json | 1 - .../examplecontent/translations.json | 1 - .../searchkit/block/setuphandlers/initial.py | 16 -- backend/src/searchkit/block/testing.py | 49 ---- .../src/searchkit/block/upgrades/__init__.py | 0 .../searchkit/block/upgrades/configure.zcml | 19 -- .../searchkit/block/vocabularies/__init__.py | 0 .../block/vocabularies/configure.zcml | 3 - 53 files changed, 906 deletions(-) delete mode 100644 backend/src/searchkit/__init__.py delete mode 100644 backend/src/searchkit/block/__init__.py delete mode 100644 backend/src/searchkit/block/configure.zcml delete mode 100644 backend/src/searchkit/block/content/__init__.py delete mode 100644 backend/src/searchkit/block/controlpanel/__init__.py delete mode 100644 backend/src/searchkit/block/controlpanel/configure.zcml delete mode 100644 backend/src/searchkit/block/dependencies.zcml delete mode 100644 backend/src/searchkit/block/indexers/__init__.py delete mode 100644 backend/src/searchkit/block/indexers/configure.zcml delete mode 100644 backend/src/searchkit/block/interfaces.py delete mode 100644 backend/src/searchkit/block/locales/__init__.py delete mode 100644 backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po delete mode 100644 backend/src/searchkit/block/locales/searchkit.block.pot delete mode 100644 backend/src/searchkit/block/locales/update.py delete mode 100644 backend/src/searchkit/block/profiles.zcml delete mode 100644 backend/src/searchkit/block/profiles/default/browserlayer.xml delete mode 100644 backend/src/searchkit/block/profiles/default/catalog.xml delete mode 100644 backend/src/searchkit/block/profiles/default/controlpanel.xml delete mode 100644 backend/src/searchkit/block/profiles/default/diff_tool.xml delete mode 100644 backend/src/searchkit/block/profiles/default/metadata.xml delete mode 100644 backend/src/searchkit/block/profiles/default/registry/.gitkeep delete mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml delete mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml delete mode 100644 backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml delete mode 100644 backend/src/searchkit/block/profiles/default/repositorytool.xml delete mode 100644 backend/src/searchkit/block/profiles/default/rolemap.xml delete mode 100644 backend/src/searchkit/block/profiles/default/theme.xml delete mode 100644 backend/src/searchkit/block/profiles/default/types.xml delete mode 100644 backend/src/searchkit/block/profiles/default/types/.gitkeep delete mode 100644 backend/src/searchkit/block/profiles/initial/metadata.xml delete mode 100644 backend/src/searchkit/block/profiles/uninstall/browserlayer.xml delete mode 100644 backend/src/searchkit/block/serializers/__init__.py delete mode 100644 backend/src/searchkit/block/serializers/configure.zcml delete mode 100644 backend/src/searchkit/block/serializers/summary.py delete mode 100644 backend/src/searchkit/block/setuphandlers/__init__.py delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/a720393b3c0240e5bd27c43fcd2cfd1e/data.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/content/plone_site_root/data.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/discussions.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/portlets.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/principals.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/redirects.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/relations.json delete mode 100644 backend/src/searchkit/block/setuphandlers/examplecontent/translations.json delete mode 100644 backend/src/searchkit/block/setuphandlers/initial.py delete mode 100644 backend/src/searchkit/block/testing.py delete mode 100644 backend/src/searchkit/block/upgrades/__init__.py delete mode 100644 backend/src/searchkit/block/upgrades/configure.zcml delete mode 100644 backend/src/searchkit/block/vocabularies/__init__.py delete mode 100644 backend/src/searchkit/block/vocabularies/configure.zcml diff --git a/backend/src/searchkit/__init__.py b/backend/src/searchkit/__init__.py deleted file mode 100644 index 5284146e..00000000 --- a/backend/src/searchkit/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__import__("pkg_resources").declare_namespace(__name__) diff --git a/backend/src/searchkit/block/__init__.py b/backend/src/searchkit/block/__init__.py deleted file mode 100644 index e60d2c13..00000000 --- a/backend/src/searchkit/block/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -"""Init and utils.""" - -from zope.i18nmessageid import MessageFactory - -import logging - - -PACKAGE_NAME = "searchkit.block" - -_ = MessageFactory(PACKAGE_NAME) - -logger = logging.getLogger(PACKAGE_NAME) diff --git a/backend/src/searchkit/block/configure.zcml b/backend/src/searchkit/block/configure.zcml deleted file mode 100644 index 25d130b2..00000000 --- a/backend/src/searchkit/block/configure.zcml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/backend/src/searchkit/block/content/__init__.py b/backend/src/searchkit/block/content/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/controlpanel/__init__.py b/backend/src/searchkit/block/controlpanel/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/controlpanel/configure.zcml b/backend/src/searchkit/block/controlpanel/configure.zcml deleted file mode 100644 index e0cd9f05..00000000 --- a/backend/src/searchkit/block/controlpanel/configure.zcml +++ /dev/null @@ -1,8 +0,0 @@ - - - diff --git a/backend/src/searchkit/block/dependencies.zcml b/backend/src/searchkit/block/dependencies.zcml deleted file mode 100644 index b8d35ae5..00000000 --- a/backend/src/searchkit/block/dependencies.zcml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/backend/src/searchkit/block/indexers/__init__.py b/backend/src/searchkit/block/indexers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/indexers/configure.zcml b/backend/src/searchkit/block/indexers/configure.zcml deleted file mode 100644 index bad8247b..00000000 --- a/backend/src/searchkit/block/indexers/configure.zcml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/backend/src/searchkit/block/interfaces.py b/backend/src/searchkit/block/interfaces.py deleted file mode 100644 index 7e2f2884..00000000 --- a/backend/src/searchkit/block/interfaces.py +++ /dev/null @@ -1,7 +0,0 @@ -"""Module where all interfaces, events and exceptions live.""" - -from zope.publisher.interfaces.browser import IDefaultBrowserLayer - - -class IBrowserLayer(IDefaultBrowserLayer): - """Marker interface that defines a browser layer.""" diff --git a/backend/src/searchkit/block/locales/__init__.py b/backend/src/searchkit/block/locales/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po b/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po deleted file mode 100644 index 0cadc3fe..00000000 --- a/backend/src/searchkit/block/locales/en/LC_MESSAGES/searchkit.block.po +++ /dev/null @@ -1,15 +0,0 @@ -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2022-05-25 17:12+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0\n" -"Language-Code: en\n" -"Language-Name: English\n" -"Preferred-Encodings: utf-8 latin1\n" -"Domain: DOMAIN\n" diff --git a/backend/src/searchkit/block/locales/searchkit.block.pot b/backend/src/searchkit/block/locales/searchkit.block.pot deleted file mode 100644 index c4a3da19..00000000 --- a/backend/src/searchkit/block/locales/searchkit.block.pot +++ /dev/null @@ -1,18 +0,0 @@ -#--- PLEASE EDIT THE LINES BELOW CORRECTLY --- -#SOME DESCRIPTIVE TITLE. -#FIRST AUTHOR , YEAR. -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2022-05-25 17:12+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI +ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=1; plural=0\n" -"Language-Code: en\n" -"Language-Name: English\n" -"Preferred-Encodings: utf-8 latin1\n" -"Domain: searchkit.block\n" diff --git a/backend/src/searchkit/block/locales/update.py b/backend/src/searchkit/block/locales/update.py deleted file mode 100644 index 42e4dee3..00000000 --- a/backend/src/searchkit/block/locales/update.py +++ /dev/null @@ -1,79 +0,0 @@ -"""Update locales.""" - -from pathlib import Path - -import logging -import re -import subprocess - - -logger = logging.getLogger("i18n") -logger.setLevel(logging.DEBUG) - - -PATTERN = r"^[a-z]{2}.*" -domains = ("searchkit.block",) -cwd = Path.cwd() -target_path = Path(__file__).parent.parent.resolve() -locale_path = target_path / "locales" - -i18ndude = cwd / "bin" / "i18ndude" -if not i18ndude.exists(): - i18ndude = cwd / "i18ndude" - -# ignore node_modules files resulting in errors -excludes = '"*.html *json-schema*.xml"' - - -def locale_folder_setup(domain: str): - languages = [path for path in locale_path.glob("*") if path.is_dir()] - for lang_folder in languages: - lc_messages_path = lang_folder / "LC_MESSAGES" - lang = lang_folder.name - if lc_messages_path.exists(): - continue - elif re.match(PATTERN, lang): - lc_messages_path.mkdir() - cmd = ( - f"msginit --locale={lang} " - f"--input={locale_path}/{domain}.pot " - f"--output={locale_path}/{lang}/LC_MESSAGES/{domain}.po" - ) - subprocess.call( - cmd, - shell=True, - ) - - -def _rebuild(domain: str): - cmd = ( - f"{i18ndude} rebuild-pot --pot {locale_path}/{domain}.pot " - f"--exclude {excludes} " - f"--create {domain} {target_path}" - ) - subprocess.call( - cmd, - shell=True, - ) - - -def _sync(domain: str): - cmd = ( - f"{i18ndude} sync --pot {locale_path}/{domain}.pot " - f"{locale_path}/*/LC_MESSAGES/{domain}.po" - ) - subprocess.call( - cmd, - shell=True, - ) - - -def update_locale(): - if i18ndude.exists(): - for domain in domains: - logger.info(f"Updating translations for {domain}") - locale_folder_setup(domain) - _rebuild(domain) - _sync(domain) - else: - logger.error("Not able to find i18ndude") diff --git a/backend/src/searchkit/block/profiles.zcml b/backend/src/searchkit/block/profiles.zcml deleted file mode 100644 index 7cae67f0..00000000 --- a/backend/src/searchkit/block/profiles.zcml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/browserlayer.xml b/backend/src/searchkit/block/profiles/default/browserlayer.xml deleted file mode 100644 index 58b6e1be..00000000 --- a/backend/src/searchkit/block/profiles/default/browserlayer.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/profiles/default/catalog.xml b/backend/src/searchkit/block/profiles/default/catalog.xml deleted file mode 100644 index 9558132b..00000000 --- a/backend/src/searchkit/block/profiles/default/catalog.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - diff --git a/backend/src/searchkit/block/profiles/default/controlpanel.xml b/backend/src/searchkit/block/profiles/default/controlpanel.xml deleted file mode 100644 index a75d00ca..00000000 --- a/backend/src/searchkit/block/profiles/default/controlpanel.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/profiles/default/diff_tool.xml b/backend/src/searchkit/block/profiles/default/diff_tool.xml deleted file mode 100644 index 6a1c5f4e..00000000 --- a/backend/src/searchkit/block/profiles/default/diff_tool.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/metadata.xml b/backend/src/searchkit/block/profiles/default/metadata.xml deleted file mode 100644 index eec40a34..00000000 --- a/backend/src/searchkit/block/profiles/default/metadata.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - 1000 - - profile-plone.volto:default - - diff --git a/backend/src/searchkit/block/profiles/default/registry/.gitkeep b/backend/src/searchkit/block/profiles/default/registry/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml deleted file mode 100644 index ea77c18f..00000000 --- a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.IMailSchema.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Searchkit Block - - diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml deleted file mode 100644 index e8fd7a43..00000000 --- a/backend/src/searchkit/block/profiles/default/registry/plone.base.interfaces.controlpanel.ISiteSchema.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - Searchkit Block - - diff --git a/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml b/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml deleted file mode 100644 index cd2730fc..00000000 --- a/backend/src/searchkit/block/profiles/default/registry/plone.i18n.interfaces.ILanguageSchema.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - en - - en - - diff --git a/backend/src/searchkit/block/profiles/default/repositorytool.xml b/backend/src/searchkit/block/profiles/default/repositorytool.xml deleted file mode 100644 index 4f674d65..00000000 --- a/backend/src/searchkit/block/profiles/default/repositorytool.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/rolemap.xml b/backend/src/searchkit/block/profiles/default/rolemap.xml deleted file mode 100644 index 71ca5838..00000000 --- a/backend/src/searchkit/block/profiles/default/rolemap.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/backend/src/searchkit/block/profiles/default/theme.xml b/backend/src/searchkit/block/profiles/default/theme.xml deleted file mode 100644 index 7f916aad..00000000 --- a/backend/src/searchkit/block/profiles/default/theme.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - barceloneta - true - diff --git a/backend/src/searchkit/block/profiles/default/types.xml b/backend/src/searchkit/block/profiles/default/types.xml deleted file mode 100644 index bed2b0d4..00000000 --- a/backend/src/searchkit/block/profiles/default/types.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/profiles/default/types/.gitkeep b/backend/src/searchkit/block/profiles/default/types/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/profiles/initial/metadata.xml b/backend/src/searchkit/block/profiles/initial/metadata.xml deleted file mode 100644 index f768b5a7..00000000 --- a/backend/src/searchkit/block/profiles/initial/metadata.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 1000 - diff --git a/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml b/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml deleted file mode 100644 index d007dd37..00000000 --- a/backend/src/searchkit/block/profiles/uninstall/browserlayer.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - diff --git a/backend/src/searchkit/block/serializers/__init__.py b/backend/src/searchkit/block/serializers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/serializers/configure.zcml b/backend/src/searchkit/block/serializers/configure.zcml deleted file mode 100644 index edc2fdd1..00000000 --- a/backend/src/searchkit/block/serializers/configure.zcml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/backend/src/searchkit/block/serializers/summary.py b/backend/src/searchkit/block/serializers/summary.py deleted file mode 100644 index 4e0605fe..00000000 --- a/backend/src/searchkit/block/serializers/summary.py +++ /dev/null @@ -1,10 +0,0 @@ -from plone.restapi.interfaces import IJSONSummarySerializerMetadata -from zope.interface import implementer - - -@implementer(IJSONSummarySerializerMetadata) -class JSONSummarySerializerMetadata: - """Additional metadata to be exposed on listings.""" - - def default_metadata_fields(self): - return {"image_field", "image_scales", "effective", "Subject"} diff --git a/backend/src/searchkit/block/setuphandlers/__init__.py b/backend/src/searchkit/block/setuphandlers/__init__.py deleted file mode 100644 index 580bd2c5..00000000 --- a/backend/src/searchkit/block/setuphandlers/__init__.py +++ /dev/null @@ -1,11 +0,0 @@ -from Products.CMFPlone.interfaces import INonInstallable -from zope.interface import implementer - - -@implementer(INonInstallable) -class HiddenProfiles: - def getNonInstallableProfiles(self): - """Hide uninstall profile from site-creation and quickinstaller.""" - return [ - "searchkit.block:uninstall", - ] diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep b/backend/src/searchkit/block/setuphandlers/examplecontent/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json deleted file mode 100644 index 7281b504..00000000 --- a/backend/src/searchkit/block/setuphandlers/examplecontent/content/__metadata__.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "__version__": "1.0.0", - "_blob_files_": [ - "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png" - ], - "_data_files_": [ - "plone_site_root/data.json", - "a720393b3c0240e5bd27c43fcd2cfd1e/data.json", - "a58ccead718140c1baa98d43595fc3e6/data.json" - ], - "default_page": {}, - "local_roles": { - "a58ccead718140c1baa98d43595fc3e6": { - "local_roles": { - "admin": [ - "Owner" - ] - } - }, - "a720393b3c0240e5bd27c43fcd2cfd1e": { - "local_roles": { - "admin": [ - "Owner" - ] - } - }, - "plone_site_root": { - "local_roles": { - "admin": [ - "Owner" - ] - } - } - }, - "ordering": { - "a58ccead718140c1baa98d43595fc3e6": 0, - "a720393b3c0240e5bd27c43fcd2cfd1e": 42 - }, - "relations": [] -} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json deleted file mode 100644 index 08dbccf1..00000000 --- a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/data.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "@id": "/images/plone-foundation.png", - "@type": "Image", - "UID": "a58ccead718140c1baa98d43595fc3e6", - "allow_discussion": false, - "contributors": [], - "created": "2024-05-27T03:23:37+00:00", - "creators": [ - "admin" - ], - "description": "", - "effective": null, - "exclude_from_nav": false, - "expires": null, - "exportimport.constrains": {}, - "exportimport.conversation": [], - "exportimport.versions": {}, - "id": "plone-foundation.png", - "image": { - "blob_path": "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png", - "content-type": "image/png", - "filename": "plone-foundation.png", - "height": 439, - "size": 50737, - "width": 2000 - }, - "is_folderish": false, - "language": "##DEFAULT##", - "layout": "image_view", - "lock": {}, - "modified": "2024-05-27T03:24:00+00:00", - "parent": { - "@id": "/images", - "@type": "Document", - "Subject": [], - "UID": "a720393b3c0240e5bd27c43fcd2cfd1e", - "description": "Site images", - "effective": "1969-12-31T03:00:00+00:00", - "image_field": null, - "image_scales": {}, - "review_state": "private", - "title": "Images", - "type_title": "Page" - }, - "review_state": null, - "rights": "", - "subjects": [ - "Plone" - ], - "title": "Plone Foundation Logo", - "type_title": "Image", - "version": "current", - "workflow_history": {}, - "working_copy": null, - "working_copy_of": null -} \ No newline at end of file diff --git a/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png b/backend/src/searchkit/block/setuphandlers/examplecontent/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png deleted file mode 100644 index 9516c4c6392f24444bec95824f40fcf6bf3a0631..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50737 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 z zLsnayI+1ydYe;XUXIXGGCx8=VrC!PWjuUlJ#UwGv91EQmm1ruI`K1aJQMv#R>-)P& z`0_!BjwwKTf$iVE%bE9Fld1-hfItdq&p*w7T8zCMXZ<_xIxPS+>=$p| zx~}04)YV@mb_&`Wc(WSAG@54LldhL71_d#6-mxJNxzy|dcm|WgL~w?#Ka?zk)^4~- z^1K48SX2*QK2g6t%x5wsAJEoHo*T*jdS}4}`zA55xU(zzQXPJ+y+eaznBhi_SB_9_ zLKpIIX@X6_Z9&LZh(Fh%zZGN9V2t!Rgw4cfU0?^jsR-!WB9}dnHt1lqS(0o zM2r0T?X7~okWB_VF-n19wrp|kH5BK>z4xP}pRCTHaFW0C^H=PH?)0D82ES}O7O?{jfrC!FYa+9coqc7lH09T}_W*CXfql+!(%F&FVmBcypw zweL?$&}?UhbvDq>lEx9^u6p6?9GmnDHWJBD}U|IYI#j`>55 zV3d!XMZxM#W6*)w=S$oQgjW0I{+6Jwo6QNggzq@jDD77PL|mwao0U$`2i&Y)wZalF z4Hy;gm+=RZwIh)A6(9K218tO!o@3*r_LYTT23uWqxn%C%et^A*1_H7+UZhlp^I7wP z@Gm!HV_5I|tBvI3g^RP*hNoBjSi)?wNXJfiZl}>ZyB~7*sjs@)v>4q4BI{i4$Z+vfAPj4lU!Pp7NOfrA<4mg0y`!$MmwU`4kWL9AQ zwOQ8#pD8X0$4NxeymwBH>EBMlIB;tpNT{J9qf4=FR;#!ZiEDG=tH=yJ+jd>zGOyfG zuiz7ITMpBQqyRbwaoVo=d_0oG$dA?DTctQxMr;lrGzG^*&08WA0uhn7T-;9OlY?(f6g`h@W`>@@0M}#2 zyT@HWQ%KYF9O)qC3l2=pU0DYm*sBKCmD49rFrpp(zL<%dD4sPm4yZTS zb%ZIi-s6}&80|o}hV*K!C|cI@Kr;e-8)8D+BHCdh^luB$n{Uhftaz`MHa8aWdkS%n zZDQ~g(q4Qg)Qh>A*l_)S#eIcal+E`yjY=#E(%l`>wIHB$cL~x+!_p1XCEXz@Af3`k zN{5tmhrkj`*L(YXfBN|R1@By3%U;Ve_n9+iW=?$08G@59zH7O2iq!gvz_y^jm(qav zsh1VfQS@|f6xfN11+Gdq0JYjW(;4q*oYAx;7TJkMgF*8}lbJBac^#t(A=XIZg*4@i*|xBXO^oH^j8G7kP+c*yN|LH`=F(Ry)B6 z{q_e614a~5yEmr7R!d?ycLDFbQ7SK0)xS}x(7ekTY;!i9jvIZ`b6Y?2Y(AY~*X3Z;$B3-=gfc<1HVt2^02#B3Z(d4@th&$VMAV&5b6hSUnjOR)?)CUL@K0@7G z`mFp^OA{Ofcaus>5}33tn=$b}i4{Ih5f*h_zA5>@)RMKNdbESrvD)cGz@+s-|EW++ zXiII7B)ZXkDx;}vpm(O&F}C`ECjTK&ZROEg_D9aq5NJymik}_w$cr#Fm}*ja7BQcq z4L!^`;Ld5nl#Axn6Tv)1y12l>^+d**Md0K6o4(TIF+~%cI~Z){0ham-l+S=u(VOQ> zbD6q5dc~9JL|U%G8e5`-sDB5xTM6L$rKnr815@?Y3 zu6Y8kFIM*1M(ph;U~&8jlNE1Sf?gb*y$c=0*JwTogZw} zMC_)uGVHGXQa<09Z{g4l(q4QH}Q2s9&SE&XX49TG_8PV?Q zONl5Qy9p=}fC`|p*>Yp&?u#buohjiNZdj*l-nu(v1J^F>MVTEuKT32sOXdf-S$21C z7&e2WsZFisyOe^A1pwuQ>v{(E+4A#x05w7Jj*(&IfHoUt{qn@5Cqo38UGXnkfqN03 z^dQ7O_usp3-}Vaks@IvklPGzO0U`Jj?cTgIuqfVU1An#89IW$ze%gSTUDzV_nUIS9 zXAf&+VxvCVIq8srJlJ((iE~?XjH4m};tv?w@;&HYJ6>^@Ek^e~YcM+?QaPkK9ZV)D zOdLTf1*qh5w76vOHv&orfFnLo=%@ex;qN`A4Gw^4v-1FkdS)(5F~-|hSr z$n_TyZjyCtq~{$OTvx{xSrU6^NNUe)D`~WZGE{h+?Tgr< zlktXnxp*VY>G}nsV>pkiwt#XGu&<$ot-`RB zG4Ef8@pu+mC`-(hTIKsE$EDgSHY0h~w8Ab_y5^Z6wT4uijK@B-L2H3p5N~-QGWeu2 z8C61WTKmUuHc6h3Hpg8#@zN#eO1z0Pxs`==OOMwC1?bE~Uwu$|(Y9@sS7a zBDx1+M+7U0Bb6BIm>Fn{B#noFqasf1m~`bkqe(=^gMZnQf-95;vMH9WtM7hT2|2KY z!Ss>8Z;!u|43_%nMz^)RadD3gc%@69d?|>vo_ArvrptI) zR}nQ(xLO~{;X)F$#vAI*fads3arIzVI6NgH?7%w#%0&GZZ#Kkg%|n^m@3ozw42zaq zH+iKaR1?UEvJ8Gb+S`f|vt_u^VXg|6ty!X_N?_+%oet?~?H~-^S!bIrn@JA=Ht5Wh z>{kD*wg!YEI<=SYonCa))tF9C;#?o19vaz?X6iYbIKOsh`&()h0$hfEFyPGi`^H1|<{>6uN&D&{!_*53 zU-LknS@8_Kx`;G2G1&2)Vm%d{TWI!zv3sp-qaFJpK;Gl39&qGe=jeZk44_-K)@~jfxrg8o<%#|eyrhcq z9X3LT@$Bh-J;v~%d76lZOX0ddmwZK#sA%g?7+*)Yu8xz(CU-oL!Hu|7+N9WZ-CE`< z&tE$EHc|2-0btwwbNvtQfWb+y@*v~x?9L*kN~+2Wy3OmxY<2;HamZdy?*3%y4)Y2? z)!We(9ypD!YgLVPYv+tZeJbE~FUHLyq?TP-o&Q}2hF=2rSv}#HQ=9;bn`^_Q?2bxX`#;|ttbtQ ze*4yOx$W_iyJ2!%P>bE%ctSn2e~>*;>;aYho_lj9@%1QgmQ6US8kWj6~UKrd$hjE8gU*g-J;VEma+gm%6AOV#vd&gvVa1T?|70rg>$`x zc5fUfC~560hmhV~lgBYU*vy-C8t_p5#cTuI!$+1=YNI|8^gZ$wu9NBm|9&*tM=z=Z zT#_fm;o4V`ljhk@qhQpgEY*o5dmuIs} zL5V`|kC`&g@^hV^XJT=_+vmzvBkHc{tX|;{HBay*-@$f9JzW0!nbRb$FfqEk5T`wR zBdd?H3vfWZQgnDW@=7|n8e};TbyPg6=sxdB0$bSp(7qxN=Fuea!>`9Y(v2}oiUiPL z0d`1i1fAG0oks`Xn7?WKDJvG?kG4Co6blI0cEHdiGeeeqce~2ndSqI1RlxVd7=WRn z`$gpoU66~-&h|72gY$4>nAf~3V5Jvs&TA;|{DgZjn<&`le$0oxEe98DG%FJ(2E`q! zhgXEx4Yk4B5_DjCi@vsxg4t_y^vSExeq-I978=E$x?T7}STL;d9U7-`q!UAobP|@p zi*$O}8~F1cAYQ_6s9VosxYqq`rHDpfM%965^?3P1cAllf1P(-8>7QZ50HMGrCsy_r zPFYiYYe4&&i7U@FW9cvddS?yG_>5`Ja!KGBlkzOqV|>a5+cq2U{|TJ47fgFiy!syG zHP6xkm}gZW%gS$j{2B2M;Ls~ce_4(P>Pr#B`_z;6c{+{<`Yo~^cQSio_IQ&RuBMEU zec{Jjc9^;~5f1GlyDua#XMqS@KI%PgqwuauT7P_ZMowN?eku^^{DpBmQE93kq!7Tv zzq*v2OUB>!Ip|fXlh_u9fGs3?W@eOF`X#*URJ(8W4{zuNToK=g?`}9q+e5as+S)N z*(yhFrv^O7vkF7YFTtlu0J(MNL*&>qS%IfffOp4Wdib^;P1_``GCrZa9=fKN1ca)) zrW5t$a9R;(lOPOHo$cM-&d^-rta9E0%i{mZLA3~A!VgcEK|2m6ExgW;2zXAJe&3OI{^SeXBDG&;bkFCPA z%Pvbx#i-XAZiZm_HXDDJtQo)ZeLQv%(7{@w2e*im$nK7XDAcB_0dbr75H~*;18h{8rj%d~ks88NDvm>irUZdnv|Ay8 z8a&6Pw}`(YG4Px7hqQ?TC}Sy(aMr?A?O`MQAUb_%agKSxGjb0+oysZ^7X)8fuqUvA z_M<_z+WcSnqV1eEeJ_e0qNN49AlTFBpgZP}_TEYXYa*UiA|D99{If_Lb52r2q(CP2 z&A10IevnuY%YF{3 z69v?R(4IBkO7aHQT^T|RuoD{q*T=Qqmu15xlLvcx0@TRv3@wCR>2^-j>4*1M);9EQ z)I3DcgP)BVRcZ40U2V#F?GFP+Ewz56RN4RSk0yKoM{-LK9F3OXc9@~bYu1c0zJqNM zK~7n6O&P(-cFo8@xp!b$%3#dH`$%7HjS(;6;9BwkdYLG|&Pvd_P$q<5oky#UzwJ;T zvQ;Z6P#ZLdfnG<7c+ViJs*r`Z4yn0G<=yda>;+<;rWeut9c#dPCaAx1x}N=UZkBPi zV+~7o0u`$z0pWbYIo1;+AZr(hFos5U2kbKn%r8YcVFqhhB_AM_8+||2CVbE^&HRD^ zg!#g5JkPwmV)3_$uv(+N4rQD8sV6p0Y#I!eQ7ob_==1Q_@fV3JssZ;&+~^&)g!W2X z{$Me@qT%uU&H(GmgmK-c98x{Ni+r`;V+e)M0u-{?x7sEg`g0ZRS^@~`Xco$}<#!a!oEr>X zo7oo*FO#lNx1ri1k@H}dHCKoqlsJF+fBT{gFr>^c^RrFdh~smH!;bOxX!g&=J@3N- zyZ|?Yl>`tLx~kX3f9FkNi^nr3e*=G%enbzf6k%p-)paR}H#(X?-LSsqEcp9DfPEh_ z@eK?iFrAaR9%g}$36Pg!?p2%9*0`sfe(KW6s>p$j7YTS8Ti{Xm5X%{J;h!m*xty+4 zyNi;31_3VlvaM+%=4e1z8M`NB^_<~oSUOpa24w8RgFVv*%zjjw6xGSVgft$2HT~sJ z8sIIlL$u8s0}PZ?zY9d{IF`?Aq}^AH6@;GYw&By2z|11>uKED=4&&KbkrYsMo|S*j z%$FYgjRiQ#sKe*wtlh>1_8KS5S0)e4)%cBwje%mzKw^l$ljDRbMi=f7T5W#Q7xGDK z^Ol(qJn)Q%hvHWjP=<_gD;*TB?Ijlk<8+%x*0{tSfLy?Pg}rJ^k@hZH(R-AE9x2`U zA{LPo0G_O5Yt`?aqSs|a&$}mN4@Q0GoDVzJU)w2#m=c=C=15I(O+@(r5*(?6Z{`}n zjJG_zsK5Tk2kpF7GnAPqzz|3OjMR*_?{Y$LAXH3erUVW=1KaMAjjoJo8~R2#QJ#6* zTq5<7XhE1xosFd=UehnvBWS%; z@96>R%&X}TL23!Q&cG)`1o(%CcD-OPER&MMkJz~@6hS|z#EatEA@bQAd#0S-YVzQ@}nhIH_g&&m!G z50FTa9vHH&AM2-@5z4bsPN{%7Z(l61 zaw+dFaJ1*AN;tq@zWgxjAY)umz>{b<1l&_)4w&7Zm}&l3LPvQVTdTy#wHjYao{e}= zlJ;CZmxy^0Yw(U&H;`$$vE2r$c~w|c^n)Cz<%Mq){WT?1$yt#7+Frw7IH1Q{PU>uz zpWwr*~T|1igma!h1x@-1Hjgm`H1$Zqz6u7|h=w3tO3qLMZLI6o}Y~ z@RLPNIW{>fG!cOezz=1*njv-*vm_}MrEaq@sH>V#p-{!`+(}!j!KhP6L65lKakoPn zJ>j6zcNs>~Io9RxhRdO(2J)yREvX_xr}g1|QK|w>pC$&-#19v5>T-h1W9t!1=@o-- zp6^;D;!Ys1FjJgBHH8ij8-3nX#GP*wq0I8soXkj&+AJ@V)rHdmfe&e!k5Jc@$@2$z z7ow~Bn!qV4$`{W7$i?h{^$`QUYS>*x*f~(8jW$s6D}fVSGoR6bxe6FVD6A?hg^uF} zw7~na*55{V+N!RpB|mFP96#L5SgvPHoa0U4yh$WOw_GQ_0!W^KEupq&(w^<-4|lT!-LuI13pZIU z$PL31_ku<|SXbC??}Xi>;BlY2#{yxZ8c!&GV}X|;lz8J(0-wo^pAQO7t;6_oRj$8mzhP82vamqSVk~B01yFgTZM4ZU zmJ_=Uqxxh$yU&y@QQI#%OXQQD#@-eFIuE%p|4--or3wSNut=CDEm^;IyMLQhm&*Ul zvHyML*DKP0{^{2zaQ}Zlk)lhxlkJhNy-bj>a-&e}nH|Ga+120wA>2VDX{*?jpFE{H zlm9>rTJy-554+V6 zaEhVT`S>qOf4x(CKO#z&MS%Z+-5^O1y91s^F{lwG-9-P-*8Jy%01Tvs4FPv*6mnfJ zU+_%Sl>${F{%ZM{091}2+mB84-GRCE^0$BRNPm-s`Wgckeo7#5Z`^c~MhXwv`?hKd^j>6s6X^~i%kabKxc9td1OjEWa)su{GWDG1YnxVQ?+iV z@*{pH4gT-HV?`1bn*82|``<7TO;CpRt@Dr?Bd`}%A73~wNxB~2KunWS!`S}Q8D*DB z1qMtX(9S?s*-xYD(vlu?tr$-)MRdBFpAz3k#x(YH|J@_4Sl&ZF%$a7tCN3Ezyr|mJ^$Q zkCaP*dn_bRm{SVu39fXLaL5pf(DOy59JV-4V^}fhy%Pp74uv=m=nczj=elbaRs&6XzbmZBxh=X>}XV#vSZ(BdqsRCxg4zWn`l!{uD7 zk-X8nv?{n$k&qp>P7U!|96!LxKGfc?v=^Q~02H74(=1Wm<;1)v*k{ND32_JDZ>yD) z1KP{EE#=KN-d$Wx1Ym^$nmPGB*#6RKIU=|%=&G5!?su;2FMd%Ia~r+hi=%1?j4{#N z`S!f@mBd~bfbn6^+yQy}!ZMA4$aaJnRI&pcVUILwbry?QeE}0TP}b z>puL{?dW|AzP3*)6Rr)I3Y99mf$nb3EG237v0XcF^DPK;*!F7mq*QG`j8n-z-44Eu9b9 zQT#~&$sa}nZyvt{ieK%fwBq7#jg0NoJuiDD@h%(W{dAoY7q95y+r`P8^U9z@`P*1Y zoNG|e?URKH=^T~6I*2X&h~iO@0{@wGD-Tp*NJFUtYT7DC1G7=1B}r$BrWO`FRm0?K6=62STgLwIhFGUI zZZN1;ORU@XJjk$zz-}DVyW>1;sUovylANKp>={*T9?=rVtVTrSYs+ElXOS`@os#Bu zKbkLT2(I?=b{Go7CSweJFn0a%+JhU1X@R?cY~Ox0PNq}M|9dMqRYGiyi!3^RD{O1s zV^!=5z>NB2iV*4ivZbu!J3F&&TnJMFRqyElCp5Z!=(*@eSI*hH4#a%j!~AvU`M9fA zoCnhNTSU(f!ZK|K``-8cK=cd1x2_z|rI08xWa->Hts?ufvaNWwucBxKh%I{vwZ*9I zdA2n9A|D(a`%k4*5^2;=I38K1w3F<+t=OM~pJ#bywH)!UvE9~$<=_DKjp70s@A#k( zGK(+!_KQmHZ+3=!vcw)*8x6wd)ggGO>_&#nha&JxrJ4U^UH=x$DPU4*_}j_0)_c_& z@26&(Z0(; zUPrXMkTsvjH0^L+w@1EgV8j}NZU;JDb75)4Dp6So6`sjEPje4NsB+_`e~q6*m#+^T z`(ukf%OWnd9N<2|+zQUBhw~Cv`hLL5GOw{#Pg~5xq+F3I7k6rnjT0r!Z zNV<>eb3ke>2_BP^zJ#O($j8bZk34hPIxXNuFxI&|u03{HeUiN9PbB(W$v&meM41|n zPGPwk)oSov<7A9h3ASZqEse5MOzArf&jY91+wmzrC}si$fhBrd@ ztRyF~->#t9O__48IpV+#2FK14dpl|c-yWQGud7|pIJaH;*D4A{Dgbs6W_@9T6!7Oh zLPfRu6vFz;V_ca$yPn%T>Eshh0QUvoL`IYip@3_Qc?;`w^{1;7e9(US+FuL++oaVg z-6Hk2W4Y+v!JpL7N8O76DsqY>_ur3@Dg(3+6(R5IBQopuVm%6OYryU+_HXukdaI4h z9rFn$YQrUE!)mWGp}zlo^v=Q=Bz`ZS*rDn82KeR`6{2AsWdP$dAq?C-z{w3AoAi_#6AHSoVSn<{DRP0R z)6O*Z=h=Ub?#@r}YCtKPZym~AUNGDfr)kaVj5Ia+H&3XYlFt1d70lM&|H9g$$Wv?$ zcINt;9;{+5%jvhUUNOk+H#6=s{yS%Y9#FlPqpZFTq*$$ZIn2iJ9`=0>K%UC!@#bGi z%OB(u1qt4!~l=^2r4+kBA zV6f?d6z{*KuNW?>n6%hNe8!N+^Ai5nfKgKpLkA|Bmf)K?AUq?}!MMO<*oHBSNgObb zG*pCm%9z9yovgIep6yi_CqILgg`@$m>t~bFXNVn|`hHG%Ws)&%c)zAYkcrR<)~N|+ zLlyqky5owLba}YG$Wt34wyWr4c6Ac^kinlG>Kf>cpTZvy`P6o>@vUjFYzzth%YQ2D z{3fs%n3)&}#be5hm?-kEn3w{WOW{+h5wvYh5vwr`zFEiE8K(KJ%aQ;ZpY6sef{aY^ z8btTZiPVg0{-v#4(8p1@h$;oYMH-})1*0? zV`Xa^O{%4rf$8Ol^ps~s@1^$2M3B~Zq@Iut_z7~e*Nm8<3Nn|bwvTEYZnvGD7=6ZQNKAJCxZZj zF}TvITU`rsA8IVbv?h?_oDy^Y#JJaNXQ0jT^tJ%9b!eDt+SwG6O16T{{D#vMDdulu zAeQhW%C)~vwe1UGZ&&{qm>l%k;f#8Ip$<3KwJ%(J@SWRw^S;kk8DzxWLMvvpq0DH_ zm~O@8pwh}uQi*ACw?yP!A$h2 zW;OXtNRJ)D>t|Msi=`og=eO?S$D8Qe&i!9fybgPxZu@@pI($7O0v?hy=$PQ{GGP9D z=~Hq8N>g&pjz5=d_$fWiCo*eIAL{{iWEs(z3CkO=z%4&-*lON)L;y3`d+GeZdRXmT zZr4i}ROyxyLn`TEXtG@#Gh{Zw0;R~F)2<3V-L|F(ABB5eDN5nI7W$5!H)Gj%1q6dm zB$6C1ZvvTvwjE!*@neX)lwhvUEB>jf^?S9KFlIvFyS@YNm+66!GmaJPj$TAnKMnSy zCq*3KuCM%x8hr0;I7Eno9ca0&sakJ@aJBVz<7S%<*5$m;qz!98msM5S7+$4o+y|i3 z(_Obkz#Wt+QWOImg{v-Sm85pW{JFQJbxtc4FX!=z(?oJxD(Jl_5)_ay`Ex>2vr)Y$ zq@@4mjLP$~AEJtZ+0SWVm1%7^qgOQ8c|>1nrDrK)D%&_i&a}2w0q3joYWV%b`5})~ zMRnWy<%K}=+0<=xX5;ak=W%-UPK4Jl{Y3#9yYts^Nz(qu;$^P@jkrS z81WI|bdR5V_~LVsS>t{xIO80>>O-WXTboK&^>_1Z+R4R!aRt=(4h zLH(9mwkxV5{Qd4o+Vsd5p4FKH>66LGG&ZBB11&1d|vhiDDEfFkuJZq}~Y&7zlb3bKA94I}tx$i|6HNRC? z&?uCf%-jE9z@=!fzEoQ9sXeM_mnQ;YtqTWj8@XALOi2A6Lh(!HF(N8DdzSQO($4}? z#@)5K?mVSko(J1wY0ueS!;4w(W5V#EMMXuouAS`*qcfO@mVLR3*>hR-7R+zBwpW=f ztqQ^!KstH@)B1xlF_gcVlOJ3uTG7zY<$p0TQ`fpjkAXd#!p{9|k6q6r>5KK=thk}; z*Nxzbnjzpi1nYi*I||f^wwokzbK3Ij!T=GGo>X&iTBAmq*De)~NN;Q6^tNvesly+h zsQChQGMqnr(3iKHNiM~lP>MapF7)|6=GxVFWdHU1li=4$$yu9?Ya_j7Jz4q1b7LBA zX7(^WL(|S;5Bq|l z3JMq8Z0Q9GgPO+DBdJilDT>fPqbAI$+k-1g?C{32%Wn|ey!%lUl9CzEH#-}^WennY z%WChks~v5AeuYA+O?n;=3!)BPH4+;qxG!SWR%o>4QNHvHqd0aI{XO^6>NTPji(Ii4 zaUr9X1y1>U?1>R?ktsfg4!hL@!+msB)18lq|3=>>Vf}gvvINi=rORY*`*o;OfSSK5 z1xklwdox-fVg?IAxxe`{=3;c*9ZN?95TXIy#{3tb#ibI&%ok#MSzO5tg{^^tQ=`pv zTHHyhFm9CC=Vy;=bMp7seDM&CqkJ3OLVE^%EKE1!2mQTG`(l3&Tg6*DCp+V=Lt#aE zZ1#$N5|nF z-Ng~Fu2QvfWPcBvJJXD1tmyG^aFZVY3;7jt4r21b^B3HA=)7gi2FY~_lG=J=au#DC zHXCbyABkfG;p$qjGVX_Z(e0TD$DQj#HEex8kiJ!8tG2VV&KUo6K|N{7;u_cW-Ce( zdrW<$PdZ)r`^z7Yn+B3ph)1wg-ekO~NzjMl?$l{Jx?w-=RTJ zwV#RX?fsu;K?bTtHRn{KjqFTs&U=?5ViOj})QP!$uTxTs*Yq#`^f4h_C93&_l2h7A zM7SY5Zyb9X{TD%>39~;71pM2Z5CgO{Y3per1#M(z)%#l4xEac~s2+!yFdZ0d13gj! z`-wP?X7>g zV-Rzhq3!B^T>OxonZpl{*jiL1$meX@pM_`ugum%s8>8rDv0pKJlb{Yp*Q|W@IqB;#Iqpnq zNX~lohh~9bKv3}T6;cLLgxABX^M)+XMr;jDznTnePYj;HHju)hVxU{)zxIA_S#kLob_M?SIFR$2^7?howVQtuRC?pW#J^ zsQ8(ldvMT(%norWo@+kt_6zLEs;;GRO+yl~#2>mm{ERdX8;m}E23*SRfBybkpwPo0Sptc9r$_lZhoRkZ=U7)qe?h@EKfxWS?wK)-?4QM3 z%)vaCu5My*{L$X!>SZ)luqQSuFK6X?u45N*-C0#)_lL$n{-wSUR#|t8mrlDN{tu2Z zCP-}^bfgA4F8S^@i&MQN>IUZaUPO1}54<$L1yn&5_oY0O0`-ty$BLV=%f~)9*9qXp z*|8IhUsJ$6TED8HgS&{qtT=R5r*itJ+FJLAq1NEU{z&lix%uGaamSry@;9$S$#T5+ znXHLyhkj!HVcT~l+#Pu)>U~iu({o~rnE>gT&Uf)5*Tnuddkd4`P|GFqkc(+gF{Z2mUyXViXP>S z_Z6@&Rk2u$O!oxQg_M2#|7lySYYx3SNzAs+myLllZ8vFJ*U8#2SJ*u5)yzgtYyt^l?__z*8 zORVm@mVr5m`&e~jMRtJjZBn*-J1|#u#>ZF@Q+rsm$?;9cCLRBmSo=%Qh5HTupqYf< z6FtFD1f0$?wU+DDfyN-w7Dh|3Blw8_5j&s2<9)=!?b|tZMLj7+#jIKdyFPvND1EdR z8q51v+X!S7!7=PyJe?~$lUV0s8RWf*@5e^QW|7}p(-0RKve`ze&(RGwr9>M$&3L0n z`=Gf=Mrk&M;-iMm9iT@alAj<}A0c&{lZ(K;jl)mET2nFPch?eM5kp9Rwo85GpIe!< ze{_LQ=+4x-*lcx+{%2j5d_eZ#jJU#kL{TQ{TU;RdFl4h`f-c20Chk|3mu~SEvcw&( z?Y^PtYS~9 z8-T^DP9pw?M6`5(#GfF3d)+Ax1sS^w;qIgH661^nd}waP>AHHKmc2*w1Hspj(&$(V z5DQED`k~Vw5#2KLU)sNJI;82f(;!*T2lTnuD}(BNDF&CWKXjK2oWqezfj%TqN}`pe z4ByY)VtCmfOsY%%t995gk13+c>Xak8Xp*eI7xVimSb?HCF1~{6Ay~e;vXL z=m-iasri>S34pfvpEFV8O*;+bTz!J$p3P+WXJb9Y{1dGKi#w~Nm`)ttBo|yhHkk>) z*EpItoZq_<*;h_5$9iLd<$iuVgSm)kSmOR>IQ3Kz^7XFSWDhpX`Hg&}CL)!3AOAvLPNM$9$S@7phPh}}M5wReB-^!&ws zXRUult|;Xl8cb+j9G6TkrFKYwKyqpH7VZdczQO!9H!oet7RiU?g!=FgNYsm(Z=@1pH|pYi1(2AjDv~hrY6jA!gbC zb5hm%y)QwOq64(K$S~Py_H=#GUaLn}FHWo(>~W9UO|GcjUHtkr``{TqF6_KIp zng!Qn?>6_RtoqGI{ErAJ58lr{SykWon26;oZIZ@JN)C$eu1v4D=1rdl>pDXcP3-sS rux2uDMH@rfMy&RdB!5o=cj5!$7K@Zc6lpIQ4rtP^6eP;U3 - - - - diff --git a/backend/src/searchkit/block/vocabularies/__init__.py b/backend/src/searchkit/block/vocabularies/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/backend/src/searchkit/block/vocabularies/configure.zcml b/backend/src/searchkit/block/vocabularies/configure.zcml deleted file mode 100644 index fb8b7931..00000000 --- a/backend/src/searchkit/block/vocabularies/configure.zcml +++ /dev/null @@ -1,3 +0,0 @@ - - - From e4cad604c3917654499ffb8a0ebbf5bc86633a0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 11:40:40 +0100 Subject: [PATCH 07/98] backend: docker stuff for backend with collective.elastic.plone, OpenSearch, ingest, etc --- Makefile | 76 +++- backend/Dockerfile.acceptance | 6 +- backend/LICENSE.md | 15 - backend/Makefile | 38 +- backend/README.md | 2 +- backend/dockerfiles/.env | 18 + .../dockerfiles/backend/Dockerfile.acceptance | 34 ++ .../Dockerfile.acceptance.multilingual | 42 ++ backend/dockerfiles/backend/Dockerfile.dev | 44 ++ .../collective.elastic.plone-configure.zcml | 1 + .../backend/requirements-docker.txt | 2 + backend/dockerfiles/docker-compose.yml | 172 ++++++++ .../opensearch/Dockerfile.opensearch | 8 + backend/dockerfiles/opensearch/README.md | 4 + .../ingest-configuration/analysis.json | 66 +++ .../ingest-configuration/mappings.json | 409 ++++++++++++++++++ .../ingest-configuration/preprocessings.json | 240 ++++++++++ .../opensearch-configuration/keywords.txt | 1 + .../keywords_english.txt | 0 .../opensearch-configuration/lexicon.txt | 3 + .../lexicon_english.txt | 0 backend/instance.yaml | 2 +- backend/scripts/create_site.py | 10 +- backend/setup.py | 77 ---- backend/tests/conftest.py | 18 - backend/tests/setup/test_setup_install.py | 17 - backend/tests/setup/test_setup_uninstall.py | 19 - backend/variables.mk | 5 + 28 files changed, 1160 insertions(+), 169 deletions(-) delete mode 100644 backend/LICENSE.md create mode 100644 backend/dockerfiles/.env create mode 100644 backend/dockerfiles/backend/Dockerfile.acceptance create mode 100644 backend/dockerfiles/backend/Dockerfile.acceptance.multilingual create mode 100644 backend/dockerfiles/backend/Dockerfile.dev create mode 100644 backend/dockerfiles/backend/collective.elastic.plone-configure.zcml create mode 100644 backend/dockerfiles/backend/requirements-docker.txt create mode 100644 backend/dockerfiles/docker-compose.yml create mode 100644 backend/dockerfiles/opensearch/Dockerfile.opensearch create mode 100644 backend/dockerfiles/opensearch/README.md create mode 100644 backend/dockerfiles/opensearch/ingest-configuration/analysis.json create mode 100644 backend/dockerfiles/opensearch/ingest-configuration/mappings.json create mode 100644 backend/dockerfiles/opensearch/ingest-configuration/preprocessings.json create mode 100644 backend/dockerfiles/opensearch/opensearch-configuration/keywords.txt create mode 100644 backend/dockerfiles/opensearch/opensearch-configuration/keywords_english.txt create mode 100644 backend/dockerfiles/opensearch/opensearch-configuration/lexicon.txt create mode 100644 backend/dockerfiles/opensearch/opensearch-configuration/lexicon_english.txt delete mode 100644 backend/setup.py delete mode 100644 backend/tests/conftest.py delete mode 100644 backend/tests/setup/test_setup_install.py delete mode 100644 backend/tests/setup/test_setup_uninstall.py create mode 100644 backend/variables.mk diff --git a/Makefile b/Makefile index 2e658d00..6129da01 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,8 @@ PRE_COMMIT=pipx run --spec 'pre-commit==3.7.1' pre-commit PLONE_VERSION=6 DOCKER_IMAGE=plone/server-dev:${PLONE_VERSION} +# DOCKER_IMAGE_ACCEPTANCE=plone/server-acceptance:${PLONE_VERSION} +# TODO use build image with c.e.plone DOCKER_IMAGE_ACCEPTANCE=plone/server-acceptance:${PLONE_VERSION} ADDON_NAME='volto-searchkit-block' @@ -32,7 +34,65 @@ ADDON_NAME='volto-searchkit-block' help: ## Show this help @echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)" -# Dev Helpers + + +########################################### +# Backend +########################################### +.PHONY: backend-install +backend-install: ## Create virtualenv and install Plone + $(MAKE) -C "./backend/" install + $(MAKE) backend-create-site + +.PHONY: backend-build +backend-build: ## Build Backend + $(MAKE) -C "./backend/" install + +.PHONY: backend-create-site +backend-create-site: ## Create a Plone site with default content + $(MAKE) -C "./backend/" create-site + +.PHONY: backend-update-example-content +backend-update-example-content: ## Export example content inside package + $(MAKE) -C "./backend/" update-example-content + +.PHONY: backend-start +backend-start: ## Start Plone Backend + $(MAKE) -C "./backend/" start + +.PHONY: backend-test +backend-test: ## Test backend codebase + @echo "Test backend" + $(MAKE) -C "./backend/" test + +# .PHONY: install +# install: ## Install +# @echo "Install Backend & Frontend" +# if [ -d $(GIT_FOLDER) ]; then $(PRE_COMMIT) install; else echo "$(RED) Not installing pre-commit$(RESET)";fi +# $(MAKE) backend-install +# $(MAKE) frontend-install + +# .PHONY: start +# start: ## Start +# @echo "Starting application" +# $(MAKE) backend-start +# $(MAKE) frontend-start + +# .PHONY: clean +# clean: ## Clean installation +# @echo "Clean installation" +# $(MAKE) -C "./backend/" clean +# $(MAKE) -C "./frontend/" clean + +# .PHONY: check +# check: ## Lint and Format codebase +# @echo "Lint and Format codebase" +# $(PRE_COMMIT) run -a + + +########################################### +# Frontend +########################################### .PHONY: install install: ## Installs the add-on in a development environment @@ -97,10 +157,10 @@ ci-test: ## Run unit tests in CI VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests -.PHONY: backend-docker-start -backend-docker-start: ## Starts a Docker-based backend for development - @echo "$(GREEN)==> Start Docker-based Plone Backend$(RESET)" - docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) +# .PHONY: backend-docker-start +# backend-docker-start: ## Starts a Docker-based backend for development +# @echo "$(GREEN)==> Start Docker-based Plone Backend$(RESET)" +# docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) ## Storybook .PHONY: storybook-start @@ -114,7 +174,9 @@ storybook-build: ## Build Storybook mkdir -p $(CURRENT_DIR)/.storybook-build pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build -## Acceptance +########################################### +# Acceptance +########################################### .PHONY: acceptance-frontend-dev-start acceptance-frontend-dev-start: ## Start acceptance frontend in development mode RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start @@ -125,7 +187,7 @@ acceptance-frontend-prod-start: ## Start acceptance frontend in production mode .PHONY: acceptance-backend-start acceptance-backend-start: ## Start backend acceptance server - docker run -it --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + $(MAKE) -C "./backend/" acceptance-backend-start .PHONY: ci-acceptance-backend-start ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI diff --git a/backend/Dockerfile.acceptance b/backend/Dockerfile.acceptance index fd60c63a..5ec3e4d9 100644 --- a/backend/Dockerfile.acceptance +++ b/backend/Dockerfile.acceptance @@ -28,12 +28,12 @@ EOT FROM plone/server-acceptance:${PLONE_VERSION} LABEL maintainer="Plone Foundation " \ - org.label-schema.name="searchkit-block-acceptance" \ + org.label-schema.name="searchkit-block-backend-acceptance" \ org.label-schema.description="Searchkit Block backend acceptance image." \ org.label-schema.vendor="Plone Foundation" -ENV CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,searchkit.block" -ENV APPLY_PROFILES="searchkit.block:default" +ENV CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone" +ENV APPLY_PROFILES="collective.elastic.plone:default" # Copy /app from builder COPY --from=builder /app /app diff --git a/backend/LICENSE.md b/backend/LICENSE.md deleted file mode 100644 index 1de10762..00000000 --- a/backend/LICENSE.md +++ /dev/null @@ -1,15 +0,0 @@ -searchkit.block Copyright 2023, Plone Foundation - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License version 2 -as published by the Free Software Foundation. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, -MA 02111-1307 USA. diff --git a/backend/Makefile b/backend/Makefile index 088d5fe4..722bf92f 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -8,6 +8,10 @@ SHELL:=bash MAKEFLAGS+=--warn-undefined-variables MAKEFLAGS+=--no-builtin-rules +include variables.mk + +CURRENT_DIR:=$(shell dirname $(realpath $(lastword $(MAKEFILE_LIST)))) + # We like colors # From: https://coderwall.com/p/izxssa/colored-makefile-for-golang-projects RED=`tput setaf 1` @@ -43,6 +47,15 @@ VENV_FOLDER=$(BACKEND_FOLDER)/.venv BIN_FOLDER=$(VENV_FOLDER)/bin +BACKEND_ADDONS='collective.elastic.plone ${KGS} $(TESTING_ADDONS)' +DEV_COMPOSE=dockerfiles/docker-compose.yml +ACCEPTANCE_COMPOSE=dockerfiles/docker-compose.yml +CMD_ENVS=CURRENT_DIR=${CURRENT_DIR} PLONE_VERSION=${PLONE_VERSION} BACKEND_ADDONS=${BACKEND_ADDONS} +CMD=${CMD_ENVS} docker compose +DOCKER_COMPOSE=${CMD} -p ${PROJECT_NAME} -f ${DEV_COMPOSE} +ACCEPTANCE_MONOLINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance -f ${ACCEPTANCE_COMPOSE} +ACCEPTANCE_MULTILINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance-multilingual -f ${ACCEPTANCE_COMPOSE} + all: build # Add the following 'help' target to your Makefile @@ -129,11 +142,22 @@ test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage build-image: ## Build Docker Images @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) -# Acceptance tests -.PHONY: acceptance-backend-start -acceptance-backend-start: ## Start backend acceptance server - ZSERVER_HOST=0.0.0.0 ZSERVER_PORT=55001 LISTEN_PORT=55001 APPLY_PROFILES="searchkit/block:default" CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,searchkit/block" $(BIN_FOLDER)/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING +# Acceptance monolingual +# ######################################################################## + +# # Acceptance tests +# .PHONY: acceptance-backend-start +# acceptance-backend-start: ## Start backend acceptance server +# ZSERVER_HOST=0.0.0.0 ZSERVER_PORT=55001 LISTEN_PORT=55001 APPLY_PROFILES="collective.elastic.plone:default" CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone" $(BIN_FOLDER)/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING + +# .PHONY: acceptance-image-build +# acceptance-image-build: ## Build Docker Images +# @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) + +.PHONY: acceptance-start +acceptance-backend-start: ## Start acceptance containers (backend and OpenSearch) + ${ACCEPTANCE_MONOLINGUAL} --profile dev up -d --force-recreate -.PHONY: acceptance-image-build -acceptance-image-build: ## Build Docker Images - @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) +.PHONY: acceptance-build +acceptance-image-build: ## Build acceptance containers (backend and OpenSearch) + ${ACCEPTANCE_MONOLINGUAL} --profile dev build --no-cache \ No newline at end of file diff --git a/backend/README.md b/backend/README.md index 33c6f3a2..88351384 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,4 +1,4 @@ -# searchkit.block +# backend with collective.elastic.plone and ElasticSearch A new project using Plone 6. diff --git a/backend/dockerfiles/.env b/backend/dockerfiles/.env new file mode 100644 index 00000000..a52b3cea --- /dev/null +++ b/backend/dockerfiles/.env @@ -0,0 +1,18 @@ +export INDEX_SERVER=opensearch:9200 +export INDEX_NAME=plone +export INDEX_OPENSEARCH=1 +export INDEX_USE_SSL=1 +export INDEX_LOGIN=admin +export INDEX_PASSWORD=paraDiesli,17 + +export CELERY_BROKER=redis://redis:6379/0 +export CELERY_LOGLEVEL=info + +export PLONE_SERVICE=http://backend-acceptance:55001 +export PLONE_SITE_PREFIX_PATH=plone +export PLONE_USER=admin +export PLONE_PASSWORD=secret + +export MAPPINGS_FILE=/configuration/mappings.json +export ANALYSIS_FILE=/configuration/analysis.json +export PREPROCESSINGS_FILE=/configuration/preprocessings.json diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance b/backend/dockerfiles/backend/Dockerfile.acceptance new file mode 100644 index 00000000..4f212e0a --- /dev/null +++ b/backend/dockerfiles/backend/Dockerfile.acceptance @@ -0,0 +1,34 @@ +# syntax=docker/dockerfile:1 +# Dockerfile from cookiecutter-plone-starter + +ARG PLONE_VERSION=6.0 +ARG SEED=7 +FROM plone/server-builder:${PLONE_VERSION} as builder + +WORKDIR /app + +# # Add local code +# COPY . . + +# Install local requirements +RUN <=2.0.0 + # TODO Switch back to released collective.elastic.plone + # bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 + bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' + bin/pip install 'rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git' +EOT + + +FROM plone/server-acceptance:${PLONE_VERSION} +ENV APPLY_PROFILES="collective.elastic.plone:default,rohberg.volto:monolingual" + +# Copy /app from builder +COPY --from=builder /app /app + +RUN <=2.0.0 + # TODO Switch back to released collective.elastic.plone + # bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 + bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' + bin/pip install 'rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git' +EOT + + +FROM plone/server-acceptance:${PLONE_VERSION} +ENV APPLY_PROFILES="collective.elastic.plone:default,rohberg.volto:multilingual" + +# Copy /app from builder +COPY --from=builder /app /app + +RUN < \ No newline at end of file diff --git a/backend/dockerfiles/backend/requirements-docker.txt b/backend/dockerfiles/backend/requirements-docker.txt new file mode 100644 index 00000000..e8eb6699 --- /dev/null +++ b/backend/dockerfiles/backend/requirements-docker.txt @@ -0,0 +1,2 @@ +collective.elastic.plone[redis,opensearch]==2.1.0 +elasticsearch \ No newline at end of file diff --git a/backend/dockerfiles/docker-compose.yml b/backend/dockerfiles/docker-compose.yml new file mode 100644 index 00000000..c70ba511 --- /dev/null +++ b/backend/dockerfiles/docker-compose.yml @@ -0,0 +1,172 @@ +services: + backend-acceptance: + build: + context: ./ + dockerfile: ./backend/Dockerfile.acceptance + args: + PLONE_VERSION: ${PLONE_VERSION:-6.0} + environment: + ZSERVER_HOST: '0.0.0.0' + ZSERVER_PORT: '55001' + INDEX_SERVER: ${INDEX_SERVER?unset} + INDEX_NAME: ${INDEX_NAME?unset} + INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} + INDEX_USE_SSL: ${INDEX_USE_SSL?unset} + INDEX_LOGIN: ${INDEX_LOGIN?unset} + INDEX_PASSWORD: ${INDEX_PASSWORD?unset} + CELERY_BROKER: ${CELERY_BROKER?unset} + CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' + # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex + INSTALL_PRODUCTS: 'collective.elastic.plone' + volumes: + - backend-data:/data + ports: + - 55001:55001 + profiles: + - dev + - prod + + backend-acceptance-multilingual: + build: + context: ./ + dockerfile: ./backend/Dockerfile.acceptance.multilingual + args: + PLONE_VERSION: ${PLONE_VERSION:-6.0} + environment: + ZSERVER_HOST: '0.0.0.0' + ZSERVER_PORT: '55001' + INDEX_SERVER: ${INDEX_SERVER?unset} + INDEX_NAME: multilingual + INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} + INDEX_USE_SSL: ${INDEX_USE_SSL?unset} + INDEX_LOGIN: ${INDEX_LOGIN?unset} + INDEX_PASSWORD: ${INDEX_PASSWORD?unset} + CELERY_BROKER: ${CELERY_BROKER?unset} + CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' + # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex + INSTALL_PRODUCTS: 'collective.elastic.plone' + volumes: + - backend-data:/data + ports: + - 55001:55001 + profiles: + - multilingual + + ingest: + image: ghcr.io/collective/collective.elastic.ingest:latest + environment: + MAPPINGS_FILE: ${MAPPINGS_FILE} + ANALYSIS_FILE: ${ANALYSIS_FILE} + PREPROCESSINGS_FILE: ${PREPROCESSINGS_FILE} + INDEX_SERVER: ${INDEX_SERVER?unset} + INDEX_NAME: ${INDEX_NAME?unset} + INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} + INDEX_USE_SSL: ${INDEX_USE_SSL?unset} + INDEX_LOGIN: ${INDEX_LOGIN?unset} + INDEX_PASSWORD: ${INDEX_PASSWORD?unset} + CELERY_BROKER: ${CELERY_BROKER?unset} + CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} + CELERY_LOGLEVEL: ${CELERY_LOGLEVEL:-info} + PLONE_SERVICE: ${PLONE_SERVICE?unset} + PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} + PLONE_USER: ${PLONE_USER?unset} + PLONE_PASSWORD: ${PLONE_PASSWORD?unset} + SENTRY_DSN: ${SENTRY_DSN} + volumes: + - ingest-configuration:/configuration + profiles: + - dev + - prod + + ingest-multilingual: + image: ghcr.io/collective/collective.elastic.ingest:latest + environment: + # Different INDEX_NAME + MAPPINGS_FILE: ${MAPPINGS_FILE} + ANALYSIS_FILE: ${ANALYSIS_FILE} + PREPROCESSINGS_FILE: ${PREPROCESSINGS_FILE} + INDEX_SERVER: ${INDEX_SERVER?unset} + INDEX_NAME: multilingual + INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} + INDEX_USE_SSL: ${INDEX_USE_SSL?unset} + INDEX_LOGIN: ${INDEX_LOGIN?unset} + INDEX_PASSWORD: ${INDEX_PASSWORD?unset} + CELERY_BROKER: ${CELERY_BROKER?unset} + CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} + CELERY_LOGLEVEL: ${CELERY_LOGLEVEL:-info} + PLONE_SERVICE: http://backend-acceptance-multilingual:55001 + PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} + PLONE_USER: ${PLONE_USER?unset} + PLONE_PASSWORD: ${PLONE_PASSWORD?unset} + SENTRY_DSN: ${SENTRY_DSN} + volumes: + - ingest-configuration:/configuration + profiles: + - multilingual + + redis: + image: 'redis:latest' + ports: + - 6379:6379 + + opensearch: + build: + context: ./ + dockerfile: ./opensearch/Dockerfile.opensearch + environment: + - cluster.name=opensearch-cluster + - node.name=opensearch + - discovery.type=single-node + - bootstrap.memory_lock=true + - 'OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx2g' + # - plugins.security.disabled=true + - OPENSEARCH_INITIAL_ADMIN_PASSWORD=${INDEX_PASSWORD?unset} + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + volumes: + - opensearch-data:/usr/share/opensearch/data + ports: + - 9200:9200 # REST API + - 9600:9600 # Performance Analyzer + tty: true + profiles: + - dev + - multilingual + - prod + + opensearch-dashboards: + image: opensearchproject/opensearch-dashboards:latest + ports: + - 5601:5601 + expose: + - '5601' + environment: + OPENSEARCH_HOSTS: '["https://opensearch:9200"]' + profiles: + - dev + - multilingual + + # dejavu: + # image: appbaseio/dejavu:latest + # container_name: dejavu + # ports: + # - "1358:1358" + # expose: + # - "1358" + # links: + # - opensearch + +volumes: + backend-data: + opensearch-data: + ingest-configuration: + driver: local + driver_opts: + type: none + device: ../opensearch/ingest-configuration + o: bind diff --git a/backend/dockerfiles/opensearch/Dockerfile.opensearch b/backend/dockerfiles/opensearch/Dockerfile.opensearch new file mode 100644 index 00000000..aed6825c --- /dev/null +++ b/backend/dockerfiles/opensearch/Dockerfile.opensearch @@ -0,0 +1,8 @@ +FROM opensearchproject/opensearch:latest + +COPY opensearch/opensearch-configuration/keywords.txt /usr/share/opensearch/config/keywords.txt +COPY opensearch/opensearch-configuration/lexicon.txt /usr/share/opensearch/config/lexicon.txt +COPY opensearch/opensearch-configuration/keywords_english.txt /usr/share/opensearch/config/keywords_english.txt +COPY opensearch/opensearch-configuration/lexicon_english.txt /usr/share/opensearch/config/lexicon_english.txt + +RUN /usr/share/opensearch/bin/opensearch-plugin install --batch ingest-attachment diff --git a/backend/dockerfiles/opensearch/README.md b/backend/dockerfiles/opensearch/README.md new file mode 100644 index 00000000..ad7e25ec --- /dev/null +++ b/backend/dockerfiles/opensearch/README.md @@ -0,0 +1,4 @@ +See OpenSearch with Docker Compose https://github.com/collective/collective.elastic.ingest/tree/fd87bea1d11a97ae231a824aa3a0c145988faede#opensearch-with-docker-compose + + docker buildx use default + docker buildx build --tag opensearch-ingest-attachment:latest . \ No newline at end of file diff --git a/backend/dockerfiles/opensearch/ingest-configuration/analysis.json b/backend/dockerfiles/opensearch/ingest-configuration/analysis.json new file mode 100644 index 00000000..2fdf91f3 --- /dev/null +++ b/backend/dockerfiles/opensearch/ingest-configuration/analysis.json @@ -0,0 +1,66 @@ +{ + "settings": { + "analysis": { + "analyzer": { + "german_analyzer": { + "tokenizer": "standard", + "filter": [ + "lowercase", + "custom_dictionary_decompounder_german", + "no_stem_german", + "light_german_stemmer" + ] + }, + "german_exact_analyzer": { + "tokenizer": "standard", + "filter": [ + "lowercase" + ] + }, + + "english_analyzer": { + "tokenizer": "standard", + "filter": [ + "lowercase", + "custom_dictionary_decompounder_english", + "no_stem_english", + "light_english_stemmer" + ] + }, + "english_exact_analyzer": { + "tokenizer": "standard", + "filter": [ + "lowercase" + ] + } + }, + "filter": { + "custom_dictionary_decompounder_german": { + "type": "dictionary_decompounder", + "word_list_path": "lexicon.txt" + }, + "no_stem_german": { + "type": "keyword_marker", + "keywords_path": "keywords.txt" + }, + "light_german_stemmer": { + "type": "stemmer", + "language": "light_german" + }, + + "custom_dictionary_decompounder_english": { + "type": "dictionary_decompounder", + "word_list_path": "lexicon_english.txt" + }, + "no_stem_english": { + "type": "keyword_marker", + "keywords_path": "keywords_english.txt" + }, + "light_english_stemmer": { + "type": "stemmer", + "language": "light_english" + } + } + } + } +} \ No newline at end of file diff --git a/backend/dockerfiles/opensearch/ingest-configuration/mappings.json b/backend/dockerfiles/opensearch/ingest-configuration/mappings.json new file mode 100644 index 00000000..47fa4f26 --- /dev/null +++ b/backend/dockerfiles/opensearch/ingest-configuration/mappings.json @@ -0,0 +1,409 @@ +{ + "zope.schema._bootstrapfields.Text": { + "type": "text", + "analyzer": "english_analyzer", + "term_vector": "with_positions_offsets", + "fields": { + "de": { + "type": "text", + "analyzer": "german_analyzer", + "term_vector": "with_positions_offsets" + }, + "de_exact": { + "type": "text", + "analyzer": "german_exact_analyzer", + "term_vector": "with_positions_offsets" + }, + "en": { + "type": "text", + "analyzer": "english_analyzer", + "term_vector": "with_positions_offsets" + }, + "en_exact": { + "type": "text", + "analyzer": "english_exact_analyzer", + "term_vector": "with_positions_offsets" + } + } + }, + "zope.schema._bootstrapfields.TextLine": { + "type": "text", + "analyzer": "english_analyzer", + "term_vector": "with_positions_offsets", + "fields": { + "de": { + "type": "text", + "analyzer": "german_analyzer", + "term_vector": "with_positions_offsets" + }, + "de_exact": { + "type": "text", + "analyzer": "german_exact_analyzer", + "term_vector": "with_positions_offsets" + }, + "en": { + "type": "text", + "analyzer": "english_analyzer", + "term_vector": "with_positions_offsets" + }, + "en_exact": { + "type": "text", + "analyzer": "english_exact_analyzer", + "term_vector": "with_positions_offsets" + } + } + }, + "behaviors/plone.categorization/subjects": { + "type": "text", + "analyzer": "english_analyzer", + "term_vector": "with_positions_offsets", + "fields": { + "de": { + "type": "text", + "analyzer": "german_analyzer", + "term_vector": "with_positions_offsets" + }, + "de_exact": { + "type": "text", + "analyzer": "german_exact_analyzer", + "term_vector": "with_positions_offsets" + }, + "en": { + "type": "text", + "analyzer": "english_analyzer", + "term_vector": "with_positions_offsets" + }, + "en_exact": { + "type": "text", + "analyzer": "english_exact_analyzer", + "term_vector": "with_positions_offsets" + }, + "keyword": { + "type": "keyword" + } + } + }, + + "plone.app.textfield.RichText": { + "pipeline": { + "source": "{name}__data", + "target": "{name}__extracted", + "processors": [ + { + "attachment": { + "field": "{source}", + "target_field": "{target}", + "ignore_missing": true + } + }, + { + "remove": { + "field": "{source}", + "ignore_missing": true + } + } + ], + "type": { + "type": "nested", + "dynamic": false, + "properties": { + "author": { + "type": "text" + }, + "content": { + "type": "text" + }, + "content_length": { + "type": "long" + }, + "content_type": { + "type": "keyword" + }, + "date": { + "type": "date" + }, + "keywords": { + "type": "keyword" + }, + "language": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "title": { + "type": "text" + } + } + }, + "expansion": { + "method": "field", + "field": "data" + } + }, + "definition": { + "type": "nested", + "dynamic": false, + "properties": { + "data": { + "type": "text" + }, + "content-type": { + "type": "keyword" + }, + "encoding": { + "type": "keyword" + } + } + } + }, + "plone.namedfile.field.NamedBlobFile": { + "pipeline": { + "source": "{name}__data", + "target": "{name}__extracted", + "processors": [ + { + "attachment": { + "field": "{source}", + "target_field": "{target}", + "ignore_missing": true + } + }, + { + "remove": { + "field": "{source}", + "ignore_missing": true + } + } + ], + "type": { + "type": "nested", + "dynamic": false, + "properties": { + "author": { + "type": "text" + }, + "content": { + "type": "text" + }, + "content_length": { + "type": "long" + }, + "content_type": { + "type": "keyword" + }, + "date": { + "type": "date" + }, + "keywords": { + "type": "keyword" + }, + "language": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "title": { + "type": "text" + } + } + }, + "expansion": { + "method": "fetch", + "field": "download" + } + }, + "definition": { + "type": "nested", + "dynamic": false, + "properties": { + "content-type": { + "type": "keyword" + }, + "download": { + "type": "text" + }, + "filename": { + "type": "text" + }, + "size": { + "type": "long" + } + } + } + }, + "plone.namedfile.field.NamedBlobImage": { + "pipeline": { + "source": "{name}__data", + "target": "{name}__extracted", + "processors": [ + { + "attachment": { + "field": "{source}", + "target_field": "{target}", + "ignore_missing": true + } + }, + { + "remove": { + "field": "{source}", + "ignore_missing": true + } + } + ], + "type": { + "type": "nested", + "dynamic": false, + "properties": { + "author": { + "type": "text" + }, + "content": { + "type": "text" + }, + "content_length": { + "type": "long" + }, + "content_type": { + "type": "keyword" + }, + "date": { + "type": "date" + }, + "keywords": { + "type": "keyword" + }, + "language": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "title": { + "type": "text" + } + } + }, + "expansion": { + "method": "fetch", + "field": "download" + } + }, + "definition": { + "type": "nested", + "dynamic": false, + "properties": { + "content-type": { + "type": "keyword" + }, + "download": { + "type": "text" + }, + "filename": { + "type": "text" + }, + "size": { + "type": "long" + }, + "height": { + "type": "long" + }, + "width": { + "type": "long" + }, + "scales": { + "type": "nested", + "dynamic": false, + "properties": { + "download": { + "type": "text" + }, + "height": { + "type": "long" + }, + "width": { + "type": "long" + } + } + } + } + } + }, + "plone.schema.jsonfield.JSONField": { + "type": "text" + }, + "z3c.relationfield.schema.RelationList": { + "type": "nested", + "dynamic": false, + "properties": { + "@id": { + "type": "keyword" + }, + "@type": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "review_state": { + "type": "keyword" + }, + "title": { + "type": "text" + } + } + }, + "z3c.relationfield.schema.RelationChoice": { + "type": "nested", + "dynamic": false, + "properties": { + "@id": { + "type": "keyword" + }, + "@type": { + "type": "keyword" + }, + "description": { + "type": "text" + }, + "review_state": { + "type": "keyword" + }, + "title": { + "type": "text" + } + } + }, + + "zope.schema._bootstrapfields.Bool": { + "type": "boolean" + }, + "zope.schema._bootstrapfields.Int": { + "type": "long" + }, + "zope.schema._field.ASCIILine": { + "type": "keyword" + }, + "zope.schema._field.Choice": { + "type": "keyword" + }, + "zope.schema._field.Datetime": { + "type": "date" + }, + "zope.schema._field.Dict": { + "type": "object" + }, + "zope.schema._field.Float": { + "type": "double" + }, + "zope.schema._field.List": { + "type": "keyword" + }, + "zope.schema._field.Tuple": { + "type": "keyword" + }, + "zope.schema._field.URI": { + "type": "text" + } +} \ No newline at end of file diff --git a/backend/dockerfiles/opensearch/ingest-configuration/preprocessings.json b/backend/dockerfiles/opensearch/ingest-configuration/preprocessings.json new file mode 100644 index 00000000..bfaec5ce --- /dev/null +++ b/backend/dockerfiles/opensearch/ingest-configuration/preprocessings.json @@ -0,0 +1,240 @@ +[ + { + "comment": "Remove all empty fields.", + "action": "remove_empty" + }, + { + "comment": "Transform vocabularies to it token only form.", + "action": "strip_vocabulary_term_titles" + }, + { + "comment": "ProxyIndex needs this information, essential rewrite, do not remove", + "action": "rewrite", + "configuration": { + "source": "@components/collectiveelastic/catalog_rid", + "target": "rid", + "enforce": true + } + }, + { + "comment": "Schema for above rid, do not remove", + "action": "additional_schema", + "configuration": { + "name": "rid", + "field": "zope.schema._field.ASCIILine" + } + }, + { + "comment": "CESP Restapi Volto endpoint needs this information, essential rewrite, do not remove", + "action": "rewrite", + "configuration": { + "source": "@components/collectiveelastic/allowedRolesAndUsers", + "target": "allowedRolesAndUsers", + "enforce": true + } + }, + { + "comment": "Schema for above allowedRolesAndUsers, do not remove", + "action": "additional_schema", + "configuration": { + "name": "allowedRolesAndUsers", + "field": "zope.schema._field.List" + } + }, + { + "comment": "Remove plone.restapi parent information", + "action": "remove", + "configuration": { + "target": "parent" + } + }, + { + "comment": "Remove plone.restapi lock information", + "action": "remove", + "configuration": { + "target": "lock" + } + }, + { + "comment": "Remove plone.restapi batching information", + "action": "remove", + "configuration": { + "target": "batching" + } + }, + { + "comment": "If Volto is available, this is important for full text search, do not remove unless in Classic UI only environments", + "action": "rewrite", + "configuration": { + "source": "@components/blocks_plaintext", + "target": "blocks_plaintext", + "enforce": false + } + }, + { + "comment": "If Volto is available, this is important for full text search, do not remove unless in Classic UI only environments", + "action": "additional_schema", + "configuration": { + "name": "blocks_plaintext", + "field": "zope.schema._bootstrapfields.Text" + } + }, + { + "comment": "... needs this information, essential rewrite, do not remove", + "action": "rewrite", + "configuration": { + "source": "@components/collectiveelastic/section_id", + "target": "section", + "enforce": true + } + }, + { + "comment": "Schema for above section_id, do not remove", + "action": "additional_schema", + "configuration": { + "name": "section", + "field": "zope.schema._field.ASCIILine" + } + }, + { + "comment": "If volto.blocks is available, remove all its fields.", + "action": "full_remove", + "configuration": { + "section": "behaviors", + "name": "volto.blocks" + } + }, + { + "comment": "If volto.blocks.editable.layout is available, remove all its fields.", + "action": "full_remove", + "configuration": { + "section": "behaviors", + "name": "volto.blocks.editable.layout" + } + }, + { + "comment": "We want the field to be called portal_type, not @type, so we rewrite it.", + "action": "rewrite", + "configuration": { + "source": "@type", + "target": "portal_type" + } + }, + { + "comment": "Schema for above portal_type", + "action": "additional_schema", + "configuration": { + "name": "portal_type", + "field": "zope.schema._field.ASCIILine" + } + }, + { + "comment": "After all the rewrites, we want to remove the @components field, as it is not needed anymore.", + "action": "remove", + "configuration": { + "target": "@components" + } + }, + { + "comment": "No need for restapi specific folder/collection information.", + "action": "remove", + "configuration": { + "target": "items" + } + }, + { + "comment": "No need for restapi specific information.", + "action": "remove", + "configuration": { + "target": "items_total" + } + }, + { + "comment": "No need for restapi specific information.", + "action": "remove", + "configuration": { + "target": "previous_item" + } + }, + { + "comment": "No need for restapi specific information.", + "action": "remove", + "configuration": { + "target": "next_item" + } + }, + { + "comment": "No need for restapi versioning related information.", + "action": "remove", + "configuration": { + "target": "version" + } + }, + { + "comment": "No need for plone.versioning related information.", + "action": "full_remove", + "configuration": { + "section": "behaviors", + "name": "plone.versioning" + } + }, + { + "comment": "No need for plone.collection related information.", + "action": "full_remove", + "configuration": { + "section": "behaviors", + "name": "plone.collection" + } + }, + { + "comment": "No need for plone.thumb_icon related information.", + "action": "full_remove", + "configuration": { + "section": "behaviors", + "name": "plone.thumb_icon" + } + }, + { + "comment": "No need for plone.tableofcontents related information.", + "action": "full_remove", + "configuration": { + "section": "behaviors", + "name": "plone.tableofcontents" + } + }, + { + "comment": "No need for plone.layoutaware (Mosaic) layout related.", + "action": "field_remove", + "configuration": { + "section": "behaviors", + "name": "plone.layoutaware", + "field": "contentLayout" + } + }, + { + "comment": "No need for plone.layoutaware (Mosaic) layout related.", + "action": "field_remove", + "configuration": { + "section": "behaviors", + "name": "plone.layoutaware", + "field": "pageSiteLayout" + } + }, + { + "comment": "No need for plone.layoutaware (Mosaic) layout related.", + "action": "field_remove", + "configuration": { + "section": "behaviors", + "name": "plone.layoutaware", + "field": "sectionSiteLayout" + } + }, + { + "comment": "Fix field type of review_state to keyword", + "action": "additional_schema", + "configuration": { + "name": "review_state", + "field": "zope.schema._field.ASCIILine" + } + } +] \ No newline at end of file diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/keywords.txt b/backend/dockerfiles/opensearch/opensearch-configuration/keywords.txt new file mode 100644 index 00000000..f9dec303 --- /dev/null +++ b/backend/dockerfiles/opensearch/opensearch-configuration/keywords.txt @@ -0,0 +1 @@ +börse \ No newline at end of file diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/keywords_english.txt b/backend/dockerfiles/opensearch/opensearch-configuration/keywords_english.txt new file mode 100644 index 00000000..e69de29b diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/lexicon.txt b/backend/dockerfiles/opensearch/opensearch-configuration/lexicon.txt new file mode 100644 index 00000000..496b038c --- /dev/null +++ b/backend/dockerfiles/opensearch/opensearch-configuration/lexicon.txt @@ -0,0 +1,3 @@ +lehr +stell +börse \ No newline at end of file diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/lexicon_english.txt b/backend/dockerfiles/opensearch/opensearch-configuration/lexicon_english.txt new file mode 100644 index 00000000..e69de29b diff --git a/backend/instance.yaml b/backend/instance.yaml index ad0b2a1f..6e44f5bb 100644 --- a/backend/instance.yaml +++ b/backend/instance.yaml @@ -1,3 +1,3 @@ default_context: initial_user_password: 'admin' - zcml_package_includes: 'searchkit.block' \ No newline at end of file + zcml_package_includes: 'collective.elastic.plone' \ No newline at end of file diff --git a/backend/scripts/create_site.py b/backend/scripts/create_site.py index 3e296327..4dceb2d2 100644 --- a/backend/scripts/create_site.py +++ b/backend/scripts/create_site.py @@ -2,7 +2,7 @@ from Products.CMFPlone.factory import _DEFAULT_PROFILE from Products.CMFPlone.factory import addPloneSite from Products.GenericSetup.tool import SetupTool -from searchkit.block.interfaces import IBrowserLayer +from collective.elastic.plone.interfaces import ICollectiveEsPloneLayer from Testing.makerequest import makerequest from zope.interface import directlyProvidedBy from zope.interface import directlyProvides @@ -35,7 +35,7 @@ def asbool(s): request = app.REQUEST -ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) +ifaces = [ICollectiveEsPloneLayer] + list(directlyProvidedBy(request)) directlyProvides(request, *ifaces) @@ -48,7 +48,7 @@ def asbool(s): "title": "Searchkit Block", "profile_id": _DEFAULT_PROFILE, "extension_ids": [ - "searchkit.block:default", + "collective.elastic.plone:default", ], "setup_content": False, "default_language": "en", @@ -65,6 +65,8 @@ def asbool(s): transaction.commit() if EXAMPLE_CONTENT: portal_setup: SetupTool = site.portal_setup - portal_setup.runAllImportStepsFromProfile("searchkit.block:initial") + portal_setup.runAllImportStepsFromProfile( + "collective.elastic.plone:initial" + ) transaction.commit() app._p_jar.sync() diff --git a/backend/setup.py b/backend/setup.py deleted file mode 100644 index 46788caa..00000000 --- a/backend/setup.py +++ /dev/null @@ -1,77 +0,0 @@ -"""Installer for the searchkit.block package.""" - -from pathlib import Path -from setuptools import find_packages -from setuptools import setup - - -long_description = f""" -{Path("README.md").read_text()}\n -{Path("CONTRIBUTORS.md").read_text()}\n -{Path("CHANGES.md").read_text()}\n -""" - - -setup( - name="searchkit.block", - version="1.0.0a0", - description="A new project using Plone 6.", - long_description=long_description, - long_description_content_type="text/markdown", - classifiers=[ - "Development Status :: 3 - Alpha", - "Environment :: Web Environment", - "Framework :: Plone", - "Framework :: Plone :: Addon", - "Framework :: Plone :: 6.0", - "Programming Language :: Python", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Operating System :: OS Independent", - "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", - ], - keywords="Python Plone CMS", - author="Plone Foundation", - author_email="collective@plone.org", - url="https://github.com/rohberg/searchkit.block", - project_urls={ - "PyPI": "https://pypi.org/project/searchkit.block", - "Source": "https://github.com/rohberg/searchkit.block", - "Tracker": "https://github.com/rohberg/searchkit.block/issues", - }, - license="GPL version 2", - packages=find_packages("src", exclude=["ez_setup"]), - namespace_packages=["searchkit"], - package_dir={"": "src"}, - include_package_data=True, - zip_safe=False, - python_requires=">=3.8", - install_requires=[ - "setuptools", - "Plone", - "plone.api", - "plone.restapi", - "plone.volto", - "plone.exportimport", - ], - extras_require={ - "test": [ - "zest.releaser[recommended]", - "zestreleaser.towncrier", - "plone.app.testing", - "plone.restapi[test]", - "pytest", - "pytest-cov", - "pytest-plone>=0.5.0", - ], - }, - entry_points=""" - [z3c.autoinclude.plugin] - target = plone - [console_scripts] - update_locale = searchkit.block.locales.update:update_locale - """, -) diff --git a/backend/tests/conftest.py b/backend/tests/conftest.py deleted file mode 100644 index 006e9842..00000000 --- a/backend/tests/conftest.py +++ /dev/null @@ -1,18 +0,0 @@ -from pytest_plone import fixtures_factory -from searchkit.block.testing import ACCEPTANCE_TESTING -from searchkit.block.testing import FUNCTIONAL_TESTING -from searchkit.block.testing import INTEGRATION_TESTING - - -pytest_plugins = ["pytest_plone"] - - -globals().update( - fixtures_factory( - ( - (ACCEPTANCE_TESTING, "acceptance"), - (FUNCTIONAL_TESTING, "functional"), - (INTEGRATION_TESTING, "integration"), - ) - ) -) diff --git a/backend/tests/setup/test_setup_install.py b/backend/tests/setup/test_setup_install.py deleted file mode 100644 index 9a5bcb92..00000000 --- a/backend/tests/setup/test_setup_install.py +++ /dev/null @@ -1,17 +0,0 @@ -from searchkit.block import PACKAGE_NAME - - -class TestSetupInstall: - def test_addon_installed(self, installer): - """Test if searchkit.block is installed.""" - assert installer.is_product_installed(PACKAGE_NAME) is True - - def test_browserlayer(self, browser_layers): - """Test that IBrowserLayer is registered.""" - from searchkit.block.interfaces import IBrowserLayer - - assert IBrowserLayer in browser_layers - - def test_latest_version(self, profile_last_version): - """Test latest version of default profile.""" - assert profile_last_version(f"{PACKAGE_NAME}:default") == "1000" diff --git a/backend/tests/setup/test_setup_uninstall.py b/backend/tests/setup/test_setup_uninstall.py deleted file mode 100644 index 77a6a8f2..00000000 --- a/backend/tests/setup/test_setup_uninstall.py +++ /dev/null @@ -1,19 +0,0 @@ -from searchkit.block import PACKAGE_NAME - -import pytest - - -class TestSetupUninstall: - @pytest.fixture(autouse=True) - def uninstalled(self, installer): - installer.uninstall_product(PACKAGE_NAME) - - def test_addon_uninstalled(self, installer): - """Test if searchkit.block is uninstalled.""" - assert installer.is_product_installed(PACKAGE_NAME) is False - - def test_browserlayer_not_registered(self, browser_layers): - """Test that IBrowserLayer is not registered.""" - from searchkit.block.interfaces import IBrowserLayer - - assert IBrowserLayer not in browser_layers diff --git a/backend/variables.mk b/backend/variables.mk new file mode 100644 index 00000000..73df2ab1 --- /dev/null +++ b/backend/variables.mk @@ -0,0 +1,5 @@ +PLONE_VERSION=6 +PROJECT_NAME='volto-searchkit-block' +# KGS=plone.restapi==9.4.2 plone.volto==4.3.0 plone.rest==4.1.3 +KGS= +TESTING_ADDONS=plone.app.robotframework==2.1.3 plone.app.testing==7.1.0 \ No newline at end of file From fcf37c0bbac46c81c95a1f130fe9310a402ce7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 11:40:53 +0100 Subject: [PATCH 08/98] Fix cypress configuration --- cypress.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress.config.js b/cypress.config.js index dba4b580..c4eeb15d 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -7,7 +7,7 @@ module.exports = defineConfig({ runMode: 3, }, e2e: { - baseUrl: 'http://localhost:3000', + baseUrl: 'http://127.0.0.1:3000', specPattern: 'cypress/tests/**/*.cy.{js,jsx,ts,tsx}', }, }); From cd2eb71bdee2ec847762766d3a3d90b0e93ba4e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 11:41:10 +0100 Subject: [PATCH 09/98] Fix example cypress test --- cypress/tests/example.cy.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cypress/tests/example.cy.js b/cypress/tests/example.cy.js index f3a1fadf..28ee1187 100644 --- a/cypress/tests/example.cy.js +++ b/cypress/tests/example.cy.js @@ -1,6 +1,9 @@ context('Example Acceptance Tests', () => { describe('Visit a page', () => { beforeEach(() => { + cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.intercept('GET', '/**/Document').as('schema'); + // Given a logged in editor cy.viewport('macbook-16'); cy.createContent({ @@ -14,6 +17,8 @@ context('Example Acceptance Tests', () => { it('As editor I can add edit a Page', function () { cy.visit('/document'); cy.navigate('/document/edit'); + + cy.wait('@schema'); cy.get('#toolbar-save').click(); }); }); From 613ce1cf6943b12154def4de71875b9b2823c5c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 11:41:42 +0100 Subject: [PATCH 10/98] Update package version and add missing dependencies --- package.json | 2 +- packages/volto-searchkit-block/package.json | 8 +- pnpm-lock.yaml | 122 ++++++++++++++++---- 3 files changed, 104 insertions(+), 28 deletions(-) diff --git a/package.json b/package.json index 047a94c3..9463ccf7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "volto-searchkit-block-dev", - "version": "1.0.0-alpha.0", + "version": "0.4.0", "description": "Searching with OpenSearch", "author": "Katja Süss", "homepage": "https://github.com/rohberg/volto-searchkit-block", diff --git a/packages/volto-searchkit-block/package.json b/packages/volto-searchkit-block/package.json index 812bae9f..8d0f713a 100644 --- a/packages/volto-searchkit-block/package.json +++ b/packages/volto-searchkit-block/package.json @@ -1,6 +1,6 @@ { "name": "volto-searchkit-block", - "version": "1.0.0-alpha.0", + "version": "0.4.0", "description": "Searching with OpenSearch", "main": "src/index.js", "license": "MIT", @@ -26,7 +26,11 @@ "release-major-alpha": "release-it major --preRelease=alpha", "release-alpha": "release-it --preRelease=alpha" }, - "dependencies": {}, + "dependencies": { + "@eeacms/volto-matomo": "*", + "react-overridable": "^0.0.3", + "react-searchkit": "v2.2.0" + }, "peerDependencies": { "react": "18.2.0", "react-dom": "18.2.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6cfaa81..79638ee6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1440,12 +1440,21 @@ importers: packages/volto-searchkit-block: dependencies: + '@eeacms/volto-matomo': + specifier: '*' + version: 5.0.0(react@18.2.0) react: specifier: 18.2.0 version: 18.2.0 react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-overridable: + specifier: ^0.0.3 + version: 0.0.3(@babel/runtime@7.26.0)(prop-types@15.8.1)(react@18.2.0) + react-searchkit: + specifier: v2.2.0 + version: 2.2.0(@babel/runtime@7.26.0)(axios@1.7.7)(lodash@4.17.21)(qs@6.13.0)(react-dom@18.2.0(react@18.2.0))(react-overridable@0.0.3(@babel/runtime@7.26.0)(prop-types@15.8.1)(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react@18.2.0)(redux-thunk@2.4.2(redux@4.2.1))(redux@4.2.1)(semantic-ui-css@2.5.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)) devDependencies: '@plone/scripts': specifier: ^3.6.1 @@ -2291,6 +2300,14 @@ packages: '@cypress/xvfb@1.2.4': resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + '@datapunt/matomo-tracker-js@0.3.1': + resolution: {integrity: sha512-JIeK7SUHlunspS+6z4wzw9YdsWv1mN2UyL10JWPHhOC45y7rTpcvmvIzkV67xdOd7qS8fE1M2e1qLBFz/dfJug==} + + '@datapunt/matomo-tracker-react@0.3.1': + resolution: {integrity: sha512-bO2UW1lEAdoQytucM+2ufOvVbdIlBwDaQWzsHpDNc1ZRQuMENgA+6Q8gRXNrny1YasqveS5t2YyZocxyPWrmLg==} + peerDependencies: + react: '>=16.8.6 <= 16.x.x' + '@discoveryjs/json-ext@0.5.7': resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} @@ -2320,6 +2337,9 @@ packages: '@dual-bundle/import-meta-resolve@4.1.0': resolution: {integrity: sha512-+nxncfwHM5SgAtrVzgpzJOI1ol0PkumhVo469KCf9lUi21IGcY90G98VuHm9VRrUypmAzawAHO9bs6hqeADaVg==} + '@eeacms/volto-matomo@5.0.0': + resolution: {integrity: sha512-B1coWOaYd2D/9abFaN3x4vi6CgEhHlKJpSTLF+nXvGkRIxe8ThVxXH/bh1OoD/SxplvrvfhhRN/1JwwcGEn5hA==} + '@emotion/babel-plugin@11.12.0': resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} @@ -12352,6 +12372,13 @@ packages: react: ^0.14 || >=15 react-dom: ^0.14 || >=15 + react-overridable@0.0.3: + resolution: {integrity: sha512-BlDKflgyXDAbSO1xST2gXw5ZYAnVoazhaOodzgQAFbtS6r2+qJGMfz3WQblrLWR57Tu7KYT2mKZ6a1o/zdAzKw==} + peerDependencies: + '@babel/runtime': ^7.9.0 + prop-types: ^15.7.0 + react: ^16.13.0 + react-popper@2.3.0: resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==} peerDependencies: @@ -12428,6 +12455,23 @@ packages: peerDependencies: react: '>=15' + react-searchkit@2.2.0: + resolution: {integrity: sha512-aq6VUmAACHZg9eO4oRUwpPb4gvlXbV5cGlMXRxqVBuOFMHeirccViJL3WNcVK3V8OvB+SvjOAn5ga1mPkv0TVQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@babel/runtime': ^7.9.0 + axios: ^0.21.0 + lodash: ^4.17.0 + qs: ^6.8.0 + react: ^16.13.0 + react-dom: ^16.13.0 + react-overridable: ^0.0.3 + react-redux: ^7.2.0 + redux: ^4.0.0 + redux-thunk: ^2.3.0 + semantic-ui-css: ^2.5.0 + semantic-ui-react: ^2.1.0 + react-select-async-paginate@0.5.3: resolution: {integrity: sha512-SWX1twi/jzViDpQa1nS+xyjrFtn9RBezbL4aIjcJXCABKMY+8JhH4iAKqAW3pryZbm439/DaMtQeZADH17v7bQ==} peerDependencies: @@ -13035,6 +13079,9 @@ packages: resolution: {integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==} engines: {node: '>=10'} + semantic-ui-css@2.5.0: + resolution: {integrity: sha512-jIWn3WXXE2uSaWCcB+gVJVRG3masIKtTMNEP2X8Aw909H2rHpXGneYOxzO3hT8TpyvB5/dEEo9mBFCitGwoj1A==} + semantic-ui-less@2.4.1: resolution: {integrity: sha512-/+nhPV6If2ydCz89/SSWzYD8ualDtjh4Tk3F6cqRj2luZj1DRjJ2nM9NKqmeyLlQFNFM94wpnpKXcjxRzZh5GA==} @@ -16017,6 +16064,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@datapunt/matomo-tracker-js@0.3.1': {} + + '@datapunt/matomo-tracker-react@0.3.1(react@18.2.0)': + dependencies: + '@datapunt/matomo-tracker-js': 0.3.1 + react: 18.2.0 + '@discoveryjs/json-ext@0.5.7': {} '@dnd-kit/accessibility@3.1.0(react@18.2.0)': @@ -16046,6 +16100,12 @@ snapshots: '@dual-bundle/import-meta-resolve@4.1.0': {} + '@eeacms/volto-matomo@5.0.0(react@18.2.0)': + dependencies: + '@datapunt/matomo-tracker-react': 0.3.1(react@18.2.0) + transitivePeerDependencies: + - react + '@emotion/babel-plugin@11.12.0': dependencies: '@babel/helper-module-imports': 7.25.9 @@ -17582,7 +17642,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) abortcontroller-polyfill: 1.7.5 base-x: 3.0.10 browserslist: 4.24.2 @@ -17610,7 +17670,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/helpers' @@ -17620,7 +17680,7 @@ snapshots: '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/helpers' @@ -17747,7 +17807,7 @@ snapshots: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/helpers' @@ -17794,7 +17854,7 @@ snapshots: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -17806,9 +17866,9 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -18036,7 +18096,7 @@ snapshots: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' @@ -18049,7 +18109,7 @@ snapshots: '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@swc/helpers': 0.5.13 browserslist: 4.24.2 nullthrows: 1.1.1 @@ -18208,7 +18268,7 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -18221,7 +18281,7 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -18294,28 +18354,15 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/workers@2.12.0(@swc/helpers@0.5.13)': - dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/logger': 2.12.0 '@parcel/profiler': 2.12.0 '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' '@pkgjs/parseargs@0.11.0': optional: true @@ -29924,6 +29971,12 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-overridable@0.0.3(@babel/runtime@7.26.0)(prop-types@15.8.1)(react@18.2.0): + dependencies: + '@babel/runtime': 7.26.0 + prop-types: 15.8.1 + react: 18.2.0 + react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@popperjs/core': 2.11.8 @@ -30006,6 +30059,21 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 + react-searchkit@2.2.0(@babel/runtime@7.26.0)(axios@1.7.7)(lodash@4.17.21)(qs@6.13.0)(react-dom@18.2.0(react@18.2.0))(react-overridable@0.0.3(@babel/runtime@7.26.0)(prop-types@15.8.1)(react@18.2.0))(react-redux@8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1))(react@18.2.0)(redux-thunk@2.4.2(redux@4.2.1))(redux@4.2.1)(semantic-ui-css@2.5.0)(semantic-ui-react@2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)): + dependencies: + '@babel/runtime': 7.26.0 + axios: 1.7.7 + lodash: 4.17.21 + qs: 6.13.0 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-overridable: 0.0.3(@babel/runtime@7.26.0)(prop-types@15.8.1)(react@18.2.0) + react-redux: 8.1.2(@types/react-dom@18.2.12)(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.1) + redux: 4.2.1 + redux-thunk: 2.4.2(redux@4.2.1) + semantic-ui-css: 2.5.0 + semantic-ui-react: 2.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + react-select-async-paginate@0.5.3(react-dom@18.2.0(react@18.2.0))(react-select@4.3.1(@types/react@18.2.27)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.20.6 @@ -30934,6 +31002,10 @@ snapshots: '@types/node-forge': 1.3.11 node-forge: 1.3.1 + semantic-ui-css@2.5.0: + dependencies: + jquery: 3.7.1 + semantic-ui-less@2.4.1: dependencies: jquery: 3.7.1 From 13daf72bab7fa34ebd8e648df2577f9476384736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 11:44:33 +0100 Subject: [PATCH 11/98] update locales --- .../locales/de/LC_MESSAGES/volto.po | 156 +++++++++++++++++ .../locales/en/LC_MESSAGES/volto.po | 156 +++++++++++++++++ .../locales/es/LC_MESSAGES/volto.po | 156 +++++++++++++++++ .../locales/pt_BR/LC_MESSAGES/volto.po | 156 +++++++++++++++++ .../volto-searchkit-block/locales/volto.pot | 158 +++++++++++++++++- 5 files changed, 781 insertions(+), 1 deletion(-) diff --git a/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po index 796f3cf1..5d174d9f 100644 --- a/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po +++ b/packages/volto-searchkit-block/locales/de/LC_MESSAGES/volto.po @@ -10,3 +10,159 @@ msgstr "" "Content-Type: \n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" + +#. Default: "Add {type}" +#: messages +msgid "Add {type}" +msgstr "" + +#. Default: "Cancel" +#: messages +msgid "Cancel" +msgstr "" + +#. Default: "Check the configuration of your searchkit block!" +#: components/Searchkit/Error +msgid "Check the configuration of your searchkit block!" +msgstr "" + +#. Default: "Content" +#: messages +msgid "Content" +msgstr "" + +#. Default: "Date" +#: components/Views/FacetedSearch +msgid "Date" +msgstr "" + +#. Default: "Description" +#: messages +msgid "Description" +msgstr "" + +#. Default: "Deselect all" +#: components/Views/FacetedSearch +msgid "Deselect all" +msgstr "" + +#. Default: "Facet" +#: messages +msgid "Facet" +msgstr "" + +#. Default: "Facet widget" +#: messages +msgid "Facet widget" +msgstr "" + +#. Default: "Facets" +#: messages +msgid "Facets" +msgstr "" + +#. Default: "Field" +#: messages +msgid "Field" +msgstr "" + +#. Default: "Label" +#: messages +msgid "Label" +msgstr "" + +#. Default: "Meta data" +#: messages +msgid "Meta data" +msgstr "" + +#. Default: "Multiple choices?" +#: messages +msgid "Multiple choices?" +msgstr "" + +#. Default: "No results" +#: components/Views/FacetedSearch +msgid "No results" +msgstr "" + +#. Default: "Relevance" +#: components/Views/FacetedSearch +msgid "Relevance" +msgstr "" + +#. Default: "Search block" +#: messages +msgid "Search block" +msgstr "" + +#. Default: "Search can be restricted by sections / paths" +#: messages +msgid "Search can be restricted by sections / paths" +msgstr "" + +#. Default: "Search in sections" +#: messages +msgid "Search in sections" +msgstr "" + +#. Default: "Search result" +#: messages +msgid "Search result" +msgstr "" + +#. Default: "Search results" +#: messages +msgid "Search results" +msgstr "" + +#. Default: "section" +#: messages +msgid "Search section" +msgstr "" + +#. Default: "Search section label" +#: messages +msgid "Search section label" +msgstr "" + +#. Default: "Searchkit" +#: messages +msgid "Searchkit" +msgstr "" + +#. Default: "Select all" +#: components/Views/FacetedSearch +msgid "Select all" +msgstr "" + +#. Default: "Show filter" +#: messages +msgid "Show filters" +msgstr "" + +#. Default: "Sort by:" +#: components/Views/FacetedSearch +msgid "Sort By:" +msgstr "" + +#. Default: "Tags" +#: components/Views/FacetedSearch +#: messages +msgid "Tags" +msgstr "" + +#. Default: "Title" +#: messages +msgid "Title" +msgstr "" + +#. Default: "reset search" +#: components/Views/FacetedSearch +msgid "reset search" +msgstr "" + +#. Default: "search" +#: messages +msgid "search" +msgstr "" diff --git a/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po index 38c369ef..a3591522 100644 --- a/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po +++ b/packages/volto-searchkit-block/locales/en/LC_MESSAGES/volto.po @@ -10,3 +10,159 @@ msgstr "" "Content-Type: \n" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" + +#. Default: "Add {type}" +#: messages +msgid "Add {type}" +msgstr "" + +#. Default: "Cancel" +#: messages +msgid "Cancel" +msgstr "" + +#. Default: "Check the configuration of your searchkit block!" +#: components/Searchkit/Error +msgid "Check the configuration of your searchkit block!" +msgstr "" + +#. Default: "Content" +#: messages +msgid "Content" +msgstr "" + +#. Default: "Date" +#: components/Views/FacetedSearch +msgid "Date" +msgstr "" + +#. Default: "Description" +#: messages +msgid "Description" +msgstr "" + +#. Default: "Deselect all" +#: components/Views/FacetedSearch +msgid "Deselect all" +msgstr "" + +#. Default: "Facet" +#: messages +msgid "Facet" +msgstr "" + +#. Default: "Facet widget" +#: messages +msgid "Facet widget" +msgstr "" + +#. Default: "Facets" +#: messages +msgid "Facets" +msgstr "" + +#. Default: "Field" +#: messages +msgid "Field" +msgstr "" + +#. Default: "Label" +#: messages +msgid "Label" +msgstr "" + +#. Default: "Meta data" +#: messages +msgid "Meta data" +msgstr "" + +#. Default: "Multiple choices?" +#: messages +msgid "Multiple choices?" +msgstr "" + +#. Default: "No results" +#: components/Views/FacetedSearch +msgid "No results" +msgstr "" + +#. Default: "Relevance" +#: components/Views/FacetedSearch +msgid "Relevance" +msgstr "" + +#. Default: "Search block" +#: messages +msgid "Search block" +msgstr "" + +#. Default: "Search can be restricted by sections / paths" +#: messages +msgid "Search can be restricted by sections / paths" +msgstr "" + +#. Default: "Search in sections" +#: messages +msgid "Search in sections" +msgstr "" + +#. Default: "Search result" +#: messages +msgid "Search result" +msgstr "" + +#. Default: "Search results" +#: messages +msgid "Search results" +msgstr "" + +#. Default: "section" +#: messages +msgid "Search section" +msgstr "" + +#. Default: "Search section label" +#: messages +msgid "Search section label" +msgstr "" + +#. Default: "Searchkit" +#: messages +msgid "Searchkit" +msgstr "" + +#. Default: "Select all" +#: components/Views/FacetedSearch +msgid "Select all" +msgstr "" + +#. Default: "Show filter" +#: messages +msgid "Show filters" +msgstr "" + +#. Default: "Sort by:" +#: components/Views/FacetedSearch +msgid "Sort By:" +msgstr "" + +#. Default: "Tags" +#: components/Views/FacetedSearch +#: messages +msgid "Tags" +msgstr "" + +#. Default: "Title" +#: messages +msgid "Title" +msgstr "" + +#. Default: "reset search" +#: components/Views/FacetedSearch +msgid "reset search" +msgstr "" + +#. Default: "search" +#: messages +msgid "search" +msgstr "" diff --git a/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po index 7288b050..a12cc9ef 100644 --- a/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po +++ b/packages/volto-searchkit-block/locales/es/LC_MESSAGES/volto.po @@ -17,3 +17,159 @@ msgstr "" "Domain: volto\n" "X-Is-Fallback-For: es-ar es-bo es-cl es-co es-cr es-do es-ec es-es es-sv es-gt es-hn es-mx es-ni es-pa es-py es-pe es-pr es-us es-uy es-ve\n" "X-Generator: Poedit 2.2.1\n" + +#. Default: "Add {type}" +#: messages +msgid "Add {type}" +msgstr "" + +#. Default: "Cancel" +#: messages +msgid "Cancel" +msgstr "" + +#. Default: "Check the configuration of your searchkit block!" +#: components/Searchkit/Error +msgid "Check the configuration of your searchkit block!" +msgstr "" + +#. Default: "Content" +#: messages +msgid "Content" +msgstr "" + +#. Default: "Date" +#: components/Views/FacetedSearch +msgid "Date" +msgstr "" + +#. Default: "Description" +#: messages +msgid "Description" +msgstr "" + +#. Default: "Deselect all" +#: components/Views/FacetedSearch +msgid "Deselect all" +msgstr "" + +#. Default: "Facet" +#: messages +msgid "Facet" +msgstr "" + +#. Default: "Facet widget" +#: messages +msgid "Facet widget" +msgstr "" + +#. Default: "Facets" +#: messages +msgid "Facets" +msgstr "" + +#. Default: "Field" +#: messages +msgid "Field" +msgstr "" + +#. Default: "Label" +#: messages +msgid "Label" +msgstr "" + +#. Default: "Meta data" +#: messages +msgid "Meta data" +msgstr "" + +#. Default: "Multiple choices?" +#: messages +msgid "Multiple choices?" +msgstr "" + +#. Default: "No results" +#: components/Views/FacetedSearch +msgid "No results" +msgstr "" + +#. Default: "Relevance" +#: components/Views/FacetedSearch +msgid "Relevance" +msgstr "" + +#. Default: "Search block" +#: messages +msgid "Search block" +msgstr "" + +#. Default: "Search can be restricted by sections / paths" +#: messages +msgid "Search can be restricted by sections / paths" +msgstr "" + +#. Default: "Search in sections" +#: messages +msgid "Search in sections" +msgstr "" + +#. Default: "Search result" +#: messages +msgid "Search result" +msgstr "" + +#. Default: "Search results" +#: messages +msgid "Search results" +msgstr "" + +#. Default: "section" +#: messages +msgid "Search section" +msgstr "" + +#. Default: "Search section label" +#: messages +msgid "Search section label" +msgstr "" + +#. Default: "Searchkit" +#: messages +msgid "Searchkit" +msgstr "" + +#. Default: "Select all" +#: components/Views/FacetedSearch +msgid "Select all" +msgstr "" + +#. Default: "Show filter" +#: messages +msgid "Show filters" +msgstr "" + +#. Default: "Sort by:" +#: components/Views/FacetedSearch +msgid "Sort By:" +msgstr "" + +#. Default: "Tags" +#: components/Views/FacetedSearch +#: messages +msgid "Tags" +msgstr "" + +#. Default: "Title" +#: messages +msgid "Title" +msgstr "" + +#. Default: "reset search" +#: components/Views/FacetedSearch +msgid "reset search" +msgstr "" + +#. Default: "search" +#: messages +msgid "search" +msgstr "" diff --git a/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po b/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po index e01604d6..3d1fbf02 100644 --- a/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po +++ b/packages/volto-searchkit-block/locales/pt_BR/LC_MESSAGES/volto.po @@ -15,3 +15,159 @@ msgstr "" "Language-Name: Português do Brasil\n" "Preferred-Encodings: utf-8\n" "Domain: volto\n" + +#. Default: "Add {type}" +#: messages +msgid "Add {type}" +msgstr "" + +#. Default: "Cancel" +#: messages +msgid "Cancel" +msgstr "" + +#. Default: "Check the configuration of your searchkit block!" +#: components/Searchkit/Error +msgid "Check the configuration of your searchkit block!" +msgstr "" + +#. Default: "Content" +#: messages +msgid "Content" +msgstr "" + +#. Default: "Date" +#: components/Views/FacetedSearch +msgid "Date" +msgstr "" + +#. Default: "Description" +#: messages +msgid "Description" +msgstr "" + +#. Default: "Deselect all" +#: components/Views/FacetedSearch +msgid "Deselect all" +msgstr "" + +#. Default: "Facet" +#: messages +msgid "Facet" +msgstr "" + +#. Default: "Facet widget" +#: messages +msgid "Facet widget" +msgstr "" + +#. Default: "Facets" +#: messages +msgid "Facets" +msgstr "" + +#. Default: "Field" +#: messages +msgid "Field" +msgstr "" + +#. Default: "Label" +#: messages +msgid "Label" +msgstr "" + +#. Default: "Meta data" +#: messages +msgid "Meta data" +msgstr "" + +#. Default: "Multiple choices?" +#: messages +msgid "Multiple choices?" +msgstr "" + +#. Default: "No results" +#: components/Views/FacetedSearch +msgid "No results" +msgstr "" + +#. Default: "Relevance" +#: components/Views/FacetedSearch +msgid "Relevance" +msgstr "" + +#. Default: "Search block" +#: messages +msgid "Search block" +msgstr "" + +#. Default: "Search can be restricted by sections / paths" +#: messages +msgid "Search can be restricted by sections / paths" +msgstr "" + +#. Default: "Search in sections" +#: messages +msgid "Search in sections" +msgstr "" + +#. Default: "Search result" +#: messages +msgid "Search result" +msgstr "" + +#. Default: "Search results" +#: messages +msgid "Search results" +msgstr "" + +#. Default: "section" +#: messages +msgid "Search section" +msgstr "" + +#. Default: "Search section label" +#: messages +msgid "Search section label" +msgstr "" + +#. Default: "Searchkit" +#: messages +msgid "Searchkit" +msgstr "" + +#. Default: "Select all" +#: components/Views/FacetedSearch +msgid "Select all" +msgstr "" + +#. Default: "Show filter" +#: messages +msgid "Show filters" +msgstr "" + +#. Default: "Sort by:" +#: components/Views/FacetedSearch +msgid "Sort By:" +msgstr "" + +#. Default: "Tags" +#: components/Views/FacetedSearch +#: messages +msgid "Tags" +msgstr "" + +#. Default: "Title" +#: messages +msgid "Title" +msgstr "" + +#. Default: "reset search" +#: components/Views/FacetedSearch +msgid "reset search" +msgstr "" + +#. Default: "search" +#: messages +msgid "search" +msgstr "" diff --git a/packages/volto-searchkit-block/locales/volto.pot b/packages/volto-searchkit-block/locales/volto.pot index ea538b12..152ecd2a 100644 --- a/packages/volto-searchkit-block/locales/volto.pot +++ b/packages/volto-searchkit-block/locales/volto.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: Plone\n" -"POT-Creation-Date: 2024-03-22T12:43:34.158Z\n" +"POT-Creation-Date: 2024-10-27T10:42:20.849Z\n" "Last-Translator: Plone i18n \n" "Language-Team: Plone i18n \n" "Content-Type: text/plain; charset=utf-8\n" @@ -12,3 +12,159 @@ msgstr "" "Language-Name: English\n" "Preferred-Encodings: utf-8\n" "Domain: volto\n" + +#. Default: "Add {type}" +#: messages +msgid "Add {type}" +msgstr "" + +#. Default: "Cancel" +#: messages +msgid "Cancel" +msgstr "" + +#. Default: "Check the configuration of your searchkit block!" +#: components/Searchkit/Error +msgid "Check the configuration of your searchkit block!" +msgstr "" + +#. Default: "Content" +#: messages +msgid "Content" +msgstr "" + +#. Default: "Date" +#: components/Views/FacetedSearch +msgid "Date" +msgstr "" + +#. Default: "Description" +#: messages +msgid "Description" +msgstr "" + +#. Default: "Deselect all" +#: components/Views/FacetedSearch +msgid "Deselect all" +msgstr "" + +#. Default: "Facet" +#: messages +msgid "Facet" +msgstr "" + +#. Default: "Facet widget" +#: messages +msgid "Facet widget" +msgstr "" + +#. Default: "Facets" +#: messages +msgid "Facets" +msgstr "" + +#. Default: "Field" +#: messages +msgid "Field" +msgstr "" + +#. Default: "Label" +#: messages +msgid "Label" +msgstr "" + +#. Default: "Meta data" +#: messages +msgid "Meta data" +msgstr "" + +#. Default: "Multiple choices?" +#: messages +msgid "Multiple choices?" +msgstr "" + +#. Default: "No results" +#: components/Views/FacetedSearch +msgid "No results" +msgstr "" + +#. Default: "Relevance" +#: components/Views/FacetedSearch +msgid "Relevance" +msgstr "" + +#. Default: "Search block" +#: messages +msgid "Search block" +msgstr "" + +#. Default: "Search can be restricted by sections / paths" +#: messages +msgid "Search can be restricted by sections / paths" +msgstr "" + +#. Default: "Search in sections" +#: messages +msgid "Search in sections" +msgstr "" + +#. Default: "Search result" +#: messages +msgid "Search result" +msgstr "" + +#. Default: "Search results" +#: messages +msgid "Search results" +msgstr "" + +#. Default: "section" +#: messages +msgid "Search section" +msgstr "" + +#. Default: "Search section label" +#: messages +msgid "Search section label" +msgstr "" + +#. Default: "Searchkit" +#: messages +msgid "Searchkit" +msgstr "" + +#. Default: "Select all" +#: components/Views/FacetedSearch +msgid "Select all" +msgstr "" + +#. Default: "Show filter" +#: messages +msgid "Show filters" +msgstr "" + +#. Default: "Sort by:" +#: components/Views/FacetedSearch +msgid "Sort By:" +msgstr "" + +#. Default: "Tags" +#: components/Views/FacetedSearch +#: messages +msgid "Tags" +msgstr "" + +#. Default: "Title" +#: messages +msgid "Title" +msgstr "" + +#. Default: "reset search" +#: components/Views/FacetedSearch +msgid "reset search" +msgstr "" + +#. Default: "search" +#: messages +msgid "search" +msgstr "" From 94f51d03c85f8200330bb68a00845cb031c8328b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 27 Oct 2024 11:44:40 +0100 Subject: [PATCH 12/98] import matomoUtils --- .../volto-searchkit-block/src/components/Searchkit/Results.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/volto-searchkit-block/src/components/Searchkit/Results.js b/packages/volto-searchkit-block/src/components/Searchkit/Results.js index 0516f354..961b3c23 100644 --- a/packages/volto-searchkit-block/src/components/Searchkit/Results.js +++ b/packages/volto-searchkit-block/src/components/Searchkit/Results.js @@ -11,7 +11,7 @@ import { import config from '@plone/volto/registry'; // TODO conditional Matomo tracking: catch case if app has not volto-matomo installed -import { trackSiteSearch } from '@eeacms/volto-matomo/utils'; +import * as matomoUtils from '@eeacms/volto-matomo/src/utils'; import { scrollToTarget } from '../helpers'; @@ -29,7 +29,7 @@ class Results extends Component { keyword: this.props.currentQueryState.queryString, count: this.props.currentResultsState.data.total, }; - trackSiteSearch(options); + matomoUtils.trackSiteSearch(options); } } From b6a4bc37bd5861432941335c699e5a7f7eea743e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 11:28:41 +0100 Subject: [PATCH 13/98] Test with released collective.elastic.plone --- backend/dockerfiles/backend/Dockerfile.acceptance | 5 ++--- .../dockerfiles/backend/Dockerfile.acceptance.multilingual | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance b/backend/dockerfiles/backend/Dockerfile.acceptance index 4f212e0a..f493fdf4 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance +++ b/backend/dockerfiles/backend/Dockerfile.acceptance @@ -15,9 +15,8 @@ RUN <=2.0.0 - # TODO Switch back to released collective.elastic.plone - # bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 - bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' + bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 + # bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' bin/pip install 'rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git' EOT diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual index 61f412cc..a67275ea 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual +++ b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual @@ -17,9 +17,8 @@ RUN <=2.0.0 - # TODO Switch back to released collective.elastic.plone - # bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 - bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' + bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 + # bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' bin/pip install 'rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git' EOT From af7b12afe2e36871911451882d33b45dd1c68900 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 11:29:16 +0100 Subject: [PATCH 14/98] Update docker compose profile names --- backend/dockerfiles/docker-compose.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/backend/dockerfiles/docker-compose.yml b/backend/dockerfiles/docker-compose.yml index c70ba511..3937a379 100644 --- a/backend/dockerfiles/docker-compose.yml +++ b/backend/dockerfiles/docker-compose.yml @@ -24,7 +24,7 @@ services: - 55001:55001 profiles: - dev - - prod + - monolingual backend-acceptance-multilingual: build: @@ -77,6 +77,7 @@ services: profiles: - dev - prod + - monolingual ingest-multilingual: image: ghcr.io/collective/collective.elastic.ingest:latest @@ -134,10 +135,6 @@ services: - 9200:9200 # REST API - 9600:9600 # Performance Analyzer tty: true - profiles: - - dev - - multilingual - - prod opensearch-dashboards: image: opensearchproject/opensearch-dashboards:latest @@ -147,9 +144,6 @@ services: - '5601' environment: OPENSEARCH_HOSTS: '["https://opensearch:9200"]' - profiles: - - dev - - multilingual # dejavu: # image: appbaseio/dejavu:latest From b8a03b90728c469d74ffe90a113d58a659e27714 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 11:30:14 +0100 Subject: [PATCH 15/98] ci-acceptance-backend-start with container with c.e.plone --- Makefile | 3 ++- backend/Makefile | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index 6129da01..4e382a4e 100644 --- a/Makefile +++ b/Makefile @@ -191,7 +191,8 @@ acceptance-backend-start: ## Start backend acceptance server .PHONY: ci-acceptance-backend-start ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI - docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + # docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + make acceptance-backend-start .PHONY: acceptance-test acceptance-test: ## Start Cypress in interactive mode diff --git a/backend/Makefile b/backend/Makefile index 722bf92f..1267f36f 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -154,10 +154,18 @@ build-image: ## Build Docker Images # acceptance-image-build: ## Build Docker Images # @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) -.PHONY: acceptance-start -acceptance-backend-start: ## Start acceptance containers (backend and OpenSearch) - ${ACCEPTANCE_MONOLINGUAL} --profile dev up -d --force-recreate +.PHONY: acceptance-backend-start-monolingual +acceptance-backend-start-monolingual: ## Start acceptance containers (backend and OpenSearch) + ${ACCEPTANCE_MONOLINGUAL} --profile monolingual up -d --force-recreate -.PHONY: acceptance-build -acceptance-image-build: ## Build acceptance containers (backend and OpenSearch) - ${ACCEPTANCE_MONOLINGUAL} --profile dev build --no-cache \ No newline at end of file +.PHONY: acceptance-backend-image-build-monolingual +acceptance-backend-image-build-monolingual: ## Build acceptance containers (backend and OpenSearch) + ${ACCEPTANCE_MONOLINGUAL} --profile monolingual build --no-cache + + +# Acceptance multilingual +# ######################################################################## + +.PHONY: acceptance-backend-start-multilingual +acceptance-backend-start-multilingual: ## Start acceptance containers (backend and OpenSearch) + ${ACCEPTANCE_MULTILINGUAL} --profile multilingual up -d --force-recreate From c055b730fdea51795c8b878ff4db8514effe2a14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 11:32:54 +0100 Subject: [PATCH 16/98] Trigger tests --- cypress/tests/example.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/tests/example.cy.js b/cypress/tests/example.cy.js index 28ee1187..91981d2a 100644 --- a/cypress/tests/example.cy.js +++ b/cypress/tests/example.cy.js @@ -14,7 +14,7 @@ context('Example Acceptance Tests', () => { cy.autologin(); }); - it('As editor I can add edit a Page', function () { + it('As editor I can edit a Page', function () { cy.visit('/document'); cy.navigate('/document/edit'); From db6190509bab0695d207f3df0cc898c640427a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 11:51:13 +0100 Subject: [PATCH 17/98] Fix Makefile --- Makefile | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 4e382a4e..ef4e9078 100644 --- a/Makefile +++ b/Makefile @@ -185,19 +185,19 @@ acceptance-frontend-dev-start: ## Start acceptance frontend in development mode acceptance-frontend-prod-start: ## Start acceptance frontend in production mode RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod -.PHONY: acceptance-backend-start -acceptance-backend-start: ## Start backend acceptance server - $(MAKE) -C "./backend/" acceptance-backend-start +.PHONY: acceptance-backend-start-monolingual +acceptance-backend-start-monolingual: ## Start backend acceptance server + $(MAKE) -C "./backend/" acceptance-backend-start-monolingual -.PHONY: ci-acceptance-backend-start -ci-acceptance-backend-start: ## Start backend acceptance server in headless mode for CI +.PHONY: ci-acceptance-backend-start-monolingual +ci-acceptance-backend-start-monolingual: ## Start backend acceptance server in headless mode for CI # docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) - make acceptance-backend-start + make acceptance-backend-start-monolingual -.PHONY: acceptance-test -acceptance-test: ## Start Cypress in interactive mode - pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' +.PHONY: acceptance-test-monolingual +acceptance-test-monolingual: ## Start Cypress in interactive mode + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}' -.PHONY: ci-acceptance-test -ci-acceptance-test: ## Run cypress tests in headless mode for CI - pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/*.{js,jsx,ts,tsx}' +.PHONY: ci-acceptance-test-monolingual +ci-acceptance-test-monolingual: ## Run cypress tests in headless mode for CI + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}' From 15403be7ffbaceb2d8cf08ce26015256e01dc3e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 11:51:22 +0100 Subject: [PATCH 18/98] Update acceptance.yml --- .github/workflows/acceptance.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 574f1ae6..68901c0c 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -14,8 +14,8 @@ env: CYPRESS_RETRIES: 2 jobs: - - acceptance: + # TODO multilingual + acceptance-monolingual: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 From 53e420de98e8bcab0c04ac83a1659e71ba0e9a2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 12:13:18 +0100 Subject: [PATCH 19/98] Update acceptance.yml --- .github/workflows/acceptance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 68901c0c..995520b1 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -60,7 +60,7 @@ jobs: name: Start Servers with: run: | - make ci-acceptance-backend-start & + make ci-acceptance-backend-start-monolngual & make acceptance-frontend-prod-start & # your step-level and job-level environment variables are available to your commands as-is # npm install will count towards the wait-for timeout From 03357d9bc67d0a8e07460b7f6b98c281fcd3adb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 12:17:13 +0100 Subject: [PATCH 20/98] Update acceptance.yml --- .github/workflows/acceptance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 995520b1..c21ece32 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -60,7 +60,7 @@ jobs: name: Start Servers with: run: | - make ci-acceptance-backend-start-monolngual & + make ci-acceptance-backend-start-monolingual & make acceptance-frontend-prod-start & # your step-level and job-level environment variables are available to your commands as-is # npm install will count towards the wait-for timeout From b162b58eb0972e537894391503bd98ce8bd5339a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 12:25:08 +0100 Subject: [PATCH 21/98] Fix path to ingest configuration --- backend/dockerfiles/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/dockerfiles/docker-compose.yml b/backend/dockerfiles/docker-compose.yml index 3937a379..5fcdb2e8 100644 --- a/backend/dockerfiles/docker-compose.yml +++ b/backend/dockerfiles/docker-compose.yml @@ -162,5 +162,5 @@ volumes: driver: local driver_opts: type: none - device: ../opensearch/ingest-configuration + device: ./opensearch/ingest-configuration o: bind From f63343a9ab9bcfd5d725c6e7a069f358cc7dd1a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 12:50:08 +0100 Subject: [PATCH 22/98] docker compose: configuration of volumes --- backend/dockerfiles/docker-compose.yml | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/backend/dockerfiles/docker-compose.yml b/backend/dockerfiles/docker-compose.yml index 5fcdb2e8..9517a6f7 100644 --- a/backend/dockerfiles/docker-compose.yml +++ b/backend/dockerfiles/docker-compose.yml @@ -18,8 +18,6 @@ services: CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex INSTALL_PRODUCTS: 'collective.elastic.plone' - volumes: - - backend-data:/data ports: - 55001:55001 profiles: @@ -45,8 +43,6 @@ services: CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex INSTALL_PRODUCTS: 'collective.elastic.plone' - volumes: - - backend-data:/data ports: - 55001:55001 profiles: @@ -73,7 +69,7 @@ services: PLONE_PASSWORD: ${PLONE_PASSWORD?unset} SENTRY_DSN: ${SENTRY_DSN} volumes: - - ingest-configuration:/configuration + - ./opensearch/ingest-configuration:/configuration profiles: - dev - prod @@ -101,7 +97,7 @@ services: PLONE_PASSWORD: ${PLONE_PASSWORD?unset} SENTRY_DSN: ${SENTRY_DSN} volumes: - - ingest-configuration:/configuration + - ./opensearch/ingest-configuration:/configuration profiles: - multilingual @@ -129,8 +125,6 @@ services: nofile: soft: 65536 hard: 65536 - volumes: - - opensearch-data:/usr/share/opensearch/data ports: - 9200:9200 # REST API - 9600:9600 # Performance Analyzer @@ -154,13 +148,3 @@ services: # - "1358" # links: # - opensearch - -volumes: - backend-data: - opensearch-data: - ingest-configuration: - driver: local - driver_opts: - type: none - device: ./opensearch/ingest-configuration - o: bind From 7b8239b1336361274c22d6f1d95ae6b6410217e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 12:54:05 +0100 Subject: [PATCH 23/98] Create monolingual.search.cy.js --- cypress/tests/monolingual.search.cy.js | 156 +++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 cypress/tests/monolingual.search.cy.js diff --git a/cypress/tests/monolingual.search.cy.js b/cypress/tests/monolingual.search.cy.js new file mode 100644 index 00000000..c48544a2 --- /dev/null +++ b/cypress/tests/monolingual.search.cy.js @@ -0,0 +1,156 @@ +describe('Searchkit block tests – search - monolingual', () => { + before(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + + cy.autologin(); + + cy.createContent({ + contentType: 'Document', + contentId: 'suche', + contentTitle: 'Suche', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'garten-blog', + contentTitle: 'Garten-Blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'februar', + contentTitle: 'Der Garten im Februar', + path: '/garten-blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'marz', + contentTitle: 'Der Garten im März', + path: '/garten-blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-mann', + contentTitle: 'Testseite Mann', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-manner', + contentTitle: 'Testseite Männer', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-lsb', + contentTitle: 'Testseite Lehrstellenbörsen', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-s', + contentTitle: 'Testseite Stelle', + }); + + // Add search block to /suche + cy.visit('/suche'); + cy.get('a.edit').click(); + + cy.addNewBlock('searchkit'); + + cy.get('#toolbar-save').click(); + cy.wait('@kitsearch'); + cy.wait('@content'); + }); + + beforeEach(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.autologin(); + + cy.visit('/suche'); + cy.wait('@kitsearch'); + cy.wait('@content'); + }); + + after(() => { + cy.removeContent({ path: 'garten-blog' }); + cy.removeContent({ path: 'suche' }); + cy.removeContent({ path: 'testseite-mann' }); + cy.removeContent({ path: 'testseite-manner' }); + cy.removeContent({ path: 'testseite-lsb' }); + cy.removeContent({ path: 'testseite-s' }); + }); + + it('I see all if no filter selected', function () { + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); + + it('I can search fuzzy', function () { + cy.get('.searchbar-wrapper input').type('februax{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + cy.get('.block.searchkitsearch').should('not.contain', 'März'); + }); + + it('I can search with inflection', function () { + cy.get('.searchbar-wrapper input').type('Männer{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Mann'); + + cy.get('.searchbar-wrapper input').clear().type('Mann{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Männer'); + }); + + it('I can search with decompounding', function () { + cy.get('.searchbar-wrapper input').type('Garten{enter}'); + cy.get('.block.searchkitsearch').contains('Garten-Blog'); + + cy.get('.searchbar-wrapper input').clear().type('Garten-Blog{enter}'); + cy.get('.block.searchkitsearch').contains('Februar'); + }); + + it('I can search with wildcard', function () { + cy.get('.searchbar-wrapper input').type('Feb*{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); + + it('I can search for an exact match', function () { + cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Mann'); + + cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); + cy.get('.block.searchkitsearch').should('not.contain', 'Männer'); + }); + + it('I can search for a compounded word', function () { + cy.get('.searchbar-wrapper input').type('stelle{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + + cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + + cy.get('.searchbar-wrapper input').clear().type('Börse{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + + cy.get('.searchbar-wrapper input').clear().type('Lehrstellenbörse{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Stelle'); + }); + + // Blocks text + it('I can search in blocks', function () { + cy.visit('/garten-blog/februar'); + cy.get('a.edit').click(); + + cy.getSlate().click(); + cy.log('when I add a text block'); + cy.getSlateEditorAndType('Montags gehen wir in den Zoo.').contains( + 'Montags gehen wir in den Zoo.', + ); + // cy.toolbarSave(); + cy.get('#toolbar-save').click(); + cy.wait('@content'); + + cy.log('I added a text block'); + + // Searching + // WARNING Do not use cy.navigate TODO understand difference between cy.visit and cy.navigate + cy.visit('/suche'); + cy.get('.searchbar-wrapper input').type('Montag{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); +}); From 7973ce68f9f82b3fb25831b9253c3f2505337de3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 13:30:21 +0100 Subject: [PATCH 24/98] Update acceptance.yml --- .github/workflows/acceptance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index c21ece32..11a929c0 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -85,7 +85,7 @@ jobs: log-output-if: failure - - run: make ci-acceptance-test + - run: make ci-acceptance-test-monolingual # Upload Cypress screenshots - uses: actions/upload-artifact@v4 From b60cdec8dac7a75732d889a6ec75ee5621224498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 14:28:07 +0100 Subject: [PATCH 25/98] acceptance monolingual: Fix Volto settings --- .github/workflows/acceptance.yml | 2 +- Makefile | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 11a929c0..356ff747 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -61,7 +61,7 @@ jobs: with: run: | make ci-acceptance-backend-start-monolingual & - make acceptance-frontend-prod-start & + make acceptance-frontend-prod-start-monolingual & # your step-level and job-level environment variables are available to your commands as-is # npm install will count towards the wait-for timeout # whenever possible, move unrelated scripts to a different step diff --git a/Makefile b/Makefile index ef4e9078..e58858cd 100644 --- a/Makefile +++ b/Makefile @@ -178,12 +178,12 @@ storybook-build: ## Build Storybook # Acceptance ########################################### .PHONY: acceptance-frontend-dev-start -acceptance-frontend-dev-start: ## Start acceptance frontend in development mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start +acceptance-frontend-dev-start-monolingual: ## Start acceptance frontend in development mode + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=monolingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start .PHONY: acceptance-frontend-prod-start -acceptance-frontend-prod-start: ## Start acceptance frontend in production mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod +acceptance-frontend-prod-start-monolingual: ## Start acceptance frontend in production mode + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=monolingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start backend acceptance server From 706ba9d68e77cc68520f772d8acbd8af3b9191bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 14:47:30 +0100 Subject: [PATCH 26/98] Add more monolingual tests --- cypress/tests/monolingual.create_search.cy.js | 72 ++++++++++++++++++ cypress/tests/monolingual.results.cy.js | 76 +++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 cypress/tests/monolingual.create_search.cy.js create mode 100644 cypress/tests/monolingual.results.cy.js diff --git a/cypress/tests/monolingual.create_search.cy.js b/cypress/tests/monolingual.create_search.cy.js new file mode 100644 index 00000000..703d7496 --- /dev/null +++ b/cypress/tests/monolingual.create_search.cy.js @@ -0,0 +1,72 @@ +describe('Searchkit block tests- create search ', () => { + before(() => { + cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.intercept('GET', '/**/Document').as('schema'); + + cy.autologin(); + + cy.createContent({ + contentType: 'Document', + contentId: 'searching', + contentTitle: 'Search', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'garden-blog', + contentTitle: 'Garden blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'garden-february', + contentTitle: 'The garden in february', + path: '/garden-blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'garden-march', + contentTitle: 'The garden in march', + path: '/garden-blog', + }); + + cy.visit('/'); + cy.wait('@content'); + }); + + beforeEach(() => { + cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.intercept('GET', '/**/Document').as('schema'); + + cy.autologin(); + + cy.visit('/'); + cy.wait('@content'); + }); + + after(() => { + cy.removeContent({ path: 'garden-blog/garden-february' }); + cy.removeContent({ path: 'garden-blog/garden-march' }); + cy.removeContent({ path: 'garden-blog' }); + cy.removeContent({ path: 'searching' }); + }); + + it('As manager I can add a searchkit-block and find a document', function () { + cy.visit('/searching'); + cy.get('a.edit').click(); + + cy.getSlate().click(); + cy.get('.button .block-add-button').click({ force: true }); + cy.get('div[aria-label="Ausklappen Common blocks"]').click(); + cy.get('.blocks-chooser .common .button.searchkitblock').click({ + force: true, + }); + + cy.get('#toolbar-save').click(); + cy.visit('/searching'); + + cy.get('.block.searchkitsearch').should('not.contain', 'No results'); + cy.get('.block.searchkitsearch').contains('The garden in february'); + + cy.get('.searchbar-wrapper input').type('Februar{enter}'); + cy.get('.block.searchkitsearch').contains('The garden in february'); + }); +}); diff --git a/cypress/tests/monolingual.results.cy.js b/cypress/tests/monolingual.results.cy.js new file mode 100644 index 00000000..07c848e5 --- /dev/null +++ b/cypress/tests/monolingual.results.cy.js @@ -0,0 +1,76 @@ +describe('Searchkit block tests – search - monolingual', () => { + before(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + + cy.autologin(); + + cy.createContent({ + contentType: 'Document', + contentId: 'suche', + contentTitle: 'Suche', + }); + + cy.createContent({ + contentType: 'News Item', + contentId: 'brunch', + contentTitle: 'Brunch - Viel gelacht und lecker gegessen', + }); + cy.createContent({ + contentType: 'Event', + contentId: 'ausflug', + contentTitle: 'Ausflug Matterhorn', + }); + + // Publish News Item + cy.setWorkflow({ + path: 'brunch', + review_state: 'publish', + effective: '2018-01-01T08:00:00', + }); + + // Add search block to /suche + cy.visit('/suche'); + cy.get('a.edit').click(); + + cy.addNewBlock('searchkit'); + + cy.get('#toolbar-save').click(); + cy.wait('@kitsearch'); + cy.wait('@content'); + // TODO Replace this desperate wait per seconds + cy.wait(3000); + }); + + beforeEach(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.autologin(); + + cy.visit('/suche'); + cy.wait('@kitsearch'); + cy.wait('@content'); + }); + + after(() => { + cy.removeContent({ path: 'brunch' }); + cy.removeContent({ path: 'ausflug' }); + cy.removeContent({ path: 'suche' }); + }); + + it('I see the publishing date', function () { + cy.get('.searchbar-wrapper input').type('brunch{enter}'); + cy.get('.block.searchkitsearch').contains('2018'); + }); + + it('I see the start date', function () { + cy.get('.searchbar-wrapper input').type('matterhorn{enter}'); + cy.get('.block.searchkitsearch').contains('.202'); + }); + + it('I can open a result', function () { + cy.get('.searchbar-wrapper input').type('matterhorn{enter}'); + cy.get('.searchkitresultitem a').first().click(); + cy.get('.block').contains('Matterhorn'); + }); +}); From 71333e96fab7f666e607819a51635426bd63533e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 15:13:00 +0100 Subject: [PATCH 27/98] Update monolingual.create_search.cy.js --- cypress/tests/monolingual.create_search.cy.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cypress/tests/monolingual.create_search.cy.js b/cypress/tests/monolingual.create_search.cy.js index 703d7496..1276f11d 100644 --- a/cypress/tests/monolingual.create_search.cy.js +++ b/cypress/tests/monolingual.create_search.cy.js @@ -54,11 +54,9 @@ describe('Searchkit block tests- create search ', () => { cy.get('a.edit').click(); cy.getSlate().click(); - cy.get('.button .block-add-button').click({ force: true }); - cy.get('div[aria-label="Ausklappen Common blocks"]').click(); - cy.get('.blocks-chooser .common .button.searchkitblock').click({ - force: true, - }); + cy.get('button.block-add-button').click(); + cy.get('.blocks-chooser .title').contains('Allgemein').click(); + cy.get('.blocks-chooser .button.searchkitblock').click({ force: true }); cy.get('#toolbar-save').click(); cy.visit('/searching'); From 1016d16d8ce2fc41954056dacd4b90b3d7209af2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 15:33:23 +0100 Subject: [PATCH 28/98] acceptance: Explicitly env variable SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS --- .github/workflows/acceptance.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index 356ff747..dfe20812 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -17,6 +17,8 @@ jobs: # TODO multilingual acceptance-monolingual: runs-on: ubuntu-latest + env: + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS: monolingual steps: - uses: actions/checkout@v4 From 7f2268ce13c3b53dd0227da6182c0f40d76044fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 15:33:34 +0100 Subject: [PATCH 29/98] add comment --- cypress/tests/monolingual.results.cy.js | 1 + 1 file changed, 1 insertion(+) diff --git a/cypress/tests/monolingual.results.cy.js b/cypress/tests/monolingual.results.cy.js index 07c848e5..2ab9048d 100644 --- a/cypress/tests/monolingual.results.cy.js +++ b/cypress/tests/monolingual.results.cy.js @@ -65,6 +65,7 @@ describe('Searchkit block tests – search - monolingual', () => { it('I see the start date', function () { cy.get('.searchbar-wrapper input').type('matterhorn{enter}'); + // 01.01.2025 cy.get('.block.searchkitsearch').contains('.202'); }); From c9ad6c87bf30ec4a8eb00c7660593c0503be4207 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 15:54:58 +0100 Subject: [PATCH 30/98] Update monolingual.search.cy.js --- cypress/tests/monolingual.search.cy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/tests/monolingual.search.cy.js b/cypress/tests/monolingual.search.cy.js index c48544a2..f373fed9 100644 --- a/cypress/tests/monolingual.search.cy.js +++ b/cypress/tests/monolingual.search.cy.js @@ -71,11 +71,11 @@ describe('Searchkit block tests – search - monolingual', () => { after(() => { cy.removeContent({ path: 'garten-blog' }); - cy.removeContent({ path: 'suche' }); cy.removeContent({ path: 'testseite-mann' }); cy.removeContent({ path: 'testseite-manner' }); cy.removeContent({ path: 'testseite-lsb' }); cy.removeContent({ path: 'testseite-s' }); + cy.removeContent({ path: 'suche' }); }); it('I see all if no filter selected', function () { From 4f6f459c48c5d95a6e804f95e662377da4b7e501 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 15:55:10 +0100 Subject: [PATCH 31/98] acceptance: multilingual --- .github/workflows/acceptance.yml | 90 +++++++++- Makefile | 32 +++- cypress/tests/multilingual.language.cy.js | 71 ++++++++ .../tests/multilingual.search.anonymous.cy.js | 97 ++++++++++ cypress/tests/multilingual.search.cy.js | 165 ++++++++++++++++++ 5 files changed, 453 insertions(+), 2 deletions(-) create mode 100644 cypress/tests/multilingual.language.cy.js create mode 100644 cypress/tests/multilingual.search.anonymous.cy.js create mode 100644 cypress/tests/multilingual.search.cy.js diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index dfe20812..5f9ed8be 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -14,7 +14,6 @@ env: CYPRESS_RETRIES: 2 jobs: - # TODO multilingual acceptance-monolingual: runs-on: ubuntu-latest env: @@ -102,3 +101,92 @@ jobs: with: name: cypress-videos-acceptance path: acceptance/cypress/videos + + acceptance-multilingual: + runs-on: ubuntu-latest + env: + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS: multilingual + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Cache Cypress Binary + id: cache-cypress-binary + uses: actions/cache@v4 + with: + path: ~/.cache/Cypress + key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }} + + - name: Install dependencies + run: make install + + - name: Install Cypress if not in cache + if: steps.cache-cypress-binary.outputs.cache-hit != 'true' + working-directory: core/packages/volto + run: make cypress-install + + - uses: JarvusInnovations/background-action@v1 + name: Start Servers + with: + run: | + make ci-acceptance-backend-start-multilingual & + make acceptance-frontend-prod-start-multilingual & + # your step-level and job-level environment variables are available to your commands as-is + # npm install will count towards the wait-for timeout + # whenever possible, move unrelated scripts to a different step + # to background multiple processes: add & to the end of the command + + wait-on: | + http-get://localhost:55001/plone + http://localhost:3000 + # IMPORTANT: to use environment variables in wait-on, you must use this form: ${{ env.VAR }} + # See wait-on section below for all resource types and prefixes + + tail: true # true = stderr,stdout + # This will allow you to monitor the progress live + + log-output-resume: stderr + # Eliminates previosuly output stderr log entries from post-run output + + wait-for: 10m + + log-output: stderr,stdout # same as true + + log-output-if: failure + + - run: make ci-acceptance-test-multilingual + + # Upload Cypress screenshots + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-screenshots-acceptance + path: acceptance/cypress/screenshots + + # Upload Cypress videos + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-videos-acceptance + path: acceptance/cypress/videos + \ No newline at end of file diff --git a/Makefile b/Makefile index e58858cd..073261f2 100644 --- a/Makefile +++ b/Makefile @@ -175,7 +175,7 @@ storybook-build: ## Build Storybook pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build ########################################### -# Acceptance +# Acceptance monolingual ########################################### .PHONY: acceptance-frontend-dev-start acceptance-frontend-dev-start-monolingual: ## Start acceptance frontend in development mode @@ -201,3 +201,33 @@ acceptance-test-monolingual: ## Start Cypress in interactive mode .PHONY: ci-acceptance-test-monolingual ci-acceptance-test-monolingual: ## Run cypress tests in headless mode for CI pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}' + + +########################################### +# Acceptance multilingual +########################################### +.PHONY: acceptance-frontend-dev-start +acceptance-frontend-dev-start-multilingual: ## Start acceptance frontend in development mode + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=multilingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + +.PHONY: acceptance-frontend-prod-start +acceptance-frontend-prod-start-multilingual: ## Start acceptance frontend in production mode + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=multilingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + +.PHONY: acceptance-backend-start-multilingual +acceptance-backend-start-multilingual: ## Start backend acceptance server + $(MAKE) -C "./backend/" acceptance-backend-start-multilingual + +.PHONY: ci-acceptance-backend-start-multilingual +ci-acceptance-backend-start-multilingual: ## Start backend acceptance server in headless mode for CI + # docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) + make acceptance-backend-start-multilingual + +.PHONY: acceptance-test-multilingual +acceptance-test-multilingual: ## Start Cypress in interactive mode + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/multilingual.*.{js,jsx,ts,tsx}' + +.PHONY: ci-acceptance-test-multilingual +ci-acceptance-test-multilingual: ## Run cypress tests in headless mode for CI + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/multilingual.*.{js,jsx,ts,tsx}' + diff --git a/cypress/tests/multilingual.language.cy.js b/cypress/tests/multilingual.language.cy.js new file mode 100644 index 00000000..a604af69 --- /dev/null +++ b/cypress/tests/multilingual.language.cy.js @@ -0,0 +1,71 @@ +describe('Searchkit block tests – search - multilingual - language', () => { + before(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + + cy.autologin(); + + cy.createContent({ + contentType: 'Document', + contentId: 'searching', + contentTitle: 'Searching', + path: 'en', + }); + + cy.createContent({ + contentType: 'Document', + contentId: 'garden-in-february', + contentTitle: 'The garden in february', + path: 'en', + }); + + cy.createContent({ + contentType: 'Document', + contentId: 'der-garten-im-februar', + contentTitle: 'Der Garten im Februar', + path: 'de', + }); + + // Add search block + cy.visit('/en/searching/edit'); + + cy.getSlate().clear().type('{enter}'); + cy.get('.button .block-add-button').click({ force: true }); + cy.get('.blocks-chooser .title').contains('Common').click(); + cy.get('.blocks-chooser .common') + .contains('Searchkit') + .click({ force: true }); + + cy.get('#toolbar-save').click(); + cy.wait('@kitsearch'); + cy.wait('@content'); + }); + + beforeEach(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.autologin(); + + cy.visit('/en/searching/edit'); + cy.wait('@kitsearch'); + }); + + after(() => { + cy.removeContent({ path: 'en/searching' }); + cy.removeContent({ path: 'en/garden-in-february' }); + cy.removeContent({ path: 'de/der-garten-im-februar' }); + }); + + it('I can search', function () { + cy.get('.searchbar-wrapper input').type('february{enter}'); + cy.get('.block.searchkitsearch').contains('The garden in february'); + }); + + it('I can search within language', function () { + cy.get('.searchbar-wrapper input').type('februax{enter}'); + cy.get('.block.searchkitsearch').contains('The garden in february'); + cy.get('.block.searchkitsearch').should( + 'not.contain', + 'Der Garten im Februar', + ); + }); +}); diff --git a/cypress/tests/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual.search.anonymous.cy.js new file mode 100644 index 00000000..7d06c31e --- /dev/null +++ b/cypress/tests/multilingual.search.anonymous.cy.js @@ -0,0 +1,97 @@ +describe('Searchkit block tests – search - multilingual - anonymous', () => { + before(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + + cy.autologin(); + + cy.createContent({ + contentType: 'Document', + contentId: 'searching', + contentTitle: 'Searching', + path: 'en', + }); + + cy.setWorkflow({ + path: 'en/searching', + review_state: 'publish', + effective: '2018-01-01T08:00:00', + }); + + cy.createContent({ + contentType: 'Document', + contentId: 'garden-in-february', + contentTitle: 'The garden in february', + path: 'en', + }); + + cy.setWorkflow({ + path: 'en/garden-in-february', + review_state: 'publish', + effective: '2018-01-01T08:00:00', + }); + + cy.createContent({ + contentType: 'Document', + contentId: 'garden-in-march', + contentTitle: 'The garden in march', + path: 'en', + }); + + // Add search block + cy.visit('/en/searching/edit'); + + cy.getSlate().clear().type('{enter}'); + cy.get('.button .block-add-button').click({ force: true }); + cy.get('.blocks-chooser .title').contains('Common').click(); + cy.get('.blocks-chooser .common') + .contains('Searchkit') + .click({ force: true }); + + cy.get('#toolbar-save').click(); + cy.wait('@kitsearch'); + cy.wait('@content'); + }); + + beforeEach(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + + cy.autologin(); + + cy.visit('/en/searching'); + cy.wait('@kitsearch'); + }); + + after(() => { + cy.removeContent({ path: 'en/searching' }); + cy.removeContent({ path: 'en/garden-in-february' }); + cy.removeContent({ path: 'en/garden-in-march' }); + }); + + it('I can search', function () { + cy.get('.searchbar-wrapper input').type('february{enter}'); + cy.get('.block.searchkitsearch').contains('The garden in february'); + cy.get('.searchbar-wrapper input').clear().type('march{enter}'); + cy.get('.block.searchkitsearch').contains('The garden in march'); + }); + + it('As anonymous I see only published content', function () { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('/**/@logout').as('logout'); + + cy.visit('/logout'); + cy.wait('@logout'); + + cy.visit('/en/searching'); + cy.wait('@kitsearch'); + + cy.get('.searchbar-wrapper input').type('february{enter}'); + cy.get('.block.searchkitsearch').contains('The garden in february'); + + cy.get('.searchbar-wrapper input').clear().type('march{enter}'); + cy.get('.block.searchkitsearch').should( + 'not.contain', + 'The garden in march', + ); + }); +}); diff --git a/cypress/tests/multilingual.search.cy.js b/cypress/tests/multilingual.search.cy.js new file mode 100644 index 00000000..32bb80dc --- /dev/null +++ b/cypress/tests/multilingual.search.cy.js @@ -0,0 +1,165 @@ +describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { + before(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); + + cy.autologin(); + + cy.createContent({ + contentType: 'Document', + contentId: 'suche', + contentTitle: 'Suche', + path: '/de', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'garten-blog', + contentTitle: 'Garten-Blog', + path: '/de', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'februar', + contentTitle: 'Der Garten im Februar', + path: '/de/garten-blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'marz', + contentTitle: 'Der Garten im März', + path: '/de/garten-blog', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-mann', + contentTitle: 'Testseite Mann', + path: '/de', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-manner', + contentTitle: 'Testseite Männer', + path: '/de', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-lsb', + contentTitle: 'Testseite Lehrstellenbörsen', + path: '/de', + }); + cy.createContent({ + contentType: 'Document', + contentId: 'testseite-s', + contentTitle: 'Testseite Stelle', + path: '/de', + }); + + // Add search block to /suche + cy.visit('/de/suche'); + cy.get('a.edit').click(); + + cy.getSlate().click(); + cy.get('.button .block-add-button').click({ force: true }); + cy.get('div[aria-label="Ausklappen Common blocks"]').click(); + cy.get('.blocks-chooser .common .button.searchkitblock').click({ + force: true, + }); + + cy.get('#toolbar-save').click(); + cy.wait('@kitsearch'); + cy.wait('@content'); + }); + + beforeEach(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + + cy.autologin(); + + cy.visit('/de/suche'); + cy.wait('@kitsearch'); + }); + + after(() => { + // cy.removeContent({ path: 'de/garten-blog/februar' }); + // cy.removeContent({ path: 'de/garten-blog/marz' }); + cy.removeContent({ path: 'de/garten-blog' }); + cy.removeContent({ path: 'de/testseite-mann' }); + cy.removeContent({ path: 'de/testseite-manner' }); + cy.removeContent({ path: 'de/testseite-lsb' }); + cy.removeContent({ path: 'de/testseite-s' }); + cy.removeContent({ path: 'de/suche' }); + }); + + it('I see all if no filter selected', function () { + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); + + it('I can search fuzzy', function () { + cy.get('.searchbar-wrapper input').type('februax{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + cy.get('.block.searchkitsearch').should('not.contain', 'März'); + }); + + it('I can search with inflection', function () { + cy.get('.searchbar-wrapper input').clear().type('Männer{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Mann'); + + cy.get('.searchbar-wrapper input').clear().type('Mann{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Männer'); + }); + + it('I can search with decompounding', function () { + cy.get('.searchbar-wrapper input').type('Garten{enter}'); + cy.get('.block.searchkitsearch').contains('Garten-Blog'); + + cy.get('.searchbar-wrapper input').clear().type('Garten-Blog{enter}'); + cy.get('.block.searchkitsearch').contains('Februar'); + }); + + it('I can search with wildcard', function () { + cy.get('.searchbar-wrapper input').type('Feb*{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); + + it('I can search for an exact match', function () { + cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Mann'); + cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); + cy.get('.block.searchkitsearch').should('not.contain', 'Männer'); + }); + + it('I can search for a compounded word', function () { + cy.get('.searchbar-wrapper input').type('stelle{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + cy.get('.searchbar-wrapper input').clear().type('Börse{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + cy.get('.searchbar-wrapper input').clear().type('Lehrstellenbörse{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Stelle'); + }); + + // Blocks text + it('I can search in blocks', function () { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.visit('/de/garten-blog/februar'); + cy.get('a.edit').click(); + + cy.getSlate().click(); + cy.log('when I add a text block'); + cy.getSlateEditorAndType('Montags gehen wir in den Zoo.').contains( + 'Montags gehen wir in den Zoo.', + ); + // cy.toolbarSave(); + cy.get('#toolbar-save').click(); + cy.wait('@kitsearch'); + + cy.log('I added a text block'); + + // Searching + cy.visit('de/suche'); + cy.wait('@kitsearch'); + cy.get('.searchbar-wrapper input').type('Montag{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); +}); From b5775206220f577aa5cf30800d6ea968e7737eee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 16:24:24 +0100 Subject: [PATCH 32/98] Update multilingual.language.cy.js --- cypress/tests/multilingual.language.cy.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/cypress/tests/multilingual.language.cy.js b/cypress/tests/multilingual.language.cy.js index a604af69..7beee33c 100644 --- a/cypress/tests/multilingual.language.cy.js +++ b/cypress/tests/multilingual.language.cy.js @@ -2,6 +2,7 @@ describe('Searchkit block tests – search - multilingual - language', () => { before(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.intercept('GET', '/**/Document').as('schema'); cy.autologin(); @@ -27,14 +28,11 @@ describe('Searchkit block tests – search - multilingual - language', () => { }); // Add search block - cy.visit('/en/searching/edit'); + cy.visit('/en/searching'); + cy.navigate('/en/searching/edit'); + cy.wait('@schema'); - cy.getSlate().clear().type('{enter}'); - cy.get('.button .block-add-button').click({ force: true }); - cy.get('.blocks-chooser .title').contains('Common').click(); - cy.get('.blocks-chooser .common') - .contains('Searchkit') - .click({ force: true }); + cy.addNewBlock('searchkit'); cy.get('#toolbar-save').click(); cy.wait('@kitsearch'); From e0b15b7e3df4680facfcaa84c60fdcf8acdcefaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 16:58:37 +0100 Subject: [PATCH 33/98] Update multilingual.search.anonymous.cy.js --- cypress/tests/multilingual.search.anonymous.cy.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cypress/tests/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual.search.anonymous.cy.js index 7d06c31e..596aa1e7 100644 --- a/cypress/tests/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual.search.anonymous.cy.js @@ -2,6 +2,7 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { before(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.intercept('GET', '/**/Document').as('schema'); cy.autologin(); @@ -37,9 +38,12 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { contentTitle: 'The garden in march', path: 'en', }); + cy.wait(5000); // Add search block - cy.visit('/en/searching/edit'); + cy.visit('/en/searching'); + cy.navigate('/en/searching/edit'); + cy.wait('@schema'); cy.getSlate().clear().type('{enter}'); cy.get('.button .block-add-button').click({ force: true }); From a2aad69778262b9239a8ef756b7c07c71684158d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 18:24:54 +0100 Subject: [PATCH 34/98] Update multilingual.language.cy.js: catch hydration error --- cypress/tests/multilingual.language.cy.js | 24 +++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/cypress/tests/multilingual.language.cy.js b/cypress/tests/multilingual.language.cy.js index 7beee33c..03da41b0 100644 --- a/cypress/tests/multilingual.language.cy.js +++ b/cypress/tests/multilingual.language.cy.js @@ -1,5 +1,19 @@ describe('Searchkit block tests – search - multilingual - language', () => { before(() => { + // 1. Disable Cypress uncaught exception failures from React hydration errors + Cypress.on('uncaught:exception', (err) => { + // Cypress and React Hydrating the document don't get along + // for some unknown reason. Hopefully, we figure out why eventually + // so we can remove this. + if ( + /hydrat/i.test(err.message) || + /Minified React error #418/.test(err.message) || + /Minified React error #423/.test(err.message) + ) { + return false; + } + }); + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -28,26 +42,28 @@ describe('Searchkit block tests – search - multilingual - language', () => { }); // Add search block - cy.visit('/en/searching'); - cy.navigate('/en/searching/edit'); + cy.visit('/en/searching/edit'); cy.wait('@schema'); cy.addNewBlock('searchkit'); cy.get('#toolbar-save').click(); - cy.wait('@kitsearch'); cy.wait('@content'); + cy.wait('@kitsearch'); }); beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.autologin(); - cy.visit('/en/searching/edit'); + cy.visit('/en/searching'); cy.wait('@kitsearch'); }); after(() => { + // 2. Re-enable Cypress uncaught exception failures from React hydration errors + Cypress.on('uncaught:exception', () => {}); + cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'de/der-garten-im-februar' }); From 590e31545c8b26e6f5fc26bff9c940b6b1024504 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 18:30:09 +0100 Subject: [PATCH 35/98] Update multilingual.language.cy.js: Do not Re-enable Cypress uncaught exception failures from React hydration errors --- cypress/tests/multilingual.language.cy.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cypress/tests/multilingual.language.cy.js b/cypress/tests/multilingual.language.cy.js index 03da41b0..fa2a65ad 100644 --- a/cypress/tests/multilingual.language.cy.js +++ b/cypress/tests/multilingual.language.cy.js @@ -61,8 +61,8 @@ describe('Searchkit block tests – search - multilingual - language', () => { }); after(() => { - // 2. Re-enable Cypress uncaught exception failures from React hydration errors - Cypress.on('uncaught:exception', () => {}); + // // 2. Re-enable Cypress uncaught exception failures from React hydration errors + // Cypress.on('uncaught:exception', () => {}); cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); From d24e9af582c643e6dedebe4abaeae7d6c098637a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 18:30:31 +0100 Subject: [PATCH 36/98] Disable Cypress uncaught exception failures from React hydration errors --- cypress/tests/multilingual.search.anonymous.cy.js | 15 +++++++++++++++ cypress/tests/multilingual.search.cy.js | 13 +++++++++++++ 2 files changed, 28 insertions(+) diff --git a/cypress/tests/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual.search.anonymous.cy.js index 596aa1e7..7678edb8 100644 --- a/cypress/tests/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual.search.anonymous.cy.js @@ -1,5 +1,18 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { before(() => { + // 1. Disable Cypress uncaught exception failures from React hydration errors + Cypress.on('uncaught:exception', (err) => { + // Cypress and React Hydrating the document don't get along + // for some unknown reason. Hopefully, we figure out why eventually + // so we can remove this. + if ( + /hydrat/i.test(err.message) || + /Minified React error #418/.test(err.message) || + /Minified React error #423/.test(err.message) + ) { + return false; + } + }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -38,9 +51,11 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { contentTitle: 'The garden in march', path: 'en', }); + cy.wait(5000); // Add search block + cy.visit('/'); cy.visit('/en/searching'); cy.navigate('/en/searching/edit'); cy.wait('@schema'); diff --git a/cypress/tests/multilingual.search.cy.js b/cypress/tests/multilingual.search.cy.js index 32bb80dc..66dfa102 100644 --- a/cypress/tests/multilingual.search.cy.js +++ b/cypress/tests/multilingual.search.cy.js @@ -1,5 +1,18 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { before(() => { + // 1. Disable Cypress uncaught exception failures from React hydration errors + Cypress.on('uncaught:exception', (err) => { + // Cypress and React Hydrating the document don't get along + // for some unknown reason. Hopefully, we figure out why eventually + // so we can remove this. + if ( + /hydrat/i.test(err.message) || + /Minified React error #418/.test(err.message) || + /Minified React error #423/.test(err.message) + ) { + return false; + } + }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); From 1863a6f09abed08bd27e91d4568b0a94dc28abe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 18:31:11 +0100 Subject: [PATCH 37/98] Refactor settings: SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS --- packages/volto-searchkit-block/src/index.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/volto-searchkit-block/src/index.js b/packages/volto-searchkit-block/src/index.js index 5acfd4d0..ab41d025 100644 --- a/packages/volto-searchkit-block/src/index.js +++ b/packages/volto-searchkit-block/src/index.js @@ -126,15 +126,13 @@ const applyConfig = (config) => { }, ]; - if (process.env.SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS === 'monolingual') { - config.settings.supportedLanguages = ['de']; - config.settings.defaultLanguage = 'de'; - } else if ( - process.env.SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS === 'multilingual' - ) { + if (process.env.SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS === 'multilingual') { config.settings.isMultilingual = true; config.settings.supportedLanguages = ['en', 'de']; config.settings.defaultLanguage = 'en'; + } else { + config.settings.supportedLanguages = ['de']; + config.settings.defaultLanguage = 'de'; } // DEBUG From 4dca1fca14f15cf985f34ede07cedb83f4b2e581 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 21:44:25 +0100 Subject: [PATCH 38/98] remove catcg hydr error --- cypress/tests/multilingual.language.cy.js | 35 ++++--------------- .../tests/multilingual.search.anonymous.cy.js | 15 +------- cypress/tests/multilingual.search.cy.js | 13 ------- 3 files changed, 8 insertions(+), 55 deletions(-) diff --git a/cypress/tests/multilingual.language.cy.js b/cypress/tests/multilingual.language.cy.js index fa2a65ad..24014c0d 100644 --- a/cypress/tests/multilingual.language.cy.js +++ b/cypress/tests/multilingual.language.cy.js @@ -1,19 +1,5 @@ describe('Searchkit block tests – search - multilingual - language', () => { before(() => { - // 1. Disable Cypress uncaught exception failures from React hydration errors - Cypress.on('uncaught:exception', (err) => { - // Cypress and React Hydrating the document don't get along - // for some unknown reason. Hopefully, we figure out why eventually - // so we can remove this. - if ( - /hydrat/i.test(err.message) || - /Minified React error #418/.test(err.message) || - /Minified React error #423/.test(err.message) - ) { - return false; - } - }); - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -61,25 +47,18 @@ describe('Searchkit block tests – search - multilingual - language', () => { }); after(() => { - // // 2. Re-enable Cypress uncaught exception failures from React hydration errors - // Cypress.on('uncaught:exception', () => {}); - cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'de/der-garten-im-februar' }); }); - it('I can search', function () { - cy.get('.searchbar-wrapper input').type('february{enter}'); - cy.get('.block.searchkitsearch').contains('The garden in february'); - }); - it('I can search within language', function () { - cy.get('.searchbar-wrapper input').type('februax{enter}'); - cy.get('.block.searchkitsearch').contains('The garden in february'); - cy.get('.block.searchkitsearch').should( - 'not.contain', - 'Der Garten im Februar', - ); + cy.get('.searchbar-wrapper input') + .type('februax{enter}') + .wait('@kitsearch') + .get('.block.searchkitsearch') + .should('not.contain', 'Der Garten im Februar') + .get('.block.searchkitsearch') + .contains('The garden in february'); }); }); diff --git a/cypress/tests/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual.search.anonymous.cy.js index 7678edb8..c68af423 100644 --- a/cypress/tests/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual.search.anonymous.cy.js @@ -1,18 +1,5 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { before(() => { - // 1. Disable Cypress uncaught exception failures from React hydration errors - Cypress.on('uncaught:exception', (err) => { - // Cypress and React Hydrating the document don't get along - // for some unknown reason. Hopefully, we figure out why eventually - // so we can remove this. - if ( - /hydrat/i.test(err.message) || - /Minified React error #418/.test(err.message) || - /Minified React error #423/.test(err.message) - ) { - return false; - } - }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -52,7 +39,7 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { path: 'en', }); - cy.wait(5000); + cy.wait(3000); // Add search block cy.visit('/'); diff --git a/cypress/tests/multilingual.search.cy.js b/cypress/tests/multilingual.search.cy.js index 66dfa102..32bb80dc 100644 --- a/cypress/tests/multilingual.search.cy.js +++ b/cypress/tests/multilingual.search.cy.js @@ -1,18 +1,5 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { before(() => { - // 1. Disable Cypress uncaught exception failures from React hydration errors - Cypress.on('uncaught:exception', (err) => { - // Cypress and React Hydrating the document don't get along - // for some unknown reason. Hopefully, we figure out why eventually - // so we can remove this. - if ( - /hydrat/i.test(err.message) || - /Minified React error #418/.test(err.message) || - /Minified React error #423/.test(err.message) - ) { - return false; - } - }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); From ba74fd61131509c36e65548a209446720b72815a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 21:55:36 +0100 Subject: [PATCH 39/98] Move tests to monolinugal or multilingual folder --- .github/workflows/acceptance_monolingual.yml | 103 ++++++++++++++++++ ...ptance.yml => acceptance_multilingual.yml} | 90 +-------------- .../monolingual.create_search.cy.js | 0 .../monolingual.results.cy.js | 0 .../monolingual.search.cy.js | 0 .../multilingual.language.cy.js | 0 .../multilingual.search.anonymous.cy.js | 0 .../multilingual.search.cy.js | 0 8 files changed, 104 insertions(+), 89 deletions(-) create mode 100644 .github/workflows/acceptance_monolingual.yml rename .github/workflows/{acceptance.yml => acceptance_multilingual.yml} (51%) rename cypress/tests/{ => monolingual}/monolingual.create_search.cy.js (100%) rename cypress/tests/{ => monolingual}/monolingual.results.cy.js (100%) rename cypress/tests/{ => monolingual}/monolingual.search.cy.js (100%) rename cypress/tests/{ => multilingual}/multilingual.language.cy.js (100%) rename cypress/tests/{ => multilingual}/multilingual.search.anonymous.cy.js (100%) rename cypress/tests/{ => multilingual}/multilingual.search.cy.js (100%) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml new file mode 100644 index 00000000..9fcf40ab --- /dev/null +++ b/.github/workflows/acceptance_monolingual.yml @@ -0,0 +1,103 @@ +name: Acceptance tests +on: + push: + paths: + - "*.js" + - "*.json" + - "*.yaml" + - "cypress/tests/monolingual/**" + - "packages/**" + - ".github/workflows/acceptance.yml" + +env: + NODE_VERSION: 20.x + CYPRESS_RETRIES: 2 + +jobs: + acceptance-monolingual: + runs-on: ubuntu-latest + env: + SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS: monolingual + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js ${{ env.NODE_VERSION }} + uses: actions/setup-node@v4 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: Enable corepack + run: corepack enable + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v4 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Cache Cypress Binary + id: cache-cypress-binary + uses: actions/cache@v4 + with: + path: ~/.cache/Cypress + key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }} + + - name: Install dependencies + run: make install + + - name: Install Cypress if not in cache + if: steps.cache-cypress-binary.outputs.cache-hit != 'true' + working-directory: core/packages/volto + run: make cypress-install + + - uses: JarvusInnovations/background-action@v1 + name: Start Servers + with: + run: | + make ci-acceptance-backend-start-monolingual & + make acceptance-frontend-prod-start-monolingual & + # your step-level and job-level environment variables are available to your commands as-is + # npm install will count towards the wait-for timeout + # whenever possible, move unrelated scripts to a different step + # to background multiple processes: add & to the end of the command + + wait-on: | + http-get://localhost:55001/plone + http://localhost:3000 + # IMPORTANT: to use environment variables in wait-on, you must use this form: ${{ env.VAR }} + # See wait-on section below for all resource types and prefixes + + tail: true # true = stderr,stdout + # This will allow you to monitor the progress live + + log-output-resume: stderr + # Eliminates previosuly output stderr log entries from post-run output + + wait-for: 10m + + log-output: stderr,stdout # same as true + + log-output-if: failure + + - run: make ci-acceptance-test-monolingual + + # Upload Cypress screenshots + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-screenshots-acceptance + path: acceptance/cypress/screenshots + + # Upload Cypress videos + - uses: actions/upload-artifact@v4 + if: failure() + with: + name: cypress-videos-acceptance + path: acceptance/cypress/videos diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance_multilingual.yml similarity index 51% rename from .github/workflows/acceptance.yml rename to .github/workflows/acceptance_multilingual.yml index 5f9ed8be..231d5dfe 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -5,7 +5,7 @@ on: - "*.js" - "*.json" - "*.yaml" - - "cypress/**" + - "cypress/tests/multilingual/**" - "packages/**" - ".github/workflows/acceptance.yml" @@ -14,94 +14,6 @@ env: CYPRESS_RETRIES: 2 jobs: - acceptance-monolingual: - runs-on: ubuntu-latest - env: - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS: monolingual - steps: - - uses: actions/checkout@v4 - - - name: Use Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v4 - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Enable corepack - run: corepack enable - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v4 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Cache Cypress Binary - id: cache-cypress-binary - uses: actions/cache@v4 - with: - path: ~/.cache/Cypress - key: binary-${{ env.NODE_VERSION }}-${{ hashFiles('pnpm-lock.yaml') }} - - - name: Install dependencies - run: make install - - - name: Install Cypress if not in cache - if: steps.cache-cypress-binary.outputs.cache-hit != 'true' - working-directory: core/packages/volto - run: make cypress-install - - - uses: JarvusInnovations/background-action@v1 - name: Start Servers - with: - run: | - make ci-acceptance-backend-start-monolingual & - make acceptance-frontend-prod-start-monolingual & - # your step-level and job-level environment variables are available to your commands as-is - # npm install will count towards the wait-for timeout - # whenever possible, move unrelated scripts to a different step - # to background multiple processes: add & to the end of the command - - wait-on: | - http-get://localhost:55001/plone - http://localhost:3000 - # IMPORTANT: to use environment variables in wait-on, you must use this form: ${{ env.VAR }} - # See wait-on section below for all resource types and prefixes - - tail: true # true = stderr,stdout - # This will allow you to monitor the progress live - - log-output-resume: stderr - # Eliminates previosuly output stderr log entries from post-run output - - wait-for: 10m - - log-output: stderr,stdout # same as true - - log-output-if: failure - - - run: make ci-acceptance-test-monolingual - - # Upload Cypress screenshots - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: cypress-screenshots-acceptance - path: acceptance/cypress/screenshots - - # Upload Cypress videos - - uses: actions/upload-artifact@v4 - if: failure() - with: - name: cypress-videos-acceptance - path: acceptance/cypress/videos - acceptance-multilingual: runs-on: ubuntu-latest env: diff --git a/cypress/tests/monolingual.create_search.cy.js b/cypress/tests/monolingual/monolingual.create_search.cy.js similarity index 100% rename from cypress/tests/monolingual.create_search.cy.js rename to cypress/tests/monolingual/monolingual.create_search.cy.js diff --git a/cypress/tests/monolingual.results.cy.js b/cypress/tests/monolingual/monolingual.results.cy.js similarity index 100% rename from cypress/tests/monolingual.results.cy.js rename to cypress/tests/monolingual/monolingual.results.cy.js diff --git a/cypress/tests/monolingual.search.cy.js b/cypress/tests/monolingual/monolingual.search.cy.js similarity index 100% rename from cypress/tests/monolingual.search.cy.js rename to cypress/tests/monolingual/monolingual.search.cy.js diff --git a/cypress/tests/multilingual.language.cy.js b/cypress/tests/multilingual/multilingual.language.cy.js similarity index 100% rename from cypress/tests/multilingual.language.cy.js rename to cypress/tests/multilingual/multilingual.language.cy.js diff --git a/cypress/tests/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js similarity index 100% rename from cypress/tests/multilingual.search.anonymous.cy.js rename to cypress/tests/multilingual/multilingual.search.anonymous.cy.js diff --git a/cypress/tests/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js similarity index 100% rename from cypress/tests/multilingual.search.cy.js rename to cypress/tests/multilingual/multilingual.search.cy.js From 3b0c46ab9969cd6f55adb832d8a930f12f5aa9b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 21:55:40 +0100 Subject: [PATCH 40/98] Update e2e.js --- cypress/support/e2e.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cypress/support/e2e.js b/cypress/support/e2e.js index 4ff23d6d..25577cc7 100644 --- a/cypress/support/e2e.js +++ b/cypress/support/e2e.js @@ -4,6 +4,21 @@ import './commands'; import 'cypress-axe'; import { setup, teardown } from '@plone/volto/cypress/support/reset-fixture'; +// // 1. Disable Cypress uncaught exception failures from React hydration errors +// Cypress.on('uncaught:exception', (err) => { +// // Cypress and React Hydrating the document don't get along +// // for some unknown reason. Hopefully, we figure out why eventually +// // so we can remove this. +// if ( +// /ResizeObserver loop/.test(err.message) || +// /hydrat/i.test(err.message) || +// /Minified React error #418/.test(err.message) || +// /Minified React error #423/.test(err.message) +// ) { +// return false; +// } +// }); + beforeEach(function () { cy.log('Setting up API fixture'); setup(); From 51b9516a527454919e4b3093020e0ee070d0b794 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Mon, 28 Oct 2024 21:58:30 +0100 Subject: [PATCH 41/98] rename actions --- .github/workflows/acceptance_monolingual.yml | 2 +- .github/workflows/acceptance_multilingual.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml index 9fcf40ab..16e72e69 100644 --- a/.github/workflows/acceptance_monolingual.yml +++ b/.github/workflows/acceptance_monolingual.yml @@ -1,4 +1,4 @@ -name: Acceptance tests +name: Acceptance tests monolingual on: push: paths: diff --git a/.github/workflows/acceptance_multilingual.yml b/.github/workflows/acceptance_multilingual.yml index 231d5dfe..faed6f6f 100644 --- a/.github/workflows/acceptance_multilingual.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -1,4 +1,4 @@ -name: Acceptance tests +name: Acceptance tests multilingual on: push: paths: From 75d19e0dbeeb23272c7a1d5d57ee691156d03545 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:14:47 +0100 Subject: [PATCH 42/98] Fix multilingual settings (-> cy.settings) --- .github/workflows/acceptance_monolingual.yml | 2 - .github/workflows/acceptance_multilingual.yml | 2 - Makefile | 8 +-- .../multilingual/multilingual.language.cy.js | 8 +++ .../multilingual.search.anonymous.cy.js | 25 ++++---- .../multilingual/multilingual.search.cy.js | 58 +++++++++++++++---- packages/volto-searchkit-block/src/index.js | 9 --- 7 files changed, 72 insertions(+), 40 deletions(-) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml index 16e72e69..7a45e010 100644 --- a/.github/workflows/acceptance_monolingual.yml +++ b/.github/workflows/acceptance_monolingual.yml @@ -16,8 +16,6 @@ env: jobs: acceptance-monolingual: runs-on: ubuntu-latest - env: - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS: monolingual steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/acceptance_multilingual.yml b/.github/workflows/acceptance_multilingual.yml index faed6f6f..4de212df 100644 --- a/.github/workflows/acceptance_multilingual.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -16,8 +16,6 @@ env: jobs: acceptance-multilingual: runs-on: ubuntu-latest - env: - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS: multilingual steps: - uses: actions/checkout@v4 diff --git a/Makefile b/Makefile index 073261f2..8d7dca17 100644 --- a/Makefile +++ b/Makefile @@ -179,11 +179,11 @@ storybook-build: ## Build Storybook ########################################### .PHONY: acceptance-frontend-dev-start acceptance-frontend-dev-start-monolingual: ## Start acceptance frontend in development mode - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=monolingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start .PHONY: acceptance-frontend-prod-start acceptance-frontend-prod-start-monolingual: ## Start acceptance frontend in production mode - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=monolingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start backend acceptance server @@ -208,11 +208,11 @@ ci-acceptance-test-monolingual: ## Run cypress tests in headless mode for CI ########################################### .PHONY: acceptance-frontend-dev-start acceptance-frontend-dev-start-multilingual: ## Start acceptance frontend in development mode - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=multilingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start .PHONY: acceptance-frontend-prod-start acceptance-frontend-prod-start-multilingual: ## Start acceptance frontend in production mode - SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS=multilingual RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod .PHONY: acceptance-backend-start-multilingual acceptance-backend-start-multilingual: ## Start backend acceptance server diff --git a/cypress/tests/multilingual/multilingual.language.cy.js b/cypress/tests/multilingual/multilingual.language.cy.js index 24014c0d..eaf4e537 100644 --- a/cypress/tests/multilingual/multilingual.language.cy.js +++ b/cypress/tests/multilingual/multilingual.language.cy.js @@ -1,5 +1,6 @@ describe('Searchkit block tests – search - multilingual - language', () => { before(() => { + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -25,6 +26,7 @@ describe('Searchkit block tests – search - multilingual - language', () => { contentId: 'der-garten-im-februar', contentTitle: 'Der Garten im Februar', path: 'de', + language: 'de', }); // Add search block @@ -53,6 +55,12 @@ describe('Searchkit block tests – search - multilingual - language', () => { }); it('I can search within language', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); + cy.get('.searchbar-wrapper input') .type('februax{enter}') .wait('@kitsearch') diff --git a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js index c68af423..70e7efd0 100644 --- a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js @@ -39,24 +39,15 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { path: 'en', }); - cy.wait(3000); - // Add search block - cy.visit('/'); - cy.visit('/en/searching'); - cy.navigate('/en/searching/edit'); + cy.visit('/en/searching/edit'); cy.wait('@schema'); - cy.getSlate().clear().type('{enter}'); - cy.get('.button .block-add-button').click({ force: true }); - cy.get('.blocks-chooser .title').contains('Common').click(); - cy.get('.blocks-chooser .common') - .contains('Searchkit') - .click({ force: true }); + cy.addNewBlock('searchkit'); cy.get('#toolbar-save').click(); - cy.wait('@kitsearch'); cy.wait('@content'); + cy.wait('@kitsearch'); }); beforeEach(() => { @@ -75,6 +66,11 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { }); it('I can search', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').type('february{enter}'); cy.get('.block.searchkitsearch').contains('The garden in february'); cy.get('.searchbar-wrapper input').clear().type('march{enter}'); @@ -82,6 +78,11 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { }); it('As anonymous I see only published content', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('/**/@logout').as('logout'); diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index 32bb80dc..7654e51b 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -2,6 +2,7 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { before(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); + cy.intercept('GET', '/**/Document').as('schema'); cy.autologin(); @@ -54,20 +55,15 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { path: '/de', }); - // Add search block to /suche - cy.visit('/de/suche'); - cy.get('a.edit').click(); + // Add search block + cy.visit('/de/suche/edit'); + cy.wait('@schema'); - cy.getSlate().click(); - cy.get('.button .block-add-button').click({ force: true }); - cy.get('div[aria-label="Ausklappen Common blocks"]').click(); - cy.get('.blocks-chooser .common .button.searchkitblock').click({ - force: true, - }); + cy.addNewBlock('searchkit'); cy.get('#toolbar-save').click(); - cy.wait('@kitsearch'); cy.wait('@content'); + cy.wait('@kitsearch'); }); beforeEach(() => { @@ -91,16 +87,31 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I see all if no filter selected', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); }); it('I can search fuzzy', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').type('februax{enter}'); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); cy.get('.block.searchkitsearch').should('not.contain', 'März'); }); it('I can search with inflection', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').clear().type('Männer{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); @@ -109,6 +120,11 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I can search with decompounding', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').type('Garten{enter}'); cy.get('.block.searchkitsearch').contains('Garten-Blog'); @@ -117,11 +133,21 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I can search with wildcard', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').type('Feb*{enter}'); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); }); it('I can search for an exact match', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); @@ -129,6 +155,11 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I can search for a compounded word', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.get('.searchbar-wrapper input').type('stelle{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); @@ -141,6 +172,11 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { // Blocks text it('I can search in blocks', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'en'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.visit('/de/garten-blog/februar'); cy.get('a.edit').click(); @@ -152,7 +188,7 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { ); // cy.toolbarSave(); cy.get('#toolbar-save').click(); - cy.wait('@kitsearch'); + cy.wait('@content'); cy.log('I added a text block'); diff --git a/packages/volto-searchkit-block/src/index.js b/packages/volto-searchkit-block/src/index.js index ab41d025..f32cb411 100644 --- a/packages/volto-searchkit-block/src/index.js +++ b/packages/volto-searchkit-block/src/index.js @@ -126,15 +126,6 @@ const applyConfig = (config) => { }, ]; - if (process.env.SEARCHKITBLOCK_TESTING_LANGUAGESETTINGS === 'multilingual') { - config.settings.isMultilingual = true; - config.settings.supportedLanguages = ['en', 'de']; - config.settings.defaultLanguage = 'en'; - } else { - config.settings.supportedLanguages = ['de']; - config.settings.defaultLanguage = 'de'; - } - // DEBUG // Disable Matomo config.settings.appExtras = []; From 07dffe3e68a4627f9dd505f8427f2dbe0658531d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:16:13 +0100 Subject: [PATCH 43/98] uncomment default backend make commands --- backend/Makefile | 160 ++++++++++++++++++++++++----------------------- 1 file changed, 83 insertions(+), 77 deletions(-) diff --git a/backend/Makefile b/backend/Makefile index 1267f36f..274651e8 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -64,84 +64,89 @@ all: build help: ## This help message @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -$(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: - @echo "$(GREEN)==> Setup Virtual Env$(RESET)" - $(PYTHON) -m venv $(VENV_FOLDER) - $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" - if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi - -instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration - @echo "$(GREEN)==> Create instance configuration$(RESET)" - $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance - -.PHONY: config -config: instance/etc/zope.ini - -.PHONY: build-dev -build-dev: config ## Install Plone packages - @echo "$(GREEN)==> Setup Build$(RESET)" - $(BIN_FOLDER)/mxdev -c mx.ini - $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt - -.PHONY: install -install: build-dev ## Install Plone - -.PHONY: build -build: build-dev ## Install Plone - -.PHONY: clean -clean: ## Clean environment - @echo "$(RED)==> Cleaning environment and build$(RESET)" - rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache - -.PHONY: start -start: ## Start a Plone instance on localhost:8080 - PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini - -.PHONY: console -console: instance/etc/zope.ini ## Start a console into a Plone instance - PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf - -.PHONY: create-site -create-site: instance/etc/zope.ini ## Create a new site from scratch - PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py - -# Example Content -.PHONY: update-example-content -update-example-content: $(BIN_FOLDER)/tox ## Export example content inside package - @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER) $(RESET)" - if [ -d $(EXAMPLE_CONTENT_FOLDER)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER)/* ;fi - $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID) $(EXAMPLE_CONTENT_FOLDER) - -.PHONY: check -check: $(BIN_FOLDER)/tox ## Check and fix code base according to Plone standards - @echo "$(GREEN)==> Format codebase$(RESET)" - $(BIN_FOLDER)/tox -e lint - -# i18n -$(BIN_FOLDER)/i18ndude: $(BIN_FOLDER)/pip - @echo "$(GREEN)==> Install translation tools$(RESET)" - $(BIN_FOLDER)/uv pip install i18ndude - -.PHONY: i18n -i18n: $(BIN_FOLDER)/i18ndude ## Update locales - @echo "$(GREEN)==> Updating locales$(RESET)" - $(BIN_FOLDER)/update_locale - -# Tests -.PHONY: test -test: $(BIN_FOLDER)/tox ## run tests - $(BIN_FOLDER)/tox -e test - -.PHONY: test-coverage -test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage - $(BIN_FOLDER)/tox -e coverage - -# Build Docker images -.PHONY: build-image -build-image: ## Build Docker Images - @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) +# $(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: +# @echo "$(GREEN)==> Setup Virtual Env$(RESET)" +# $(PYTHON) -m venv $(VENV_FOLDER) +# $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" +# if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi +# instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration +# @echo "$(GREEN)==> Create instance configuration$(RESET)" +# $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance + +# .PHONY: config +# config: instance/etc/zope.ini + +# .PHONY: build-dev +# build-dev: config ## Install Plone packages +# @echo "$(GREEN)==> Setup Build$(RESET)" +# $(BIN_FOLDER)/mxdev -c mx.ini +# $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt + +# .PHONY: install +# install: build-dev ## Install Plone + +# .PHONY: build +# build: build-dev ## Install Plone + +# .PHONY: clean +# clean: ## Clean environment +# @echo "$(RED)==> Cleaning environment and build$(RESET)" +# rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache + +# .PHONY: start +# start: ## Start a Plone instance on localhost:8080 +# PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini + +# .PHONY: console +# console: instance/etc/zope.ini ## Start a console into a Plone instance +# PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf + +# .PHONY: create-site +# create-site: instance/etc/zope.ini ## Create a new site from scratch +# PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py + +# # Example Content +# .PHONY: update-example-content +# update-example-content: $(BIN_FOLDER)/tox ## Export example content inside package +# @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER) $(RESET)" +# if [ -d $(EXAMPLE_CONTENT_FOLDER)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER)/* ;fi +# $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID) $(EXAMPLE_CONTENT_FOLDER) + + +# .PHONY: check +# check: $(BIN_FOLDER)/tox ## Check and fix code base according to Plone standards +# @echo "$(GREEN)==> Format codebase$(RESET)" +# $(BIN_FOLDER)/tox -e lint + +# # i18n +# $(BIN_FOLDER)/i18ndude: $(BIN_FOLDER)/pip +# @echo "$(GREEN)==> Install translation tools$(RESET)" +# $(BIN_FOLDER)/uv pip install i18ndude + +# .PHONY: i18n +# i18n: $(BIN_FOLDER)/i18ndude ## Update locales +# @echo "$(GREEN)==> Updating locales$(RESET)" +# $(BIN_FOLDER)/update_locale + +# # Tests +# .PHONY: test +# test: $(BIN_FOLDER)/tox ## run tests +# $(BIN_FOLDER)/tox -e test + +# .PHONY: test-coverage +# test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage +# $(BIN_FOLDER)/tox -e coverage + +# # Build Docker images +# .PHONY: build-image +# build-image: ## Build Docker Images +# @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) + +# TODO development backend (and OpenSearch and ingest containers) + + +# ######################################################################## # Acceptance monolingual # ######################################################################## @@ -163,6 +168,7 @@ acceptance-backend-image-build-monolingual: ## Build acceptance containers (back ${ACCEPTANCE_MONOLINGUAL} --profile monolingual build --no-cache +# ######################################################################## # Acceptance multilingual # ######################################################################## From 225a37ad4b8b9b0aa082f9bff68bba563b3e3ac8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:16:34 +0100 Subject: [PATCH 44/98] Volto alpha 48 --- mrs.developer.json | 2 +- package.json | 6 + pnpm-lock.yaml | 2389 ++++++-------------------------------------- 3 files changed, 311 insertions(+), 2086 deletions(-) diff --git a/mrs.developer.json b/mrs.developer.json index 650e3e1c..0096e8ea 100644 --- a/mrs.developer.json +++ b/mrs.developer.json @@ -4,6 +4,6 @@ "package": "@plone/volto", "url": "git@github.com:plone/volto.git", "https": "https://github.com/plone/volto.git", - "tag": "18.0.0-alpha.46" + "tag": "18.0.0-alpha.47" } } diff --git a/package.json b/package.json index 9463ccf7..9b2f9d29 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,12 @@ "plone", "react" ], + "pnpm": { + "overrides": { + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", + "react-refresh": "^0.14.2" + } + }, "scripts": { "preinstall": "npx only-allow pnpm", "start": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto start", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79638ee6..c1a619d0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,10 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + '@pmmmwh/react-refresh-webpack-plugin': ^0.5.15 + react-refresh: ^0.14.2 + importers: .: @@ -36,7 +40,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/registry': specifier: workspace:* version: link:../registry @@ -51,24 +55,24 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.6.3 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/client: dependencies: '@tanstack/react-query': - specifier: ^5.37.1 + specifier: ^5.59.0 version: 5.59.16(react@18.2.0) axios: specifier: ^1.6.7 @@ -85,7 +89,7 @@ importers: devDependencies: '@parcel/config-default': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) '@parcel/core': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) @@ -103,7 +107,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: 'workspace: *' version: link:../types @@ -139,7 +143,7 @@ importers: version: 21.1.2 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -148,13 +152,13 @@ importers: version: 18.2.0(react@18.2.0) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsup: specifier: ^8.0.2 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3) typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.4.5 + version: 5.6.3 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -163,9 +167,9 @@ importers: version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vite-plugin-dts: specifier: ^3.7.3 - version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) vitest: - specifier: ^2.1.2 + specifier: ^2.1.3 version: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) wait-on: specifier: ^7.2.0 @@ -295,13 +299,13 @@ importers: specifier: ^8.0.4 version: 8.3.6 typescript: - specifier: ^5.4.5 + specifier: ^5.6.3 version: 5.6.3 vite: specifier: ^5.4.8 version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest: - specifier: ^2.1.2 + specifier: ^2.1.3 version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest-axe: specifier: ^0.1.0 @@ -393,8 +397,8 @@ importers: specifier: ^3.0.7 version: 3.1.1 jest: - specifier: ^24.8.0 - version: 24.9.0 + specifier: ^26.6.3 + version: 26.6.3 release-it: specifier: ^16.1.3 version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) @@ -415,11 +419,11 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@parcel/packager-ts': - specifier: 2.12.0 + specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': - specifier: 2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -430,20 +434,20 @@ importers: specifier: ^18 version: 18.2.12 parcel: - specifier: 2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.4.5 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/providers: dependencies: @@ -456,16 +460,22 @@ importers: '@plone/registry': specifier: workspace:* version: link:../registry + '@tanstack/react-query': + specifier: ^5.59.0 + version: 5.59.16(react@18.2.0) react: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0 + react-aria-components: + specifier: ^1.4.0 + version: 1.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: '@parcel/config-default': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) '@parcel/core': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) @@ -480,7 +490,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -492,19 +502,19 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.2.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.2.2 - version: 5.2.2 + specifier: ^5.4.5 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/registry: dependencies: @@ -518,27 +528,42 @@ importers: specifier: 0.10.0 version: 0.10.0 glob: - specifier: 7.1.6 - version: 7.1.6 + specifier: ^10.4.5 + version: 10.4.5 + tmp: + specifier: 0.2.1 + version: 0.2.1 devDependencies: '@parcel/packager-ts': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 + '@types/glob': + specifier: ^8.1.0 + version: 8.1.0 + '@types/node': + specifier: ^20 + version: 20.17.2 '@types/react': specifier: ^18 version: 18.2.27 '@types/react-dom': specifier: ^18 version: 18.2.12 + '@types/tmp': + specifier: ^0.2.6 + version: 0.2.6 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -547,16 +572,19 @@ importers: version: 18.2.0(react@18.2.0) release-it: specifier: 16.2.1 - version: 16.2.1(encoding@0.1.13)(typescript@5.4.2) + version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.6.3 + version: 5.6.3 + vite: + specifier: ^5.4.8 + version: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest: - specifier: ^2.1.2 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/scripts: dependencies: @@ -630,7 +658,7 @@ importers: version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2) + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -642,19 +670,19 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.2.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.2.2 - version: 5.2.2 + specifier: ^5.6.3 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/tsconfig: {} @@ -680,13 +708,13 @@ importers: version: 3.12.1(react@18.2.0) release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.6.3 + version: 5.6.3 core/packages/volto: dependencies: @@ -1242,13 +1270,13 @@ importers: version: 3.2.5 razzle: specifier: 4.2.18 - version: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) + version: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(type-fest@2.19.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) razzle-dev-utils: specifier: 4.2.18 version: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) razzle-plugin-scss: specifier: 4.2.18 - version: 4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1))(webpack@5.90.1) + version: 4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(type-fest@2.19.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1))(webpack@5.90.1) react-docgen-typescript-plugin: specifier: ^1.0.5 version: 1.0.8(typescript@5.6.3)(webpack@5.90.1) @@ -1301,7 +1329,7 @@ importers: specifier: 9.4.4 version: 9.4.4(typescript@5.6.3)(webpack@5.90.1) typescript: - specifier: ^5.4.2 + specifier: ^5.6.3 version: 5.6.3 use-trace-update: specifier: 1.3.2 @@ -1417,7 +1445,7 @@ importers: version: 10.0.1(cypress@13.13.2) '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3) '@testing-library/react': specifier: 12.1.5 version: 12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -2925,26 +2953,14 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@24.9.0': - resolution: {integrity: sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==} - engines: {node: '>= 6'} - '@jest/console@26.6.2': resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} engines: {node: '>= 10.14.2'} - '@jest/core@24.9.0': - resolution: {integrity: sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==} - engines: {node: '>= 6'} - '@jest/core@26.6.3': resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} engines: {node: '>= 10.14.2'} - '@jest/environment@24.9.0': - resolution: {integrity: sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==} - engines: {node: '>= 6'} - '@jest/environment@26.6.2': resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} engines: {node: '>= 10.14.2'} @@ -2961,10 +2977,6 @@ packages: resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/fake-timers@24.9.0': - resolution: {integrity: sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==} - engines: {node: '>= 6'} - '@jest/fake-timers@26.6.2': resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} engines: {node: '>= 10.14.2'} @@ -2981,10 +2993,6 @@ packages: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/reporters@24.9.0': - resolution: {integrity: sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==} - engines: {node: '>= 6'} - '@jest/reporters@26.6.2': resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} engines: {node: '>= 10.14.2'} @@ -2993,34 +3001,18 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@24.9.0': - resolution: {integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==} - engines: {node: '>= 6'} - '@jest/source-map@26.6.2': resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} engines: {node: '>= 10.14.2'} - '@jest/test-result@24.9.0': - resolution: {integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==} - engines: {node: '>= 6'} - '@jest/test-result@26.6.2': resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} engines: {node: '>= 10.14.2'} - '@jest/test-sequencer@24.9.0': - resolution: {integrity: sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==} - engines: {node: '>= 6'} - '@jest/test-sequencer@26.6.3': resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} engines: {node: '>= 10.14.2'} - '@jest/transform@24.9.0': - resolution: {integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==} - engines: {node: '>= 6'} - '@jest/transform@26.6.2': resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} @@ -3784,16 +3776,16 @@ packages: resolution: {integrity: sha512-52S2Nb8sUDnHobzoYBstn6UkXxri+UGEh5DWZfy0xJ9h/ia6n9XI+mjtSEG3vKkr+hsbLH9sO8RlX4tpG3Kyhg==} hasBin: true - '@pmmmwh/react-refresh-webpack-plugin@0.4.3': - resolution: {integrity: sha512-br5Qwvh8D2OQqSXpd1g/xqXKnK0r+Jz6qVKBbWmpUcrbGOxUrf39V5oZ1876084CGn18uMdR5uvPqBv9UqtBjQ==} - engines: {node: '>= 10.x'} + '@pmmmwh/react-refresh-webpack-plugin@0.5.15': + resolution: {integrity: sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==} + engines: {node: '>= 10.13'} peerDependencies: - '@types/webpack': 4.x - react-refresh: '>=0.8.3 <0.10.0' + '@types/webpack': 4.x || 5.x + react-refresh: ^0.14.2 sockjs-client: ^1.4.0 - type-fest: ^0.13.1 + type-fest: '>=0.17.0 <5.0.0' webpack: '>=4.43.0 <6.0.0' - webpack-dev-server: 3.x + webpack-dev-server: 3.x || 4.x || 5.x webpack-hot-middleware: 2.x webpack-plugin-serve: 0.x || 1.x peerDependenciesMeta: @@ -5098,6 +5090,9 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -5185,6 +5180,9 @@ packages: '@types/node@15.14.9': resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} + '@types/node@20.17.2': + resolution: {integrity: sha512-OOHK4sjXqkL7yQ7VEEHcf6+0jSvKjWqwnaCtY7AKD/VLEvRHMsxxu7eI8ErnjxHS8VwmekD4PeVCpu4qZEZSxg==} + '@types/node@22.8.1': resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} @@ -5272,9 +5270,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/stack-utils@1.0.1': - resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} - '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -5291,6 +5286,9 @@ packages: '@types/testing-library__react@9.1.3': resolution: {integrity: sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==} + '@types/tmp@0.2.6': + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -5457,9 +5455,6 @@ packages: peerDependencies: vitest: 1.6.0 - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -5484,30 +5479,18 @@ packages: '@vitest/pretty-format@2.1.3': resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/runner@2.1.3': resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/snapshot@2.1.3': resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} '@vitest/spy@2.1.3': resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -5609,9 +5592,6 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-globals@4.3.4: - resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} - acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} @@ -5628,10 +5608,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@6.2.0: - resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} - engines: {node: '>=0.4.0'} - acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} @@ -5640,16 +5616,6 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@5.7.4: - resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -5731,10 +5697,6 @@ packages: resolution: {integrity: sha512-tH/fSoQp4DrEodDK3QpdiWiZTSe7sBJ9eOqcQBZ0o9HTM+5M/viSEn+sPMoTuPjQQ8n++w3QJoPEjt8LVPcrCg==} engines: {node: '>=4'} - ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -5744,8 +5706,8 @@ packages: engines: {'0': node >= 0.8.0} hasBin: true - ansi-html@0.0.7: - resolution: {integrity: sha512-JoAxEa1DfP9m2xfB/y2r/aKcwXNlltr4+0QSBC4TrLfcxyvepX2Pv0t/xpgGV5bGsDzCYV8SzjWgyCW0T9yYbA==} + ansi-html@0.0.9: + resolution: {integrity: sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==} engines: {'0': node >= 0.8.0} hasBin: true @@ -5753,10 +5715,6 @@ packages: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -5861,9 +5819,6 @@ packages: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} - array-equal@1.0.2: - resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -5932,9 +5887,6 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5954,17 +5906,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} @@ -6050,12 +5995,6 @@ packages: babel-helper-get-function-arity@6.24.1: resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} - babel-jest@24.9.0: - resolution: {integrity: sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==} - engines: {node: '>= 6'} - peerDependencies: - '@babel/core': ^7.0.0 - babel-jest@26.6.3: resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} @@ -6089,18 +6028,10 @@ packages: babel-plugin-add-module-exports@0.2.1: resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} - babel-plugin-istanbul@5.2.0: - resolution: {integrity: sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==} - engines: {node: '>=6'} - babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} - babel-plugin-jest-hoist@24.9.0: - resolution: {integrity: sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==} - engines: {node: '>= 6'} - babel-plugin-jest-hoist@26.6.2: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} @@ -6155,12 +6086,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-jest@24.9.0: - resolution: {integrity: sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==} - engines: {node: '>= 6'} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-jest@26.6.2: resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} @@ -6247,9 +6172,6 @@ packages: resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} engines: {node: '>=0.8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -6307,9 +6229,6 @@ packages: browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - browser-resolve@1.11.3: - resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} - browserslist@4.14.2: resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6467,10 +6386,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -6508,9 +6423,6 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -6626,9 +6538,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -6802,9 +6711,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -7087,9 +6993,6 @@ packages: cssom@0.4.4: resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - cssstyle@1.4.0: - resolution: {integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==} - cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} @@ -7142,9 +7045,6 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-urls@1.1.0: - resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} - data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -7262,10 +7162,6 @@ packages: resolution: {integrity: sha512-VxZwQ/1+WGQPl5nE67uLhh7OqdrmqI1OazrraO9Bbw/M8Bt6Mol/RxzDA6N6ZgRXpsG/W9PgUj8E1LHHBEq2GQ==} engines: {node: '>=4.0.0'} - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -7399,10 +7295,6 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - detect-newline@2.1.0: - resolution: {integrity: sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==} - engines: {node: '>=0.10.0'} - detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -7421,10 +7313,6 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - diff-sequences@24.9.0: - resolution: {integrity: sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==} - engines: {node: '>= 6'} - diff-sequences@26.6.2: resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} engines: {node: '>= 10.14.2'} @@ -7501,10 +7389,6 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@1.0.1: - resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} - deprecated: Use your platform's native DOMException instead - domexception@2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} engines: {node: '>=8'} @@ -7580,9 +7464,6 @@ packages: emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7750,11 +7631,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} - hasBin: true - escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -8034,10 +7910,6 @@ packages: resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} - expect@24.9.0: - resolution: {integrity: sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==} - engines: {node: '>= 6'} - expect@26.6.2: resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} engines: {node: '>= 10.14.2'} @@ -8171,9 +8043,6 @@ packages: resolution: {integrity: sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==} engines: {node: '>= 10'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -8384,12 +8253,6 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -8431,9 +8294,6 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -8771,9 +8631,6 @@ packages: hsla-regex@1.0.0: resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} - html-encoding-sniffer@1.0.2: - resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} - html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -8782,9 +8639,6 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} - html-entities@1.4.0: - resolution: {integrity: sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==} - html-entities@2.5.2: resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} @@ -9004,11 +8858,6 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - import-local@2.0.0: - resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} - engines: {node: '>=6'} - hasBin: true - import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -9212,10 +9061,6 @@ packages: is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -9414,10 +9259,6 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -9471,18 +9312,10 @@ packages: resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} engines: {node: '>=10.13'} - istanbul-lib-coverage@2.0.5: - resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} - engines: {node: '>=6'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@3.3.0: - resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} - engines: {node: '>=6'} - istanbul-lib-instrument@4.0.3: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} @@ -9491,18 +9324,10 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} - istanbul-lib-report@2.0.8: - resolution: {integrity: sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==} - engines: {node: '>=6'} - istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@3.0.6: - resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} - engines: {node: '>=6'} - istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} @@ -9511,10 +9336,6 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@2.2.7: - resolution: {integrity: sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==} - engines: {node: '>=6'} - istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} @@ -9541,28 +9362,15 @@ packages: resolution: {integrity: sha512-4kNcNn7J0jPO4jANEYZOHeQ/tSBvkXS+MxTbX1CKbXGd0+ZbRGDn/v/8IYWI/MmYX15iLVyYRnRev9X3ksePWA==} engines: {node: '>= 14.0.0'} - jest-changed-files@24.9.0: - resolution: {integrity: sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==} - engines: {node: '>= 6'} - jest-changed-files@26.6.2: resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} engines: {node: '>= 10.14.2'} - jest-cli@24.9.0: - resolution: {integrity: sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==} - engines: {node: '>= 6'} - hasBin: true - jest-cli@26.6.3: resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} engines: {node: '>= 10.14.2'} hasBin: true - jest-config@24.9.0: - resolution: {integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==} - engines: {node: '>= 6'} - jest-config@26.6.3: resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} engines: {node: '>= 10.14.2'} @@ -9572,10 +9380,6 @@ packages: ts-node: optional: true - jest-diff@24.9.0: - resolution: {integrity: sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==} - engines: {node: '>= 6'} - jest-diff@26.6.2: resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} engines: {node: '>= 10.14.2'} @@ -9584,34 +9388,18 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-docblock@24.9.0: - resolution: {integrity: sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==} - engines: {node: '>= 6'} - jest-docblock@26.0.0: resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} engines: {node: '>= 10.14.2'} - jest-each@24.9.0: - resolution: {integrity: sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==} - engines: {node: '>= 6'} - jest-each@26.6.2: resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} engines: {node: '>= 10.14.2'} - jest-environment-jsdom@24.9.0: - resolution: {integrity: sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==} - engines: {node: '>= 6'} - jest-environment-jsdom@26.6.2: resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} engines: {node: '>= 10.14.2'} - jest-environment-node@24.9.0: - resolution: {integrity: sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==} - engines: {node: '>= 6'} - jest-environment-node@26.6.2: resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} engines: {node: '>= 10.14.2'} @@ -9619,10 +9407,6 @@ packages: jest-file@1.0.0: resolution: {integrity: sha512-QqcbPCfpVCxixoF0gia825AGBGXYWVi4cQpLsXBQVxkWswnZ39XHpT490NvTMtokY6v6BM+vw8rlhtjORabplA==} - jest-get-type@24.9.0: - resolution: {integrity: sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==} - engines: {node: '>= 6'} - jest-get-type@26.3.0: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} @@ -9631,10 +9415,6 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@24.9.0: - resolution: {integrity: sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==} - engines: {node: '>= 6'} - jest-haste-map@26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} @@ -9643,26 +9423,14 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-jasmine2@24.9.0: - resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==} - engines: {node: '>= 6'} - jest-jasmine2@26.6.3: resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} engines: {node: '>= 10.14.2'} - jest-leak-detector@24.9.0: - resolution: {integrity: sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==} - engines: {node: '>= 6'} - jest-leak-detector@26.6.2: resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} engines: {node: '>= 10.14.2'} - jest-matcher-utils@24.9.0: - resolution: {integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==} - engines: {node: '>= 6'} - jest-matcher-utils@26.6.2: resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} engines: {node: '>= 10.14.2'} @@ -9675,10 +9443,6 @@ packages: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-message-util@24.9.0: - resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==} - engines: {node: '>= 6'} - jest-message-util@26.6.2: resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} engines: {node: '>= 10.14.2'} @@ -9687,10 +9451,6 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-mock@24.9.0: - resolution: {integrity: sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==} - engines: {node: '>= 6'} - jest-mock@26.6.2: resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} engines: {node: '>= 10.14.2'} @@ -9708,10 +9468,6 @@ packages: jest-resolve: optional: true - jest-regex-util@24.9.0: - resolution: {integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==} - engines: {node: '>= 6'} - jest-regex-util@26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} @@ -9720,52 +9476,27 @@ packages: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@24.9.0: - resolution: {integrity: sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==} - engines: {node: '>= 6'} - jest-resolve-dependencies@26.6.3: resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} engines: {node: '>= 10.14.2'} - jest-resolve@24.9.0: - resolution: {integrity: sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==} - engines: {node: '>= 6'} - jest-resolve@26.6.2: resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} engines: {node: '>= 10.14.2'} - jest-runner@24.9.0: - resolution: {integrity: sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==} - engines: {node: '>= 6'} - jest-runner@26.6.3: resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} engines: {node: '>= 10.14.2'} - jest-runtime@24.9.0: - resolution: {integrity: sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==} - engines: {node: '>= 6'} - hasBin: true - jest-runtime@26.6.3: resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} engines: {node: '>= 10.14.2'} hasBin: true - jest-serializer@24.9.0: - resolution: {integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==} - engines: {node: '>= 6'} - jest-serializer@26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} - jest-snapshot@24.9.0: - resolution: {integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==} - engines: {node: '>= 6'} - jest-snapshot@26.6.2: resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} engines: {node: '>= 10.14.2'} @@ -9774,10 +9505,6 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@24.9.0: - resolution: {integrity: sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==} - engines: {node: '>= 6'} - jest-util@26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} engines: {node: '>= 10.14.2'} @@ -9786,26 +9513,14 @@ packages: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-validate@24.9.0: - resolution: {integrity: sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==} - engines: {node: '>= 6'} - jest-validate@26.6.2: resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} engines: {node: '>= 10.14.2'} - jest-watcher@24.9.0: - resolution: {integrity: sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==} - engines: {node: '>= 6'} - jest-watcher@26.6.2: resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} engines: {node: '>= 10.14.2'} - jest-worker@24.9.0: - resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} - engines: {node: '>= 6'} - jest-worker@25.5.0: resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} engines: {node: '>= 8.3'} @@ -9822,11 +9537,6 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest@24.9.0: - resolution: {integrity: sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==} - engines: {node: '>= 6'} - hasBin: true - jest@26.6.3: resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} engines: {node: '>= 10.14.2'} @@ -9881,9 +9591,6 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsdom@11.12.0: - resolution: {integrity: sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==} - jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -10077,10 +9784,6 @@ packages: resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} hasBin: true - left-pad@1.3.0: - resolution: {integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==} - deprecated: use String.prototype.padStart() - less-loader@11.1.0: resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} engines: {node: '>= 14.15.0'} @@ -10097,10 +9800,6 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -10261,10 +9960,6 @@ packages: resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} hasBin: true - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10289,10 +9984,6 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - locale@0.1.0: resolution: {integrity: sha512-rY3ZMnUkMfaZEix1fp/pjdwsHJkDQcE0UEcXHuYI77J03K8gddL3iD+UuJCLAmT2Z2oz5A70/0QS4J9OLCCvXw==} engines: {node: '>0.8.x'} @@ -10403,9 +10094,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} @@ -10459,10 +10147,6 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -10857,9 +10541,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} - moment-locales-webpack-plugin@1.2.0: resolution: {integrity: sha512-QAi5v0OlPUP7GXviKMtxnpBAo8WmTHrUNN7iciAhNOEAd9evCOvuN0g1N7ThIg3q11GLCkjY1zQ2saRcf/43nQ==} peerDependencies: @@ -10925,9 +10606,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.22.0: - resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -10937,9 +10615,6 @@ packages: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} engines: {node: '>=0.10.0'} - native-url@0.2.6: - resolution: {integrity: sha512-k4bDC87WtgrdD362gZz6zoiXQrl40kYlBmpfmSjwRO1VU0V5ccwJTlxuE72F6m3V0vc1xOf6n3UCP9QyerRqmA==} - natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -11031,9 +10706,6 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-notifier@5.4.5: - resolution: {integrity: sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==} - node-notifier@8.0.2: resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} @@ -11285,10 +10957,6 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -11331,10 +10999,6 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} - p-each-series@1.0.0: - resolution: {integrity: sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA==} - engines: {node: '>=4'} - p-each-series@2.2.0: resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} engines: {node: '>=8'} @@ -11355,10 +11019,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -11387,10 +11047,6 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} - p-reduce@1.0.0: - resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==} - engines: {node: '>=4'} - p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -11466,9 +11122,6 @@ packages: parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} - parse5@4.0.0: - resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} - parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -11533,10 +11186,6 @@ packages: path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11548,9 +11197,6 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -11582,10 +11228,6 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -11594,10 +11236,6 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -11606,16 +11244,10 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - pkg-types@1.2.1: - resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} - pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - pn@1.1.0: - resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} - pnp-webpack-plugin@1.7.0: resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} engines: {node: '>=6'} @@ -11899,10 +11531,6 @@ packages: resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} engines: {node: '>=10'} - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -12103,11 +11731,6 @@ packages: resolution: {integrity: sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==} engines: {node: '>=18'} - querystring@0.2.1: - resolution: {integrity: sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==} - engines: {node: '>=0.4.x'} - deprecated: The querystring API is considered Legacy. new code should use the URLSearchParams API instead. - querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} @@ -12429,10 +12052,6 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-refresh@0.9.0: - resolution: {integrity: sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ==} - engines: {node: '>=0.10.0'} - react-router-config@5.1.1: resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: @@ -12575,18 +12194,10 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - read-pkg-up@4.0.0: - resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} - engines: {node: '>=6'} - read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -12614,10 +12225,6 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - realpath-native@1.1.0: - resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==} - engines: {node: '>=4'} - recast@0.23.9: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} @@ -12788,19 +12395,6 @@ packages: request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} - request-promise-core@1.1.4: - resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} - engines: {node: '>=0.10.0'} - peerDependencies: - request: ^2.34 - - request-promise-native@1.0.9: - resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} - engines: {node: '>=0.12.0'} - deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 - peerDependencies: - request: ^2.34 - request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -12830,10 +12424,6 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - resolve-cwd@2.0.0: - resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} - engines: {node: '>=4'} - resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -12864,9 +12454,6 @@ packages: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} @@ -13036,9 +12623,6 @@ packages: sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} - sax@1.4.1: - resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} - saxes@5.0.1: resolution: {integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==} engines: {node: '>=10'} @@ -13243,10 +12827,6 @@ packages: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -13438,10 +13018,6 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - stack-utils@1.0.5: - resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} - engines: {node: '>=8'} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -13480,10 +13056,6 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} - stealthy-require@1.1.1: - resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} - engines: {node: '>=0.10.0'} - stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -13506,10 +13078,6 @@ packages: string-hash@1.1.3: resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - string-length@2.0.0: - resolution: {integrity: sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==} - engines: {node: '>=4'} - string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -13517,10 +13085,6 @@ packages: string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -13569,14 +13133,6 @@ packages: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - strip-ansi@6.0.0: resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} engines: {node: '>=8'} @@ -13838,10 +13394,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@5.2.3: - resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} - engines: {node: '>=6'} - test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -13860,9 +13412,6 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - throat@4.1.0: - resolution: {integrity: sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==} - throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} @@ -13900,10 +13449,6 @@ packages: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -13912,10 +13457,6 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -14099,10 +13640,6 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14165,11 +13702,6 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -14187,9 +13719,6 @@ packages: uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -14398,9 +13927,6 @@ packages: util.promisify@1.0.1: resolution: {integrity: sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==} - util.promisify@1.1.2: - resolution: {integrity: sha512-PBdZ03m1kBnQ5cjjO0ZvJMJS+QsbyIcFwi4hY4U76OQsCO9JrOYjbCFgIF76ccFg9xnJo7ZHPkqyj1GqmdS7MA==} - util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} @@ -14474,11 +14000,6 @@ packages: resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} engines: {node: '>= 0.10'} - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - vite-node@2.1.3: resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14530,31 +14051,6 @@ packages: peerDependencies: vitest: '>=0.16.0' - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@2.1.3: resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14767,9 +14263,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@6.5.0: - resolution: {integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==} - whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -14847,10 +14340,6 @@ packages: worker-rpc@0.1.1: resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} - wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -14866,9 +14355,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.1: - resolution: {integrity: sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==} - write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -14880,17 +14366,6 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@5.2.4: - resolution: {integrity: sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -14949,9 +14424,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yargs-parser@13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -14964,9 +14436,6 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} @@ -16524,56 +15993,15 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jest/console@24.9.0': - dependencies: - '@jest/source-map': 24.9.0 - chalk: 2.4.2 - slash: 2.0.0 - '@jest/console@26.6.2': dependencies: '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 slash: 3.0.0 - '@jest/core@24.9.0': - dependencies: - '@jest/console': 24.9.0 - '@jest/reporters': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - ansi-escapes: 3.2.0 - chalk: 2.4.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 24.9.0 - jest-config: 24.9.0 - jest-haste-map: 24.9.0 - jest-message-util: 24.9.0 - jest-regex-util: 24.9.0 - jest-resolve: 24.9.0 - jest-resolve-dependencies: 24.9.0 - jest-runner: 24.9.0 - jest-runtime: 24.9.0 - jest-snapshot: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - jest-watcher: 24.9.0 - micromatch: 3.1.10 - p-each-series: 1.0.0 - realpath-native: 1.1.0 - rimraf: 2.7.1 - slash: 2.0.0 - strip-ansi: 5.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@jest/core@26.6.3': dependencies: '@jest/console': 26.6.2 @@ -16581,7 +16009,7 @@ snapshots: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -16611,27 +16039,18 @@ snapshots: - ts-node - utf-8-validate - '@jest/environment@24.9.0': - dependencies: - '@jest/fake-timers': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - jest-mock: 24.9.0 - transitivePeerDependencies: - - supports-color - '@jest/environment@26.6.2': dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-mock: 26.6.2 '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -16645,19 +16064,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/fake-timers@24.9.0': - dependencies: - '@jest/types': 24.9.0 - jest-message-util: 24.9.0 - jest-mock: 24.9.0 - transitivePeerDependencies: - - supports-color - '@jest/fake-timers@26.6.2': dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -16666,7 +16077,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -16686,34 +16097,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@24.9.0': - dependencies: - '@jest/environment': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - exit: 0.1.2 - glob: 7.1.6 - istanbul-lib-coverage: 2.0.5 - istanbul-lib-instrument: 3.3.0 - istanbul-lib-report: 2.0.8 - istanbul-lib-source-maps: 3.0.6 - istanbul-reports: 2.2.7 - jest-haste-map: 24.9.0 - jest-resolve: 24.9.0 - jest-runtime: 24.9.0 - jest-util: 24.9.0 - jest-worker: 24.9.0 - node-notifier: 5.4.5 - slash: 2.0.0 - source-map: 0.6.1 - string-length: 2.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@jest/reporters@26.6.2': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -16749,24 +16132,12 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@24.9.0': - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - '@jest/source-map@26.6.2': dependencies: callsites: 3.1.0 graceful-fs: 4.2.11 source-map: 0.6.1 - '@jest/test-result@24.9.0': - dependencies: - '@jest/console': 24.9.0 - '@jest/types': 24.9.0 - '@types/istanbul-lib-coverage': 2.0.6 - '@jest/test-result@26.6.2': dependencies: '@jest/console': 26.6.2 @@ -16774,17 +16145,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - '@jest/test-sequencer@24.9.0': - dependencies: - '@jest/test-result': 24.9.0 - jest-haste-map: 24.9.0 - jest-runner: 24.9.0 - jest-runtime: 24.9.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@jest/test-sequencer@26.6.3': dependencies: '@jest/test-result': 26.6.2 @@ -16799,27 +16159,6 @@ snapshots: - ts-node - utf-8-validate - '@jest/transform@24.9.0': - dependencies: - '@babel/core': 7.26.0 - '@jest/types': 24.9.0 - babel-plugin-istanbul: 5.2.0 - chalk: 2.4.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 24.9.0 - jest-regex-util: 24.9.0 - jest-util: 24.9.0 - micromatch: 3.1.10 - pirates: 4.0.6 - realpath-native: 1.1.0 - slash: 2.0.0 - source-map: 0.6.1 - write-file-atomic: 2.4.1 - transitivePeerDependencies: - - supports-color - '@jest/transform@26.6.2': dependencies: '@babel/core': 7.26.0 @@ -16877,7 +16216,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -16886,7 +16225,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/yargs': 17.0.33 chalk: 4.1.2 @@ -17491,96 +16830,6 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': dependencies: '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -17642,7 +16891,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) abortcontroller-polyfill: 1.7.5 base-x: 3.0.10 browserslist: 4.24.2 @@ -17670,7 +16919,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) transitivePeerDependencies: - '@swc/helpers' @@ -17680,7 +16929,7 @@ snapshots: '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) transitivePeerDependencies: - '@swc/helpers' @@ -17743,10 +16992,10 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': dependencies: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 @@ -17762,52 +17011,14 @@ snapshots: - typescript - uncss - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': - dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) transitivePeerDependencies: - '@swc/helpers' @@ -17854,7 +17065,7 @@ snapshots: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -17866,9 +17077,9 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0 - '@parcel/types': 2.12.0(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -18029,7 +17240,7 @@ snapshots: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 react-error-overlay: 6.0.9 - react-refresh: 0.9.0 + react-refresh: 0.14.2 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' @@ -18096,7 +17307,7 @@ snapshots: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' @@ -18109,7 +17320,7 @@ snapshots: '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@swc/helpers': 0.5.13 browserslist: 4.24.2 nullthrows: 1.1.1 @@ -18162,7 +17373,7 @@ snapshots: dependencies: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - react-refresh: 0.9.0 + react-refresh: 0.14.2 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' @@ -18181,32 +17392,6 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.2.2) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.2.2 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.4.2) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3)': dependencies: '@parcel/diagnostic': 2.12.0 @@ -18220,42 +17405,19 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.2.2) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.2.2 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2)': + '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3)': dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.4.2) + '@parcel/ts-utils': 2.12.0(typescript@5.6.3) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - typescript: 5.4.2 + typescript: 5.6.3 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - '@parcel/ts-utils@2.12.0(typescript@5.2.2)': - dependencies: - nullthrows: 1.1.1 - typescript: 5.2.2 - - '@parcel/ts-utils@2.12.0(typescript@5.4.2)': - dependencies: - nullthrows: 1.1.1 - typescript: 5.4.2 - '@parcel/ts-utils@2.12.0(typescript@5.6.3)': dependencies: nullthrows: 1.1.1 @@ -18268,7 +17430,7 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -18281,7 +17443,7 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -18354,15 +17516,28 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/logger': 2.12.0 + '@parcel/profiler': 2.12.0 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/workers@2.12.0(@swc/helpers@0.5.13)': + dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/logger': 2.12.0 '@parcel/profiler': 2.12.0 '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' '@pkgjs/parseargs@0.11.0': optional: true @@ -18390,18 +17565,20 @@ snapshots: - debug - supports-color - '@pmmmwh/react-refresh-webpack-plugin@0.4.3(react-refresh@0.9.0)(sockjs-client@1.4.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(sockjs-client@1.4.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1)': dependencies: - ansi-html: 0.0.7 + ansi-html: 0.0.9 + core-js-pure: 3.38.1 error-stack-parser: 2.1.4 - html-entities: 1.4.0 - native-url: 0.2.6 - react-refresh: 0.9.0 - schema-utils: 2.7.1 + html-entities: 2.5.2 + loader-utils: 2.0.4 + react-refresh: 0.14.2 + schema-utils: 4.2.0 source-map: 0.7.4 webpack: 5.90.1 optionalDependencies: sockjs-client: 1.4.0 + type-fest: 2.19.0 webpack-dev-server: 4.11.1(debug@4.3.2)(webpack@5.90.1) webpack-hot-middleware: 2.26.1 @@ -20155,6 +19332,21 @@ snapshots: '@types/jest': 29.5.14 vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3)': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.20.6 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.14 + vitest: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 @@ -20262,20 +19454,20 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.1 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/connect@3.4.38': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/cookie@0.3.3': {} @@ -20305,14 +19497,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.1': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -20329,11 +19521,16 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 + + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.17.2 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/hast@3.0.4': dependencies: @@ -20354,7 +19551,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/invariant@2.2.37': {} @@ -20391,7 +19588,7 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/loadable__component@5.13.9': dependencies: @@ -20415,10 +19612,14 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/node@15.14.9': {} + '@types/node@20.17.2': + dependencies: + undici-types: 6.19.8 + '@types/node@22.8.1': dependencies: undici-types: 6.19.8 @@ -20483,7 +19684,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/retry@0.12.0': {} @@ -20498,7 +19699,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/serve-index@1.9.4': dependencies: @@ -20507,7 +19708,7 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/send': 0.17.4 '@types/sinonjs__fake-timers@8.1.1': {} @@ -20516,9 +19717,7 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.8.1 - - '@types/stack-utils@1.0.1': {} + '@types/node': 20.17.2 '@types/stack-utils@2.0.3': {} @@ -20540,6 +19739,8 @@ snapshots: '@types/testing-library__dom': 7.5.0 pretty-format: 25.5.0 + '@types/tmp@0.2.6': {} + '@types/unist@3.0.3': {} '@types/use-sync-external-store@0.0.3': {} @@ -20549,11 +19750,11 @@ snapshots: '@types/vinyl@2.0.12': dependencies: '@types/expect': 1.20.4 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/ws@8.5.12': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/yargs-parser@21.0.3': {} @@ -20571,7 +19772,7 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 optional: true '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': @@ -20798,12 +19999,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.5.0 - '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -20818,7 +20013,7 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': dependencies: '@vitest/spy': 2.1.3 estree-walker: 3.0.3 @@ -20826,6 +20021,14 @@ snapshots: optionalDependencies: vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': + dependencies: + '@vitest/spy': 2.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 @@ -20834,33 +20037,17 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@1.6.0': - dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@2.1.3': dependencies: '@vitest/utils': 2.1.3 pathe: 1.1.2 - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.12 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@2.1.3': dependencies: '@vitest/pretty-format': 2.1.3 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -20869,13 +20056,6 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/utils@1.6.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -20915,7 +20095,7 @@ snapshots: '@vue/compiler-core': 3.5.12 '@vue/shared': 3.5.12 - '@vue/language-core@1.8.27(typescript@5.4.2)': + '@vue/language-core@1.8.27(typescript@5.6.3)': dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 @@ -20927,7 +20107,7 @@ snapshots: path-browserify: 1.0.1 vue-template-compiler: 2.7.16 optionalDependencies: - typescript: 5.4.2 + typescript: 5.6.3 '@vue/shared@3.5.12': {} @@ -21026,11 +20206,6 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-globals@4.3.4: - dependencies: - acorn: 6.4.2 - acorn-walk: 6.2.0 - acorn-globals@6.0.0: dependencies: acorn: 7.4.1 @@ -21053,18 +20228,12 @@ snapshots: dependencies: acorn: 8.13.0 - acorn-walk@6.2.0: {} - acorn-walk@7.2.0: {} acorn-walk@8.3.4: dependencies: acorn: 8.13.0 - acorn@5.7.4: {} - - acorn@6.4.2: {} - acorn@7.4.1: {} acorn@8.13.0: {} @@ -21151,20 +20320,16 @@ snapshots: ansi-escapes@2.0.0: {} - ansi-escapes@3.2.0: {} - ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 ansi-html-community@0.0.8: {} - ansi-html@0.0.7: {} + ansi-html@0.0.9: {} ansi-regex@2.1.1: {} - ansi-regex@3.0.1: {} - ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} @@ -21251,8 +20416,6 @@ snapshots: array-differ@3.0.0: {} - array-equal@1.0.2: {} - array-flatten@1.1.1: {} array-includes@3.1.8: @@ -21358,8 +20521,6 @@ snapshots: assert-plus@1.0.0: {} - assertion-error@1.1.0: {} - assertion-error@2.0.1: {} assign-symbols@1.0.0: {} @@ -21374,12 +20535,8 @@ snapshots: dependencies: tslib: 2.8.0 - astral-regex@1.0.0: {} - astral-regex@2.0.0: {} - async-limiter@1.0.1: {} - async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -21475,19 +20632,6 @@ snapshots: babel-runtime: 6.26.0 babel-types: 6.26.0 - babel-jest@24.9.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 5.2.0 - babel-preset-jest: 24.9.0(@babel/core@7.26.0) - chalk: 2.4.2 - slash: 2.0.0 - transitivePeerDependencies: - - supports-color - babel-jest@26.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -21531,15 +20675,6 @@ snapshots: babel-plugin-add-module-exports@0.2.1: {} - babel-plugin-istanbul@5.2.0: - dependencies: - '@babel/helper-plugin-utils': 7.25.9 - find-up: 3.0.0 - istanbul-lib-instrument: 3.3.0 - test-exclude: 5.2.3 - transitivePeerDependencies: - - supports-color - babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -21550,10 +20685,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@24.9.0: - dependencies: - '@types/babel__traverse': 7.20.6 - babel-plugin-jest-hoist@26.6.2: dependencies: '@babel/template': 7.25.9 @@ -21656,12 +20787,6 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - babel-preset-jest@24.9.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - babel-plugin-jest-hoist: 24.9.0 - babel-preset-jest@26.6.2(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -21825,11 +20950,6 @@ snapshots: binaryextensions@4.19.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -21930,10 +21050,6 @@ snapshots: browser-process-hrtime@1.0.0: {} - browser-resolve@1.11.3: - dependencies: - resolve: 1.1.7 - browserslist@4.14.2: dependencies: caniuse-lite: 1.0.30001671 @@ -22178,16 +21294,6 @@ snapshots: ccount@2.0.1: {} - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -22230,10 +21336,6 @@ snapshots: chardet@0.7.0: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - check-error@2.1.1: {} check-more-types@2.24.0: {} @@ -22330,12 +21432,6 @@ snapshots: client-only@0.0.1: {} - cliui@5.0.0: - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - cliui@6.0.0: dependencies: string-width: 4.2.3 @@ -22490,8 +21586,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.8: {} - config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -22620,15 +21714,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.4.2): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.4.2 - cosmiconfig@8.3.6(typescript@5.6.3): dependencies: import-fresh: 3.3.0 @@ -22638,24 +21723,6 @@ snapshots: optionalDependencies: typescript: 5.6.3 - cosmiconfig@9.0.0(typescript@5.2.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.2.2 - - cosmiconfig@9.0.0(typescript@5.4.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.4.2 - cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 @@ -22868,10 +21935,6 @@ snapshots: cssom@0.4.4: {} - cssstyle@1.4.0: - dependencies: - cssom: 0.3.8 - cssstyle@2.3.0: dependencies: cssom: 0.3.8 @@ -22958,12 +22021,6 @@ snapshots: data-uri-to-buffer@6.0.2: {} - data-urls@1.1.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 7.1.0 - data-urls@2.0.0: dependencies: abab: 2.0.6 @@ -23056,10 +22113,6 @@ snapshots: deep-copy@1.4.2: {} - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - deep-eql@5.0.2: {} deep-equal@2.2.3: @@ -23185,8 +22238,6 @@ snapshots: detect-libc@2.0.3: {} - detect-newline@2.1.0: {} - detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -23207,8 +22258,6 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 - diff-sequences@24.9.0: {} - diff-sequences@26.6.2: {} diff-sequences@29.6.3: {} @@ -23280,10 +22329,6 @@ snapshots: domelementtype@2.3.0: {} - domexception@1.0.1: - dependencies: - webidl-conversions: 4.0.2 - domexception@2.0.1: dependencies: webidl-conversions: 5.0.0 @@ -23353,8 +22398,6 @@ snapshots: emoji-regex@10.4.0: {} - emoji-regex@7.0.3: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -23646,19 +22689,10 @@ snapshots: escape-string-regexp@5.0.0: {} - escodegen@1.14.3: + escodegen@2.1.0: dependencies: esprima: 4.0.1 - estraverse: 4.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - - escodegen@2.1.0: - dependencies: - esprima: 4.0.1 - estraverse: 5.3.0 + estraverse: 5.3.0 esutils: 2.0.3 optionalDependencies: source-map: 0.6.1 @@ -24124,17 +23158,6 @@ snapshots: transitivePeerDependencies: - supports-color - expect@24.9.0: - dependencies: - '@jest/types': 24.9.0 - ansi-styles: 3.2.1 - jest-get-type: 24.9.0 - jest-matcher-utils: 24.9.0 - jest-message-util: 24.9.0 - jest-regex-util: 24.9.0 - transitivePeerDependencies: - - supports-color - expect@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -24324,9 +23347,6 @@ snapshots: dependencies: tslib: 2.8.0 - file-uri-to-path@1.0.0: - optional: true - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -24441,7 +23461,7 @@ snapshots: fork-ts-checker-webpack-plugin@4.1.6(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1): dependencies: - '@babel/code-frame': 7.10.4 + '@babel/code-frame': 7.26.0 chalk: 2.4.2 micromatch: 3.1.10 minimatch: 3.1.2 @@ -24574,12 +23594,6 @@ snapshots: fs.realpath@1.0.0: {} - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.22.0 - optional: true - fsevents@2.3.3: optional: true @@ -24627,8 +23641,6 @@ snapshots: get-east-asian-width@1.3.0: {} - get-func-name@2.0.2: {} - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -24895,7 +23907,8 @@ snapshots: grouped-queue@2.0.0: {} - growly@1.3.0: {} + growly@1.3.0: + optional: true gzip-size@5.1.1: dependencies: @@ -25028,10 +24041,6 @@ snapshots: hsla-regex@1.0.0: {} - html-encoding-sniffer@1.0.2: - dependencies: - whatwg-encoding: 1.0.5 - html-encoding-sniffer@2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -25040,8 +24049,6 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 - html-entities@1.4.0: {} - html-entities@2.5.2: {} html-escaper@2.0.2: {} @@ -25067,32 +24074,6 @@ snapshots: tapable: 2.2.1 webpack: 5.90.1 - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2): - dependencies: - cosmiconfig: 9.0.0(typescript@5.2.2) - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.4.47 - relateurl: 0.2.7 - svgo: 2.8.0 - terser: 5.36.0 - transitivePeerDependencies: - - typescript - - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2): - dependencies: - cosmiconfig: 9.0.0(typescript@5.4.2) - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.4.47 - relateurl: 0.2.7 - svgo: 2.8.0 - terser: 5.36.0 - transitivePeerDependencies: - - typescript - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3): dependencies: cosmiconfig: 9.0.0(typescript@5.6.3) @@ -25300,11 +24281,6 @@ snapshots: import-lazy@4.0.0: {} - import-local@2.0.0: - dependencies: - pkg-dir: 3.0.0 - resolve-cwd: 2.0.0 - import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -25548,8 +24524,6 @@ snapshots: dependencies: call-bind: 1.0.7 - is-fullwidth-code-point@2.0.0: {} - is-fullwidth-code-point@3.0.0: {} is-generator-fn@2.1.0: {} @@ -25689,8 +24663,6 @@ snapshots: is-windows@1.0.2: {} - is-wsl@1.1.0: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -25736,22 +24708,8 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 - istanbul-lib-coverage@2.0.5: {} - istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@3.3.0: - dependencies: - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.20.5 - istanbul-lib-coverage: 2.0.5 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-instrument@4.0.3: dependencies: '@babel/core': 7.26.0 @@ -25771,28 +24729,12 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-report@2.0.8: - dependencies: - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - supports-color: 6.1.0 - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@3.0.6: - dependencies: - debug: 4.3.4(supports-color@8.1.1) - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - rimraf: 2.7.1 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4(supports-color@8.1.1) @@ -25809,10 +24751,6 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-reports@2.2.7: - dependencies: - html-escaper: 2.0.2 - istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 @@ -25853,38 +24791,12 @@ snapshots: jest-matcher-utils: 29.2.2 lodash.merge: 4.6.2 - jest-changed-files@24.9.0: - dependencies: - '@jest/types': 24.9.0 - execa: 1.0.0 - throat: 4.1.0 - jest-changed-files@26.6.2: dependencies: '@jest/types': 26.6.2 execa: 4.1.0 throat: 5.0.0 - jest-cli@24.9.0: - dependencies: - '@jest/core': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - exit: 0.1.2 - import-local: 2.0.0 - is-ci: 2.0.0 - jest-config: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - prompts: 2.4.2 - realpath-native: 1.1.0 - yargs: 13.3.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-cli@26.6.3: dependencies: '@jest/core': 26.6.3 @@ -25907,30 +24819,6 @@ snapshots: - ts-node - utf-8-validate - jest-config@24.9.0: - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 24.9.0 - '@jest/types': 24.9.0 - babel-jest: 24.9.0(@babel/core@7.26.0) - chalk: 2.4.2 - glob: 7.1.6 - jest-environment-jsdom: 24.9.0 - jest-environment-node: 24.9.0 - jest-get-type: 24.9.0 - jest-jasmine2: 24.9.0 - jest-regex-util: 24.9.0 - jest-resolve: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - micromatch: 3.1.10 - pretty-format: 24.9.0 - realpath-native: 1.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-config@26.6.3: dependencies: '@babel/core': 7.26.0 @@ -25957,13 +24845,6 @@ snapshots: - supports-color - utf-8-validate - jest-diff@24.9.0: - dependencies: - chalk: 2.4.2 - diff-sequences: 24.9.0 - jest-get-type: 24.9.0 - pretty-format: 24.9.0 - jest-diff@26.6.2: dependencies: chalk: 4.1.2 @@ -25978,24 +24859,10 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-docblock@24.9.0: - dependencies: - detect-newline: 2.1.0 - jest-docblock@26.0.0: dependencies: detect-newline: 3.1.0 - jest-each@24.9.0: - dependencies: - '@jest/types': 24.9.0 - chalk: 2.4.2 - jest-get-type: 24.9.0 - jest-util: 24.9.0 - pretty-format: 24.9.0 - transitivePeerDependencies: - - supports-color - jest-each@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26004,25 +24871,12 @@ snapshots: jest-util: 26.6.2 pretty-format: 26.6.2 - jest-environment-jsdom@24.9.0: - dependencies: - '@jest/environment': 24.9.0 - '@jest/fake-timers': 24.9.0 - '@jest/types': 24.9.0 - jest-mock: 24.9.0 - jest-util: 24.9.0 - jsdom: 11.12.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-environment-jsdom@26.6.2: dependencies: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0 @@ -26032,56 +24886,26 @@ snapshots: - supports-color - utf-8-validate - jest-environment-node@24.9.0: - dependencies: - '@jest/environment': 24.9.0 - '@jest/fake-timers': 24.9.0 - '@jest/types': 24.9.0 - jest-mock: 24.9.0 - jest-util: 24.9.0 - transitivePeerDependencies: - - supports-color - jest-environment-node@26.6.2: dependencies: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-mock: 26.6.2 jest-util: 26.6.2 jest-file@1.0.0: {} - jest-get-type@24.9.0: {} - jest-get-type@26.3.0: {} jest-get-type@29.6.3: {} - jest-haste-map@24.9.0: - dependencies: - '@jest/types': 24.9.0 - anymatch: 2.0.0 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - invariant: 2.2.4 - jest-serializer: 24.9.0 - jest-util: 24.9.0 - jest-worker: 24.9.0 - micromatch: 3.1.10 - sane: 4.1.0 - walker: 1.0.8 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - jest-haste-map@26.6.2: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.9 - '@types/node': 22.8.1 + '@types/node': 20.17.2 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -26101,7 +24925,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 22.8.1 + '@types/node': 20.17.2 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -26113,29 +24937,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-jasmine2@24.9.0: - dependencies: - '@babel/traverse': 7.25.9 - '@jest/environment': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - co: 4.6.0 - expect: 24.9.0 - is-generator-fn: 2.1.0 - jest-each: 24.9.0 - jest-matcher-utils: 24.9.0 - jest-message-util: 24.9.0 - jest-runtime: 24.9.0 - jest-snapshot: 24.9.0 - jest-util: 24.9.0 - pretty-format: 24.9.0 - throat: 4.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-jasmine2@26.6.3: dependencies: '@babel/traverse': 7.25.9 @@ -26143,7 +24944,7 @@ snapshots: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -26163,23 +24964,11 @@ snapshots: - ts-node - utf-8-validate - jest-leak-detector@24.9.0: - dependencies: - jest-get-type: 24.9.0 - pretty-format: 24.9.0 - jest-leak-detector@26.6.2: dependencies: jest-get-type: 26.3.0 pretty-format: 26.6.2 - jest-matcher-utils@24.9.0: - dependencies: - chalk: 2.4.2 - jest-diff: 24.9.0 - jest-get-type: 24.9.0 - pretty-format: 24.9.0 - jest-matcher-utils@26.6.2: dependencies: chalk: 4.1.2 @@ -26201,19 +24990,6 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-message-util@24.9.0: - dependencies: - '@babel/code-frame': 7.26.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - '@types/stack-utils': 1.0.1 - chalk: 2.4.2 - micromatch: 3.1.10 - slash: 2.0.0 - stack-utils: 1.0.5 - transitivePeerDependencies: - - supports-color - jest-message-util@26.6.2: dependencies: '@babel/code-frame': 7.26.0 @@ -26238,43 +25014,25 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@24.9.0: - dependencies: - '@jest/types': 24.9.0 - jest-mock@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@24.9.0): - optionalDependencies: - jest-resolve: 24.9.0 - jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): optionalDependencies: jest-resolve: 26.6.2 - jest-regex-util@24.9.0: {} - jest-regex-util@26.0.0: {} jest-regex-util@29.6.3: {} - jest-resolve-dependencies@24.9.0: - dependencies: - '@jest/types': 24.9.0 - jest-regex-util: 24.9.0 - jest-snapshot: 24.9.0 - transitivePeerDependencies: - - supports-color - jest-resolve-dependencies@26.6.3: dependencies: '@jest/types': 26.6.2 @@ -26283,14 +25041,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-resolve@24.9.0: - dependencies: - '@jest/types': 24.9.0 - browser-resolve: 1.11.3 - chalk: 2.4.2 - jest-pnp-resolver: 1.2.3(jest-resolve@24.9.0) - realpath-native: 1.1.0 - jest-resolve@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26302,39 +25052,13 @@ snapshots: resolve: 1.22.8 slash: 3.0.0 - jest-runner@24.9.0: - dependencies: - '@jest/console': 24.9.0 - '@jest/environment': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 24.9.0 - jest-docblock: 24.9.0 - jest-haste-map: 24.9.0 - jest-jasmine2: 24.9.0 - jest-leak-detector: 24.9.0 - jest-message-util: 24.9.0 - jest-resolve: 24.9.0 - jest-runtime: 24.9.0 - jest-util: 24.9.0 - jest-worker: 24.9.0 - source-map-support: 0.5.21 - throat: 4.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-runner@26.6.3: dependencies: '@jest/console': 26.6.2 '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -26357,36 +25081,6 @@ snapshots: - ts-node - utf-8-validate - jest-runtime@24.9.0: - dependencies: - '@jest/console': 24.9.0 - '@jest/environment': 24.9.0 - '@jest/source-map': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - '@types/yargs': 13.0.12 - chalk: 2.4.2 - exit: 0.1.2 - glob: 7.1.6 - graceful-fs: 4.2.11 - jest-config: 24.9.0 - jest-haste-map: 24.9.0 - jest-message-util: 24.9.0 - jest-mock: 24.9.0 - jest-regex-util: 24.9.0 - jest-resolve: 24.9.0 - jest-snapshot: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - realpath-native: 1.1.0 - slash: 2.0.0 - strip-bom: 3.0.0 - yargs: 13.3.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-runtime@26.6.3: dependencies: '@jest/console': 26.6.2 @@ -26423,31 +25117,11 @@ snapshots: - ts-node - utf-8-validate - jest-serializer@24.9.0: {} - jest-serializer@26.6.2: dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 graceful-fs: 4.2.11 - jest-snapshot@24.9.0: - dependencies: - '@babel/types': 7.20.5 - '@jest/types': 24.9.0 - chalk: 2.4.2 - expect: 24.9.0 - jest-diff: 24.9.0 - jest-get-type: 24.9.0 - jest-matcher-utils: 24.9.0 - jest-message-util: 24.9.0 - jest-resolve: 24.9.0 - mkdirp: 0.5.6 - natural-compare: 1.4.0 - pretty-format: 24.9.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - jest-snapshot@26.6.2: dependencies: '@babel/types': 7.20.5 @@ -26494,27 +25168,10 @@ snapshots: transitivePeerDependencies: - supports-color - jest-util@24.9.0: - dependencies: - '@jest/console': 24.9.0 - '@jest/fake-timers': 24.9.0 - '@jest/source-map': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - callsites: 3.1.0 - chalk: 2.4.2 - graceful-fs: 4.2.11 - is-ci: 2.0.0 - mkdirp: 0.5.6 - slash: 2.0.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - jest-util@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -26523,21 +25180,12 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.8.1 + '@types/node': 20.17.2 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@24.9.0: - dependencies: - '@jest/types': 24.9.0 - camelcase: 5.3.1 - chalk: 2.4.2 - jest-get-type: 24.9.0 - leven: 3.1.0 - pretty-format: 24.9.0 - jest-validate@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26547,33 +25195,16 @@ snapshots: leven: 3.1.0 pretty-format: 26.6.2 - jest-watcher@24.9.0: - dependencies: - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - '@types/yargs': 13.0.12 - ansi-escapes: 3.2.0 - chalk: 2.4.2 - jest-util: 24.9.0 - string-length: 2.0.0 - transitivePeerDependencies: - - supports-color - jest-watcher@26.6.2: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 22.8.1 + '@types/node': 20.17.2 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 string-length: 4.0.2 - jest-worker@24.9.0: - dependencies: - merge-stream: 2.0.0 - supports-color: 6.1.0 - jest-worker@25.5.0: dependencies: merge-stream: 2.0.0 @@ -26581,32 +25212,23 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@24.9.0: - dependencies: - import-local: 2.0.0 - jest-cli: 24.9.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest@26.6.3: dependencies: '@jest/core': 26.6.3 @@ -26658,38 +25280,6 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} - jsdom@11.12.0: - dependencies: - abab: 2.0.6 - acorn: 5.7.4 - acorn-globals: 4.3.4 - array-equal: 1.0.2 - cssom: 0.3.8 - cssstyle: 1.4.0 - data-urls: 1.1.0 - domexception: 1.0.1 - escodegen: 1.14.3 - html-encoding-sniffer: 1.0.2 - left-pad: 1.3.0 - nwsapi: 2.2.13 - parse5: 4.0.0 - pn: 1.1.0 - request: 2.88.2 - request-promise-native: 1.0.9(request@2.88.2) - sax: 1.4.1 - symbol-tree: 3.2.4 - tough-cookie: 2.5.0 - w3c-hr-time: 1.0.2 - webidl-conversions: 4.0.2 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 6.5.0 - ws: 5.2.4 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - jsdom@16.7.0: dependencies: abab: 2.0.6 @@ -26934,8 +25524,6 @@ snapshots: lcov-parse@1.0.0: {} - left-pad@1.3.0: {} - less-loader@11.1.0(less@3.11.1)(webpack@5.90.1): dependencies: klona: 2.0.6 @@ -26958,11 +25546,6 @@ snapshots: leven@3.1.0: {} - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -27096,13 +25679,6 @@ snapshots: '@lmdb/lmdb-linux-x64': 2.8.5 '@lmdb/lmdb-win32-x64': 2.8.5 - load-json-file@4.0.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -27132,11 +25708,6 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - local-pkg@0.5.0: - dependencies: - mlly: 1.7.2 - pkg-types: 1.2.1 - locale@0.1.0: {} locate-path@3.0.0: @@ -27233,10 +25804,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - loupe@3.1.2: {} lower-case@2.0.2: @@ -27284,11 +25851,6 @@ snapshots: '@babel/types': 7.26.0 source-map-js: 1.2.1 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -27900,13 +26462,6 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.7.2: - dependencies: - acorn: 8.13.0 - pathe: 1.1.2 - pkg-types: 1.2.1 - ufo: 1.5.4 - moment-locales-webpack-plugin@1.2.0(moment@2.29.4)(webpack@5.90.1): dependencies: lodash.difference: 4.5.0 @@ -27989,9 +26544,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.22.0: - optional: true - nanoid@3.3.7: {} nanomatch@1.2.13: @@ -28010,10 +26562,6 @@ snapshots: transitivePeerDependencies: - supports-color - native-url@0.2.6: - dependencies: - querystring: 0.2.1 - natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} @@ -28118,14 +26666,6 @@ snapshots: node-int64@0.4.0: {} - node-notifier@5.4.5: - dependencies: - growly: 1.3.0 - is-wsl: 1.1.0 - semver: 5.7.2 - shellwords: 0.1.1 - which: 1.3.1 - node-notifier@8.0.2: dependencies: growly: 1.3.0 @@ -28426,15 +26966,6 @@ snapshots: opener@1.5.2: {} - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -28502,10 +27033,6 @@ snapshots: p-cancelable@3.0.0: {} - p-each-series@1.0.0: - dependencies: - p-reduce: 1.0.0 - p-each-series@2.2.0: {} p-finally@1.0.0: {} @@ -28522,10 +27049,6 @@ snapshots: dependencies: yocto-queue: 1.1.1 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.1.1 - p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -28555,8 +27078,6 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 - p-reduce@1.0.0: {} - p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 @@ -28607,7 +27128,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.0 + semver: 7.6.3 pacote@12.0.3: dependencies: @@ -28647,75 +27168,21 @@ snapshots: npm-packlist: 7.0.4 npm-pick-manifest: 8.0.2 npm-registry-fetch: 14.0.5 - proc-log: 3.0.0 - promise-retry: 2.0.1 - read-package-json: 6.0.4 - read-package-json-fast: 3.0.2 - sigstore: 1.9.0 - ssri: 10.0.6 - tar: 6.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.0 - - parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2): - dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2): - dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 6.0.4 + read-package-json-fast: 3.0.2 + sigstore: 1.9.0 + ssri: 10.0.6 + tar: 6.2.1 + transitivePeerDependencies: + - bluebird + - supports-color + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.0 parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3): dependencies: @@ -28774,8 +27241,6 @@ snapshots: dependencies: parse-path: 7.0.0 - parse5@4.0.0: {} - parse5@6.0.1: {} parse5@7.2.0: @@ -28822,18 +27287,12 @@ snapshots: path-to-regexp@6.3.0: {} - path-type@3.0.0: - dependencies: - pify: 3.0.0 - path-type@4.0.0: {} path-type@5.0.0: {} pathe@1.1.2: {} - pathval@1.1.1: {} - pathval@2.0.0: {} pause-stream@0.0.11: @@ -28854,16 +27313,10 @@ snapshots: pify@2.3.0: {} - pify@3.0.0: {} - pify@4.0.1: {} pirates@4.0.6: {} - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -28872,18 +27325,10 @@ snapshots: dependencies: find-up: 6.3.0 - pkg-types@1.2.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.2 - pathe: 1.1.2 - pkg-up@3.1.0: dependencies: find-up: 3.0.0 - pn@1.1.0: {} - pnp-webpack-plugin@1.7.0(typescript@5.6.3): dependencies: ts-pnp: 1.2.0(typescript@5.6.3) @@ -29230,8 +27675,6 @@ snapshots: path-exists: 4.0.0 which-pm: 2.2.0 - prelude-ls@1.1.2: {} - prelude-ls@1.2.1: {} prepend-http@2.0.0: {} @@ -29445,8 +27888,6 @@ snapshots: filter-obj: 5.1.0 split-on-first: 3.0.0 - querystring@0.2.1: {} - querystringify@2.2.0: {} queue-microtask@1.2.3: {} @@ -29493,7 +27934,7 @@ snapshots: - typescript - vue-template-compiler - razzle-plugin-scss@4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1))(webpack@5.90.1): + razzle-plugin-scss@4.2.18(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(postcss@8.4.31)(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(type-fest@2.19.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1))(webpack@5.90.1): dependencies: autoprefixer: 10.4.8(postcss@8.4.31) css-loader: 5.2.7(webpack@5.90.1) @@ -29502,7 +27943,7 @@ snapshots: postcss-load-config: 3.1.4(postcss@8.4.31) postcss-loader: 4.3.0(postcss@8.4.31)(webpack@5.90.1) postcss-scss: 3.0.5 - razzle: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) + razzle: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(type-fest@2.19.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) razzle-dev-utils: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) resolve-url-loader: 3.1.5 sass: 1.80.4 @@ -29518,10 +27959,10 @@ snapshots: dependencies: webpack: 5.90.1 - razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1): + razzle@4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(type-fest@2.19.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1): dependencies: '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.26.0) - '@pmmmwh/react-refresh-webpack-plugin': 0.4.3(react-refresh@0.9.0)(sockjs-client@1.4.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) + '@pmmmwh/react-refresh-webpack-plugin': 0.5.15(react-refresh@0.14.2)(sockjs-client@1.4.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) autoprefixer: 10.4.8(postcss@8.4.31) babel-jest: 26.6.3(@babel/core@7.26.0) babel-loader: 8.4.1(@babel/core@7.26.0)(webpack@5.90.1) @@ -29552,7 +27993,7 @@ snapshots: razzle-dev-utils: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) razzle-start-server-webpack-plugin: 4.2.18(webpack@5.90.1) react-dev-utils: 11.0.4(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1) - react-refresh: 0.9.0 + react-refresh: 0.14.2 resolve: 1.22.8 sade: 1.8.1 source-map-support: 0.5.21 @@ -30020,8 +28461,6 @@ snapshots: react-refresh@0.14.2: {} - react-refresh@0.9.0: {} - react-router-config@5.1.1(react-router@5.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.20.6 @@ -30240,23 +28679,12 @@ snapshots: normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 - read-pkg-up@4.0.0: - dependencies: - find-up: 3.0.0 - read-pkg: 3.0.0 - read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - read-pkg@3.0.0: - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -30301,10 +28729,6 @@ snapshots: readdirp@4.0.2: {} - realpath-native@1.1.0: - dependencies: - util.promisify: 1.1.2 - recast@0.23.9: dependencies: ast-types: 0.16.1 @@ -30471,40 +28895,6 @@ snapshots: relateurl@0.2.7: {} - release-it@16.2.1(encoding@0.1.13)(typescript@5.4.2): - dependencies: - '@iarna/toml': 2.2.5 - '@octokit/rest': 19.0.13(encoding@0.1.13) - async-retry: 1.3.3 - chalk: 5.3.0 - cosmiconfig: 8.3.6(typescript@5.4.2) - execa: 7.2.0 - git-url-parse: 13.1.0 - globby: 13.2.2 - got: 13.0.0 - inquirer: 9.2.11 - is-ci: 3.0.1 - issue-parser: 6.0.0 - lodash: 4.17.21 - mime-types: 2.1.35 - new-github-release-url: 2.0.0 - node-fetch: 3.3.2 - open: 9.1.0 - ora: 7.0.1 - os-name: 5.1.0 - promise.allsettled: 1.0.7 - proxy-agent: 6.3.1 - semver: 7.5.4 - shelljs: 0.8.5 - update-notifier: 6.0.2 - url-join: 5.0.0 - wildcard-match: 5.1.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - encoding - - supports-color - - typescript - release-it@16.2.1(encoding@0.1.13)(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -30539,72 +28929,6 @@ snapshots: - supports-color - typescript - release-it@17.1.1(typescript@5.2.2): - dependencies: - '@iarna/toml': 2.2.5 - '@octokit/rest': 20.0.2 - async-retry: 1.3.3 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.2.2) - execa: 8.0.1 - git-url-parse: 14.0.0 - globby: 14.0.1 - got: 13.0.0 - inquirer: 9.2.14 - is-ci: 3.0.1 - issue-parser: 6.0.0 - lodash: 4.17.21 - mime-types: 2.1.35 - new-github-release-url: 2.0.0 - node-fetch: 3.3.2 - open: 10.0.3 - ora: 8.0.1 - os-name: 5.1.0 - promise.allsettled: 1.0.7 - proxy-agent: 6.4.0 - semver: 7.6.0 - shelljs: 0.8.5 - update-notifier: 7.0.0 - url-join: 5.0.0 - wildcard-match: 5.1.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - supports-color - - typescript - - release-it@17.1.1(typescript@5.4.2): - dependencies: - '@iarna/toml': 2.2.5 - '@octokit/rest': 20.0.2 - async-retry: 1.3.3 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.4.2) - execa: 8.0.1 - git-url-parse: 14.0.0 - globby: 14.0.1 - got: 13.0.0 - inquirer: 9.2.14 - is-ci: 3.0.1 - issue-parser: 6.0.0 - lodash: 4.17.21 - mime-types: 2.1.35 - new-github-release-url: 2.0.0 - node-fetch: 3.3.2 - open: 10.0.3 - ora: 8.0.1 - os-name: 5.1.0 - promise.allsettled: 1.0.7 - proxy-agent: 6.4.0 - semver: 7.6.0 - shelljs: 0.8.5 - update-notifier: 7.0.0 - url-join: 5.0.0 - wildcard-match: 5.1.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - supports-color - - typescript - release-it@17.1.1(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -30684,18 +29008,6 @@ snapshots: dependencies: throttleit: 1.0.1 - request-promise-core@1.1.4(request@2.88.2): - dependencies: - lodash: 4.17.21 - request: 2.88.2 - - request-promise-native@1.0.9(request@2.88.2): - dependencies: - request: 2.88.2 - request-promise-core: 1.1.4(request@2.88.2) - stealthy-require: 1.1.1 - tough-cookie: 2.5.0 - request@2.88.2: dependencies: aws-sign2: 0.7.0 @@ -30733,10 +29045,6 @@ snapshots: resolve-alpn@1.2.1: {} - resolve-cwd@2.0.0: - dependencies: - resolve-from: 3.0.0 - resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -30766,8 +29074,6 @@ snapshots: resolve-url@0.2.1: {} - resolve@1.1.7: {} - resolve@1.19.0: dependencies: is-core-module: 2.15.1 @@ -30954,8 +29260,6 @@ snapshots: sax@1.2.4: {} - sax@1.4.1: {} - saxes@5.0.1: dependencies: xmlchars: 2.2.0 @@ -31160,7 +29464,8 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shellwords@0.1.1: {} + shellwords@0.1.1: + optional: true side-channel@1.0.6: dependencies: @@ -31216,8 +29521,6 @@ snapshots: slash@1.0.0: {} - slash@2.0.0: {} - slash@3.0.0: {} slash@4.0.0: {} @@ -31459,10 +29762,6 @@ snapshots: stable@0.1.8: {} - stack-utils@1.0.5: - dependencies: - escape-string-regexp: 2.0.0 - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -31500,8 +29799,6 @@ snapshots: stdin-discarder@0.2.2: {} - stealthy-require@1.1.1: {} - stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 @@ -31524,11 +29821,6 @@ snapshots: string-hash@1.1.3: {} - string-length@2.0.0: - dependencies: - astral-regex: 1.0.0 - strip-ansi: 4.0.0 - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -31536,12 +29828,6 @@ snapshots: string-natural-compare@3.0.1: {} - string-width@3.1.0: - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -31623,14 +29909,6 @@ snapshots: dependencies: ansi-regex: 2.1.1 - strip-ansi@4.0.0: - dependencies: - ansi-regex: 3.0.1 - - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 - strip-ansi@6.0.0: dependencies: ansi-regex: 5.0.1 @@ -31945,13 +30223,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@5.2.3: - dependencies: - glob: 7.1.6 - minimatch: 3.1.2 - read-pkg-up: 4.0.0 - require-main-filename: 2.0.0 - test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -31970,8 +30241,6 @@ snapshots: dependencies: any-promise: 1.3.0 - throat@4.1.0: {} - throat@5.0.0: {} throttleit@1.0.1: {} @@ -32001,14 +30270,10 @@ snapshots: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@0.8.4: {} - tinypool@1.0.1: {} tinyrainbow@1.2.0: {} - tinyspy@2.2.1: {} - tinyspy@3.0.2: {} titleize@3.0.0: {} @@ -32144,7 +30409,7 @@ snapshots: tslib@2.8.0: {} - tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3): dependencies: bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 @@ -32166,7 +30431,7 @@ snapshots: '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) '@swc/core': 1.7.40(@swc/helpers@0.5.13) postcss: 8.4.47 - typescript: 5.4.2 + typescript: 5.6.3 transitivePeerDependencies: - jiti - supports-color @@ -32192,10 +30457,6 @@ snapshots: tweetnacl@0.14.5: {} - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -32259,8 +30520,6 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript@5.2.2: {} - typescript@5.4.2: {} typescript@5.6.3: {} @@ -32269,8 +30528,6 @@ snapshots: uc.micro@1.0.6: {} - ufo@1.5.4: {} - unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -32518,16 +30775,6 @@ snapshots: has-symbols: 1.0.3 object.getownpropertydescriptors: 2.1.8 - util.promisify@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - for-each: 0.3.3 - has-proto: 1.0.3 - has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.8 - safe-array-concat: 1.1.2 - util@0.12.5: dependencies: inherits: 2.0.4 @@ -32606,13 +30853,12 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vite-node@1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite-node@2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -32641,16 +30887,16 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - '@vue/language-core': 1.8.27(typescript@5.4.2) + '@vue/language-core': 1.8.27(typescript@5.6.3) debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 magic-string: 0.30.12 - typescript: 5.4.2 - vue-tsc: 1.8.27(typescript@5.4.2) + typescript: 5.6.3 + vue-tsc: 1.8.27(typescript@5.6.3) optionalDependencies: vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: @@ -32658,6 +30904,19 @@ snapshots: - rollup - supports-color + vite@5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 20.17.2 + fsevents: 2.3.3 + less: 3.11.1 + lightningcss: 1.27.0 + sass: 1.80.4 + terser: 5.36.0 + vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: esbuild: 0.21.5 @@ -32681,34 +30940,34 @@ snapshots: redent: 3.0.0 vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vitest@1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vitest@2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.4 - chai: 4.5.0 - debug: 4.3.4(supports-color@8.1.1) - execa: 8.0.1 - local-pkg: 0.5.0 + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + debug: 4.3.7 magic-string: 0.30.12 pathe: 1.1.2 - picocolors: 1.1.1 std-env: 3.7.0 - strip-literal: 2.1.0 tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 jsdom: 22.1.0 transitivePeerDependencies: - less - lightningcss + - msw - sass - sass-embedded - stylus @@ -32719,7 +30978,7 @@ snapshots: vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) '@vitest/pretty-format': 2.1.3 '@vitest/runner': 2.1.3 '@vitest/snapshot': 2.1.3 @@ -32754,7 +31013,7 @@ snapshots: vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) '@vitest/pretty-format': 2.1.3 '@vitest/runner': 2.1.3 '@vitest/snapshot': 2.1.3 @@ -32804,8 +31063,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: jsdom: 16.7.0 @@ -32826,12 +31085,12 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - vue-tsc@1.8.27(typescript@5.4.2): + vue-tsc@1.8.27(typescript@5.6.3): dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.4.2) + '@vue/language-core': 1.8.27(typescript@5.6.3) semver: 7.6.3 - typescript: 5.4.2 + typescript: 5.6.3 w3c-hr-time@1.0.2: dependencies: @@ -33091,12 +31350,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@6.5.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -33197,12 +31450,6 @@ snapshots: dependencies: microevent.ts: 0.1.1 - wrap-ansi@5.1.0: - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -33223,12 +31470,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.1: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@3.0.3: dependencies: imurmurhash: 0.1.4 @@ -33246,10 +31487,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@5.2.4: - dependencies: - async-limiter: 1.0.1 - ws@7.5.10: {} ws@8.18.0: {} @@ -33274,11 +31511,6 @@ snapshots: yaml@1.10.2: {} - yargs-parser@13.1.2: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 @@ -33288,19 +31520,6 @@ snapshots: yargs-parser@21.1.1: {} - yargs@13.3.2: - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 13.1.2 - yargs@15.4.1: dependencies: cliui: 6.0.0 From c821dbeff8383df773700cf97e2cc43c4985e2b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:29:27 +0100 Subject: [PATCH 45/98] fix test with missing intercept --- cypress/tests/multilingual/multilingual.search.cy.js | 1 + 1 file changed, 1 insertion(+) diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index 7654e51b..10ee90ae 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -68,6 +68,7 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.intercept('GET', `/**/*?expand*`).as('content'); cy.autologin(); From 3b260da8c50c26876537025dc68aa5d3d3cf0861 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:40:10 +0100 Subject: [PATCH 46/98] trigger all tests --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9b2f9d29..2862cf89 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "volto-searchkit-block-dev", "version": "0.4.0", - "description": "Searching with OpenSearch", + "description": "Searching with OpenSearch. Volto UI block with faceted search.", "author": "Katja Süss", "homepage": "https://github.com/rohberg/volto-searchkit-block", "license": "MIT", From 96477f3d27a6cfefcc22be6afba52baa6bb2c818 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:49:32 +0100 Subject: [PATCH 47/98] test with Volto 18.0.0-alpha.46 --- mrs.developer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mrs.developer.json b/mrs.developer.json index 0096e8ea..650e3e1c 100644 --- a/mrs.developer.json +++ b/mrs.developer.json @@ -4,6 +4,6 @@ "package": "@plone/volto", "url": "git@github.com:plone/volto.git", "https": "https://github.com/plone/volto.git", - "tag": "18.0.0-alpha.47" + "tag": "18.0.0-alpha.46" } } From 012fa3a48fe787d8e367a0dff608df736de825cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 14:55:59 +0100 Subject: [PATCH 48/98] test with 18.0.0-alpha.46 --- pnpm-lock.yaml | 2176 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 1970 insertions(+), 206 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c1a619d0..091397d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,7 +40,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) '@plone/registry': specifier: workspace:* version: link:../registry @@ -55,24 +55,24 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.6.3) + version: 17.1.1(typescript@5.4.2) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: 5.4.2 + version: 5.4.2 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/client: dependencies: '@tanstack/react-query': - specifier: ^5.59.0 + specifier: ^5.37.1 version: 5.59.16(react@18.2.0) axios: specifier: ^1.6.7 @@ -89,7 +89,7 @@ importers: devDependencies: '@parcel/config-default': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) '@parcel/core': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) @@ -107,7 +107,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) '@plone/types': specifier: 'workspace: *' version: link:../types @@ -143,7 +143,7 @@ importers: version: 21.1.2 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) react: specifier: ^18.2.0 version: 18.2.0 @@ -152,13 +152,13 @@ importers: version: 18.2.0(react@18.2.0) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.6.3) + version: 17.1.1(typescript@5.4.2) tsup: specifier: ^8.0.2 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2) typescript: - specifier: ^5.4.5 - version: 5.6.3 + specifier: 5.4.2 + version: 5.4.2 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -167,9 +167,9 @@ importers: version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vite-plugin-dts: specifier: ^3.7.3 - version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) vitest: - specifier: ^2.1.3 + specifier: ^2.1.2 version: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) wait-on: specifier: ^7.2.0 @@ -299,13 +299,13 @@ importers: specifier: ^8.0.4 version: 8.3.6 typescript: - specifier: ^5.6.3 + specifier: ^5.4.5 version: 5.6.3 vite: specifier: ^5.4.8 version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest: - specifier: ^2.1.3 + specifier: ^2.1.2 version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest-axe: specifier: ^0.1.0 @@ -397,8 +397,8 @@ importers: specifier: ^3.0.7 version: 3.1.1 jest: - specifier: ^26.6.3 - version: 26.6.3 + specifier: ^24.8.0 + version: 24.9.0 release-it: specifier: ^16.1.3 version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) @@ -419,11 +419,11 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@parcel/packager-ts': - specifier: ^2.12.0 + specifier: 2.12.0 version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) + specifier: 2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) '@plone/types': specifier: workspace:* version: link:../types @@ -434,20 +434,20 @@ importers: specifier: ^18 version: 18.2.12 parcel: - specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + specifier: 2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.6.3) + version: 17.1.1(typescript@5.4.2) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.4.5 - version: 5.6.3 + specifier: 5.4.2 + version: 5.4.2 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/providers: dependencies: @@ -460,22 +460,16 @@ importers: '@plone/registry': specifier: workspace:* version: link:../registry - '@tanstack/react-query': - specifier: ^5.59.0 - version: 5.59.16(react@18.2.0) react: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0 - react-aria-components: - specifier: ^1.4.0 - version: 1.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: '@parcel/config-default': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) '@parcel/core': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) @@ -490,7 +484,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2) '@plone/types': specifier: workspace:* version: link:../types @@ -502,19 +496,19 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.6.3) + version: 17.1.1(typescript@5.2.2) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.4.5 - version: 5.6.3 + specifier: 5.2.2 + version: 5.2.2 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/registry: dependencies: @@ -528,42 +522,27 @@ importers: specifier: 0.10.0 version: 0.10.0 glob: - specifier: ^10.4.5 - version: 10.4.5 - tmp: - specifier: 0.2.1 - version: 0.2.1 + specifier: 7.1.6 + version: 7.1.6 devDependencies: '@parcel/packager-ts': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) '@plone/types': specifier: workspace:* version: link:../types - '@types/debug': - specifier: ^4.1.12 - version: 4.1.12 - '@types/glob': - specifier: ^8.1.0 - version: 8.1.0 - '@types/node': - specifier: ^20 - version: 20.17.2 '@types/react': specifier: ^18 version: 18.2.27 '@types/react-dom': specifier: ^18 version: 18.2.12 - '@types/tmp': - specifier: ^0.2.6 - version: 0.2.6 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) react: specifier: ^18.2.0 version: 18.2.0 @@ -572,19 +551,16 @@ importers: version: 18.2.0(react@18.2.0) release-it: specifier: 16.2.1 - version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) + version: 16.2.1(encoding@0.1.13)(typescript@5.4.2) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.6.3 - version: 5.6.3 - vite: - specifier: ^5.4.8 - version: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: 5.4.2 + version: 5.4.2 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.2 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/scripts: dependencies: @@ -658,7 +634,7 @@ importers: version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2) '@plone/types': specifier: workspace:* version: link:../types @@ -670,19 +646,19 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.6.3) + version: 17.1.1(typescript@5.2.2) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: 5.2.2 + version: 5.2.2 vitest: - specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^1.3.1 + version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/tsconfig: {} @@ -708,13 +684,13 @@ importers: version: 3.12.1(react@18.2.0) release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.6.3) + version: 17.1.1(typescript@5.4.2) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: ^5.6.3 - version: 5.6.3 + specifier: 5.4.2 + version: 5.4.2 core/packages/volto: dependencies: @@ -1329,7 +1305,7 @@ importers: specifier: 9.4.4 version: 9.4.4(typescript@5.6.3)(webpack@5.90.1) typescript: - specifier: ^5.6.3 + specifier: ^5.4.2 version: 5.6.3 use-trace-update: specifier: 1.3.2 @@ -1445,7 +1421,7 @@ importers: version: 10.0.1(cypress@13.13.2) '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) '@testing-library/react': specifier: 12.1.5 version: 12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -2953,14 +2929,26 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} + '@jest/console@24.9.0': + resolution: {integrity: sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==} + engines: {node: '>= 6'} + '@jest/console@26.6.2': resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} engines: {node: '>= 10.14.2'} + '@jest/core@24.9.0': + resolution: {integrity: sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==} + engines: {node: '>= 6'} + '@jest/core@26.6.3': resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} engines: {node: '>= 10.14.2'} + '@jest/environment@24.9.0': + resolution: {integrity: sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==} + engines: {node: '>= 6'} + '@jest/environment@26.6.2': resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} engines: {node: '>= 10.14.2'} @@ -2977,6 +2965,10 @@ packages: resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/fake-timers@24.9.0': + resolution: {integrity: sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==} + engines: {node: '>= 6'} + '@jest/fake-timers@26.6.2': resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} engines: {node: '>= 10.14.2'} @@ -2993,6 +2985,10 @@ packages: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/reporters@24.9.0': + resolution: {integrity: sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==} + engines: {node: '>= 6'} + '@jest/reporters@26.6.2': resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} engines: {node: '>= 10.14.2'} @@ -3001,18 +2997,34 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + '@jest/source-map@24.9.0': + resolution: {integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==} + engines: {node: '>= 6'} + '@jest/source-map@26.6.2': resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} engines: {node: '>= 10.14.2'} + '@jest/test-result@24.9.0': + resolution: {integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==} + engines: {node: '>= 6'} + '@jest/test-result@26.6.2': resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} engines: {node: '>= 10.14.2'} + '@jest/test-sequencer@24.9.0': + resolution: {integrity: sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==} + engines: {node: '>= 6'} + '@jest/test-sequencer@26.6.3': resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} engines: {node: '>= 10.14.2'} + '@jest/transform@24.9.0': + resolution: {integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==} + engines: {node: '>= 6'} + '@jest/transform@26.6.2': resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} @@ -5090,9 +5102,6 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/glob@8.1.0': - resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} - '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -5270,6 +5279,9 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/stack-utils@1.0.1': + resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} + '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -5286,9 +5298,6 @@ packages: '@types/testing-library__react@9.1.3': resolution: {integrity: sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==} - '@types/tmp@0.2.6': - resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} - '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -5455,6 +5464,9 @@ packages: peerDependencies: vitest: 1.6.0 + '@vitest/expect@1.6.0': + resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -5479,18 +5491,30 @@ packages: '@vitest/pretty-format@2.1.3': resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + '@vitest/runner@1.6.0': + resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} + '@vitest/runner@2.1.3': resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + '@vitest/snapshot@1.6.0': + resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} + '@vitest/snapshot@2.1.3': resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + '@vitest/spy@1.6.0': + resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} + '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} '@vitest/spy@2.1.3': resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + '@vitest/utils@1.6.0': + resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} + '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -5592,6 +5616,9 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} + acorn-globals@4.3.4: + resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} + acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} @@ -5608,6 +5635,10 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@6.2.0: + resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} + engines: {node: '>=0.4.0'} + acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} @@ -5616,6 +5647,16 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} + acorn@5.7.4: + resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} + engines: {node: '>=0.4.0'} + hasBin: true + + acorn@6.4.2: + resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} + engines: {node: '>=0.4.0'} + hasBin: true + acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -5697,6 +5738,10 @@ packages: resolution: {integrity: sha512-tH/fSoQp4DrEodDK3QpdiWiZTSe7sBJ9eOqcQBZ0o9HTM+5M/viSEn+sPMoTuPjQQ8n++w3QJoPEjt8LVPcrCg==} engines: {node: '>=4'} + ansi-escapes@3.2.0: + resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} + engines: {node: '>=4'} + ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -5715,6 +5760,10 @@ packages: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -5819,6 +5868,9 @@ packages: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} + array-equal@1.0.2: + resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} + array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -5887,6 +5939,9 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5906,10 +5961,17 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} + astral-regex@1.0.0: + resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} + engines: {node: '>=4'} + astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} + async-limiter@1.0.1: + resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} @@ -5995,6 +6057,12 @@ packages: babel-helper-get-function-arity@6.24.1: resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} + babel-jest@24.9.0: + resolution: {integrity: sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==} + engines: {node: '>= 6'} + peerDependencies: + '@babel/core': ^7.0.0 + babel-jest@26.6.3: resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} @@ -6028,10 +6096,18 @@ packages: babel-plugin-add-module-exports@0.2.1: resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} + babel-plugin-istanbul@5.2.0: + resolution: {integrity: sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==} + engines: {node: '>=6'} + babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} + babel-plugin-jest-hoist@24.9.0: + resolution: {integrity: sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==} + engines: {node: '>= 6'} + babel-plugin-jest-hoist@26.6.2: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} @@ -6086,6 +6162,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0 + babel-preset-jest@24.9.0: + resolution: {integrity: sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==} + engines: {node: '>= 6'} + peerDependencies: + '@babel/core': ^7.0.0 + babel-preset-jest@26.6.2: resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} @@ -6172,6 +6254,9 @@ packages: resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} engines: {node: '>=0.8'} + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -6229,6 +6314,9 @@ packages: browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + browser-resolve@1.11.3: + resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} + browserslist@4.14.2: resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6386,6 +6474,10 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -6423,6 +6515,9 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -6538,6 +6633,9 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} + cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -6711,6 +6809,9 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -6993,6 +7094,9 @@ packages: cssom@0.4.4: resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} + cssstyle@1.4.0: + resolution: {integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==} + cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} @@ -7045,6 +7149,9 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} + data-urls@1.1.0: + resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} + data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -7162,6 +7269,10 @@ packages: resolution: {integrity: sha512-VxZwQ/1+WGQPl5nE67uLhh7OqdrmqI1OazrraO9Bbw/M8Bt6Mol/RxzDA6N6ZgRXpsG/W9PgUj8E1LHHBEq2GQ==} engines: {node: '>=4.0.0'} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -7295,6 +7406,10 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} + detect-newline@2.1.0: + resolution: {integrity: sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==} + engines: {node: '>=0.10.0'} + detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -7313,6 +7428,10 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + diff-sequences@24.9.0: + resolution: {integrity: sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==} + engines: {node: '>= 6'} + diff-sequences@26.6.2: resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} engines: {node: '>= 10.14.2'} @@ -7389,6 +7508,10 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + domexception@1.0.1: + resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} + deprecated: Use your platform's native DOMException instead + domexception@2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} engines: {node: '>=8'} @@ -7464,6 +7587,9 @@ packages: emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} + emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7631,6 +7757,11 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + escodegen@1.14.3: + resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} + engines: {node: '>=4.0'} + hasBin: true + escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -7910,6 +8041,10 @@ packages: resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} + expect@24.9.0: + resolution: {integrity: sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==} + engines: {node: '>= 6'} + expect@26.6.2: resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} engines: {node: '>= 10.14.2'} @@ -8043,6 +8178,9 @@ packages: resolution: {integrity: sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==} engines: {node: '>= 10'} + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -8253,6 +8391,12 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + fsevents@1.2.13: + resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} + engines: {node: '>= 4.0'} + os: [darwin] + deprecated: Upgrade to fsevents v2 to mitigate potential security issues + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -8294,6 +8438,9 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -8631,6 +8778,9 @@ packages: hsla-regex@1.0.0: resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} + html-encoding-sniffer@1.0.2: + resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} + html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -8858,6 +9008,11 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} + import-local@2.0.0: + resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} + engines: {node: '>=6'} + hasBin: true + import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -9061,6 +9216,10 @@ packages: is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -9259,6 +9418,10 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} + is-wsl@1.1.0: + resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} + engines: {node: '>=4'} + is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -9312,10 +9475,18 @@ packages: resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} engines: {node: '>=10.13'} + istanbul-lib-coverage@2.0.5: + resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} + engines: {node: '>=6'} + istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} + istanbul-lib-instrument@3.3.0: + resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} + engines: {node: '>=6'} + istanbul-lib-instrument@4.0.3: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} @@ -9324,10 +9495,18 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} + istanbul-lib-report@2.0.8: + resolution: {integrity: sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==} + engines: {node: '>=6'} + istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} + istanbul-lib-source-maps@3.0.6: + resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} + engines: {node: '>=6'} + istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} @@ -9336,6 +9515,10 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} + istanbul-reports@2.2.7: + resolution: {integrity: sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==} + engines: {node: '>=6'} + istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} @@ -9362,15 +9545,28 @@ packages: resolution: {integrity: sha512-4kNcNn7J0jPO4jANEYZOHeQ/tSBvkXS+MxTbX1CKbXGd0+ZbRGDn/v/8IYWI/MmYX15iLVyYRnRev9X3ksePWA==} engines: {node: '>= 14.0.0'} + jest-changed-files@24.9.0: + resolution: {integrity: sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==} + engines: {node: '>= 6'} + jest-changed-files@26.6.2: resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} engines: {node: '>= 10.14.2'} + jest-cli@24.9.0: + resolution: {integrity: sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==} + engines: {node: '>= 6'} + hasBin: true + jest-cli@26.6.3: resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} engines: {node: '>= 10.14.2'} hasBin: true + jest-config@24.9.0: + resolution: {integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==} + engines: {node: '>= 6'} + jest-config@26.6.3: resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} engines: {node: '>= 10.14.2'} @@ -9380,6 +9576,10 @@ packages: ts-node: optional: true + jest-diff@24.9.0: + resolution: {integrity: sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==} + engines: {node: '>= 6'} + jest-diff@26.6.2: resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} engines: {node: '>= 10.14.2'} @@ -9388,18 +9588,34 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-docblock@24.9.0: + resolution: {integrity: sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==} + engines: {node: '>= 6'} + jest-docblock@26.0.0: resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} engines: {node: '>= 10.14.2'} + jest-each@24.9.0: + resolution: {integrity: sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==} + engines: {node: '>= 6'} + jest-each@26.6.2: resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} engines: {node: '>= 10.14.2'} + jest-environment-jsdom@24.9.0: + resolution: {integrity: sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==} + engines: {node: '>= 6'} + jest-environment-jsdom@26.6.2: resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} engines: {node: '>= 10.14.2'} + jest-environment-node@24.9.0: + resolution: {integrity: sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==} + engines: {node: '>= 6'} + jest-environment-node@26.6.2: resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} engines: {node: '>= 10.14.2'} @@ -9407,6 +9623,10 @@ packages: jest-file@1.0.0: resolution: {integrity: sha512-QqcbPCfpVCxixoF0gia825AGBGXYWVi4cQpLsXBQVxkWswnZ39XHpT490NvTMtokY6v6BM+vw8rlhtjORabplA==} + jest-get-type@24.9.0: + resolution: {integrity: sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==} + engines: {node: '>= 6'} + jest-get-type@26.3.0: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} @@ -9415,6 +9635,10 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-haste-map@24.9.0: + resolution: {integrity: sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==} + engines: {node: '>= 6'} + jest-haste-map@26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} @@ -9423,14 +9647,26 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-jasmine2@24.9.0: + resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==} + engines: {node: '>= 6'} + jest-jasmine2@26.6.3: resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} engines: {node: '>= 10.14.2'} + jest-leak-detector@24.9.0: + resolution: {integrity: sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==} + engines: {node: '>= 6'} + jest-leak-detector@26.6.2: resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} engines: {node: '>= 10.14.2'} + jest-matcher-utils@24.9.0: + resolution: {integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==} + engines: {node: '>= 6'} + jest-matcher-utils@26.6.2: resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} engines: {node: '>= 10.14.2'} @@ -9443,6 +9679,10 @@ packages: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-message-util@24.9.0: + resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==} + engines: {node: '>= 6'} + jest-message-util@26.6.2: resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} engines: {node: '>= 10.14.2'} @@ -9451,6 +9691,10 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-mock@24.9.0: + resolution: {integrity: sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==} + engines: {node: '>= 6'} + jest-mock@26.6.2: resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} engines: {node: '>= 10.14.2'} @@ -9468,6 +9712,10 @@ packages: jest-resolve: optional: true + jest-regex-util@24.9.0: + resolution: {integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==} + engines: {node: '>= 6'} + jest-regex-util@26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} @@ -9476,27 +9724,52 @@ packages: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-resolve-dependencies@24.9.0: + resolution: {integrity: sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==} + engines: {node: '>= 6'} + jest-resolve-dependencies@26.6.3: resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} engines: {node: '>= 10.14.2'} + jest-resolve@24.9.0: + resolution: {integrity: sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==} + engines: {node: '>= 6'} + jest-resolve@26.6.2: resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} engines: {node: '>= 10.14.2'} + jest-runner@24.9.0: + resolution: {integrity: sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==} + engines: {node: '>= 6'} + jest-runner@26.6.3: resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} engines: {node: '>= 10.14.2'} + jest-runtime@24.9.0: + resolution: {integrity: sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==} + engines: {node: '>= 6'} + hasBin: true + jest-runtime@26.6.3: resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} engines: {node: '>= 10.14.2'} hasBin: true + jest-serializer@24.9.0: + resolution: {integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==} + engines: {node: '>= 6'} + jest-serializer@26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} + jest-snapshot@24.9.0: + resolution: {integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==} + engines: {node: '>= 6'} + jest-snapshot@26.6.2: resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} engines: {node: '>= 10.14.2'} @@ -9505,6 +9778,10 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-util@24.9.0: + resolution: {integrity: sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==} + engines: {node: '>= 6'} + jest-util@26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} engines: {node: '>= 10.14.2'} @@ -9513,14 +9790,26 @@ packages: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest-validate@24.9.0: + resolution: {integrity: sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==} + engines: {node: '>= 6'} + jest-validate@26.6.2: resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} engines: {node: '>= 10.14.2'} + jest-watcher@24.9.0: + resolution: {integrity: sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==} + engines: {node: '>= 6'} + jest-watcher@26.6.2: resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} engines: {node: '>= 10.14.2'} + jest-worker@24.9.0: + resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} + engines: {node: '>= 6'} + jest-worker@25.5.0: resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} engines: {node: '>= 8.3'} @@ -9537,6 +9826,11 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jest@24.9.0: + resolution: {integrity: sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==} + engines: {node: '>= 6'} + hasBin: true + jest@26.6.3: resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} engines: {node: '>= 10.14.2'} @@ -9591,6 +9885,9 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} + jsdom@11.12.0: + resolution: {integrity: sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==} + jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -9784,6 +10081,10 @@ packages: resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} hasBin: true + left-pad@1.3.0: + resolution: {integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==} + deprecated: use String.prototype.padStart() + less-loader@11.1.0: resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} engines: {node: '>= 14.15.0'} @@ -9800,6 +10101,10 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -9960,6 +10265,10 @@ packages: resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} hasBin: true + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -9984,6 +10293,10 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} + local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + locale@0.1.0: resolution: {integrity: sha512-rY3ZMnUkMfaZEix1fp/pjdwsHJkDQcE0UEcXHuYI77J03K8gddL3iD+UuJCLAmT2Z2oz5A70/0QS4J9OLCCvXw==} engines: {node: '>0.8.x'} @@ -10094,6 +10407,9 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} @@ -10147,6 +10463,10 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} + make-dir@2.1.0: + resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} + engines: {node: '>=6'} + make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -10541,6 +10861,9 @@ packages: engines: {node: '>=10'} hasBin: true + mlly@1.7.2: + resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} + moment-locales-webpack-plugin@1.2.0: resolution: {integrity: sha512-QAi5v0OlPUP7GXviKMtxnpBAo8WmTHrUNN7iciAhNOEAd9evCOvuN0g1N7ThIg3q11GLCkjY1zQ2saRcf/43nQ==} peerDependencies: @@ -10606,6 +10929,9 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nan@2.22.0: + resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -10706,6 +11032,9 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} + node-notifier@5.4.5: + resolution: {integrity: sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==} + node-notifier@8.0.2: resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} @@ -10957,6 +11286,10 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -10999,6 +11332,10 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} + p-each-series@1.0.0: + resolution: {integrity: sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA==} + engines: {node: '>=4'} + p-each-series@2.2.0: resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} engines: {node: '>=8'} @@ -11019,6 +11356,10 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -11047,6 +11388,10 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} + p-reduce@1.0.0: + resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==} + engines: {node: '>=4'} + p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -11122,6 +11467,9 @@ packages: parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} + parse5@4.0.0: + resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} + parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -11186,6 +11534,10 @@ packages: path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11197,6 +11549,9 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -11228,6 +11583,10 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -11236,6 +11595,10 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} + pkg-dir@3.0.0: + resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} + engines: {node: '>=6'} + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -11244,10 +11607,16 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} + pkg-types@1.2.1: + resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} + pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} + pn@1.1.0: + resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} + pnp-webpack-plugin@1.7.0: resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} engines: {node: '>=6'} @@ -11531,7 +11900,11 @@ packages: resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} engines: {node: '>=10'} - prelude-ls@1.2.1: + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -12194,10 +12567,18 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} deprecated: This package is no longer supported. Please use @npmcli/package-json instead. + read-pkg-up@4.0.0: + resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} + engines: {node: '>=6'} + read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -12225,6 +12606,10 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} + realpath-native@1.1.0: + resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==} + engines: {node: '>=4'} + recast@0.23.9: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} @@ -12395,6 +12780,19 @@ packages: request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + request-promise-core@1.1.4: + resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} + engines: {node: '>=0.10.0'} + peerDependencies: + request: ^2.34 + + request-promise-native@1.0.9: + resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} + engines: {node: '>=0.12.0'} + deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 + peerDependencies: + request: ^2.34 + request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -12424,6 +12822,10 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + resolve-cwd@2.0.0: + resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} + engines: {node: '>=4'} + resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -12454,6 +12856,9 @@ packages: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated + resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} @@ -12827,6 +13232,10 @@ packages: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} + slash@2.0.0: + resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} + engines: {node: '>=6'} + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -13018,6 +13427,10 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' + stack-utils@1.0.5: + resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} + engines: {node: '>=8'} + stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -13056,6 +13469,10 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} + stealthy-require@1.1.1: + resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} + engines: {node: '>=0.10.0'} + stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -13078,6 +13495,10 @@ packages: string-hash@1.1.3: resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} + string-length@2.0.0: + resolution: {integrity: sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==} + engines: {node: '>=4'} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -13085,6 +13506,10 @@ packages: string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} + string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -13133,6 +13558,14 @@ packages: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@5.2.0: + resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} + engines: {node: '>=6'} + strip-ansi@6.0.0: resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} engines: {node: '>=8'} @@ -13394,6 +13827,10 @@ packages: engines: {node: '>=10'} hasBin: true + test-exclude@5.2.3: + resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} + engines: {node: '>=6'} + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -13412,6 +13849,9 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + throat@4.1.0: + resolution: {integrity: sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==} + throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} @@ -13449,6 +13889,10 @@ packages: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} + tinypool@0.8.4: + resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} + engines: {node: '>=14.0.0'} + tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -13457,6 +13901,10 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} + tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -13640,6 +14088,10 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -13702,6 +14154,11 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -13719,6 +14176,9 @@ packages: uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -14000,6 +14460,11 @@ packages: resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} engines: {node: '>= 0.10'} + vite-node@1.6.0: + resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + vite-node@2.1.3: resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14051,6 +14516,31 @@ packages: peerDependencies: vitest: '>=0.16.0' + vitest@1.6.0: + resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.6.0 + '@vitest/ui': 1.6.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + vitest@2.1.3: resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14263,6 +14753,9 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@6.5.0: + resolution: {integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==} + whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -14340,6 +14833,10 @@ packages: worker-rpc@0.1.1: resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} + wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -14355,6 +14852,9 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + write-file-atomic@2.4.1: + resolution: {integrity: sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==} + write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -14366,6 +14866,17 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + ws@5.2.4: + resolution: {integrity: sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -14424,6 +14935,9 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} + yargs-parser@13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -14436,6 +14950,9 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs@13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} @@ -15993,6 +16510,12 @@ snapshots: '@istanbuljs/schema@0.1.3': {} + '@jest/console@24.9.0': + dependencies: + '@jest/source-map': 24.9.0 + chalk: 2.4.2 + slash: 2.0.0 + '@jest/console@26.6.2': dependencies: '@jest/types': 26.6.2 @@ -16002,6 +16525,41 @@ snapshots: jest-util: 26.6.2 slash: 3.0.0 + '@jest/core@24.9.0': + dependencies: + '@jest/console': 24.9.0 + '@jest/reporters': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + ansi-escapes: 3.2.0 + chalk: 2.4.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-changed-files: 24.9.0 + jest-config: 24.9.0 + jest-haste-map: 24.9.0 + jest-message-util: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-resolve-dependencies: 24.9.0 + jest-runner: 24.9.0 + jest-runtime: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + jest-watcher: 24.9.0 + micromatch: 3.1.10 + p-each-series: 1.0.0 + realpath-native: 1.1.0 + rimraf: 2.7.1 + slash: 2.0.0 + strip-ansi: 5.2.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@jest/core@26.6.3': dependencies: '@jest/console': 26.6.2 @@ -16039,6 +16597,15 @@ snapshots: - ts-node - utf-8-validate + '@jest/environment@24.9.0': + dependencies: + '@jest/fake-timers': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + transitivePeerDependencies: + - supports-color + '@jest/environment@26.6.2': dependencies: '@jest/fake-timers': 26.6.2 @@ -16064,6 +16631,14 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/fake-timers@24.9.0': + dependencies: + '@jest/types': 24.9.0 + jest-message-util: 24.9.0 + jest-mock: 24.9.0 + transitivePeerDependencies: + - supports-color + '@jest/fake-timers@26.6.2': dependencies: '@jest/types': 26.6.2 @@ -16097,6 +16672,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/reporters@24.9.0': + dependencies: + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + glob: 7.1.6 + istanbul-lib-coverage: 2.0.5 + istanbul-lib-instrument: 3.3.0 + istanbul-lib-report: 2.0.8 + istanbul-lib-source-maps: 3.0.6 + istanbul-reports: 2.2.7 + jest-haste-map: 24.9.0 + jest-resolve: 24.9.0 + jest-runtime: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + node-notifier: 5.4.5 + slash: 2.0.0 + source-map: 0.6.1 + string-length: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@jest/reporters@26.6.2': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -16132,12 +16735,24 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 + '@jest/source-map@24.9.0': + dependencies: + callsites: 3.1.0 + graceful-fs: 4.2.11 + source-map: 0.6.1 + '@jest/source-map@26.6.2': dependencies: callsites: 3.1.0 graceful-fs: 4.2.11 source-map: 0.6.1 + '@jest/test-result@24.9.0': + dependencies: + '@jest/console': 24.9.0 + '@jest/types': 24.9.0 + '@types/istanbul-lib-coverage': 2.0.6 + '@jest/test-result@26.6.2': dependencies: '@jest/console': 26.6.2 @@ -16145,6 +16760,17 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + '@jest/test-sequencer@24.9.0': + dependencies: + '@jest/test-result': 24.9.0 + jest-haste-map: 24.9.0 + jest-runner: 24.9.0 + jest-runtime: 24.9.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + '@jest/test-sequencer@26.6.3': dependencies: '@jest/test-result': 26.6.2 @@ -16159,6 +16785,27 @@ snapshots: - ts-node - utf-8-validate + '@jest/transform@24.9.0': + dependencies: + '@babel/core': 7.26.0 + '@jest/types': 24.9.0 + babel-plugin-istanbul: 5.2.0 + chalk: 2.4.2 + convert-source-map: 1.9.0 + fast-json-stable-stringify: 2.1.0 + graceful-fs: 4.2.11 + jest-haste-map: 24.9.0 + jest-regex-util: 24.9.0 + jest-util: 24.9.0 + micromatch: 3.1.10 + pirates: 4.0.6 + realpath-native: 1.1.0 + slash: 2.0.0 + source-map: 0.6.1 + write-file-atomic: 2.4.1 + transitivePeerDependencies: + - supports-color + '@jest/transform@26.6.2': dependencies: '@babel/core': 7.26.0 @@ -16830,6 +17477,96 @@ snapshots: - '@parcel/core' - '@swc/helpers' + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': + dependencies: + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': + dependencies: + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': dependencies: '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -16992,10 +17729,10 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': dependencies: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 @@ -17011,30 +17748,68 @@ snapshots: - typescript - uncss - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': dependencies: - '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2) + nullthrows: 1.1.1 + posthtml: 0.16.6 svgo: 2.8.0 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - - '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/diagnostic': 2.12.0 + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) + nullthrows: 1.1.1 + posthtml: 0.16.6 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/optimizer-swc@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + dependencies: + '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 @@ -17392,6 +18167,32 @@ snapshots: - '@parcel/core' - '@swc/helpers' + '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.2.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.2.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.4.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3)': dependencies: '@parcel/diagnostic': 2.12.0 @@ -17405,19 +18206,42 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3)': + '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2)': dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.6.3) + '@parcel/ts-utils': 2.12.0(typescript@5.2.2) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - typescript: 5.6.3 + typescript: 5.2.2 + transitivePeerDependencies: + - '@parcel/core' + - '@swc/helpers' + + '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2)': + dependencies: + '@parcel/diagnostic': 2.12.0 + '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) + '@parcel/source-map': 2.1.1 + '@parcel/ts-utils': 2.12.0(typescript@5.4.2) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + typescript: 5.4.2 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' + '@parcel/ts-utils@2.12.0(typescript@5.2.2)': + dependencies: + nullthrows: 1.1.1 + typescript: 5.2.2 + + '@parcel/ts-utils@2.12.0(typescript@5.4.2)': + dependencies: + nullthrows: 1.1.1 + typescript: 5.4.2 + '@parcel/ts-utils@2.12.0(typescript@5.6.3)': dependencies: nullthrows: 1.1.1 @@ -19332,21 +20156,6 @@ snapshots: '@types/jest': 29.5.14 vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3)': - dependencies: - '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.20.6 - aria-query: 5.3.2 - chalk: 3.0.0 - css.escape: 1.5.1 - dom-accessibility-api: 0.6.3 - lodash: 4.17.21 - redent: 3.0.0 - optionalDependencies: - '@jest/globals': 29.7.0 - '@types/jest': 29.5.14 - vitest: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 @@ -19523,11 +20332,6 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 20.17.2 - '@types/glob@8.1.0': - dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 20.17.2 - '@types/graceful-fs@4.1.9': dependencies: '@types/node': 20.17.2 @@ -19719,6 +20523,8 @@ snapshots: dependencies: '@types/node': 20.17.2 + '@types/stack-utils@1.0.1': {} + '@types/stack-utils@2.0.3': {} '@types/testing-library__dom@6.14.0': @@ -19739,8 +20545,6 @@ snapshots: '@types/testing-library__dom': 7.5.0 pretty-format: 25.5.0 - '@types/tmp@0.2.6': {} - '@types/unist@3.0.3': {} '@types/use-sync-external-store@0.0.3': {} @@ -19750,7 +20554,7 @@ snapshots: '@types/vinyl@2.0.12': dependencies: '@types/expect': 1.20.4 - '@types/node': 20.17.2 + '@types/node': 22.8.1 '@types/ws@8.5.12': dependencies: @@ -19999,6 +20803,12 @@ snapshots: transitivePeerDependencies: - supports-color + '@vitest/expect@1.6.0': + dependencies: + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + chai: 4.5.0 + '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -20013,21 +20823,13 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': - dependencies: - '@vitest/spy': 2.1.3 - estree-walker: 3.0.3 - magic-string: 0.30.12 - optionalDependencies: - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': dependencies: '@vitest/spy': 2.1.3 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) '@vitest/pretty-format@2.0.5': dependencies: @@ -20037,17 +20839,33 @@ snapshots: dependencies: tinyrainbow: 1.2.0 + '@vitest/runner@1.6.0': + dependencies: + '@vitest/utils': 1.6.0 + p-limit: 5.0.0 + pathe: 1.1.2 + '@vitest/runner@2.1.3': dependencies: '@vitest/utils': 2.1.3 pathe: 1.1.2 + '@vitest/snapshot@1.6.0': + dependencies: + magic-string: 0.30.12 + pathe: 1.1.2 + pretty-format: 29.7.0 + '@vitest/snapshot@2.1.3': dependencies: '@vitest/pretty-format': 2.1.3 magic-string: 0.30.12 pathe: 1.1.2 + '@vitest/spy@1.6.0': + dependencies: + tinyspy: 2.2.1 + '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -20056,6 +20874,13 @@ snapshots: dependencies: tinyspy: 3.0.2 + '@vitest/utils@1.6.0': + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -20095,7 +20920,7 @@ snapshots: '@vue/compiler-core': 3.5.12 '@vue/shared': 3.5.12 - '@vue/language-core@1.8.27(typescript@5.6.3)': + '@vue/language-core@1.8.27(typescript@5.4.2)': dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 @@ -20107,7 +20932,7 @@ snapshots: path-browserify: 1.0.1 vue-template-compiler: 2.7.16 optionalDependencies: - typescript: 5.6.3 + typescript: 5.4.2 '@vue/shared@3.5.12': {} @@ -20206,6 +21031,11 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-globals@4.3.4: + dependencies: + acorn: 6.4.2 + acorn-walk: 6.2.0 + acorn-globals@6.0.0: dependencies: acorn: 7.4.1 @@ -20228,12 +21058,18 @@ snapshots: dependencies: acorn: 8.13.0 + acorn-walk@6.2.0: {} + acorn-walk@7.2.0: {} acorn-walk@8.3.4: dependencies: acorn: 8.13.0 + acorn@5.7.4: {} + + acorn@6.4.2: {} + acorn@7.4.1: {} acorn@8.13.0: {} @@ -20320,6 +21156,8 @@ snapshots: ansi-escapes@2.0.0: {} + ansi-escapes@3.2.0: {} + ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -20330,6 +21168,8 @@ snapshots: ansi-regex@2.1.1: {} + ansi-regex@3.0.1: {} + ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} @@ -20416,6 +21256,8 @@ snapshots: array-differ@3.0.0: {} + array-equal@1.0.2: {} + array-flatten@1.1.1: {} array-includes@3.1.8: @@ -20521,6 +21363,8 @@ snapshots: assert-plus@1.0.0: {} + assertion-error@1.1.0: {} + assertion-error@2.0.1: {} assign-symbols@1.0.0: {} @@ -20535,8 +21379,12 @@ snapshots: dependencies: tslib: 2.8.0 + astral-regex@1.0.0: {} + astral-regex@2.0.0: {} + async-limiter@1.0.1: {} + async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -20632,6 +21480,19 @@ snapshots: babel-runtime: 6.26.0 babel-types: 6.26.0 + babel-jest@24.9.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + '@types/babel__core': 7.20.5 + babel-plugin-istanbul: 5.2.0 + babel-preset-jest: 24.9.0(@babel/core@7.26.0) + chalk: 2.4.2 + slash: 2.0.0 + transitivePeerDependencies: + - supports-color + babel-jest@26.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -20675,6 +21536,15 @@ snapshots: babel-plugin-add-module-exports@0.2.1: {} + babel-plugin-istanbul@5.2.0: + dependencies: + '@babel/helper-plugin-utils': 7.25.9 + find-up: 3.0.0 + istanbul-lib-instrument: 3.3.0 + test-exclude: 5.2.3 + transitivePeerDependencies: + - supports-color + babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -20685,6 +21555,10 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-jest-hoist@24.9.0: + dependencies: + '@types/babel__traverse': 7.20.6 + babel-plugin-jest-hoist@26.6.2: dependencies: '@babel/template': 7.25.9 @@ -20787,6 +21661,12 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) + babel-preset-jest@24.9.0(@babel/core@7.26.0): + dependencies: + '@babel/core': 7.26.0 + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) + babel-plugin-jest-hoist: 24.9.0 + babel-preset-jest@26.6.2(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -20950,6 +21830,11 @@ snapshots: binaryextensions@4.19.0: {} + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + optional: true + bl@4.1.0: dependencies: buffer: 5.7.1 @@ -21050,6 +21935,10 @@ snapshots: browser-process-hrtime@1.0.0: {} + browser-resolve@1.11.3: + dependencies: + resolve: 1.1.7 + browserslist@4.14.2: dependencies: caniuse-lite: 1.0.30001671 @@ -21294,6 +22183,16 @@ snapshots: ccount@2.0.1: {} + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -21336,6 +22235,10 @@ snapshots: chardet@0.7.0: {} + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + check-error@2.1.1: {} check-more-types@2.24.0: {} @@ -21432,6 +22335,12 @@ snapshots: client-only@0.0.1: {} + cliui@5.0.0: + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + cliui@6.0.0: dependencies: string-width: 4.2.3 @@ -21586,6 +22495,8 @@ snapshots: concat-map@0.0.1: {} + confbox@0.1.8: {} + config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -21714,6 +22625,15 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.4.2): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.4.2 + cosmiconfig@8.3.6(typescript@5.6.3): dependencies: import-fresh: 3.3.0 @@ -21723,6 +22643,24 @@ snapshots: optionalDependencies: typescript: 5.6.3 + cosmiconfig@9.0.0(typescript@5.2.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.2.2 + + cosmiconfig@9.0.0(typescript@5.4.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.4.2 + cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 @@ -21935,6 +22873,10 @@ snapshots: cssom@0.4.4: {} + cssstyle@1.4.0: + dependencies: + cssom: 0.3.8 + cssstyle@2.3.0: dependencies: cssom: 0.3.8 @@ -22021,6 +22963,12 @@ snapshots: data-uri-to-buffer@6.0.2: {} + data-urls@1.1.0: + dependencies: + abab: 2.0.6 + whatwg-mimetype: 2.3.0 + whatwg-url: 7.1.0 + data-urls@2.0.0: dependencies: abab: 2.0.6 @@ -22113,6 +23061,10 @@ snapshots: deep-copy@1.4.2: {} + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + deep-eql@5.0.2: {} deep-equal@2.2.3: @@ -22238,6 +23190,8 @@ snapshots: detect-libc@2.0.3: {} + detect-newline@2.1.0: {} + detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -22258,6 +23212,8 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 + diff-sequences@24.9.0: {} + diff-sequences@26.6.2: {} diff-sequences@29.6.3: {} @@ -22329,6 +23285,10 @@ snapshots: domelementtype@2.3.0: {} + domexception@1.0.1: + dependencies: + webidl-conversions: 4.0.2 + domexception@2.0.1: dependencies: webidl-conversions: 5.0.0 @@ -22398,6 +23358,8 @@ snapshots: emoji-regex@10.4.0: {} + emoji-regex@7.0.3: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -22689,6 +23651,15 @@ snapshots: escape-string-regexp@5.0.0: {} + escodegen@1.14.3: + dependencies: + esprima: 4.0.1 + estraverse: 4.3.0 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.6.1 + escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -23158,6 +24129,17 @@ snapshots: transitivePeerDependencies: - supports-color + expect@24.9.0: + dependencies: + '@jest/types': 24.9.0 + ansi-styles: 3.2.1 + jest-get-type: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-regex-util: 24.9.0 + transitivePeerDependencies: + - supports-color + expect@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -23347,6 +24329,9 @@ snapshots: dependencies: tslib: 2.8.0 + file-uri-to-path@1.0.0: + optional: true + filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -23594,6 +24579,12 @@ snapshots: fs.realpath@1.0.0: {} + fsevents@1.2.13: + dependencies: + bindings: 1.5.0 + nan: 2.22.0 + optional: true + fsevents@2.3.3: optional: true @@ -23641,6 +24632,8 @@ snapshots: get-east-asian-width@1.3.0: {} + get-func-name@2.0.2: {} + get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -23907,8 +24900,7 @@ snapshots: grouped-queue@2.0.0: {} - growly@1.3.0: - optional: true + growly@1.3.0: {} gzip-size@5.1.1: dependencies: @@ -24041,6 +25033,10 @@ snapshots: hsla-regex@1.0.0: {} + html-encoding-sniffer@1.0.2: + dependencies: + whatwg-encoding: 1.0.5 + html-encoding-sniffer@2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -24074,9 +25070,9 @@ snapshots: tapable: 2.2.1 webpack: 5.90.1 - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3): + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2): dependencies: - cosmiconfig: 9.0.0(typescript@5.6.3) + cosmiconfig: 9.0.0(typescript@5.2.2) posthtml: 0.16.6 timsort: 0.3.0 optionalDependencies: @@ -24087,11 +25083,37 @@ snapshots: transitivePeerDependencies: - typescript - htmlparser2@6.1.0: + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2): dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 + cosmiconfig: 9.0.0(typescript@5.4.2) + posthtml: 0.16.6 + timsort: 0.3.0 + optionalDependencies: + postcss: 8.4.47 + relateurl: 0.2.7 + svgo: 2.8.0 + terser: 5.36.0 + transitivePeerDependencies: + - typescript + + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3): + dependencies: + cosmiconfig: 9.0.0(typescript@5.6.3) + posthtml: 0.16.6 + timsort: 0.3.0 + optionalDependencies: + postcss: 8.4.47 + relateurl: 0.2.7 + svgo: 2.8.0 + terser: 5.36.0 + transitivePeerDependencies: + - typescript + + htmlparser2@6.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 entities: 2.2.0 htmlparser2@7.2.0: @@ -24281,6 +25303,11 @@ snapshots: import-lazy@4.0.0: {} + import-local@2.0.0: + dependencies: + pkg-dir: 3.0.0 + resolve-cwd: 2.0.0 + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -24524,6 +25551,8 @@ snapshots: dependencies: call-bind: 1.0.7 + is-fullwidth-code-point@2.0.0: {} + is-fullwidth-code-point@3.0.0: {} is-generator-fn@2.1.0: {} @@ -24663,6 +25692,8 @@ snapshots: is-windows@1.0.2: {} + is-wsl@1.1.0: {} + is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -24708,8 +25739,22 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 + istanbul-lib-coverage@2.0.5: {} + istanbul-lib-coverage@3.2.2: {} + istanbul-lib-instrument@3.3.0: + dependencies: + '@babel/generator': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.20.5 + istanbul-lib-coverage: 2.0.5 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + istanbul-lib-instrument@4.0.3: dependencies: '@babel/core': 7.26.0 @@ -24729,12 +25774,28 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-lib-report@2.0.8: + dependencies: + istanbul-lib-coverage: 2.0.5 + make-dir: 2.1.0 + supports-color: 6.1.0 + istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + istanbul-lib-source-maps@3.0.6: + dependencies: + debug: 4.3.4(supports-color@8.1.1) + istanbul-lib-coverage: 2.0.5 + make-dir: 2.1.0 + rimraf: 2.7.1 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4(supports-color@8.1.1) @@ -24751,6 +25812,10 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-reports@2.2.7: + dependencies: + html-escaper: 2.0.2 + istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 @@ -24791,12 +25856,38 @@ snapshots: jest-matcher-utils: 29.2.2 lodash.merge: 4.6.2 + jest-changed-files@24.9.0: + dependencies: + '@jest/types': 24.9.0 + execa: 1.0.0 + throat: 4.1.0 + jest-changed-files@26.6.2: dependencies: '@jest/types': 26.6.2 execa: 4.1.0 throat: 5.0.0 + jest-cli@24.9.0: + dependencies: + '@jest/core': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + import-local: 2.0.0 + is-ci: 2.0.0 + jest-config: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + prompts: 2.4.2 + realpath-native: 1.1.0 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-cli@26.6.3: dependencies: '@jest/core': 26.6.3 @@ -24819,6 +25910,30 @@ snapshots: - ts-node - utf-8-validate + jest-config@24.9.0: + dependencies: + '@babel/core': 7.26.0 + '@jest/test-sequencer': 24.9.0 + '@jest/types': 24.9.0 + babel-jest: 24.9.0(@babel/core@7.26.0) + chalk: 2.4.2 + glob: 7.1.6 + jest-environment-jsdom: 24.9.0 + jest-environment-node: 24.9.0 + jest-get-type: 24.9.0 + jest-jasmine2: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + micromatch: 3.1.10 + pretty-format: 24.9.0 + realpath-native: 1.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-config@26.6.3: dependencies: '@babel/core': 7.26.0 @@ -24845,6 +25960,13 @@ snapshots: - supports-color - utf-8-validate + jest-diff@24.9.0: + dependencies: + chalk: 2.4.2 + diff-sequences: 24.9.0 + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + jest-diff@26.6.2: dependencies: chalk: 4.1.2 @@ -24859,10 +25981,24 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-docblock@24.9.0: + dependencies: + detect-newline: 2.1.0 + jest-docblock@26.0.0: dependencies: detect-newline: 3.1.0 + jest-each@24.9.0: + dependencies: + '@jest/types': 24.9.0 + chalk: 2.4.2 + jest-get-type: 24.9.0 + jest-util: 24.9.0 + pretty-format: 24.9.0 + transitivePeerDependencies: + - supports-color + jest-each@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -24871,6 +26007,19 @@ snapshots: jest-util: 26.6.2 pretty-format: 26.6.2 + jest-environment-jsdom@24.9.0: + dependencies: + '@jest/environment': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + jest-util: 24.9.0 + jsdom: 11.12.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-environment-jsdom@26.6.2: dependencies: '@jest/environment': 26.6.2 @@ -24886,6 +26035,16 @@ snapshots: - supports-color - utf-8-validate + jest-environment-node@24.9.0: + dependencies: + '@jest/environment': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/types': 24.9.0 + jest-mock: 24.9.0 + jest-util: 24.9.0 + transitivePeerDependencies: + - supports-color + jest-environment-node@26.6.2: dependencies: '@jest/environment': 26.6.2 @@ -24897,10 +26056,30 @@ snapshots: jest-file@1.0.0: {} + jest-get-type@24.9.0: {} + jest-get-type@26.3.0: {} jest-get-type@29.6.3: {} + jest-haste-map@24.9.0: + dependencies: + '@jest/types': 24.9.0 + anymatch: 2.0.0 + fb-watchman: 2.0.2 + graceful-fs: 4.2.11 + invariant: 2.2.4 + jest-serializer: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + micromatch: 3.1.10 + sane: 4.1.0 + walker: 1.0.8 + optionalDependencies: + fsevents: 1.2.13 + transitivePeerDependencies: + - supports-color + jest-haste-map@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -24937,6 +26116,29 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-jasmine2@24.9.0: + dependencies: + '@babel/traverse': 7.25.9 + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + co: 4.6.0 + expect: 24.9.0 + is-generator-fn: 2.1.0 + jest-each: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-runtime: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + pretty-format: 24.9.0 + throat: 4.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-jasmine2@26.6.3: dependencies: '@babel/traverse': 7.25.9 @@ -24964,11 +26166,23 @@ snapshots: - ts-node - utf-8-validate + jest-leak-detector@24.9.0: + dependencies: + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + jest-leak-detector@26.6.2: dependencies: jest-get-type: 26.3.0 pretty-format: 26.6.2 + jest-matcher-utils@24.9.0: + dependencies: + chalk: 2.4.2 + jest-diff: 24.9.0 + jest-get-type: 24.9.0 + pretty-format: 24.9.0 + jest-matcher-utils@26.6.2: dependencies: chalk: 4.1.2 @@ -24990,6 +26204,19 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-message-util@24.9.0: + dependencies: + '@babel/code-frame': 7.26.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + '@types/stack-utils': 1.0.1 + chalk: 2.4.2 + micromatch: 3.1.10 + slash: 2.0.0 + stack-utils: 1.0.5 + transitivePeerDependencies: + - supports-color + jest-message-util@26.6.2: dependencies: '@babel/code-frame': 7.26.0 @@ -25014,6 +26241,10 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-mock@24.9.0: + dependencies: + '@jest/types': 24.9.0 + jest-mock@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -25025,14 +26256,28 @@ snapshots: '@types/node': 20.17.2 jest-util: 29.7.0 + jest-pnp-resolver@1.2.3(jest-resolve@24.9.0): + optionalDependencies: + jest-resolve: 24.9.0 + jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): optionalDependencies: jest-resolve: 26.6.2 + jest-regex-util@24.9.0: {} + jest-regex-util@26.0.0: {} jest-regex-util@29.6.3: {} + jest-resolve-dependencies@24.9.0: + dependencies: + '@jest/types': 24.9.0 + jest-regex-util: 24.9.0 + jest-snapshot: 24.9.0 + transitivePeerDependencies: + - supports-color + jest-resolve-dependencies@26.6.3: dependencies: '@jest/types': 26.6.2 @@ -25041,6 +26286,14 @@ snapshots: transitivePeerDependencies: - supports-color + jest-resolve@24.9.0: + dependencies: + '@jest/types': 24.9.0 + browser-resolve: 1.11.3 + chalk: 2.4.2 + jest-pnp-resolver: 1.2.3(jest-resolve@24.9.0) + realpath-native: 1.1.0 + jest-resolve@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -25052,6 +26305,32 @@ snapshots: resolve: 1.22.8 slash: 3.0.0 + jest-runner@24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/environment': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + chalk: 2.4.2 + exit: 0.1.2 + graceful-fs: 4.2.11 + jest-config: 24.9.0 + jest-docblock: 24.9.0 + jest-haste-map: 24.9.0 + jest-jasmine2: 24.9.0 + jest-leak-detector: 24.9.0 + jest-message-util: 24.9.0 + jest-resolve: 24.9.0 + jest-runtime: 24.9.0 + jest-util: 24.9.0 + jest-worker: 24.9.0 + source-map-support: 0.5.21 + throat: 4.1.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-runner@26.6.3: dependencies: '@jest/console': 26.6.2 @@ -25081,6 +26360,36 @@ snapshots: - ts-node - utf-8-validate + jest-runtime@24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/environment': 24.9.0 + '@jest/source-map': 24.9.0 + '@jest/transform': 24.9.0 + '@jest/types': 24.9.0 + '@types/yargs': 13.0.12 + chalk: 2.4.2 + exit: 0.1.2 + glob: 7.1.6 + graceful-fs: 4.2.11 + jest-config: 24.9.0 + jest-haste-map: 24.9.0 + jest-message-util: 24.9.0 + jest-mock: 24.9.0 + jest-regex-util: 24.9.0 + jest-resolve: 24.9.0 + jest-snapshot: 24.9.0 + jest-util: 24.9.0 + jest-validate: 24.9.0 + realpath-native: 1.1.0 + slash: 2.0.0 + strip-bom: 3.0.0 + yargs: 13.3.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest-runtime@26.6.3: dependencies: '@jest/console': 26.6.2 @@ -25117,11 +26426,31 @@ snapshots: - ts-node - utf-8-validate + jest-serializer@24.9.0: {} + jest-serializer@26.6.2: dependencies: '@types/node': 20.17.2 graceful-fs: 4.2.11 + jest-snapshot@24.9.0: + dependencies: + '@babel/types': 7.20.5 + '@jest/types': 24.9.0 + chalk: 2.4.2 + expect: 24.9.0 + jest-diff: 24.9.0 + jest-get-type: 24.9.0 + jest-matcher-utils: 24.9.0 + jest-message-util: 24.9.0 + jest-resolve: 24.9.0 + mkdirp: 0.5.6 + natural-compare: 1.4.0 + pretty-format: 24.9.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + jest-snapshot@26.6.2: dependencies: '@babel/types': 7.20.5 @@ -25168,6 +26497,23 @@ snapshots: transitivePeerDependencies: - supports-color + jest-util@24.9.0: + dependencies: + '@jest/console': 24.9.0 + '@jest/fake-timers': 24.9.0 + '@jest/source-map': 24.9.0 + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + callsites: 3.1.0 + chalk: 2.4.2 + graceful-fs: 4.2.11 + is-ci: 2.0.0 + mkdirp: 0.5.6 + slash: 2.0.0 + source-map: 0.6.1 + transitivePeerDependencies: + - supports-color + jest-util@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -25186,6 +26532,15 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 + jest-validate@24.9.0: + dependencies: + '@jest/types': 24.9.0 + camelcase: 5.3.1 + chalk: 2.4.2 + jest-get-type: 24.9.0 + leven: 3.1.0 + pretty-format: 24.9.0 + jest-validate@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -25195,6 +26550,18 @@ snapshots: leven: 3.1.0 pretty-format: 26.6.2 + jest-watcher@24.9.0: + dependencies: + '@jest/test-result': 24.9.0 + '@jest/types': 24.9.0 + '@types/yargs': 13.0.12 + ansi-escapes: 3.2.0 + chalk: 2.4.2 + jest-util: 24.9.0 + string-length: 2.0.0 + transitivePeerDependencies: + - supports-color + jest-watcher@26.6.2: dependencies: '@jest/test-result': 26.6.2 @@ -25205,6 +26572,11 @@ snapshots: jest-util: 26.6.2 string-length: 4.0.2 + jest-worker@24.9.0: + dependencies: + merge-stream: 2.0.0 + supports-color: 6.1.0 + jest-worker@25.5.0: dependencies: merge-stream: 2.0.0 @@ -25229,6 +26601,15 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jest@24.9.0: + dependencies: + import-local: 2.0.0 + jest-cli: 24.9.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + jest@26.6.3: dependencies: '@jest/core': 26.6.3 @@ -25280,6 +26661,38 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} + jsdom@11.12.0: + dependencies: + abab: 2.0.6 + acorn: 5.7.4 + acorn-globals: 4.3.4 + array-equal: 1.0.2 + cssom: 0.3.8 + cssstyle: 1.4.0 + data-urls: 1.1.0 + domexception: 1.0.1 + escodegen: 1.14.3 + html-encoding-sniffer: 1.0.2 + left-pad: 1.3.0 + nwsapi: 2.2.13 + parse5: 4.0.0 + pn: 1.1.0 + request: 2.88.2 + request-promise-native: 1.0.9(request@2.88.2) + sax: 1.2.4 + symbol-tree: 3.2.4 + tough-cookie: 2.5.0 + w3c-hr-time: 1.0.2 + webidl-conversions: 4.0.2 + whatwg-encoding: 1.0.5 + whatwg-mimetype: 2.3.0 + whatwg-url: 6.5.0 + ws: 5.2.4 + xml-name-validator: 3.0.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + jsdom@16.7.0: dependencies: abab: 2.0.6 @@ -25524,6 +26937,8 @@ snapshots: lcov-parse@1.0.0: {} + left-pad@1.3.0: {} + less-loader@11.1.0(less@3.11.1)(webpack@5.90.1): dependencies: klona: 2.0.6 @@ -25546,6 +26961,11 @@ snapshots: leven@3.1.0: {} + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -25679,6 +27099,13 @@ snapshots: '@lmdb/lmdb-linux-x64': 2.8.5 '@lmdb/lmdb-win32-x64': 2.8.5 + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -25708,6 +27135,11 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 + local-pkg@0.5.0: + dependencies: + mlly: 1.7.2 + pkg-types: 1.2.1 + locale@0.1.0: {} locate-path@3.0.0: @@ -25804,6 +27236,10 @@ snapshots: dependencies: js-tokens: 4.0.0 + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + loupe@3.1.2: {} lower-case@2.0.2: @@ -25851,6 +27287,11 @@ snapshots: '@babel/types': 7.26.0 source-map-js: 1.2.1 + make-dir@2.1.0: + dependencies: + pify: 4.0.1 + semver: 5.7.2 + make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -26462,6 +27903,13 @@ snapshots: mkdirp@1.0.4: {} + mlly@1.7.2: + dependencies: + acorn: 8.13.0 + pathe: 1.1.2 + pkg-types: 1.2.1 + ufo: 1.5.4 + moment-locales-webpack-plugin@1.2.0(moment@2.29.4)(webpack@5.90.1): dependencies: lodash.difference: 4.5.0 @@ -26544,6 +27992,9 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 + nan@2.22.0: + optional: true + nanoid@3.3.7: {} nanomatch@1.2.13: @@ -26666,6 +28117,14 @@ snapshots: node-int64@0.4.0: {} + node-notifier@5.4.5: + dependencies: + growly: 1.3.0 + is-wsl: 1.1.0 + semver: 5.7.2 + shellwords: 0.1.1 + which: 1.3.1 + node-notifier@8.0.2: dependencies: growly: 1.3.0 @@ -26966,6 +28425,15 @@ snapshots: opener@1.5.2: {} + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -27033,6 +28501,10 @@ snapshots: p-cancelable@3.0.0: {} + p-each-series@1.0.0: + dependencies: + p-reduce: 1.0.0 + p-each-series@2.2.0: {} p-finally@1.0.0: {} @@ -27049,6 +28521,10 @@ snapshots: dependencies: yocto-queue: 1.1.1 + p-limit@5.0.0: + dependencies: + yocto-queue: 1.1.1 + p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -27078,6 +28554,8 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 + p-reduce@1.0.0: {} + p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 @@ -27181,8 +28659,62 @@ snapshots: param-case@3.0.4: dependencies: - dot-case: 3.0.4 - tslib: 2.8.0 + dot-case: 3.0.4 + tslib: 2.8.0 + + parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2): + dependencies: + '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + commander: 7.2.0 + get-port: 4.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2): + dependencies: + '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + commander: 7.2.0 + get-port: 4.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3): dependencies: @@ -27241,6 +28773,8 @@ snapshots: dependencies: parse-path: 7.0.0 + parse5@4.0.0: {} + parse5@6.0.1: {} parse5@7.2.0: @@ -27287,12 +28821,18 @@ snapshots: path-to-regexp@6.3.0: {} + path-type@3.0.0: + dependencies: + pify: 3.0.0 + path-type@4.0.0: {} path-type@5.0.0: {} pathe@1.1.2: {} + pathval@1.1.1: {} + pathval@2.0.0: {} pause-stream@0.0.11: @@ -27313,10 +28853,16 @@ snapshots: pify@2.3.0: {} + pify@3.0.0: {} + pify@4.0.1: {} pirates@4.0.6: {} + pkg-dir@3.0.0: + dependencies: + find-up: 3.0.0 + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -27325,10 +28871,18 @@ snapshots: dependencies: find-up: 6.3.0 + pkg-types@1.2.1: + dependencies: + confbox: 0.1.8 + mlly: 1.7.2 + pathe: 1.1.2 + pkg-up@3.1.0: dependencies: find-up: 3.0.0 + pn@1.1.0: {} + pnp-webpack-plugin@1.7.0(typescript@5.6.3): dependencies: ts-pnp: 1.2.0(typescript@5.6.3) @@ -27675,6 +29229,8 @@ snapshots: path-exists: 4.0.0 which-pm: 2.2.0 + prelude-ls@1.1.2: {} + prelude-ls@1.2.1: {} prepend-http@2.0.0: {} @@ -28679,12 +30235,23 @@ snapshots: normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 + read-pkg-up@4.0.0: + dependencies: + find-up: 3.0.0 + read-pkg: 3.0.0 + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -28729,6 +30296,10 @@ snapshots: readdirp@4.0.2: {} + realpath-native@1.1.0: + dependencies: + util.promisify: 1.0.1 + recast@0.23.9: dependencies: ast-types: 0.16.1 @@ -28895,6 +30466,40 @@ snapshots: relateurl@0.2.7: {} + release-it@16.2.1(encoding@0.1.13)(typescript@5.4.2): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 19.0.13(encoding@0.1.13) + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 8.3.6(typescript@5.4.2) + execa: 7.2.0 + git-url-parse: 13.1.0 + globby: 13.2.2 + got: 13.0.0 + inquirer: 9.2.11 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 9.1.0 + ora: 7.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.3.1 + semver: 7.5.4 + shelljs: 0.8.5 + update-notifier: 6.0.2 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - encoding + - supports-color + - typescript + release-it@16.2.1(encoding@0.1.13)(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -28929,6 +30534,72 @@ snapshots: - supports-color - typescript + release-it@17.1.1(typescript@5.2.2): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 20.0.2 + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.2.2) + execa: 8.0.1 + git-url-parse: 14.0.0 + globby: 14.0.1 + got: 13.0.0 + inquirer: 9.2.14 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 10.0.3 + ora: 8.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.4.0 + semver: 7.6.0 + shelljs: 0.8.5 + update-notifier: 7.0.0 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + - typescript + + release-it@17.1.1(typescript@5.4.2): + dependencies: + '@iarna/toml': 2.2.5 + '@octokit/rest': 20.0.2 + async-retry: 1.3.3 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.4.2) + execa: 8.0.1 + git-url-parse: 14.0.0 + globby: 14.0.1 + got: 13.0.0 + inquirer: 9.2.14 + is-ci: 3.0.1 + issue-parser: 6.0.0 + lodash: 4.17.21 + mime-types: 2.1.35 + new-github-release-url: 2.0.0 + node-fetch: 3.3.2 + open: 10.0.3 + ora: 8.0.1 + os-name: 5.1.0 + promise.allsettled: 1.0.7 + proxy-agent: 6.4.0 + semver: 7.6.0 + shelljs: 0.8.5 + update-notifier: 7.0.0 + url-join: 5.0.0 + wildcard-match: 5.1.2 + yargs-parser: 21.1.1 + transitivePeerDependencies: + - supports-color + - typescript + release-it@17.1.1(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -29008,6 +30679,18 @@ snapshots: dependencies: throttleit: 1.0.1 + request-promise-core@1.1.4(request@2.88.2): + dependencies: + lodash: 4.17.21 + request: 2.88.2 + + request-promise-native@1.0.9(request@2.88.2): + dependencies: + request: 2.88.2 + request-promise-core: 1.1.4(request@2.88.2) + stealthy-require: 1.1.1 + tough-cookie: 2.5.0 + request@2.88.2: dependencies: aws-sign2: 0.7.0 @@ -29045,6 +30728,10 @@ snapshots: resolve-alpn@1.2.1: {} + resolve-cwd@2.0.0: + dependencies: + resolve-from: 3.0.0 + resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -29074,6 +30761,8 @@ snapshots: resolve-url@0.2.1: {} + resolve@1.1.7: {} + resolve@1.19.0: dependencies: is-core-module: 2.15.1 @@ -29464,8 +31153,7 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shellwords@0.1.1: - optional: true + shellwords@0.1.1: {} side-channel@1.0.6: dependencies: @@ -29521,6 +31209,8 @@ snapshots: slash@1.0.0: {} + slash@2.0.0: {} + slash@3.0.0: {} slash@4.0.0: {} @@ -29762,6 +31452,10 @@ snapshots: stable@0.1.8: {} + stack-utils@1.0.5: + dependencies: + escape-string-regexp: 2.0.0 + stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -29799,6 +31493,8 @@ snapshots: stdin-discarder@0.2.2: {} + stealthy-require@1.1.1: {} + stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 @@ -29821,6 +31517,11 @@ snapshots: string-hash@1.1.3: {} + string-length@2.0.0: + dependencies: + astral-regex: 1.0.0 + strip-ansi: 4.0.0 + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -29828,6 +31529,12 @@ snapshots: string-natural-compare@3.0.1: {} + string-width@3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -29909,6 +31616,14 @@ snapshots: dependencies: ansi-regex: 2.1.1 + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@5.2.0: + dependencies: + ansi-regex: 4.1.1 + strip-ansi@6.0.0: dependencies: ansi-regex: 5.0.1 @@ -30223,6 +31938,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + test-exclude@5.2.3: + dependencies: + glob: 7.1.6 + minimatch: 3.1.2 + read-pkg-up: 4.0.0 + require-main-filename: 2.0.0 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -30241,6 +31963,8 @@ snapshots: dependencies: any-promise: 1.3.0 + throat@4.1.0: {} + throat@5.0.0: {} throttleit@1.0.1: {} @@ -30270,10 +31994,14 @@ snapshots: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 + tinypool@0.8.4: {} + tinypool@1.0.1: {} tinyrainbow@1.2.0: {} + tinyspy@2.2.1: {} + tinyspy@3.0.2: {} titleize@3.0.0: {} @@ -30409,7 +32137,7 @@ snapshots: tslib@2.8.0: {} - tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2): dependencies: bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 @@ -30431,7 +32159,7 @@ snapshots: '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) '@swc/core': 1.7.40(@swc/helpers@0.5.13) postcss: 8.4.47 - typescript: 5.6.3 + typescript: 5.4.2 transitivePeerDependencies: - jiti - supports-color @@ -30457,6 +32185,10 @@ snapshots: tweetnacl@0.14.5: {} + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -30520,6 +32252,8 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typescript@5.2.2: {} + typescript@5.4.2: {} typescript@5.6.3: {} @@ -30528,6 +32262,8 @@ snapshots: uc.micro@1.0.6: {} + ufo@1.5.4: {} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -30853,12 +32589,13 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vite-node@2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite-node@1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: cac: 6.7.14 - debug: 4.3.7 + debug: 4.3.4(supports-color@8.1.1) pathe: 1.1.2 - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + picocolors: 1.1.1 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -30887,16 +32624,16 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - '@vue/language-core': 1.8.27(typescript@5.6.3) + '@vue/language-core': 1.8.27(typescript@5.4.2) debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 magic-string: 0.30.12 - typescript: 5.6.3 - vue-tsc: 1.8.27(typescript@5.6.3) + typescript: 5.4.2 + vue-tsc: 1.8.27(typescript@5.4.2) optionalDependencies: vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: @@ -30904,19 +32641,6 @@ snapshots: - rollup - supports-color - vite@5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.47 - rollup: 4.24.0 - optionalDependencies: - '@types/node': 20.17.2 - fsevents: 2.3.3 - less: 3.11.1 - lightningcss: 1.27.0 - sass: 1.80.4 - terser: 5.36.0 - vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: esbuild: 0.21.5 @@ -30940,34 +32664,34 @@ snapshots: redent: 3.0.0 vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vitest@2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vitest@1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 - chai: 5.1.2 - debug: 4.3.7 + '@vitest/expect': 1.6.0 + '@vitest/runner': 1.6.0 + '@vitest/snapshot': 1.6.0 + '@vitest/spy': 1.6.0 + '@vitest/utils': 1.6.0 + acorn-walk: 8.3.4 + chai: 4.5.0 + debug: 4.3.4(supports-color@8.1.1) + execa: 8.0.1 + local-pkg: 0.5.0 magic-string: 0.30.12 pathe: 1.1.2 + picocolors: 1.1.1 std-env: 3.7.0 + strip-literal: 2.1.0 tinybench: 2.9.0 - tinyexec: 0.3.1 - tinypool: 1.0.1 - tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + tinypool: 0.8.4 + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.17.2 + '@types/node': 22.8.1 jsdom: 22.1.0 transitivePeerDependencies: - less - lightningcss - - msw - sass - sass-embedded - stylus @@ -30978,7 +32702,7 @@ snapshots: vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) '@vitest/pretty-format': 2.1.3 '@vitest/runner': 2.1.3 '@vitest/snapshot': 2.1.3 @@ -31013,7 +32737,7 @@ snapshots: vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) '@vitest/pretty-format': 2.1.3 '@vitest/runner': 2.1.3 '@vitest/snapshot': 2.1.3 @@ -31063,8 +32787,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: jsdom: 16.7.0 @@ -31085,12 +32809,12 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - vue-tsc@1.8.27(typescript@5.6.3): + vue-tsc@1.8.27(typescript@5.4.2): dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.6.3) + '@vue/language-core': 1.8.27(typescript@5.4.2) semver: 7.6.3 - typescript: 5.6.3 + typescript: 5.4.2 w3c-hr-time@1.0.2: dependencies: @@ -31350,6 +33074,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@6.5.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -31450,6 +33180,12 @@ snapshots: dependencies: microevent.ts: 0.1.1 + wrap-ansi@5.1.0: + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -31470,6 +33206,12 @@ snapshots: wrappy@1.0.2: {} + write-file-atomic@2.4.1: + dependencies: + graceful-fs: 4.2.11 + imurmurhash: 0.1.4 + signal-exit: 3.0.7 + write-file-atomic@3.0.3: dependencies: imurmurhash: 0.1.4 @@ -31487,6 +33229,10 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + ws@5.2.4: + dependencies: + async-limiter: 1.0.1 + ws@7.5.10: {} ws@8.18.0: {} @@ -31511,6 +33257,11 @@ snapshots: yaml@1.10.2: {} + yargs-parser@13.1.2: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 @@ -31520,6 +33271,19 @@ snapshots: yargs-parser@21.1.1: {} + yargs@13.3.2: + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 13.1.2 + yargs@15.4.1: dependencies: cliui: 6.0.0 From c4e70aa2f91d85aeb786c76f18b6fc542fd4a3e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 17:55:41 +0100 Subject: [PATCH 49/98] Test with Volto 18.0.0-alpha.46 --- package.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package.json b/package.json index 2862cf89..e12c871c 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,6 @@ "plone", "react" ], - "pnpm": { - "overrides": { - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", - "react-refresh": "^0.14.2" - } - }, "scripts": { "preinstall": "npx only-allow pnpm", "start": "VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto start", From aac1edece786242a24a07e70a7bde2ecec7f11ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 17:57:04 +0100 Subject: [PATCH 50/98] Test with Volto 18.0.0-alpha.47 --- .eslintrc.js | 6 ++---- .storybook/main.js | 4 ++-- mrs.developer.json | 2 +- package.json | 6 ++++++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index f1738f8d..1b38cf90 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,6 +1,6 @@ const fs = require('fs'); const projectRootPath = __dirname; -const AddonConfigurationRegistry = require('@plone/registry/src/addon-registry'); +const { AddonRegistry } = require('@plone/registry/addon-registry'); let coreLocation; if (fs.existsSync(`${projectRootPath}/core`)) @@ -8,9 +8,7 @@ if (fs.existsSync(`${projectRootPath}/core`)) else if (fs.existsSync(`${projectRootPath}/../../core`)) coreLocation = `${projectRootPath}/../../core`; -const registry = new AddonConfigurationRegistry( - `${coreLocation}/packages/volto`, -); +const { registry } = AddonRegistry.init(`${coreLocation}/packages/volto`); // Extends ESlint configuration for adding the aliases to `src` directories in Volto addons const addonAliases = Object.keys(registry.packages).map((o) => [ diff --git a/.storybook/main.js b/.storybook/main.js index 1b15d3b2..89f26687 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -107,9 +107,9 @@ module.exports = { [], defaultRazzleOptions, ); - const AddonConfigurationRegistry = require('@plone/registry/src/addon-registry'); + const { AddonRegistry } = require('@plone/registry/addon-registry'); - const registry = new AddonConfigurationRegistry(projectRootPath); + const { registry } = AddonRegistry.init(projectRootPath); config = lessPlugin({ registry }).modifyWebpackConfig({ env: { target: 'web', dev: 'dev' }, diff --git a/mrs.developer.json b/mrs.developer.json index 650e3e1c..0096e8ea 100644 --- a/mrs.developer.json +++ b/mrs.developer.json @@ -4,6 +4,6 @@ "package": "@plone/volto", "url": "git@github.com:plone/volto.git", "https": "https://github.com/plone/volto.git", - "tag": "18.0.0-alpha.46" + "tag": "18.0.0-alpha.47" } } diff --git a/package.json b/package.json index e12c871c..2d7dbb38 100644 --- a/package.json +++ b/package.json @@ -40,5 +40,11 @@ "devDependencies": { "mrs-developer": "^2.2.0" }, + "pnpm": { + "overrides": { + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", + "react-refresh": "^0.14.2" + } + }, "packageManager": "pnpm@9.1.1" } From c92560fe1a9a267a018caf870456561141dc543b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 17:57:09 +0100 Subject: [PATCH 51/98] Update pnpm-lock.yaml --- pnpm-lock.yaml | 2219 +++++------------------------------------------- 1 file changed, 221 insertions(+), 1998 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 091397d8..517f34db 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,7 +40,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/registry': specifier: workspace:* version: link:../registry @@ -55,24 +55,24 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.6.3 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/client: dependencies: '@tanstack/react-query': - specifier: ^5.37.1 + specifier: ^5.59.0 version: 5.59.16(react@18.2.0) axios: specifier: ^1.6.7 @@ -89,7 +89,7 @@ importers: devDependencies: '@parcel/config-default': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) '@parcel/core': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) @@ -107,7 +107,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: 'workspace: *' version: link:../types @@ -143,7 +143,7 @@ importers: version: 21.1.2 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -152,13 +152,13 @@ importers: version: 18.2.0(react@18.2.0) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsup: specifier: ^8.0.2 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3) typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.4.5 + version: 5.6.3 uuid: specifier: ^9.0.1 version: 9.0.1 @@ -167,9 +167,9 @@ importers: version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vite-plugin-dts: specifier: ^3.7.3 - version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) vitest: - specifier: ^2.1.2 + specifier: ^2.1.3 version: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) wait-on: specifier: ^7.2.0 @@ -299,13 +299,13 @@ importers: specifier: ^8.0.4 version: 8.3.6 typescript: - specifier: ^5.4.5 + specifier: ^5.6.3 version: 5.6.3 vite: specifier: ^5.4.8 version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest: - specifier: ^2.1.2 + specifier: ^2.1.3 version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest-axe: specifier: ^0.1.0 @@ -397,8 +397,8 @@ importers: specifier: ^3.0.7 version: 3.1.1 jest: - specifier: ^24.8.0 - version: 24.9.0 + specifier: ^26.6.3 + version: 26.6.3 release-it: specifier: ^16.1.3 version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) @@ -419,11 +419,11 @@ importers: version: 18.2.0(react@18.2.0) devDependencies: '@parcel/packager-ts': - specifier: 2.12.0 + specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': - specifier: 2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -434,20 +434,20 @@ importers: specifier: ^18 version: 18.2.12 parcel: - specifier: 2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + specifier: ^2.12.0 + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.4.5 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/providers: dependencies: @@ -460,16 +460,22 @@ importers: '@plone/registry': specifier: workspace:* version: link:../registry + '@tanstack/react-query': + specifier: ^5.59.0 + version: 5.59.16(react@18.2.0) react: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0 + react-aria-components: + specifier: ^1.4.0 + version: 1.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: specifier: ^16.8.0 || ^17.0.0 || ^18.0.0 version: 18.2.0(react@18.2.0) devDependencies: '@parcel/config-default': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) '@parcel/core': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) @@ -484,7 +490,7 @@ importers: version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -496,19 +502,19 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.2.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.2.2 - version: 5.2.2 + specifier: ^5.4.5 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/registry: dependencies: @@ -522,27 +528,42 @@ importers: specifier: 0.10.0 version: 0.10.0 glob: - specifier: 7.1.6 - version: 7.1.6 + specifier: ^10.4.5 + version: 10.4.5 + tmp: + specifier: 0.2.1 + version: 0.2.1 devDependencies: '@parcel/packager-ts': specifier: ^2.12.0 version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 + '@types/glob': + specifier: ^8.1.0 + version: 8.1.0 + '@types/node': + specifier: ^20 + version: 20.17.2 '@types/react': specifier: ^18 version: 18.2.27 '@types/react-dom': specifier: ^18 version: 18.2.12 + '@types/tmp': + specifier: ^0.2.6 + version: 0.2.6 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -551,16 +572,19 @@ importers: version: 18.2.0(react@18.2.0) release-it: specifier: 16.2.1 - version: 16.2.1(encoding@0.1.13)(typescript@5.4.2) + version: 16.2.1(encoding@0.1.13)(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.6.3 + version: 5.6.3 + vite: + specifier: ^5.4.8 + version: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) vitest: - specifier: ^2.1.2 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/scripts: dependencies: @@ -634,7 +658,7 @@ importers: version: 2.12.0(@swc/helpers@0.5.13) '@parcel/transformer-typescript-types': specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2) + version: 2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3) '@plone/types': specifier: workspace:* version: link:../types @@ -646,19 +670,19 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) + version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 - version: 17.1.1(typescript@5.2.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.2.2 - version: 5.2.2 + specifier: ^5.6.3 + version: 5.6.3 vitest: - specifier: ^1.3.1 - version: 1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + specifier: ^2.1.3 + version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) core/packages/tsconfig: {} @@ -684,13 +708,13 @@ importers: version: 3.12.1(react@18.2.0) release-it: specifier: ^17.1.1 - version: 17.1.1(typescript@5.4.2) + version: 17.1.1(typescript@5.6.3) tsconfig: specifier: workspace:* version: link:../tsconfig typescript: - specifier: 5.4.2 - version: 5.4.2 + specifier: ^5.6.3 + version: 5.6.3 core/packages/volto: dependencies: @@ -1305,7 +1329,7 @@ importers: specifier: 9.4.4 version: 9.4.4(typescript@5.6.3)(webpack@5.90.1) typescript: - specifier: ^5.4.2 + specifier: ^5.6.3 version: 5.6.3 use-trace-update: specifier: 1.3.2 @@ -1421,7 +1445,7 @@ importers: version: 10.0.1(cypress@13.13.2) '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3) '@testing-library/react': specifier: 12.1.5 version: 12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -2929,26 +2953,14 @@ packages: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - '@jest/console@24.9.0': - resolution: {integrity: sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==} - engines: {node: '>= 6'} - '@jest/console@26.6.2': resolution: {integrity: sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==} engines: {node: '>= 10.14.2'} - '@jest/core@24.9.0': - resolution: {integrity: sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==} - engines: {node: '>= 6'} - '@jest/core@26.6.3': resolution: {integrity: sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==} engines: {node: '>= 10.14.2'} - '@jest/environment@24.9.0': - resolution: {integrity: sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==} - engines: {node: '>= 6'} - '@jest/environment@26.6.2': resolution: {integrity: sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==} engines: {node: '>= 10.14.2'} @@ -2965,10 +2977,6 @@ packages: resolution: {integrity: sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/fake-timers@24.9.0': - resolution: {integrity: sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==} - engines: {node: '>= 6'} - '@jest/fake-timers@26.6.2': resolution: {integrity: sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==} engines: {node: '>= 10.14.2'} @@ -2985,10 +2993,6 @@ packages: resolution: {integrity: sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/reporters@24.9.0': - resolution: {integrity: sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==} - engines: {node: '>= 6'} - '@jest/reporters@26.6.2': resolution: {integrity: sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==} engines: {node: '>= 10.14.2'} @@ -2997,34 +3001,18 @@ packages: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - '@jest/source-map@24.9.0': - resolution: {integrity: sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==} - engines: {node: '>= 6'} - '@jest/source-map@26.6.2': resolution: {integrity: sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==} engines: {node: '>= 10.14.2'} - '@jest/test-result@24.9.0': - resolution: {integrity: sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==} - engines: {node: '>= 6'} - '@jest/test-result@26.6.2': resolution: {integrity: sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==} engines: {node: '>= 10.14.2'} - '@jest/test-sequencer@24.9.0': - resolution: {integrity: sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==} - engines: {node: '>= 6'} - '@jest/test-sequencer@26.6.3': resolution: {integrity: sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==} engines: {node: '>= 10.14.2'} - '@jest/transform@24.9.0': - resolution: {integrity: sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==} - engines: {node: '>= 6'} - '@jest/transform@26.6.2': resolution: {integrity: sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==} engines: {node: '>= 10.14.2'} @@ -5102,6 +5090,9 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + '@types/glob@8.1.0': + resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} + '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} @@ -5279,9 +5270,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/stack-utils@1.0.1': - resolution: {integrity: sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==} - '@types/stack-utils@2.0.3': resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} @@ -5298,6 +5286,9 @@ packages: '@types/testing-library__react@9.1.3': resolution: {integrity: sha512-iCdNPKU3IsYwRK9JieSYAiX0+aYDXOGAmrC/3/M7AqqSDKnWWVv07X+Zk1uFSL7cMTUYzv4lQRfohucEocn5/w==} + '@types/tmp@0.2.6': + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} @@ -5464,9 +5455,6 @@ packages: peerDependencies: vitest: 1.6.0 - '@vitest/expect@1.6.0': - resolution: {integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==} - '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -5491,30 +5479,18 @@ packages: '@vitest/pretty-format@2.1.3': resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} - '@vitest/runner@1.6.0': - resolution: {integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==} - '@vitest/runner@2.1.3': resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} - '@vitest/snapshot@1.6.0': - resolution: {integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==} - '@vitest/snapshot@2.1.3': resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} - '@vitest/spy@1.6.0': - resolution: {integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==} - '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} '@vitest/spy@2.1.3': resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} - '@vitest/utils@1.6.0': - resolution: {integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==} - '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} @@ -5616,9 +5592,6 @@ packages: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} - acorn-globals@4.3.4: - resolution: {integrity: sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==} - acorn-globals@6.0.0: resolution: {integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==} @@ -5635,10 +5608,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@6.2.0: - resolution: {integrity: sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==} - engines: {node: '>=0.4.0'} - acorn-walk@7.2.0: resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==} engines: {node: '>=0.4.0'} @@ -5647,16 +5616,6 @@ packages: resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - acorn@5.7.4: - resolution: {integrity: sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==} - engines: {node: '>=0.4.0'} - hasBin: true - - acorn@6.4.2: - resolution: {integrity: sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@7.4.1: resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==} engines: {node: '>=0.4.0'} @@ -5738,10 +5697,6 @@ packages: resolution: {integrity: sha512-tH/fSoQp4DrEodDK3QpdiWiZTSe7sBJ9eOqcQBZ0o9HTM+5M/viSEn+sPMoTuPjQQ8n++w3QJoPEjt8LVPcrCg==} engines: {node: '>=4'} - ansi-escapes@3.2.0: - resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==} - engines: {node: '>=4'} - ansi-escapes@4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -5760,10 +5715,6 @@ packages: resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} engines: {node: '>=0.10.0'} - ansi-regex@3.0.1: - resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} - engines: {node: '>=4'} - ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -5868,9 +5819,6 @@ packages: resolution: {integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==} engines: {node: '>=8'} - array-equal@1.0.2: - resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} - array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} @@ -5939,9 +5887,6 @@ packages: resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} engines: {node: '>=0.8'} - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -5961,17 +5906,10 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - astral-regex@1.0.0: - resolution: {integrity: sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==} - engines: {node: '>=4'} - astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} engines: {node: '>=8'} - async-limiter@1.0.1: - resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} - async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} @@ -6057,12 +5995,6 @@ packages: babel-helper-get-function-arity@6.24.1: resolution: {integrity: sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==} - babel-jest@24.9.0: - resolution: {integrity: sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==} - engines: {node: '>= 6'} - peerDependencies: - '@babel/core': ^7.0.0 - babel-jest@26.6.3: resolution: {integrity: sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==} engines: {node: '>= 10.14.2'} @@ -6096,18 +6028,10 @@ packages: babel-plugin-add-module-exports@0.2.1: resolution: {integrity: sha512-3AN/9V/rKuv90NG65m4tTHsI04XrCKsWbztIcW7a8H5iIN7WlvWucRtVV0V/rT4QvtA11n5Vmp20fLwfMWqp6g==} - babel-plugin-istanbul@5.2.0: - resolution: {integrity: sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==} - engines: {node: '>=6'} - babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} - babel-plugin-jest-hoist@24.9.0: - resolution: {integrity: sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==} - engines: {node: '>= 6'} - babel-plugin-jest-hoist@26.6.2: resolution: {integrity: sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==} engines: {node: '>= 10.14.2'} @@ -6162,12 +6086,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - babel-preset-jest@24.9.0: - resolution: {integrity: sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==} - engines: {node: '>= 6'} - peerDependencies: - '@babel/core': ^7.0.0 - babel-preset-jest@26.6.2: resolution: {integrity: sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==} engines: {node: '>= 10.14.2'} @@ -6254,9 +6172,6 @@ packages: resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} engines: {node: '>=0.8'} - bindings@1.5.0: - resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} - bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} @@ -6314,9 +6229,6 @@ packages: browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} - browser-resolve@1.11.3: - resolution: {integrity: sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==} - browserslist@4.14.2: resolution: {integrity: sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -6474,10 +6386,6 @@ packages: ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - chai@4.5.0: - resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} - engines: {node: '>=4'} - chai@5.1.2: resolution: {integrity: sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==} engines: {node: '>=12'} @@ -6515,9 +6423,6 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -6633,9 +6538,6 @@ packages: client-only@0.0.1: resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} - cliui@5.0.0: - resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -6809,9 +6711,6 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - confbox@0.1.8: - resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} - config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -7094,9 +6993,6 @@ packages: cssom@0.4.4: resolution: {integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==} - cssstyle@1.4.0: - resolution: {integrity: sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==} - cssstyle@2.3.0: resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} engines: {node: '>=8'} @@ -7149,9 +7045,6 @@ packages: resolution: {integrity: sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==} engines: {node: '>= 14'} - data-urls@1.1.0: - resolution: {integrity: sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==} - data-urls@2.0.0: resolution: {integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==} engines: {node: '>=10'} @@ -7269,10 +7162,6 @@ packages: resolution: {integrity: sha512-VxZwQ/1+WGQPl5nE67uLhh7OqdrmqI1OazrraO9Bbw/M8Bt6Mol/RxzDA6N6ZgRXpsG/W9PgUj8E1LHHBEq2GQ==} engines: {node: '>=4.0.0'} - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -7406,10 +7295,6 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - detect-newline@2.1.0: - resolution: {integrity: sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==} - engines: {node: '>=0.10.0'} - detect-newline@3.1.0: resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} engines: {node: '>=8'} @@ -7428,10 +7313,6 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} - diff-sequences@24.9.0: - resolution: {integrity: sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==} - engines: {node: '>= 6'} - diff-sequences@26.6.2: resolution: {integrity: sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==} engines: {node: '>= 10.14.2'} @@ -7508,10 +7389,6 @@ packages: domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} - domexception@1.0.1: - resolution: {integrity: sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==} - deprecated: Use your platform's native DOMException instead - domexception@2.0.1: resolution: {integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==} engines: {node: '>=8'} @@ -7587,9 +7464,6 @@ packages: emoji-regex@10.4.0: resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==} - emoji-regex@7.0.3: - resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} - emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -7757,11 +7631,6 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} - escodegen@1.14.3: - resolution: {integrity: sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==} - engines: {node: '>=4.0'} - hasBin: true - escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} engines: {node: '>=6.0'} @@ -8041,10 +7910,6 @@ packages: resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} - expect@24.9.0: - resolution: {integrity: sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==} - engines: {node: '>= 6'} - expect@26.6.2: resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} engines: {node: '>= 10.14.2'} @@ -8178,9 +8043,6 @@ packages: resolution: {integrity: sha512-kCWw3+Aai8Uox+5tHCNgMFaUdgidxvMnLWO6fM5sZ0hA2wlHP5/DHGF0ECe84BiB95qdJbKNEJhWKVDvMN+JDQ==} engines: {node: '>= 10'} - file-uri-to-path@1.0.0: - resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filelist@1.0.4: resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} @@ -8391,12 +8253,6 @@ packages: fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@1.2.13: - resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==} - engines: {node: '>= 4.0'} - os: [darwin] - deprecated: Upgrade to fsevents v2 to mitigate potential security issues - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -8438,9 +8294,6 @@ packages: resolution: {integrity: sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==} engines: {node: '>=18'} - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -8778,9 +8631,6 @@ packages: hsla-regex@1.0.0: resolution: {integrity: sha512-7Wn5GMLuHBjZCb2bTmnDOycho0p/7UVaAeqXZGbHrBCl6Yd/xDhQJAXe6Ga9AXJH2I5zY1dEdYw2u1UptnSBJA==} - html-encoding-sniffer@1.0.2: - resolution: {integrity: sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==} - html-encoding-sniffer@2.0.1: resolution: {integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==} engines: {node: '>=10'} @@ -9008,11 +8858,6 @@ packages: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} - import-local@2.0.0: - resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==} - engines: {node: '>=6'} - hasBin: true - import-local@3.2.0: resolution: {integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==} engines: {node: '>=8'} @@ -9216,10 +9061,6 @@ packages: is-finalizationregistry@1.0.2: resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - is-fullwidth-code-point@2.0.0: - resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} - engines: {node: '>=4'} - is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -9418,10 +9259,6 @@ packages: resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} engines: {node: '>=0.10.0'} - is-wsl@1.1.0: - resolution: {integrity: sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==} - engines: {node: '>=4'} - is-wsl@2.2.0: resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} engines: {node: '>=8'} @@ -9475,18 +9312,10 @@ packages: resolution: {integrity: sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==} engines: {node: '>=10.13'} - istanbul-lib-coverage@2.0.5: - resolution: {integrity: sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==} - engines: {node: '>=6'} - istanbul-lib-coverage@3.2.2: resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} engines: {node: '>=8'} - istanbul-lib-instrument@3.3.0: - resolution: {integrity: sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==} - engines: {node: '>=6'} - istanbul-lib-instrument@4.0.3: resolution: {integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==} engines: {node: '>=8'} @@ -9495,18 +9324,10 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} - istanbul-lib-report@2.0.8: - resolution: {integrity: sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==} - engines: {node: '>=6'} - istanbul-lib-report@3.0.1: resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} engines: {node: '>=10'} - istanbul-lib-source-maps@3.0.6: - resolution: {integrity: sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==} - engines: {node: '>=6'} - istanbul-lib-source-maps@4.0.1: resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} engines: {node: '>=10'} @@ -9515,10 +9336,6 @@ packages: resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} engines: {node: '>=10'} - istanbul-reports@2.2.7: - resolution: {integrity: sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==} - engines: {node: '>=6'} - istanbul-reports@3.1.7: resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} engines: {node: '>=8'} @@ -9545,28 +9362,15 @@ packages: resolution: {integrity: sha512-4kNcNn7J0jPO4jANEYZOHeQ/tSBvkXS+MxTbX1CKbXGd0+ZbRGDn/v/8IYWI/MmYX15iLVyYRnRev9X3ksePWA==} engines: {node: '>= 14.0.0'} - jest-changed-files@24.9.0: - resolution: {integrity: sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==} - engines: {node: '>= 6'} - jest-changed-files@26.6.2: resolution: {integrity: sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==} engines: {node: '>= 10.14.2'} - jest-cli@24.9.0: - resolution: {integrity: sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==} - engines: {node: '>= 6'} - hasBin: true - jest-cli@26.6.3: resolution: {integrity: sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==} engines: {node: '>= 10.14.2'} hasBin: true - jest-config@24.9.0: - resolution: {integrity: sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==} - engines: {node: '>= 6'} - jest-config@26.6.3: resolution: {integrity: sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==} engines: {node: '>= 10.14.2'} @@ -9576,10 +9380,6 @@ packages: ts-node: optional: true - jest-diff@24.9.0: - resolution: {integrity: sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==} - engines: {node: '>= 6'} - jest-diff@26.6.2: resolution: {integrity: sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==} engines: {node: '>= 10.14.2'} @@ -9588,34 +9388,18 @@ packages: resolution: {integrity: sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-docblock@24.9.0: - resolution: {integrity: sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==} - engines: {node: '>= 6'} - jest-docblock@26.0.0: resolution: {integrity: sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==} engines: {node: '>= 10.14.2'} - jest-each@24.9.0: - resolution: {integrity: sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==} - engines: {node: '>= 6'} - jest-each@26.6.2: resolution: {integrity: sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==} engines: {node: '>= 10.14.2'} - jest-environment-jsdom@24.9.0: - resolution: {integrity: sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==} - engines: {node: '>= 6'} - jest-environment-jsdom@26.6.2: resolution: {integrity: sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==} engines: {node: '>= 10.14.2'} - jest-environment-node@24.9.0: - resolution: {integrity: sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==} - engines: {node: '>= 6'} - jest-environment-node@26.6.2: resolution: {integrity: sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==} engines: {node: '>= 10.14.2'} @@ -9623,10 +9407,6 @@ packages: jest-file@1.0.0: resolution: {integrity: sha512-QqcbPCfpVCxixoF0gia825AGBGXYWVi4cQpLsXBQVxkWswnZ39XHpT490NvTMtokY6v6BM+vw8rlhtjORabplA==} - jest-get-type@24.9.0: - resolution: {integrity: sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==} - engines: {node: '>= 6'} - jest-get-type@26.3.0: resolution: {integrity: sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==} engines: {node: '>= 10.14.2'} @@ -9635,10 +9415,6 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-haste-map@24.9.0: - resolution: {integrity: sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==} - engines: {node: '>= 6'} - jest-haste-map@26.6.2: resolution: {integrity: sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==} engines: {node: '>= 10.14.2'} @@ -9647,26 +9423,14 @@ packages: resolution: {integrity: sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-jasmine2@24.9.0: - resolution: {integrity: sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==} - engines: {node: '>= 6'} - jest-jasmine2@26.6.3: resolution: {integrity: sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==} engines: {node: '>= 10.14.2'} - jest-leak-detector@24.9.0: - resolution: {integrity: sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==} - engines: {node: '>= 6'} - jest-leak-detector@26.6.2: resolution: {integrity: sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==} engines: {node: '>= 10.14.2'} - jest-matcher-utils@24.9.0: - resolution: {integrity: sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==} - engines: {node: '>= 6'} - jest-matcher-utils@26.6.2: resolution: {integrity: sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==} engines: {node: '>= 10.14.2'} @@ -9679,10 +9443,6 @@ packages: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-message-util@24.9.0: - resolution: {integrity: sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==} - engines: {node: '>= 6'} - jest-message-util@26.6.2: resolution: {integrity: sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==} engines: {node: '>= 10.14.2'} @@ -9691,10 +9451,6 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-mock@24.9.0: - resolution: {integrity: sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==} - engines: {node: '>= 6'} - jest-mock@26.6.2: resolution: {integrity: sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==} engines: {node: '>= 10.14.2'} @@ -9712,10 +9468,6 @@ packages: jest-resolve: optional: true - jest-regex-util@24.9.0: - resolution: {integrity: sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==} - engines: {node: '>= 6'} - jest-regex-util@26.0.0: resolution: {integrity: sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==} engines: {node: '>= 10.14.2'} @@ -9724,52 +9476,27 @@ packages: resolution: {integrity: sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-resolve-dependencies@24.9.0: - resolution: {integrity: sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==} - engines: {node: '>= 6'} - jest-resolve-dependencies@26.6.3: resolution: {integrity: sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==} engines: {node: '>= 10.14.2'} - jest-resolve@24.9.0: - resolution: {integrity: sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==} - engines: {node: '>= 6'} - jest-resolve@26.6.2: resolution: {integrity: sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==} engines: {node: '>= 10.14.2'} - jest-runner@24.9.0: - resolution: {integrity: sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==} - engines: {node: '>= 6'} - jest-runner@26.6.3: resolution: {integrity: sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==} engines: {node: '>= 10.14.2'} - jest-runtime@24.9.0: - resolution: {integrity: sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==} - engines: {node: '>= 6'} - hasBin: true - jest-runtime@26.6.3: resolution: {integrity: sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==} engines: {node: '>= 10.14.2'} hasBin: true - jest-serializer@24.9.0: - resolution: {integrity: sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==} - engines: {node: '>= 6'} - jest-serializer@26.6.2: resolution: {integrity: sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==} engines: {node: '>= 10.14.2'} - jest-snapshot@24.9.0: - resolution: {integrity: sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==} - engines: {node: '>= 6'} - jest-snapshot@26.6.2: resolution: {integrity: sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==} engines: {node: '>= 10.14.2'} @@ -9778,10 +9505,6 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-util@24.9.0: - resolution: {integrity: sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==} - engines: {node: '>= 6'} - jest-util@26.6.2: resolution: {integrity: sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==} engines: {node: '>= 10.14.2'} @@ -9790,26 +9513,14 @@ packages: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest-validate@24.9.0: - resolution: {integrity: sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==} - engines: {node: '>= 6'} - jest-validate@26.6.2: resolution: {integrity: sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==} engines: {node: '>= 10.14.2'} - jest-watcher@24.9.0: - resolution: {integrity: sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==} - engines: {node: '>= 6'} - jest-watcher@26.6.2: resolution: {integrity: sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==} engines: {node: '>= 10.14.2'} - jest-worker@24.9.0: - resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==} - engines: {node: '>= 6'} - jest-worker@25.5.0: resolution: {integrity: sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==} engines: {node: '>= 8.3'} @@ -9826,11 +9537,6 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - jest@24.9.0: - resolution: {integrity: sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==} - engines: {node: '>= 6'} - hasBin: true - jest@26.6.3: resolution: {integrity: sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==} engines: {node: '>= 10.14.2'} @@ -9885,9 +9591,6 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsdom@11.12.0: - resolution: {integrity: sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==} - jsdom@16.7.0: resolution: {integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==} engines: {node: '>=10'} @@ -10081,10 +9784,6 @@ packages: resolution: {integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==} hasBin: true - left-pad@1.3.0: - resolution: {integrity: sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==} - deprecated: use String.prototype.padStart() - less-loader@11.1.0: resolution: {integrity: sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==} engines: {node: '>= 14.15.0'} @@ -10101,10 +9800,6 @@ packages: resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} engines: {node: '>=6'} - levn@0.3.0: - resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} - engines: {node: '>= 0.8.0'} - levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -10265,10 +9960,6 @@ packages: resolution: {integrity: sha512-9bMdFfc80S+vSldBmG3HOuLVHnxRdNTlpzR6QDnzqCQtCzGUEAGTzBKYMeIM+I/sU4oZfgbcbS7X7F65/z/oxQ==} hasBin: true - load-json-file@4.0.0: - resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} - engines: {node: '>=4'} - load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -10293,10 +9984,6 @@ packages: resolution: {integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==} engines: {node: '>=8.9.0'} - local-pkg@0.5.0: - resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} - engines: {node: '>=14'} - locale@0.1.0: resolution: {integrity: sha512-rY3ZMnUkMfaZEix1fp/pjdwsHJkDQcE0UEcXHuYI77J03K8gddL3iD+UuJCLAmT2Z2oz5A70/0QS4J9OLCCvXw==} engines: {node: '>0.8.x'} @@ -10407,9 +10094,6 @@ packages: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - loupe@3.1.2: resolution: {integrity: sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==} @@ -10463,10 +10147,6 @@ packages: magicast@0.3.5: resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==} - make-dir@2.1.0: - resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} - engines: {node: '>=6'} - make-dir@3.1.0: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} @@ -10861,9 +10541,6 @@ packages: engines: {node: '>=10'} hasBin: true - mlly@1.7.2: - resolution: {integrity: sha512-tN3dvVHYVz4DhSXinXIk7u9syPYaJvio118uomkovAtWBT+RdbP6Lfh/5Lvo519YMmwBafwlh20IPTXIStscpA==} - moment-locales-webpack-plugin@1.2.0: resolution: {integrity: sha512-QAi5v0OlPUP7GXviKMtxnpBAo8WmTHrUNN7iciAhNOEAd9evCOvuN0g1N7ThIg3q11GLCkjY1zQ2saRcf/43nQ==} peerDependencies: @@ -10929,9 +10606,6 @@ packages: mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - nan@2.22.0: - resolution: {integrity: sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==} - nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -11032,9 +10706,6 @@ packages: node-int64@0.4.0: resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-notifier@5.4.5: - resolution: {integrity: sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==} - node-notifier@8.0.2: resolution: {integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==} @@ -11286,10 +10957,6 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - optionator@0.8.3: - resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} - engines: {node: '>= 0.8.0'} - optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -11332,10 +10999,6 @@ packages: resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} engines: {node: '>=12.20'} - p-each-series@1.0.0: - resolution: {integrity: sha512-J/e9xiZZQNrt+958FFzJ+auItsBGq+UrQ7nE89AUP7UOTtjHnkISANXLdayhVzh538UnLMCSlf13lFfRIAKQOA==} - engines: {node: '>=4'} - p-each-series@2.2.0: resolution: {integrity: sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==} engines: {node: '>=8'} @@ -11356,10 +11019,6 @@ packages: resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-limit@5.0.0: - resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} - engines: {node: '>=18'} - p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -11388,10 +11047,6 @@ packages: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} - p-reduce@1.0.0: - resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==} - engines: {node: '>=4'} - p-retry@4.6.2: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} @@ -11467,9 +11122,6 @@ packages: parse-url@8.1.0: resolution: {integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==} - parse5@4.0.0: - resolution: {integrity: sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==} - parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} @@ -11534,10 +11186,6 @@ packages: path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} - path-type@3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -11549,9 +11197,6 @@ packages: pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - pathval@2.0.0: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} @@ -11583,10 +11228,6 @@ packages: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} - pify@3.0.0: - resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} - engines: {node: '>=4'} - pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -11595,10 +11236,6 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - pkg-dir@3.0.0: - resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==} - engines: {node: '>=6'} - pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -11607,16 +11244,10 @@ packages: resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} engines: {node: '>=14.16'} - pkg-types@1.2.1: - resolution: {integrity: sha512-sQoqa8alT3nHjGuTjuKgOnvjo4cljkufdtLMnO2LBP/wRwuDlo1tkaEdMxCRhyGRPacv/ztlZgDPm2b7FAmEvw==} - pkg-up@3.1.0: resolution: {integrity: sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==} engines: {node: '>=8'} - pn@1.1.0: - resolution: {integrity: sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==} - pnp-webpack-plugin@1.7.0: resolution: {integrity: sha512-2Rb3vm+EXble/sMXNSu6eoBx8e79gKqhNq9F5ZWW6ERNCTE/Q0wQNne5541tE5vKjfM8hpNCYL+LGc1YTfI0dg==} engines: {node: '>=6'} @@ -11900,10 +11531,6 @@ packages: resolution: {integrity: sha512-lEHd+yEm22jXdCphDrkvIJQU66EuLojPPtvZkpKIkiD+l0DMThF/niqZKJSoU8Vl7iuvtmzyMhir9LdVy5WMnA==} engines: {node: '>=10'} - prelude-ls@1.1.2: - resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} - engines: {node: '>= 0.8.0'} - prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -12567,18 +12194,10 @@ packages: engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - read-pkg-up@4.0.0: - resolution: {integrity: sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==} - engines: {node: '>=6'} - read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} - read-pkg@3.0.0: - resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} - engines: {node: '>=4'} - read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -12606,10 +12225,6 @@ packages: resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} engines: {node: '>= 14.16.0'} - realpath-native@1.1.0: - resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==} - engines: {node: '>=4'} - recast@0.23.9: resolution: {integrity: sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==} engines: {node: '>= 4'} @@ -12780,19 +12395,6 @@ packages: request-progress@3.0.0: resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} - request-promise-core@1.1.4: - resolution: {integrity: sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==} - engines: {node: '>=0.10.0'} - peerDependencies: - request: ^2.34 - - request-promise-native@1.0.9: - resolution: {integrity: sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==} - engines: {node: '>=0.12.0'} - deprecated: request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142 - peerDependencies: - request: ^2.34 - request@2.88.2: resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==} engines: {node: '>= 6'} @@ -12822,10 +12424,6 @@ packages: resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} - resolve-cwd@2.0.0: - resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==} - engines: {node: '>=4'} - resolve-cwd@3.0.0: resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} engines: {node: '>=8'} @@ -12856,9 +12454,6 @@ packages: resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==} deprecated: https://github.com/lydell/resolve-url#deprecated - resolve@1.1.7: - resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} - resolve@1.19.0: resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} @@ -13232,10 +12827,6 @@ packages: resolution: {integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==} engines: {node: '>=0.10.0'} - slash@2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -13427,10 +13018,6 @@ packages: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' - stack-utils@1.0.5: - resolution: {integrity: sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==} - engines: {node: '>=8'} - stack-utils@2.0.6: resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} engines: {node: '>=10'} @@ -13469,10 +13056,6 @@ packages: resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} engines: {node: '>=18'} - stealthy-require@1.1.1: - resolution: {integrity: sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==} - engines: {node: '>=0.10.0'} - stop-iteration-iterator@1.0.0: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} @@ -13495,10 +13078,6 @@ packages: string-hash@1.1.3: resolution: {integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==} - string-length@2.0.0: - resolution: {integrity: sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==} - engines: {node: '>=4'} - string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -13506,10 +13085,6 @@ packages: string-natural-compare@3.0.1: resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==} - string-width@3.1.0: - resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} - engines: {node: '>=6'} - string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -13558,14 +13133,6 @@ packages: resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==} engines: {node: '>=0.10.0'} - strip-ansi@4.0.0: - resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} - engines: {node: '>=4'} - - strip-ansi@5.2.0: - resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==} - engines: {node: '>=6'} - strip-ansi@6.0.0: resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} engines: {node: '>=8'} @@ -13827,10 +13394,6 @@ packages: engines: {node: '>=10'} hasBin: true - test-exclude@5.2.3: - resolution: {integrity: sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==} - engines: {node: '>=6'} - test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -13849,9 +13412,6 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - throat@4.1.0: - resolution: {integrity: sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==} - throat@5.0.0: resolution: {integrity: sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==} @@ -13889,10 +13449,6 @@ packages: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} - tinypool@0.8.4: - resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==} - engines: {node: '>=14.0.0'} - tinypool@1.0.1: resolution: {integrity: sha512-URZYihUbRPcGv95En+sz6MfghfIc2OJ1sv/RmhWZLouPY0/8Vo80viwPvg3dlaS9fuq7fQMEfgRRK7BBZThBEA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -13901,10 +13457,6 @@ packages: resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} engines: {node: '>=14.0.0'} - tinyspy@2.2.1: - resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} - engines: {node: '>=14.0.0'} - tinyspy@3.0.2: resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==} engines: {node: '>=14.0.0'} @@ -14088,10 +13640,6 @@ packages: tweetnacl@0.14.5: resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} - type-check@0.3.2: - resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} - engines: {node: '>= 0.8.0'} - type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -14154,11 +13702,6 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} - typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - typescript@5.4.2: resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} engines: {node: '>=14.17'} @@ -14176,9 +13719,6 @@ packages: uc.micro@1.0.6: resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} - ufo@1.5.4: - resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} - unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} @@ -14460,11 +14000,6 @@ packages: resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} engines: {node: '>= 0.10'} - vite-node@1.6.0: - resolution: {integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - vite-node@2.1.3: resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14516,31 +14051,6 @@ packages: peerDependencies: vitest: '>=0.16.0' - vitest@1.6.0: - resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==} - engines: {node: ^18.0.0 || >=20.0.0} - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true - vitest@2.1.3: resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -14753,9 +14263,6 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} - whatwg-url@6.5.0: - resolution: {integrity: sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==} - whatwg-url@7.1.0: resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} @@ -14833,10 +14340,6 @@ packages: worker-rpc@0.1.1: resolution: {integrity: sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==} - wrap-ansi@5.1.0: - resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} - engines: {node: '>=6'} - wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -14852,9 +14355,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - write-file-atomic@2.4.1: - resolution: {integrity: sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==} - write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} @@ -14866,17 +14366,6 @@ packages: resolution: {integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ws@5.2.4: - resolution: {integrity: sha512-fFCejsuC8f9kOSu9FYaOw8CdO68O3h5v0lg4p74o8JqWpwTf9tniOD+nOB78aWoVSS6WptVUmDrp/KPsMVBWFQ==} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -14935,9 +14424,6 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yargs-parser@13.1.2: - resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -14950,9 +14436,6 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@13.3.2: - resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} @@ -16510,12 +15993,6 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@jest/console@24.9.0': - dependencies: - '@jest/source-map': 24.9.0 - chalk: 2.4.2 - slash: 2.0.0 - '@jest/console@26.6.2': dependencies: '@jest/types': 26.6.2 @@ -16525,41 +16002,6 @@ snapshots: jest-util: 26.6.2 slash: 3.0.0 - '@jest/core@24.9.0': - dependencies: - '@jest/console': 24.9.0 - '@jest/reporters': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - ansi-escapes: 3.2.0 - chalk: 2.4.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-changed-files: 24.9.0 - jest-config: 24.9.0 - jest-haste-map: 24.9.0 - jest-message-util: 24.9.0 - jest-regex-util: 24.9.0 - jest-resolve: 24.9.0 - jest-resolve-dependencies: 24.9.0 - jest-runner: 24.9.0 - jest-runtime: 24.9.0 - jest-snapshot: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - jest-watcher: 24.9.0 - micromatch: 3.1.10 - p-each-series: 1.0.0 - realpath-native: 1.1.0 - rimraf: 2.7.1 - slash: 2.0.0 - strip-ansi: 5.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@jest/core@26.6.3': dependencies: '@jest/console': 26.6.2 @@ -16597,15 +16039,6 @@ snapshots: - ts-node - utf-8-validate - '@jest/environment@24.9.0': - dependencies: - '@jest/fake-timers': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - jest-mock: 24.9.0 - transitivePeerDependencies: - - supports-color - '@jest/environment@26.6.2': dependencies: '@jest/fake-timers': 26.6.2 @@ -16631,14 +16064,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/fake-timers@24.9.0': - dependencies: - '@jest/types': 24.9.0 - jest-message-util: 24.9.0 - jest-mock: 24.9.0 - transitivePeerDependencies: - - supports-color - '@jest/fake-timers@26.6.2': dependencies: '@jest/types': 26.6.2 @@ -16672,34 +16097,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@24.9.0': - dependencies: - '@jest/environment': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - exit: 0.1.2 - glob: 7.1.6 - istanbul-lib-coverage: 2.0.5 - istanbul-lib-instrument: 3.3.0 - istanbul-lib-report: 2.0.8 - istanbul-lib-source-maps: 3.0.6 - istanbul-reports: 2.2.7 - jest-haste-map: 24.9.0 - jest-resolve: 24.9.0 - jest-runtime: 24.9.0 - jest-util: 24.9.0 - jest-worker: 24.9.0 - node-notifier: 5.4.5 - slash: 2.0.0 - source-map: 0.6.1 - string-length: 2.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@jest/reporters@26.6.2': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -16735,24 +16132,12 @@ snapshots: dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@24.9.0': - dependencies: - callsites: 3.1.0 - graceful-fs: 4.2.11 - source-map: 0.6.1 - '@jest/source-map@26.6.2': dependencies: callsites: 3.1.0 graceful-fs: 4.2.11 source-map: 0.6.1 - '@jest/test-result@24.9.0': - dependencies: - '@jest/console': 24.9.0 - '@jest/types': 24.9.0 - '@types/istanbul-lib-coverage': 2.0.6 - '@jest/test-result@26.6.2': dependencies: '@jest/console': 26.6.2 @@ -16760,17 +16145,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - '@jest/test-sequencer@24.9.0': - dependencies: - '@jest/test-result': 24.9.0 - jest-haste-map: 24.9.0 - jest-runner: 24.9.0 - jest-runtime: 24.9.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@jest/test-sequencer@26.6.3': dependencies: '@jest/test-result': 26.6.2 @@ -16785,27 +16159,6 @@ snapshots: - ts-node - utf-8-validate - '@jest/transform@24.9.0': - dependencies: - '@babel/core': 7.26.0 - '@jest/types': 24.9.0 - babel-plugin-istanbul: 5.2.0 - chalk: 2.4.2 - convert-source-map: 1.9.0 - fast-json-stable-stringify: 2.1.0 - graceful-fs: 4.2.11 - jest-haste-map: 24.9.0 - jest-regex-util: 24.9.0 - jest-util: 24.9.0 - micromatch: 3.1.10 - pirates: 4.0.6 - realpath-native: 1.1.0 - slash: 2.0.0 - source-map: 0.6.1 - write-file-atomic: 2.4.1 - transitivePeerDependencies: - - supports-color - '@jest/transform@26.6.2': dependencies: '@babel/core': 7.26.0 @@ -17477,96 +16830,6 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': - dependencies: - '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) - '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': dependencies: '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -17628,7 +16891,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) abortcontroller-polyfill: 1.7.5 base-x: 3.0.10 browserslist: 4.24.2 @@ -17656,7 +16919,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/helpers' @@ -17666,7 +16929,7 @@ snapshots: '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) transitivePeerDependencies: - '@swc/helpers' @@ -17729,10 +16992,10 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2)': + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': dependencies: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) nullthrows: 1.1.1 posthtml: 0.16.6 svgo: 2.8.0 @@ -17748,58 +17011,20 @@ snapshots: - typescript - uncss - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2)': + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 + '@parcel/rust': 2.12.0 + '@parcel/utils': 2.12.0 + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) transitivePeerDependencies: - - '@parcel/core' - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) - nullthrows: 1.1.1 - posthtml: 0.16.6 - svgo: 2.8.0 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/rust': 2.12.0 - '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/optimizer-svgo@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': - dependencies: - '@parcel/diagnostic': 2.12.0 + '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 svgo: 2.8.0 @@ -17840,7 +17065,7 @@ snapshots: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -17852,9 +17077,9 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -18082,7 +17307,7 @@ snapshots: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' @@ -18095,7 +17320,7 @@ snapshots: '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@swc/helpers': 0.5.13 browserslist: 4.24.2 nullthrows: 1.1.1 @@ -18167,32 +17392,6 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.2.2)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.2.2) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.2.2 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.4.2)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.4.2) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(typescript@5.6.3)': dependencies: '@parcel/diagnostic': 2.12.0 @@ -18206,42 +17405,19 @@ snapshots: - '@parcel/core' - '@swc/helpers' - '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.2.2)': - dependencies: - '@parcel/diagnostic': 2.12.0 - '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) - '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.2.2) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - typescript: 5.2.2 - transitivePeerDependencies: - - '@parcel/core' - - '@swc/helpers' - - '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.4.2)': + '@parcel/transformer-typescript-types@2.12.0(@swc/helpers@0.5.13)(typescript@5.6.3)': dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/ts-utils': 2.12.0(typescript@5.4.2) + '@parcel/ts-utils': 2.12.0(typescript@5.6.3) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - typescript: 5.4.2 + typescript: 5.6.3 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - '@parcel/ts-utils@2.12.0(typescript@5.2.2)': - dependencies: - nullthrows: 1.1.1 - typescript: 5.2.2 - - '@parcel/ts-utils@2.12.0(typescript@5.4.2)': - dependencies: - nullthrows: 1.1.1 - typescript: 5.4.2 - '@parcel/ts-utils@2.12.0(typescript@5.6.3)': dependencies: nullthrows: 1.1.1 @@ -18254,7 +17430,7 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -18267,7 +17443,7 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -18340,28 +17516,15 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/logger': 2.12.0 - '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' - - '@parcel/workers@2.12.0(@swc/helpers@0.5.13)': - dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/logger': 2.12.0 '@parcel/profiler': 2.12.0 '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' '@pkgjs/parseargs@0.11.0': optional: true @@ -20156,6 +19319,21 @@ snapshots: '@types/jest': 29.5.14 vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3)': + dependencies: + '@adobe/css-tools': 4.4.0 + '@babel/runtime': 7.20.6 + aria-query: 5.3.2 + chalk: 3.0.0 + css.escape: 1.5.1 + dom-accessibility-api: 0.6.3 + lodash: 4.17.21 + redent: 3.0.0 + optionalDependencies: + '@jest/globals': 29.7.0 + '@types/jest': 29.5.14 + vitest: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@testing-library/jest-dom@6.5.0': dependencies: '@adobe/css-tools': 4.4.0 @@ -20332,6 +19510,11 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 20.17.2 + '@types/glob@8.1.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 20.17.2 + '@types/graceful-fs@4.1.9': dependencies: '@types/node': 20.17.2 @@ -20523,8 +19706,6 @@ snapshots: dependencies: '@types/node': 20.17.2 - '@types/stack-utils@1.0.1': {} - '@types/stack-utils@2.0.3': {} '@types/testing-library__dom@6.14.0': @@ -20545,6 +19726,8 @@ snapshots: '@types/testing-library__dom': 7.5.0 pretty-format: 25.5.0 + '@types/tmp@0.2.6': {} + '@types/unist@3.0.3': {} '@types/use-sync-external-store@0.0.3': {} @@ -20554,7 +19737,7 @@ snapshots: '@types/vinyl@2.0.12': dependencies: '@types/expect': 1.20.4 - '@types/node': 22.8.1 + '@types/node': 20.17.2 '@types/ws@8.5.12': dependencies: @@ -20803,12 +19986,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.5.0 - '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -20823,7 +20000,7 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': dependencies: '@vitest/spy': 2.1.3 estree-walker: 3.0.3 @@ -20831,6 +20008,14 @@ snapshots: optionalDependencies: vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': + dependencies: + '@vitest/spy': 2.1.3 + estree-walker: 3.0.3 + magic-string: 0.30.12 + optionalDependencies: + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 @@ -20839,33 +20024,17 @@ snapshots: dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@1.6.0': - dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.2 - '@vitest/runner@2.1.3': dependencies: '@vitest/utils': 2.1.3 pathe: 1.1.2 - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.12 - pathe: 1.1.2 - pretty-format: 29.7.0 - '@vitest/snapshot@2.1.3': dependencies: '@vitest/pretty-format': 2.1.3 magic-string: 0.30.12 pathe: 1.1.2 - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - '@vitest/spy@2.0.5': dependencies: tinyspy: 3.0.2 @@ -20874,13 +20043,6 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/utils@1.6.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - '@vitest/utils@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 @@ -20920,7 +20082,7 @@ snapshots: '@vue/compiler-core': 3.5.12 '@vue/shared': 3.5.12 - '@vue/language-core@1.8.27(typescript@5.4.2)': + '@vue/language-core@1.8.27(typescript@5.6.3)': dependencies: '@volar/language-core': 1.11.1 '@volar/source-map': 1.11.1 @@ -20932,7 +20094,7 @@ snapshots: path-browserify: 1.0.1 vue-template-compiler: 2.7.16 optionalDependencies: - typescript: 5.4.2 + typescript: 5.6.3 '@vue/shared@3.5.12': {} @@ -21031,11 +20193,6 @@ snapshots: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-globals@4.3.4: - dependencies: - acorn: 6.4.2 - acorn-walk: 6.2.0 - acorn-globals@6.0.0: dependencies: acorn: 7.4.1 @@ -21058,18 +20215,12 @@ snapshots: dependencies: acorn: 8.13.0 - acorn-walk@6.2.0: {} - acorn-walk@7.2.0: {} acorn-walk@8.3.4: dependencies: acorn: 8.13.0 - acorn@5.7.4: {} - - acorn@6.4.2: {} - acorn@7.4.1: {} acorn@8.13.0: {} @@ -21156,8 +20307,6 @@ snapshots: ansi-escapes@2.0.0: {} - ansi-escapes@3.2.0: {} - ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 @@ -21168,8 +20317,6 @@ snapshots: ansi-regex@2.1.1: {} - ansi-regex@3.0.1: {} - ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} @@ -21256,8 +20403,6 @@ snapshots: array-differ@3.0.0: {} - array-equal@1.0.2: {} - array-flatten@1.1.1: {} array-includes@3.1.8: @@ -21363,8 +20508,6 @@ snapshots: assert-plus@1.0.0: {} - assertion-error@1.1.0: {} - assertion-error@2.0.1: {} assign-symbols@1.0.0: {} @@ -21379,12 +20522,8 @@ snapshots: dependencies: tslib: 2.8.0 - astral-regex@1.0.0: {} - astral-regex@2.0.0: {} - async-limiter@1.0.1: {} - async-retry@1.3.3: dependencies: retry: 0.13.1 @@ -21480,19 +20619,6 @@ snapshots: babel-runtime: 6.26.0 babel-types: 6.26.0 - babel-jest@24.9.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 5.2.0 - babel-preset-jest: 24.9.0(@babel/core@7.26.0) - chalk: 2.4.2 - slash: 2.0.0 - transitivePeerDependencies: - - supports-color - babel-jest@26.6.3(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -21536,15 +20662,6 @@ snapshots: babel-plugin-add-module-exports@0.2.1: {} - babel-plugin-istanbul@5.2.0: - dependencies: - '@babel/helper-plugin-utils': 7.25.9 - find-up: 3.0.0 - istanbul-lib-instrument: 3.3.0 - test-exclude: 5.2.3 - transitivePeerDependencies: - - supports-color - babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.25.9 @@ -21555,10 +20672,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@24.9.0: - dependencies: - '@types/babel__traverse': 7.20.6 - babel-plugin-jest-hoist@26.6.2: dependencies: '@babel/template': 7.25.9 @@ -21661,12 +20774,6 @@ snapshots: '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.26.0) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.26.0) - babel-preset-jest@24.9.0(@babel/core@7.26.0): - dependencies: - '@babel/core': 7.26.0 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.26.0) - babel-plugin-jest-hoist: 24.9.0 - babel-preset-jest@26.6.2(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 @@ -21830,11 +20937,6 @@ snapshots: binaryextensions@4.19.0: {} - bindings@1.5.0: - dependencies: - file-uri-to-path: 1.0.0 - optional: true - bl@4.1.0: dependencies: buffer: 5.7.1 @@ -21935,10 +21037,6 @@ snapshots: browser-process-hrtime@1.0.0: {} - browser-resolve@1.11.3: - dependencies: - resolve: 1.1.7 - browserslist@4.14.2: dependencies: caniuse-lite: 1.0.30001671 @@ -22183,16 +21281,6 @@ snapshots: ccount@2.0.1: {} - chai@4.5.0: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.1.0 - chai@5.1.2: dependencies: assertion-error: 2.0.1 @@ -22235,10 +21323,6 @@ snapshots: chardet@0.7.0: {} - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - check-error@2.1.1: {} check-more-types@2.24.0: {} @@ -22335,12 +21419,6 @@ snapshots: client-only@0.0.1: {} - cliui@5.0.0: - dependencies: - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi: 5.1.0 - cliui@6.0.0: dependencies: string-width: 4.2.3 @@ -22495,8 +21573,6 @@ snapshots: concat-map@0.0.1: {} - confbox@0.1.8: {} - config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -22625,15 +21701,6 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@8.3.6(typescript@5.4.2): - dependencies: - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - path-type: 4.0.0 - optionalDependencies: - typescript: 5.4.2 - cosmiconfig@8.3.6(typescript@5.6.3): dependencies: import-fresh: 3.3.0 @@ -22643,24 +21710,6 @@ snapshots: optionalDependencies: typescript: 5.6.3 - cosmiconfig@9.0.0(typescript@5.2.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.2.2 - - cosmiconfig@9.0.0(typescript@5.4.2): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.4.2 - cosmiconfig@9.0.0(typescript@5.6.3): dependencies: env-paths: 2.2.1 @@ -22873,10 +21922,6 @@ snapshots: cssom@0.4.4: {} - cssstyle@1.4.0: - dependencies: - cssom: 0.3.8 - cssstyle@2.3.0: dependencies: cssom: 0.3.8 @@ -22963,12 +22008,6 @@ snapshots: data-uri-to-buffer@6.0.2: {} - data-urls@1.1.0: - dependencies: - abab: 2.0.6 - whatwg-mimetype: 2.3.0 - whatwg-url: 7.1.0 - data-urls@2.0.0: dependencies: abab: 2.0.6 @@ -23061,10 +22100,6 @@ snapshots: deep-copy@1.4.2: {} - deep-eql@4.1.4: - dependencies: - type-detect: 4.1.0 - deep-eql@5.0.2: {} deep-equal@2.2.3: @@ -23190,8 +22225,6 @@ snapshots: detect-libc@2.0.3: {} - detect-newline@2.1.0: {} - detect-newline@3.1.0: {} detect-node@2.1.0: {} @@ -23212,8 +22245,6 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 - diff-sequences@24.9.0: {} - diff-sequences@26.6.2: {} diff-sequences@29.6.3: {} @@ -23285,10 +22316,6 @@ snapshots: domelementtype@2.3.0: {} - domexception@1.0.1: - dependencies: - webidl-conversions: 4.0.2 - domexception@2.0.1: dependencies: webidl-conversions: 5.0.0 @@ -23358,8 +22385,6 @@ snapshots: emoji-regex@10.4.0: {} - emoji-regex@7.0.3: {} - emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -23651,15 +22676,6 @@ snapshots: escape-string-regexp@5.0.0: {} - escodegen@1.14.3: - dependencies: - esprima: 4.0.1 - estraverse: 4.3.0 - esutils: 2.0.3 - optionator: 0.8.3 - optionalDependencies: - source-map: 0.6.1 - escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -24129,17 +23145,6 @@ snapshots: transitivePeerDependencies: - supports-color - expect@24.9.0: - dependencies: - '@jest/types': 24.9.0 - ansi-styles: 3.2.1 - jest-get-type: 24.9.0 - jest-matcher-utils: 24.9.0 - jest-message-util: 24.9.0 - jest-regex-util: 24.9.0 - transitivePeerDependencies: - - supports-color - expect@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -24329,9 +23334,6 @@ snapshots: dependencies: tslib: 2.8.0 - file-uri-to-path@1.0.0: - optional: true - filelist@1.0.4: dependencies: minimatch: 5.1.6 @@ -24579,12 +23581,6 @@ snapshots: fs.realpath@1.0.0: {} - fsevents@1.2.13: - dependencies: - bindings: 1.5.0 - nan: 2.22.0 - optional: true - fsevents@2.3.3: optional: true @@ -24632,8 +23628,6 @@ snapshots: get-east-asian-width@1.3.0: {} - get-func-name@2.0.2: {} - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 @@ -24900,7 +23894,8 @@ snapshots: grouped-queue@2.0.0: {} - growly@1.3.0: {} + growly@1.3.0: + optional: true gzip-size@5.1.1: dependencies: @@ -25033,10 +24028,6 @@ snapshots: hsla-regex@1.0.0: {} - html-encoding-sniffer@1.0.2: - dependencies: - whatwg-encoding: 1.0.5 - html-encoding-sniffer@2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -25070,9 +24061,9 @@ snapshots: tapable: 2.2.1 webpack: 5.90.1 - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.2.2): + htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3): dependencies: - cosmiconfig: 9.0.0(typescript@5.2.2) + cosmiconfig: 9.0.0(typescript@5.6.3) posthtml: 0.16.6 timsort: 0.3.0 optionalDependencies: @@ -25083,38 +24074,12 @@ snapshots: transitivePeerDependencies: - typescript - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.4.2): + htmlparser2@6.1.0: dependencies: - cosmiconfig: 9.0.0(typescript@5.4.2) - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.4.47 - relateurl: 0.2.7 - svgo: 2.8.0 - terser: 5.36.0 - transitivePeerDependencies: - - typescript - - htmlnano@2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3): - dependencies: - cosmiconfig: 9.0.0(typescript@5.6.3) - posthtml: 0.16.6 - timsort: 0.3.0 - optionalDependencies: - postcss: 8.4.47 - relateurl: 0.2.7 - svgo: 2.8.0 - terser: 5.36.0 - transitivePeerDependencies: - - typescript - - htmlparser2@6.1.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 4.3.1 - domutils: 2.8.0 - entities: 2.2.0 + domelementtype: 2.3.0 + domhandler: 4.3.1 + domutils: 2.8.0 + entities: 2.2.0 htmlparser2@7.2.0: dependencies: @@ -25303,11 +24268,6 @@ snapshots: import-lazy@4.0.0: {} - import-local@2.0.0: - dependencies: - pkg-dir: 3.0.0 - resolve-cwd: 2.0.0 - import-local@3.2.0: dependencies: pkg-dir: 4.2.0 @@ -25551,8 +24511,6 @@ snapshots: dependencies: call-bind: 1.0.7 - is-fullwidth-code-point@2.0.0: {} - is-fullwidth-code-point@3.0.0: {} is-generator-fn@2.1.0: {} @@ -25692,8 +24650,6 @@ snapshots: is-windows@1.0.2: {} - is-wsl@1.1.0: {} - is-wsl@2.2.0: dependencies: is-docker: 2.2.1 @@ -25739,22 +24695,8 @@ snapshots: lodash.isstring: 4.0.1 lodash.uniqby: 4.7.0 - istanbul-lib-coverage@2.0.5: {} - istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@3.3.0: - dependencies: - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.20.5 - istanbul-lib-coverage: 2.0.5 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-instrument@4.0.3: dependencies: '@babel/core': 7.26.0 @@ -25774,28 +24716,12 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-report@2.0.8: - dependencies: - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - supports-color: 6.1.0 - istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@3.0.6: - dependencies: - debug: 4.3.4(supports-color@8.1.1) - istanbul-lib-coverage: 2.0.5 - make-dir: 2.1.0 - rimraf: 2.7.1 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4(supports-color@8.1.1) @@ -25812,10 +24738,6 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-reports@2.2.7: - dependencies: - html-escaper: 2.0.2 - istanbul-reports@3.1.7: dependencies: html-escaper: 2.0.2 @@ -25856,38 +24778,12 @@ snapshots: jest-matcher-utils: 29.2.2 lodash.merge: 4.6.2 - jest-changed-files@24.9.0: - dependencies: - '@jest/types': 24.9.0 - execa: 1.0.0 - throat: 4.1.0 - jest-changed-files@26.6.2: dependencies: '@jest/types': 26.6.2 execa: 4.1.0 throat: 5.0.0 - jest-cli@24.9.0: - dependencies: - '@jest/core': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - exit: 0.1.2 - import-local: 2.0.0 - is-ci: 2.0.0 - jest-config: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - prompts: 2.4.2 - realpath-native: 1.1.0 - yargs: 13.3.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-cli@26.6.3: dependencies: '@jest/core': 26.6.3 @@ -25910,30 +24806,6 @@ snapshots: - ts-node - utf-8-validate - jest-config@24.9.0: - dependencies: - '@babel/core': 7.26.0 - '@jest/test-sequencer': 24.9.0 - '@jest/types': 24.9.0 - babel-jest: 24.9.0(@babel/core@7.26.0) - chalk: 2.4.2 - glob: 7.1.6 - jest-environment-jsdom: 24.9.0 - jest-environment-node: 24.9.0 - jest-get-type: 24.9.0 - jest-jasmine2: 24.9.0 - jest-regex-util: 24.9.0 - jest-resolve: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - micromatch: 3.1.10 - pretty-format: 24.9.0 - realpath-native: 1.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-config@26.6.3: dependencies: '@babel/core': 7.26.0 @@ -25960,13 +24832,6 @@ snapshots: - supports-color - utf-8-validate - jest-diff@24.9.0: - dependencies: - chalk: 2.4.2 - diff-sequences: 24.9.0 - jest-get-type: 24.9.0 - pretty-format: 24.9.0 - jest-diff@26.6.2: dependencies: chalk: 4.1.2 @@ -25981,24 +24846,10 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-docblock@24.9.0: - dependencies: - detect-newline: 2.1.0 - jest-docblock@26.0.0: dependencies: detect-newline: 3.1.0 - jest-each@24.9.0: - dependencies: - '@jest/types': 24.9.0 - chalk: 2.4.2 - jest-get-type: 24.9.0 - jest-util: 24.9.0 - pretty-format: 24.9.0 - transitivePeerDependencies: - - supports-color - jest-each@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26007,19 +24858,6 @@ snapshots: jest-util: 26.6.2 pretty-format: 26.6.2 - jest-environment-jsdom@24.9.0: - dependencies: - '@jest/environment': 24.9.0 - '@jest/fake-timers': 24.9.0 - '@jest/types': 24.9.0 - jest-mock: 24.9.0 - jest-util: 24.9.0 - jsdom: 11.12.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-environment-jsdom@26.6.2: dependencies: '@jest/environment': 26.6.2 @@ -26035,16 +24873,6 @@ snapshots: - supports-color - utf-8-validate - jest-environment-node@24.9.0: - dependencies: - '@jest/environment': 24.9.0 - '@jest/fake-timers': 24.9.0 - '@jest/types': 24.9.0 - jest-mock: 24.9.0 - jest-util: 24.9.0 - transitivePeerDependencies: - - supports-color - jest-environment-node@26.6.2: dependencies: '@jest/environment': 26.6.2 @@ -26056,30 +24884,10 @@ snapshots: jest-file@1.0.0: {} - jest-get-type@24.9.0: {} - jest-get-type@26.3.0: {} jest-get-type@29.6.3: {} - jest-haste-map@24.9.0: - dependencies: - '@jest/types': 24.9.0 - anymatch: 2.0.0 - fb-watchman: 2.0.2 - graceful-fs: 4.2.11 - invariant: 2.2.4 - jest-serializer: 24.9.0 - jest-util: 24.9.0 - jest-worker: 24.9.0 - micromatch: 3.1.10 - sane: 4.1.0 - walker: 1.0.8 - optionalDependencies: - fsevents: 1.2.13 - transitivePeerDependencies: - - supports-color - jest-haste-map@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26116,29 +24924,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-jasmine2@24.9.0: - dependencies: - '@babel/traverse': 7.25.9 - '@jest/environment': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - co: 4.6.0 - expect: 24.9.0 - is-generator-fn: 2.1.0 - jest-each: 24.9.0 - jest-matcher-utils: 24.9.0 - jest-message-util: 24.9.0 - jest-runtime: 24.9.0 - jest-snapshot: 24.9.0 - jest-util: 24.9.0 - pretty-format: 24.9.0 - throat: 4.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-jasmine2@26.6.3: dependencies: '@babel/traverse': 7.25.9 @@ -26166,23 +24951,11 @@ snapshots: - ts-node - utf-8-validate - jest-leak-detector@24.9.0: - dependencies: - jest-get-type: 24.9.0 - pretty-format: 24.9.0 - jest-leak-detector@26.6.2: dependencies: jest-get-type: 26.3.0 pretty-format: 26.6.2 - jest-matcher-utils@24.9.0: - dependencies: - chalk: 2.4.2 - jest-diff: 24.9.0 - jest-get-type: 24.9.0 - pretty-format: 24.9.0 - jest-matcher-utils@26.6.2: dependencies: chalk: 4.1.2 @@ -26204,19 +24977,6 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-message-util@24.9.0: - dependencies: - '@babel/code-frame': 7.26.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - '@types/stack-utils': 1.0.1 - chalk: 2.4.2 - micromatch: 3.1.10 - slash: 2.0.0 - stack-utils: 1.0.5 - transitivePeerDependencies: - - supports-color - jest-message-util@26.6.2: dependencies: '@babel/code-frame': 7.26.0 @@ -26241,10 +25001,6 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@24.9.0: - dependencies: - '@jest/types': 24.9.0 - jest-mock@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26256,28 +25012,14 @@ snapshots: '@types/node': 20.17.2 jest-util: 29.7.0 - jest-pnp-resolver@1.2.3(jest-resolve@24.9.0): - optionalDependencies: - jest-resolve: 24.9.0 - jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): optionalDependencies: jest-resolve: 26.6.2 - jest-regex-util@24.9.0: {} - jest-regex-util@26.0.0: {} jest-regex-util@29.6.3: {} - jest-resolve-dependencies@24.9.0: - dependencies: - '@jest/types': 24.9.0 - jest-regex-util: 24.9.0 - jest-snapshot: 24.9.0 - transitivePeerDependencies: - - supports-color - jest-resolve-dependencies@26.6.3: dependencies: '@jest/types': 26.6.2 @@ -26286,14 +25028,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-resolve@24.9.0: - dependencies: - '@jest/types': 24.9.0 - browser-resolve: 1.11.3 - chalk: 2.4.2 - jest-pnp-resolver: 1.2.3(jest-resolve@24.9.0) - realpath-native: 1.1.0 - jest-resolve@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26305,32 +25039,6 @@ snapshots: resolve: 1.22.8 slash: 3.0.0 - jest-runner@24.9.0: - dependencies: - '@jest/console': 24.9.0 - '@jest/environment': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - chalk: 2.4.2 - exit: 0.1.2 - graceful-fs: 4.2.11 - jest-config: 24.9.0 - jest-docblock: 24.9.0 - jest-haste-map: 24.9.0 - jest-jasmine2: 24.9.0 - jest-leak-detector: 24.9.0 - jest-message-util: 24.9.0 - jest-resolve: 24.9.0 - jest-runtime: 24.9.0 - jest-util: 24.9.0 - jest-worker: 24.9.0 - source-map-support: 0.5.21 - throat: 4.1.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-runner@26.6.3: dependencies: '@jest/console': 26.6.2 @@ -26360,36 +25068,6 @@ snapshots: - ts-node - utf-8-validate - jest-runtime@24.9.0: - dependencies: - '@jest/console': 24.9.0 - '@jest/environment': 24.9.0 - '@jest/source-map': 24.9.0 - '@jest/transform': 24.9.0 - '@jest/types': 24.9.0 - '@types/yargs': 13.0.12 - chalk: 2.4.2 - exit: 0.1.2 - glob: 7.1.6 - graceful-fs: 4.2.11 - jest-config: 24.9.0 - jest-haste-map: 24.9.0 - jest-message-util: 24.9.0 - jest-mock: 24.9.0 - jest-regex-util: 24.9.0 - jest-resolve: 24.9.0 - jest-snapshot: 24.9.0 - jest-util: 24.9.0 - jest-validate: 24.9.0 - realpath-native: 1.1.0 - slash: 2.0.0 - strip-bom: 3.0.0 - yargs: 13.3.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest-runtime@26.6.3: dependencies: '@jest/console': 26.6.2 @@ -26426,31 +25104,11 @@ snapshots: - ts-node - utf-8-validate - jest-serializer@24.9.0: {} - jest-serializer@26.6.2: dependencies: '@types/node': 20.17.2 graceful-fs: 4.2.11 - jest-snapshot@24.9.0: - dependencies: - '@babel/types': 7.20.5 - '@jest/types': 24.9.0 - chalk: 2.4.2 - expect: 24.9.0 - jest-diff: 24.9.0 - jest-get-type: 24.9.0 - jest-matcher-utils: 24.9.0 - jest-message-util: 24.9.0 - jest-resolve: 24.9.0 - mkdirp: 0.5.6 - natural-compare: 1.4.0 - pretty-format: 24.9.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - jest-snapshot@26.6.2: dependencies: '@babel/types': 7.20.5 @@ -26497,23 +25155,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-util@24.9.0: - dependencies: - '@jest/console': 24.9.0 - '@jest/fake-timers': 24.9.0 - '@jest/source-map': 24.9.0 - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - callsites: 3.1.0 - chalk: 2.4.2 - graceful-fs: 4.2.11 - is-ci: 2.0.0 - mkdirp: 0.5.6 - slash: 2.0.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - jest-util@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26532,15 +25173,6 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@24.9.0: - dependencies: - '@jest/types': 24.9.0 - camelcase: 5.3.1 - chalk: 2.4.2 - jest-get-type: 24.9.0 - leven: 3.1.0 - pretty-format: 24.9.0 - jest-validate@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -26550,18 +25182,6 @@ snapshots: leven: 3.1.0 pretty-format: 26.6.2 - jest-watcher@24.9.0: - dependencies: - '@jest/test-result': 24.9.0 - '@jest/types': 24.9.0 - '@types/yargs': 13.0.12 - ansi-escapes: 3.2.0 - chalk: 2.4.2 - jest-util: 24.9.0 - string-length: 2.0.0 - transitivePeerDependencies: - - supports-color - jest-watcher@26.6.2: dependencies: '@jest/test-result': 26.6.2 @@ -26572,11 +25192,6 @@ snapshots: jest-util: 26.6.2 string-length: 4.0.2 - jest-worker@24.9.0: - dependencies: - merge-stream: 2.0.0 - supports-color: 6.1.0 - jest-worker@25.5.0: dependencies: merge-stream: 2.0.0 @@ -26601,15 +25216,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@24.9.0: - dependencies: - import-local: 2.0.0 - jest-cli: 24.9.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - jest@26.6.3: dependencies: '@jest/core': 26.6.3 @@ -26661,38 +25267,6 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} - jsdom@11.12.0: - dependencies: - abab: 2.0.6 - acorn: 5.7.4 - acorn-globals: 4.3.4 - array-equal: 1.0.2 - cssom: 0.3.8 - cssstyle: 1.4.0 - data-urls: 1.1.0 - domexception: 1.0.1 - escodegen: 1.14.3 - html-encoding-sniffer: 1.0.2 - left-pad: 1.3.0 - nwsapi: 2.2.13 - parse5: 4.0.0 - pn: 1.1.0 - request: 2.88.2 - request-promise-native: 1.0.9(request@2.88.2) - sax: 1.2.4 - symbol-tree: 3.2.4 - tough-cookie: 2.5.0 - w3c-hr-time: 1.0.2 - webidl-conversions: 4.0.2 - whatwg-encoding: 1.0.5 - whatwg-mimetype: 2.3.0 - whatwg-url: 6.5.0 - ws: 5.2.4 - xml-name-validator: 3.0.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - jsdom@16.7.0: dependencies: abab: 2.0.6 @@ -26937,8 +25511,6 @@ snapshots: lcov-parse@1.0.0: {} - left-pad@1.3.0: {} - less-loader@11.1.0(less@3.11.1)(webpack@5.90.1): dependencies: klona: 2.0.6 @@ -26961,11 +25533,6 @@ snapshots: leven@3.1.0: {} - levn@0.3.0: - dependencies: - prelude-ls: 1.1.2 - type-check: 0.3.2 - levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -27099,13 +25666,6 @@ snapshots: '@lmdb/lmdb-linux-x64': 2.8.5 '@lmdb/lmdb-win32-x64': 2.8.5 - load-json-file@4.0.0: - dependencies: - graceful-fs: 4.2.11 - parse-json: 4.0.0 - pify: 3.0.0 - strip-bom: 3.0.0 - load-tsconfig@0.2.5: {} load-yaml-file@0.2.0: @@ -27135,11 +25695,6 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - local-pkg@0.5.0: - dependencies: - mlly: 1.7.2 - pkg-types: 1.2.1 - locale@0.1.0: {} locate-path@3.0.0: @@ -27236,10 +25791,6 @@ snapshots: dependencies: js-tokens: 4.0.0 - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - loupe@3.1.2: {} lower-case@2.0.2: @@ -27287,11 +25838,6 @@ snapshots: '@babel/types': 7.26.0 source-map-js: 1.2.1 - make-dir@2.1.0: - dependencies: - pify: 4.0.1 - semver: 5.7.2 - make-dir@3.1.0: dependencies: semver: 6.3.1 @@ -27903,13 +26449,6 @@ snapshots: mkdirp@1.0.4: {} - mlly@1.7.2: - dependencies: - acorn: 8.13.0 - pathe: 1.1.2 - pkg-types: 1.2.1 - ufo: 1.5.4 - moment-locales-webpack-plugin@1.2.0(moment@2.29.4)(webpack@5.90.1): dependencies: lodash.difference: 4.5.0 @@ -27992,9 +26531,6 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.22.0: - optional: true - nanoid@3.3.7: {} nanomatch@1.2.13: @@ -28117,14 +26653,6 @@ snapshots: node-int64@0.4.0: {} - node-notifier@5.4.5: - dependencies: - growly: 1.3.0 - is-wsl: 1.1.0 - semver: 5.7.2 - shellwords: 0.1.1 - which: 1.3.1 - node-notifier@8.0.2: dependencies: growly: 1.3.0 @@ -28425,15 +26953,6 @@ snapshots: opener@1.5.2: {} - optionator@0.8.3: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.3.0 - prelude-ls: 1.1.2 - type-check: 0.3.2 - word-wrap: 1.2.5 - optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -28501,10 +27020,6 @@ snapshots: p-cancelable@3.0.0: {} - p-each-series@1.0.0: - dependencies: - p-reduce: 1.0.0 - p-each-series@2.2.0: {} p-finally@1.0.0: {} @@ -28521,10 +27036,6 @@ snapshots: dependencies: yocto-queue: 1.1.1 - p-limit@5.0.0: - dependencies: - yocto-queue: 1.1.1 - p-locate@3.0.0: dependencies: p-limit: 2.3.0 @@ -28554,8 +27065,6 @@ snapshots: eventemitter3: 4.0.7 p-timeout: 3.2.0 - p-reduce@1.0.0: {} - p-retry@4.6.2: dependencies: '@types/retry': 0.12.0 @@ -28644,77 +27153,23 @@ snapshots: minipass: 5.0.0 npm-package-arg: 10.1.0 npm-packlist: 7.0.4 - npm-pick-manifest: 8.0.2 - npm-registry-fetch: 14.0.5 - proc-log: 3.0.0 - promise-retry: 2.0.1 - read-package-json: 6.0.4 - read-package-json-fast: 3.0.2 - sigstore: 1.9.0 - ssri: 10.0.6 - tar: 6.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - param-case@3.0.4: - dependencies: - dot-case: 3.0.4 - tslib: 2.8.0 - - parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2): - dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.2.2) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 - transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss - - parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2): - dependencies: - '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.4.2) - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) - '@parcel/diagnostic': 2.12.0 - '@parcel/events': 2.12.0 - '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/logger': 2.12.0 - '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@parcel/utils': 2.12.0 - chalk: 4.1.2 - commander: 7.2.0 - get-port: 4.2.0 + npm-pick-manifest: 8.0.2 + npm-registry-fetch: 14.0.5 + proc-log: 3.0.0 + promise-retry: 2.0.1 + read-package-json: 6.0.4 + read-package-json-fast: 3.0.2 + sigstore: 1.9.0 + ssri: 10.0.6 + tar: 6.2.1 transitivePeerDependencies: - - '@swc/helpers' - - cssnano - - postcss - - purgecss - - relateurl - - srcset - - terser - - typescript - - uncss + - bluebird + - supports-color + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.0 parcel@2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3): dependencies: @@ -28773,8 +27228,6 @@ snapshots: dependencies: parse-path: 7.0.0 - parse5@4.0.0: {} - parse5@6.0.1: {} parse5@7.2.0: @@ -28821,18 +27274,12 @@ snapshots: path-to-regexp@6.3.0: {} - path-type@3.0.0: - dependencies: - pify: 3.0.0 - path-type@4.0.0: {} path-type@5.0.0: {} pathe@1.1.2: {} - pathval@1.1.1: {} - pathval@2.0.0: {} pause-stream@0.0.11: @@ -28853,16 +27300,10 @@ snapshots: pify@2.3.0: {} - pify@3.0.0: {} - pify@4.0.1: {} pirates@4.0.6: {} - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 - pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -28871,18 +27312,10 @@ snapshots: dependencies: find-up: 6.3.0 - pkg-types@1.2.1: - dependencies: - confbox: 0.1.8 - mlly: 1.7.2 - pathe: 1.1.2 - pkg-up@3.1.0: dependencies: find-up: 3.0.0 - pn@1.1.0: {} - pnp-webpack-plugin@1.7.0(typescript@5.6.3): dependencies: ts-pnp: 1.2.0(typescript@5.6.3) @@ -29229,8 +27662,6 @@ snapshots: path-exists: 4.0.0 which-pm: 2.2.0 - prelude-ls@1.1.2: {} - prelude-ls@1.2.1: {} prepend-http@2.0.0: {} @@ -30235,23 +28666,12 @@ snapshots: normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 - read-pkg-up@4.0.0: - dependencies: - find-up: 3.0.0 - read-pkg: 3.0.0 - read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - read-pkg@3.0.0: - dependencies: - load-json-file: 4.0.0 - normalize-package-data: 2.5.0 - path-type: 3.0.0 - read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -30296,10 +28716,6 @@ snapshots: readdirp@4.0.2: {} - realpath-native@1.1.0: - dependencies: - util.promisify: 1.0.1 - recast@0.23.9: dependencies: ast-types: 0.16.1 @@ -30466,40 +28882,6 @@ snapshots: relateurl@0.2.7: {} - release-it@16.2.1(encoding@0.1.13)(typescript@5.4.2): - dependencies: - '@iarna/toml': 2.2.5 - '@octokit/rest': 19.0.13(encoding@0.1.13) - async-retry: 1.3.3 - chalk: 5.3.0 - cosmiconfig: 8.3.6(typescript@5.4.2) - execa: 7.2.0 - git-url-parse: 13.1.0 - globby: 13.2.2 - got: 13.0.0 - inquirer: 9.2.11 - is-ci: 3.0.1 - issue-parser: 6.0.0 - lodash: 4.17.21 - mime-types: 2.1.35 - new-github-release-url: 2.0.0 - node-fetch: 3.3.2 - open: 9.1.0 - ora: 7.0.1 - os-name: 5.1.0 - promise.allsettled: 1.0.7 - proxy-agent: 6.3.1 - semver: 7.5.4 - shelljs: 0.8.5 - update-notifier: 6.0.2 - url-join: 5.0.0 - wildcard-match: 5.1.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - encoding - - supports-color - - typescript - release-it@16.2.1(encoding@0.1.13)(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -30534,72 +28916,6 @@ snapshots: - supports-color - typescript - release-it@17.1.1(typescript@5.2.2): - dependencies: - '@iarna/toml': 2.2.5 - '@octokit/rest': 20.0.2 - async-retry: 1.3.3 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.2.2) - execa: 8.0.1 - git-url-parse: 14.0.0 - globby: 14.0.1 - got: 13.0.0 - inquirer: 9.2.14 - is-ci: 3.0.1 - issue-parser: 6.0.0 - lodash: 4.17.21 - mime-types: 2.1.35 - new-github-release-url: 2.0.0 - node-fetch: 3.3.2 - open: 10.0.3 - ora: 8.0.1 - os-name: 5.1.0 - promise.allsettled: 1.0.7 - proxy-agent: 6.4.0 - semver: 7.6.0 - shelljs: 0.8.5 - update-notifier: 7.0.0 - url-join: 5.0.0 - wildcard-match: 5.1.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - supports-color - - typescript - - release-it@17.1.1(typescript@5.4.2): - dependencies: - '@iarna/toml': 2.2.5 - '@octokit/rest': 20.0.2 - async-retry: 1.3.3 - chalk: 5.3.0 - cosmiconfig: 9.0.0(typescript@5.4.2) - execa: 8.0.1 - git-url-parse: 14.0.0 - globby: 14.0.1 - got: 13.0.0 - inquirer: 9.2.14 - is-ci: 3.0.1 - issue-parser: 6.0.0 - lodash: 4.17.21 - mime-types: 2.1.35 - new-github-release-url: 2.0.0 - node-fetch: 3.3.2 - open: 10.0.3 - ora: 8.0.1 - os-name: 5.1.0 - promise.allsettled: 1.0.7 - proxy-agent: 6.4.0 - semver: 7.6.0 - shelljs: 0.8.5 - update-notifier: 7.0.0 - url-join: 5.0.0 - wildcard-match: 5.1.2 - yargs-parser: 21.1.1 - transitivePeerDependencies: - - supports-color - - typescript - release-it@17.1.1(typescript@5.6.3): dependencies: '@iarna/toml': 2.2.5 @@ -30679,18 +28995,6 @@ snapshots: dependencies: throttleit: 1.0.1 - request-promise-core@1.1.4(request@2.88.2): - dependencies: - lodash: 4.17.21 - request: 2.88.2 - - request-promise-native@1.0.9(request@2.88.2): - dependencies: - request: 2.88.2 - request-promise-core: 1.1.4(request@2.88.2) - stealthy-require: 1.1.1 - tough-cookie: 2.5.0 - request@2.88.2: dependencies: aws-sign2: 0.7.0 @@ -30728,10 +29032,6 @@ snapshots: resolve-alpn@1.2.1: {} - resolve-cwd@2.0.0: - dependencies: - resolve-from: 3.0.0 - resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -30761,8 +29061,6 @@ snapshots: resolve-url@0.2.1: {} - resolve@1.1.7: {} - resolve@1.19.0: dependencies: is-core-module: 2.15.1 @@ -31153,7 +29451,8 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - shellwords@0.1.1: {} + shellwords@0.1.1: + optional: true side-channel@1.0.6: dependencies: @@ -31209,8 +29508,6 @@ snapshots: slash@1.0.0: {} - slash@2.0.0: {} - slash@3.0.0: {} slash@4.0.0: {} @@ -31452,10 +29749,6 @@ snapshots: stable@0.1.8: {} - stack-utils@1.0.5: - dependencies: - escape-string-regexp: 2.0.0 - stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 @@ -31493,8 +29786,6 @@ snapshots: stdin-discarder@0.2.2: {} - stealthy-require@1.1.1: {} - stop-iteration-iterator@1.0.0: dependencies: internal-slot: 1.0.7 @@ -31517,11 +29808,6 @@ snapshots: string-hash@1.1.3: {} - string-length@2.0.0: - dependencies: - astral-regex: 1.0.0 - strip-ansi: 4.0.0 - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -31529,12 +29815,6 @@ snapshots: string-natural-compare@3.0.1: {} - string-width@3.1.0: - dependencies: - emoji-regex: 7.0.3 - is-fullwidth-code-point: 2.0.0 - strip-ansi: 5.2.0 - string-width@4.2.3: dependencies: emoji-regex: 8.0.0 @@ -31616,14 +29896,6 @@ snapshots: dependencies: ansi-regex: 2.1.1 - strip-ansi@4.0.0: - dependencies: - ansi-regex: 3.0.1 - - strip-ansi@5.2.0: - dependencies: - ansi-regex: 4.1.1 - strip-ansi@6.0.0: dependencies: ansi-regex: 5.0.1 @@ -31938,13 +30210,6 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 - test-exclude@5.2.3: - dependencies: - glob: 7.1.6 - minimatch: 3.1.2 - read-pkg-up: 4.0.0 - require-main-filename: 2.0.0 - test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -31963,8 +30228,6 @@ snapshots: dependencies: any-promise: 1.3.0 - throat@4.1.0: {} - throat@5.0.0: {} throttleit@1.0.1: {} @@ -31994,14 +30257,10 @@ snapshots: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 - tinypool@0.8.4: {} - tinypool@1.0.1: {} tinyrainbow@1.2.0: {} - tinyspy@2.2.1: {} - tinyspy@3.0.2: {} titleize@3.0.0: {} @@ -32137,7 +30396,7 @@ snapshots: tslib@2.8.0: {} - tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.4.2): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3): dependencies: bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 @@ -32159,7 +30418,7 @@ snapshots: '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) '@swc/core': 1.7.40(@swc/helpers@0.5.13) postcss: 8.4.47 - typescript: 5.4.2 + typescript: 5.6.3 transitivePeerDependencies: - jiti - supports-color @@ -32185,10 +30444,6 @@ snapshots: tweetnacl@0.14.5: {} - type-check@0.3.2: - dependencies: - prelude-ls: 1.1.2 - type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -32252,8 +30507,6 @@ snapshots: dependencies: is-typedarray: 1.0.0 - typescript@5.2.2: {} - typescript@5.4.2: {} typescript@5.6.3: {} @@ -32262,8 +30515,6 @@ snapshots: uc.micro@1.0.6: {} - ufo@1.5.4: {} - unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -32589,13 +30840,12 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vite-node@1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite-node@2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7 pathe: 1.1.2 - picocolors: 1.1.1 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -32624,16 +30874,16 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.4.2)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): dependencies: '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - '@vue/language-core': 1.8.27(typescript@5.4.2) + '@vue/language-core': 1.8.27(typescript@5.6.3) debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 magic-string: 0.30.12 - typescript: 5.4.2 - vue-tsc: 1.8.27(typescript@5.4.2) + typescript: 5.6.3 + vue-tsc: 1.8.27(typescript@5.6.3) optionalDependencies: vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) transitivePeerDependencies: @@ -32641,6 +30891,19 @@ snapshots: - rollup - supports-color + vite@5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.47 + rollup: 4.24.0 + optionalDependencies: + '@types/node': 20.17.2 + fsevents: 2.3.3 + less: 3.11.1 + lightningcss: 1.27.0 + sass: 1.80.4 + terser: 5.36.0 + vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: esbuild: 0.21.5 @@ -32664,34 +30927,34 @@ snapshots: redent: 3.0.0 vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vitest@1.6.0(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vitest@2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.4 - chai: 4.5.0 - debug: 4.3.4(supports-color@8.1.1) - execa: 8.0.1 - local-pkg: 0.5.0 + '@vitest/expect': 2.1.3 + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/pretty-format': 2.1.3 + '@vitest/runner': 2.1.3 + '@vitest/snapshot': 2.1.3 + '@vitest/spy': 2.1.3 + '@vitest/utils': 2.1.3 + chai: 5.1.2 + debug: 4.3.7 magic-string: 0.30.12 pathe: 1.1.2 - picocolors: 1.1.1 std-env: 3.7.0 - strip-literal: 2.1.0 tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 1.6.0(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + tinyexec: 0.3.1 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 20.17.2 jsdom: 22.1.0 transitivePeerDependencies: - less - lightningcss + - msw - sass - sass-embedded - stylus @@ -32702,7 +30965,7 @@ snapshots: vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) '@vitest/pretty-format': 2.1.3 '@vitest/runner': 2.1.3 '@vitest/snapshot': 2.1.3 @@ -32737,7 +31000,7 @@ snapshots: vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): dependencies: '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) + '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) '@vitest/pretty-format': 2.1.3 '@vitest/runner': 2.1.3 '@vitest/snapshot': 2.1.3 @@ -32787,8 +31050,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: jsdom: 16.7.0 @@ -32809,12 +31072,12 @@ snapshots: de-indent: 1.0.2 he: 1.2.0 - vue-tsc@1.8.27(typescript@5.4.2): + vue-tsc@1.8.27(typescript@5.6.3): dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.4.2) + '@vue/language-core': 1.8.27(typescript@5.6.3) semver: 7.6.3 - typescript: 5.4.2 + typescript: 5.6.3 w3c-hr-time@1.0.2: dependencies: @@ -33074,12 +31337,6 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 - whatwg-url@6.5.0: - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - whatwg-url@7.1.0: dependencies: lodash.sortby: 4.7.0 @@ -33180,12 +31437,6 @@ snapshots: dependencies: microevent.ts: 0.1.1 - wrap-ansi@5.1.0: - dependencies: - ansi-styles: 3.2.1 - string-width: 3.1.0 - strip-ansi: 5.2.0 - wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -33206,12 +31457,6 @@ snapshots: wrappy@1.0.2: {} - write-file-atomic@2.4.1: - dependencies: - graceful-fs: 4.2.11 - imurmurhash: 0.1.4 - signal-exit: 3.0.7 - write-file-atomic@3.0.3: dependencies: imurmurhash: 0.1.4 @@ -33229,10 +31474,6 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 - ws@5.2.4: - dependencies: - async-limiter: 1.0.1 - ws@7.5.10: {} ws@8.18.0: {} @@ -33257,11 +31498,6 @@ snapshots: yaml@1.10.2: {} - yargs-parser@13.1.2: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 @@ -33271,19 +31507,6 @@ snapshots: yargs-parser@21.1.1: {} - yargs@13.3.2: - dependencies: - cliui: 5.0.0 - find-up: 3.0.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 3.1.0 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 13.1.2 - yargs@15.4.1: dependencies: cliui: 6.0.0 From bebd3438ee882cfdabb01e60eb079f1895568510 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 17:57:21 +0100 Subject: [PATCH 52/98] Update i18n.yml --- .github/workflows/i18n.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index c8e463b1..48226b9d 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -12,7 +12,7 @@ env: NODE_VERSION: 20.x jobs: - unit: + i18n: runs-on: ubuntu-latest steps: From ea47cfe1bc3b55054ae2d9694cc2b2d10cc5856b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 17:57:27 +0100 Subject: [PATCH 53/98] Update Makefile --- backend/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/Makefile b/backend/Makefile index 274651e8..8b025f44 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -53,7 +53,7 @@ ACCEPTANCE_COMPOSE=dockerfiles/docker-compose.yml CMD_ENVS=CURRENT_DIR=${CURRENT_DIR} PLONE_VERSION=${PLONE_VERSION} BACKEND_ADDONS=${BACKEND_ADDONS} CMD=${CMD_ENVS} docker compose DOCKER_COMPOSE=${CMD} -p ${PROJECT_NAME} -f ${DEV_COMPOSE} -ACCEPTANCE_MONOLINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance -f ${ACCEPTANCE_COMPOSE} +ACCEPTANCE_MONOLINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance-monolingual -f ${ACCEPTANCE_COMPOSE} ACCEPTANCE_MULTILINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance-multilingual -f ${ACCEPTANCE_COMPOSE} all: build From 56a79c69b4fd9252889a5eed6a6b1b424a8c19c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 20:49:38 +0100 Subject: [PATCH 54/98] Some info about acceptance backend language --- backend/dockerfiles/backend/Dockerfile.acceptance | 3 +++ backend/dockerfiles/backend/Dockerfile.acceptance.multilingual | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance b/backend/dockerfiles/backend/Dockerfile.acceptance index f493fdf4..8a15b7bb 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance +++ b/backend/dockerfiles/backend/Dockerfile.acceptance @@ -1,5 +1,8 @@ # syntax=docker/dockerfile:1 # Dockerfile from cookiecutter-plone-starter +# The language is set here: +# APPLY_PROFILES … rohberg.volto:monolingual +# TODO ! Move language profiles to volto-searchkit-block/backend policy package. ARG PLONE_VERSION=6.0 ARG SEED=7 diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual index a67275ea..2c870933 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual +++ b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual @@ -1,6 +1,7 @@ # syntax=docker/dockerfile:1 # Dockerfile from cookiecutter-plone-starter -# APPLY_PROFILES … collective.elastic.plone:multilingual +# The language is set here: +# APPLY_PROFILES … rohberg.volto:multilingual # Run robotserver verbose ARG PLONE_VERSION=6.0 From a9c75ca16d24f72c0163b957f345bb1cd39641f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 20:51:17 +0100 Subject: [PATCH 55/98] Fix monolingual.create_search.cy.js: english --- cypress/tests/monolingual/monolingual.create_search.cy.js | 5 ++++- cypress/tests/monolingual/monolingual.results.cy.js | 6 ++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/cypress/tests/monolingual/monolingual.create_search.cy.js b/cypress/tests/monolingual/monolingual.create_search.cy.js index 1276f11d..45ebbae1 100644 --- a/cypress/tests/monolingual/monolingual.create_search.cy.js +++ b/cypress/tests/monolingual/monolingual.create_search.cy.js @@ -53,17 +53,20 @@ describe('Searchkit block tests- create search ', () => { cy.visit('/searching'); cy.get('a.edit').click(); + // Add block cy.getSlate().click(); cy.get('button.block-add-button').click(); - cy.get('.blocks-chooser .title').contains('Allgemein').click(); + cy.get('.blocks-chooser .title').contains('Common').click(); cy.get('.blocks-chooser .button.searchkitblock').click({ force: true }); cy.get('#toolbar-save').click(); cy.visit('/searching'); + // Without query string all docs are shown cy.get('.block.searchkitsearch').should('not.contain', 'No results'); cy.get('.block.searchkitsearch').contains('The garden in february'); + // searching for a query string cy.get('.searchbar-wrapper input').type('Februar{enter}'); cy.get('.block.searchkitsearch').contains('The garden in february'); }); diff --git a/cypress/tests/monolingual/monolingual.results.cy.js b/cypress/tests/monolingual/monolingual.results.cy.js index 2ab9048d..3b0a6930 100644 --- a/cypress/tests/monolingual/monolingual.results.cy.js +++ b/cypress/tests/monolingual/monolingual.results.cy.js @@ -38,8 +38,6 @@ describe('Searchkit block tests – search - monolingual', () => { cy.get('#toolbar-save').click(); cy.wait('@kitsearch'); cy.wait('@content'); - // TODO Replace this desperate wait per seconds - cy.wait(3000); }); beforeEach(() => { @@ -65,8 +63,8 @@ describe('Searchkit block tests – search - monolingual', () => { it('I see the start date', function () { cy.get('.searchbar-wrapper input').type('matterhorn{enter}'); - // 01.01.2025 - cy.get('.block.searchkitsearch').contains('.202'); + // 10/29/2024 + cy.get('.block.searchkitsearch').contains('/202'); }); it('I can open a result', function () { From f93ec32c214fe8c494ffe5bed0068e4097aebaf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Tue, 29 Oct 2024 20:54:43 +0100 Subject: [PATCH 56/98] Get language from store (multilingual) or config (monolingual) --- .../src/components/Views/FacetedSearch.jsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx index 8096645a..79499e80 100644 --- a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx +++ b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx @@ -737,7 +737,14 @@ const FacetedSearch = ({ data, overriddenComponents }) => { }; // TODO Check if check on client could be made simpler - const locale = useSelector((state) => state.intl.locale); + // Language. Search is done with language by targeting the appropriate fields: + // for example title.de, title.en + const state_intl_locale = useSelector((state) => state.intl?.locale) || 'en'; + let locale = config?.settings?.isMultilingual + ? state_intl_locale + : config?.settings?.defaultLanguage || 'en'; + console.debug('FacetedSearch. locale', locale); + const [isClient, setIsClient] = React.useState(null); React.useEffect(() => setIsClient(true), []); From 88984883bbac69aa73ea6739c0614fe821afdb9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 08:02:02 +0100 Subject: [PATCH 57/98] Remove debugging --- .../src/components/Views/FacetedSearch.jsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx index 79499e80..dd9800e0 100644 --- a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx +++ b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx @@ -736,17 +736,17 @@ const FacetedSearch = ({ data, overriddenComponents }) => { config.settings.searchkitblock.overriddenComponents), }; - // TODO Check if check on client could be made simpler // Language. Search is done with language by targeting the appropriate fields: // for example title.de, title.en const state_intl_locale = useSelector((state) => state.intl?.locale) || 'en'; let locale = config?.settings?.isMultilingual ? state_intl_locale : config?.settings?.defaultLanguage || 'en'; - console.debug('FacetedSearch. locale', locale); - const [isClient, setIsClient] = React.useState(null); - React.useEffect(() => setIsClient(true), []); + const [isClient, setIsClient] = useState(false); + useEffect(() => { + setIsClient(true); + }, []); return ( From 34333928ffb48304e167bf1512b6f4d1e7340946 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 08:03:12 +0100 Subject: [PATCH 58/98] cypress: Set settings.defaultLanguage = 'de'; on the fly --- .../monolingual.create_search.cy.js | 14 ++------ .../monolingual/monolingual.results.cy.js | 19 ++-------- .../monolingual/monolingual.search.cy.js | 36 ++++++++++--------- .../multilingual/multilingual.language.cy.js | 12 ++----- .../multilingual.search.anonymous.cy.js | 13 ++----- .../multilingual/multilingual.search.cy.js | 14 ++------ 6 files changed, 30 insertions(+), 78 deletions(-) diff --git a/cypress/tests/monolingual/monolingual.create_search.cy.js b/cypress/tests/monolingual/monolingual.create_search.cy.js index 45ebbae1..29fab4dc 100644 --- a/cypress/tests/monolingual/monolingual.create_search.cy.js +++ b/cypress/tests/monolingual/monolingual.create_search.cy.js @@ -1,5 +1,5 @@ describe('Searchkit block tests- create search ', () => { - before(() => { + beforeEach(() => { cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -32,17 +32,7 @@ describe('Searchkit block tests- create search ', () => { cy.wait('@content'); }); - beforeEach(() => { - cy.intercept('GET', `/**/*?expand*`).as('content'); - cy.intercept('GET', '/**/Document').as('schema'); - - cy.autologin(); - - cy.visit('/'); - cy.wait('@content'); - }); - - after(() => { + afterEach(() => { cy.removeContent({ path: 'garden-blog/garden-february' }); cy.removeContent({ path: 'garden-blog/garden-march' }); cy.removeContent({ path: 'garden-blog' }); diff --git a/cypress/tests/monolingual/monolingual.results.cy.js b/cypress/tests/monolingual/monolingual.results.cy.js index 3b0a6930..df201889 100644 --- a/cypress/tests/monolingual/monolingual.results.cy.js +++ b/cypress/tests/monolingual/monolingual.results.cy.js @@ -1,5 +1,5 @@ describe('Searchkit block tests – search - monolingual', () => { - before(() => { + beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); @@ -30,27 +30,14 @@ describe('Searchkit block tests – search - monolingual', () => { }); // Add search block to /suche - cy.visit('/suche'); - cy.get('a.edit').click(); - + cy.visit('/suche/edit'); cy.addNewBlock('searchkit'); - cy.get('#toolbar-save').click(); cy.wait('@kitsearch'); cy.wait('@content'); }); - beforeEach(() => { - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - cy.intercept('GET', `/**/*?expand*`).as('content'); - cy.autologin(); - - cy.visit('/suche'); - cy.wait('@kitsearch'); - cy.wait('@content'); - }); - - after(() => { + afterEach(() => { cy.removeContent({ path: 'brunch' }); cy.removeContent({ path: 'ausflug' }); cy.removeContent({ path: 'suche' }); diff --git a/cypress/tests/monolingual/monolingual.search.cy.js b/cypress/tests/monolingual/monolingual.search.cy.js index f373fed9..89c10598 100644 --- a/cypress/tests/monolingual/monolingual.search.cy.js +++ b/cypress/tests/monolingual/monolingual.search.cy.js @@ -1,8 +1,11 @@ describe('Searchkit block tests – search - monolingual', () => { - before(() => { + beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); - + cy.intercept('GET', '/**/Document').as('schema'); + // Wait a bit to previous teardown to complete correctly because Heisenbug in this point + cy.wait(2000); + // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ @@ -49,27 +52,14 @@ describe('Searchkit block tests – search - monolingual', () => { }); // Add search block to /suche - cy.visit('/suche'); - cy.get('a.edit').click(); - + cy.visit('/suche/edit'); cy.addNewBlock('searchkit'); - cy.get('#toolbar-save').click(); cy.wait('@kitsearch'); cy.wait('@content'); }); - beforeEach(() => { - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - cy.intercept('GET', `/**/*?expand*`).as('content'); - cy.autologin(); - - cy.visit('/suche'); - cy.wait('@kitsearch'); - cy.wait('@content'); - }); - - after(() => { + afterEach(() => { cy.removeContent({ path: 'garten-blog' }); cy.removeContent({ path: 'testseite-mann' }); cy.removeContent({ path: 'testseite-manner' }); @@ -89,6 +79,12 @@ describe('Searchkit block tests – search - monolingual', () => { }); it('I can search with inflection', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'de'; + settings.supportedLanguages = ['de']; + settings.isMultilingual = false; + }); + cy.wait(2000); cy.get('.searchbar-wrapper input').type('Männer{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); @@ -118,6 +114,12 @@ describe('Searchkit block tests – search - monolingual', () => { }); it('I can search for a compounded word', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'de'; + settings.supportedLanguages = ['de']; + settings.isMultilingual = false; + }); + cy.wait(2000); cy.get('.searchbar-wrapper input').type('stelle{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); diff --git a/cypress/tests/multilingual/multilingual.language.cy.js b/cypress/tests/multilingual/multilingual.language.cy.js index eaf4e537..17690170 100644 --- a/cypress/tests/multilingual/multilingual.language.cy.js +++ b/cypress/tests/multilingual/multilingual.language.cy.js @@ -1,5 +1,5 @@ describe('Searchkit block tests – search - multilingual - language', () => { - before(() => { + beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); @@ -40,15 +40,7 @@ describe('Searchkit block tests – search - multilingual - language', () => { cy.wait('@kitsearch'); }); - beforeEach(() => { - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - cy.autologin(); - - cy.visit('/en/searching'); - cy.wait('@kitsearch'); - }); - - after(() => { + afterEach(() => { cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'de/der-garten-im-februar' }); diff --git a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js index 70e7efd0..73b4d968 100644 --- a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js @@ -1,5 +1,5 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { - before(() => { + beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -50,16 +50,7 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { cy.wait('@kitsearch'); }); - beforeEach(() => { - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - - cy.autologin(); - - cy.visit('/en/searching'); - cy.wait('@kitsearch'); - }); - - after(() => { + afterEach(() => { cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'en/garden-in-march' }); diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index 10ee90ae..db3f2b4b 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -1,5 +1,5 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { - before(() => { + beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); @@ -66,17 +66,7 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.wait('@kitsearch'); }); - beforeEach(() => { - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - cy.intercept('GET', `/**/*?expand*`).as('content'); - - cy.autologin(); - - cy.visit('/de/suche'); - cy.wait('@kitsearch'); - }); - - after(() => { + afterEach(() => { // cy.removeContent({ path: 'de/garten-blog/februar' }); // cy.removeContent({ path: 'de/garten-blog/marz' }); cy.removeContent({ path: 'de/garten-blog' }); From b806cc3effe0aac6bd737171c1dd94c4639b4803 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 08:28:46 +0100 Subject: [PATCH 59/98] gh workflow: Fix push configuration --- .github/workflows/acceptance_monolingual.yml | 2 +- .github/workflows/acceptance_multilingual.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml index 7a45e010..790a812b 100644 --- a/.github/workflows/acceptance_monolingual.yml +++ b/.github/workflows/acceptance_monolingual.yml @@ -7,7 +7,7 @@ on: - "*.yaml" - "cypress/tests/monolingual/**" - "packages/**" - - ".github/workflows/acceptance.yml" + - ".github/workflows/acceptance_monolingual.yml" env: NODE_VERSION: 20.x diff --git a/.github/workflows/acceptance_multilingual.yml b/.github/workflows/acceptance_multilingual.yml index 4de212df..f9b006c5 100644 --- a/.github/workflows/acceptance_multilingual.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -7,7 +7,7 @@ on: - "*.yaml" - "cypress/tests/multilingual/**" - "packages/**" - - ".github/workflows/acceptance.yml" + - ".github/workflows/acceptance_multilingual.yml" env: NODE_VERSION: 20.x From a3c4784477e4748b9dc054b121060ad066271730 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 09:30:55 +0100 Subject: [PATCH 60/98] Fix import --- .../src/components/Views/FacetedSearch.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx index dd9800e0..d078c701 100644 --- a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx +++ b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx @@ -743,8 +743,8 @@ const FacetedSearch = ({ data, overriddenComponents }) => { ? state_intl_locale : config?.settings?.defaultLanguage || 'en'; - const [isClient, setIsClient] = useState(false); - useEffect(() => { + const [isClient, setIsClient] = React.useState(false); + React.useEffect(() => { setIsClient(true); }, []); From b57a03fd57e0db487cbffa610364e820a9ef83de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 11:35:14 +0100 Subject: [PATCH 61/98] cypress: add some waits after intercept and removeContent --- .../monolingual.create_search.cy.js | 5 +- .../monolingual/monolingual.results.cy.js | 5 +- .../monolingual/monolingual.search.cy.js | 1 + .../multilingual/multilingual.language.cy.js | 5 +- .../multilingual.search.anonymous.cy.js | 5 +- .../multilingual/multilingual.search.cy.js | 153 ++++++++++-------- 6 files changed, 99 insertions(+), 75 deletions(-) diff --git a/cypress/tests/monolingual/monolingual.create_search.cy.js b/cypress/tests/monolingual/monolingual.create_search.cy.js index 29fab4dc..a1cbd925 100644 --- a/cypress/tests/monolingual/monolingual.create_search.cy.js +++ b/cypress/tests/monolingual/monolingual.create_search.cy.js @@ -2,7 +2,9 @@ describe('Searchkit block tests- create search ', () => { beforeEach(() => { cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); - + // Wait a bit to previous teardown to complete correctly because Heisenbug in this point + cy.wait(2000); + // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ @@ -37,6 +39,7 @@ describe('Searchkit block tests- create search ', () => { cy.removeContent({ path: 'garden-blog/garden-march' }); cy.removeContent({ path: 'garden-blog' }); cy.removeContent({ path: 'searching' }); + cy.wait(5000); }); it('As manager I can add a searchkit-block and find a document', function () { diff --git a/cypress/tests/monolingual/monolingual.results.cy.js b/cypress/tests/monolingual/monolingual.results.cy.js index df201889..2588b804 100644 --- a/cypress/tests/monolingual/monolingual.results.cy.js +++ b/cypress/tests/monolingual/monolingual.results.cy.js @@ -2,7 +2,9 @@ describe('Searchkit block tests – search - monolingual', () => { beforeEach(() => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); - + // Wait a bit to previous teardown to complete correctly because Heisenbug in this point + cy.wait(2000); + // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ @@ -41,6 +43,7 @@ describe('Searchkit block tests – search - monolingual', () => { cy.removeContent({ path: 'brunch' }); cy.removeContent({ path: 'ausflug' }); cy.removeContent({ path: 'suche' }); + cy.wait(5000); }); it('I see the publishing date', function () { diff --git a/cypress/tests/monolingual/monolingual.search.cy.js b/cypress/tests/monolingual/monolingual.search.cy.js index 89c10598..aa52a121 100644 --- a/cypress/tests/monolingual/monolingual.search.cy.js +++ b/cypress/tests/monolingual/monolingual.search.cy.js @@ -66,6 +66,7 @@ describe('Searchkit block tests – search - monolingual', () => { cy.removeContent({ path: 'testseite-lsb' }); cy.removeContent({ path: 'testseite-s' }); cy.removeContent({ path: 'suche' }); + cy.wait(5000); }); it('I see all if no filter selected', function () { diff --git a/cypress/tests/multilingual/multilingual.language.cy.js b/cypress/tests/multilingual/multilingual.language.cy.js index 17690170..72ae057b 100644 --- a/cypress/tests/multilingual/multilingual.language.cy.js +++ b/cypress/tests/multilingual/multilingual.language.cy.js @@ -4,7 +4,9 @@ describe('Searchkit block tests – search - multilingual - language', () => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); - + // Wait a bit to previous teardown to complete correctly because Heisenbug in this point + cy.wait(2000); + // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ @@ -44,6 +46,7 @@ describe('Searchkit block tests – search - multilingual - language', () => { cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'de/der-garten-im-februar' }); + cy.wait(5000); }); it('I can search within language', function () { diff --git a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js index 73b4d968..45a81000 100644 --- a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js @@ -3,7 +3,9 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); - + // Wait a bit to previous teardown to complete correctly because Heisenbug in this point + cy.wait(2000); + // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ @@ -54,6 +56,7 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { cy.removeContent({ path: 'en/searching' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'en/garden-in-march' }); + cy.wait(5000); }); it('I can search', function () { diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index db3f2b4b..e356a440 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -3,7 +3,9 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); - + // Wait a bit to previous teardown to complete correctly because Heisenbug in this point + cy.wait(3000); + // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ @@ -75,23 +77,26 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.removeContent({ path: 'de/testseite-lsb' }); cy.removeContent({ path: 'de/testseite-s' }); cy.removeContent({ path: 'de/suche' }); + cy.wait(5000); }); it('I see all if no filter selected', function () { cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; + settings.defaultLanguage = 'de'; settings.isMultilingual = true; settings.supportedLanguages = ['de', 'en']; }); + cy.wait(4000); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); }); it('I can search fuzzy', function () { cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; + settings.defaultLanguage = 'de'; settings.isMultilingual = true; settings.supportedLanguages = ['de', 'en']; }); + cy.wait(4000); cy.get('.searchbar-wrapper input').type('februax{enter}'); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); cy.get('.block.searchkitsearch').should('not.contain', 'März'); @@ -99,10 +104,11 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { it('I can search with inflection', function () { cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; + settings.defaultLanguage = 'de'; settings.isMultilingual = true; settings.supportedLanguages = ['de', 'en']; }); + cy.wait(4000); cy.get('.searchbar-wrapper input').clear().type('Männer{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); @@ -112,10 +118,11 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { it('I can search with decompounding', function () { cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; + settings.defaultLanguage = 'de'; settings.isMultilingual = true; settings.supportedLanguages = ['de', 'en']; }); + cy.wait(4000); cy.get('.searchbar-wrapper input').type('Garten{enter}'); cy.get('.block.searchkitsearch').contains('Garten-Blog'); @@ -123,70 +130,74 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.get('.block.searchkitsearch').contains('Februar'); }); - it('I can search with wildcard', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.get('.searchbar-wrapper input').type('Feb*{enter}'); - cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); - }); - - it('I can search for an exact match', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); - cy.get('.block.searchkitsearch').contains('Testseite Mann'); - cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); - cy.get('.block.searchkitsearch').should('not.contain', 'Männer'); - }); - - it('I can search for a compounded word', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.get('.searchbar-wrapper input').type('stelle{enter}'); - cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); - cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); - cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); - cy.get('.searchbar-wrapper input').clear().type('Börse{enter}'); - cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); - cy.get('.searchbar-wrapper input').clear().type('Lehrstellenbörse{enter}'); - cy.get('.block.searchkitsearch').contains('Testseite Stelle'); - }); - - // Blocks text - it('I can search in blocks', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - cy.visit('/de/garten-blog/februar'); - cy.get('a.edit').click(); - - cy.getSlate().click(); - cy.log('when I add a text block'); - cy.getSlateEditorAndType('Montags gehen wir in den Zoo.').contains( - 'Montags gehen wir in den Zoo.', - ); - // cy.toolbarSave(); - cy.get('#toolbar-save').click(); - cy.wait('@content'); - - cy.log('I added a text block'); - - // Searching - cy.visit('de/suche'); - cy.wait('@kitsearch'); - cy.get('.searchbar-wrapper input').type('Montag{enter}'); - cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); - }); + // it('I can search with wildcard', function () { + // cy.settings().then((settings) => { + // settings.defaultLanguage = 'de'; + // settings.isMultilingual = true; + // settings.supportedLanguages = ['de', 'en']; + // }); + // cy.wait(4000); + // cy.get('.searchbar-wrapper input').type('Feb*{enter}'); + // cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + // }); + + // it('I can search for an exact match', function () { + // cy.settings().then((settings) => { + // settings.defaultLanguage = 'de'; + // settings.isMultilingual = true; + // settings.supportedLanguages = ['de', 'en']; + // }); + // cy.wait(4000); + // cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); + // cy.get('.block.searchkitsearch').contains('Testseite Mann'); + // cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); + // cy.get('.block.searchkitsearch').should('not.contain', 'Männer'); + // }); + + // it('I can search for a compounded word', function () { + // cy.settings().then((settings) => { + // settings.defaultLanguage = 'de'; + // settings.isMultilingual = true; + // settings.supportedLanguages = ['de', 'en']; + // }); + // cy.wait(4000); + // cy.get('.searchbar-wrapper input').type('stelle{enter}'); + // cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + // cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); + // cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + // cy.get('.searchbar-wrapper input').clear().type('Börse{enter}'); + // cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + // cy.get('.searchbar-wrapper input').clear().type('Lehrstellenbörse{enter}'); + // cy.get('.block.searchkitsearch').contains('Testseite Stelle'); + // }); + + // // Blocks text + // it('I can search in blocks', function () { + // cy.settings().then((settings) => { + // settings.defaultLanguage = 'de'; + // settings.isMultilingual = true; + // settings.supportedLanguages = ['de', 'en']; + // }); + // cy.wait(4000); + // cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + // cy.visit('/de/garten-blog/februar'); + // cy.get('a.edit').click(); + + // cy.getSlate().click(); + // cy.log('when I add a text block'); + // cy.getSlateEditorAndType('Montags gehen wir in den Zoo.').contains( + // 'Montags gehen wir in den Zoo.', + // ); + // // cy.toolbarSave(); + // cy.get('#toolbar-save').click(); + // cy.wait('@content'); + + // cy.log('I added a text block'); + + // // Searching + // cy.visit('de/suche'); + // cy.wait('@kitsearch'); + // cy.get('.searchbar-wrapper input').type('Montag{enter}'); + // cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + // }); }); From fdf4d99cc9f2a7fde4befb2b45254680dddec5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 11:38:44 +0100 Subject: [PATCH 62/98] Update multilingual.search.cy.js --- .../multilingual/multilingual.search.cy.js | 140 +++++++++--------- 1 file changed, 70 insertions(+), 70 deletions(-) diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index e356a440..228a6f7a 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -130,74 +130,74 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.get('.block.searchkitsearch').contains('Februar'); }); - // it('I can search with wildcard', function () { - // cy.settings().then((settings) => { - // settings.defaultLanguage = 'de'; - // settings.isMultilingual = true; - // settings.supportedLanguages = ['de', 'en']; - // }); - // cy.wait(4000); - // cy.get('.searchbar-wrapper input').type('Feb*{enter}'); - // cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); - // }); - - // it('I can search for an exact match', function () { - // cy.settings().then((settings) => { - // settings.defaultLanguage = 'de'; - // settings.isMultilingual = true; - // settings.supportedLanguages = ['de', 'en']; - // }); - // cy.wait(4000); - // cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); - // cy.get('.block.searchkitsearch').contains('Testseite Mann'); - // cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); - // cy.get('.block.searchkitsearch').should('not.contain', 'Männer'); - // }); - - // it('I can search for a compounded word', function () { - // cy.settings().then((settings) => { - // settings.defaultLanguage = 'de'; - // settings.isMultilingual = true; - // settings.supportedLanguages = ['de', 'en']; - // }); - // cy.wait(4000); - // cy.get('.searchbar-wrapper input').type('stelle{enter}'); - // cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); - // cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); - // cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); - // cy.get('.searchbar-wrapper input').clear().type('Börse{enter}'); - // cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); - // cy.get('.searchbar-wrapper input').clear().type('Lehrstellenbörse{enter}'); - // cy.get('.block.searchkitsearch').contains('Testseite Stelle'); - // }); - - // // Blocks text - // it('I can search in blocks', function () { - // cy.settings().then((settings) => { - // settings.defaultLanguage = 'de'; - // settings.isMultilingual = true; - // settings.supportedLanguages = ['de', 'en']; - // }); - // cy.wait(4000); - // cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); - // cy.visit('/de/garten-blog/februar'); - // cy.get('a.edit').click(); - - // cy.getSlate().click(); - // cy.log('when I add a text block'); - // cy.getSlateEditorAndType('Montags gehen wir in den Zoo.').contains( - // 'Montags gehen wir in den Zoo.', - // ); - // // cy.toolbarSave(); - // cy.get('#toolbar-save').click(); - // cy.wait('@content'); - - // cy.log('I added a text block'); - - // // Searching - // cy.visit('de/suche'); - // cy.wait('@kitsearch'); - // cy.get('.searchbar-wrapper input').type('Montag{enter}'); - // cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); - // }); + it('I can search with wildcard', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'de'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); + cy.wait(4000); + cy.get('.searchbar-wrapper input').type('Feb*{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); + + it('I can search for an exact match', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'de'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); + cy.wait(4000); + cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Mann'); + cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); + cy.get('.block.searchkitsearch').should('not.contain', 'Männer'); + }); + + it('I can search for a compounded word', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'de'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); + cy.wait(4000); + cy.get('.searchbar-wrapper input').type('stelle{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + cy.get('.searchbar-wrapper input').clear().type('Börse{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); + cy.get('.searchbar-wrapper input').clear().type('Lehrstellenbörse{enter}'); + cy.get('.block.searchkitsearch').contains('Testseite Stelle'); + }); + + // Blocks text + it('I can search in blocks', function () { + cy.settings().then((settings) => { + settings.defaultLanguage = 'de'; + settings.isMultilingual = true; + settings.supportedLanguages = ['de', 'en']; + }); + cy.wait(4000); + cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); + cy.visit('/de/garten-blog/februar'); + cy.get('a.edit').click(); + + cy.getSlate().click(); + cy.log('when I add a text block'); + cy.getSlateEditorAndType('Montags gehen wir in den Zoo.').contains( + 'Montags gehen wir in den Zoo.', + ); + // cy.toolbarSave(); + cy.get('#toolbar-save').click(); + cy.wait('@content'); + + cy.log('I added a text block'); + + // Searching + cy.visit('de/suche'); + cy.wait('@kitsearch'); + cy.get('.searchbar-wrapper input').type('Montag{enter}'); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + }); }); From b3c3b70071bff681f9b6b3cd77019d279c00723c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 15:57:58 +0100 Subject: [PATCH 63/98] Wait after creating content for ingest and OpenSearch to index --- cypress/tests/monolingual/monolingual.search.cy.js | 4 ++++ cypress/tests/multilingual/multilingual.search.cy.js | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cypress/tests/monolingual/monolingual.search.cy.js b/cypress/tests/monolingual/monolingual.search.cy.js index aa52a121..c67742fe 100644 --- a/cypress/tests/monolingual/monolingual.search.cy.js +++ b/cypress/tests/monolingual/monolingual.search.cy.js @@ -50,6 +50,8 @@ describe('Searchkit block tests – search - monolingual', () => { contentId: 'testseite-s', contentTitle: 'Testseite Stelle', }); + // Wait after creating content for ingest and OpenSearch to index + cy.wait(3000); // Add search block to /suche cy.visit('/suche/edit'); @@ -149,6 +151,8 @@ describe('Searchkit block tests – search - monolingual', () => { cy.wait('@content'); cy.log('I added a text block'); + // Wait after creating content for ingest and OpenSearch to index + cy.wait(3000); // Searching // WARNING Do not use cy.navigate TODO understand difference between cy.visit and cy.navigate diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index 228a6f7a..cc332069 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -56,6 +56,8 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { contentTitle: 'Testseite Stelle', path: '/de', }); + // Wait after creating content for ingest and OpenSearch to index + cy.wait(3000); // Add search block cy.visit('/de/suche/edit'); @@ -191,8 +193,10 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { // cy.toolbarSave(); cy.get('#toolbar-save').click(); cy.wait('@content'); - + cy.log('I added a text block'); + // Wait after creating content for ingest and OpenSearch to index + cy.wait(3000); // Searching cy.visit('de/suche'); From 5ee9bfccbe78c2acdf1bafc666e5a4f8b0cd74ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Wed, 30 Oct 2024 16:13:30 +0100 Subject: [PATCH 64/98] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0dcc38bd..47746208 100644 --- a/README.md +++ b/README.md @@ -2,10 +2,11 @@ Searching with OpenSearch -[![npm](https://img.shields.io/npm/v/volto-searchkit-block)](https://www.npmjs.com/package/volto-searchkit-block) -[![](https://img.shields.io/badge/-Storybook-ff4785?logo=Storybook&logoColor=white&style=flat-square)](https://rohberg.github.io/volto-searchkit-block/) -[![Code analysis checks](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml) +[![npm](https://img.shields.io/npm/v/@rohberg/volto-searchkit-block)](https://www.npmjs.com/package/@rohberg/volto-searchkit-block) +[![Acceptance tests multilingual](https://github.com/rohberg/volto-searchkit-block/actions/workflows/acceptance_multilingual.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/acceptance_multilingual.yml) +[![Acceptance tests monolingual](https://github.com/rohberg/volto-searchkit-block/actions/workflows/acceptance_monolingual.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/acceptance_monolingual.yml) [![Unit tests](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/unit.yml) +[![Code analysis checks](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/code.yml) ## Features From 5d3c83d95c4eb30f857976d1d1cc9ae47a4da659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 08:38:35 +0100 Subject: [PATCH 65/98] Fix CI unit tests --- .github/workflows/unit.yml | 2 +- Makefile | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/workflows/unit.yml b/.github/workflows/unit.yml index 0de7eba1..93a1309d 100644 --- a/.github/workflows/unit.yml +++ b/.github/workflows/unit.yml @@ -44,4 +44,4 @@ jobs: run: make install - name: Unit tests - run: make test-ci + run: make ci-test diff --git a/Makefile b/Makefile index 8d7dca17..0508f75e 100644 --- a/Makefile +++ b/Makefile @@ -151,7 +151,7 @@ release-dry-run: ## Dry-run the release of the add-on on npmjs.org test: ## Run unit tests pnpm test -.PHONY: test-ci +.PHONY: ci-test ci-test: ## Run unit tests in CI # Unit Tests need the i18n to be built VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n @@ -191,16 +191,15 @@ acceptance-backend-start-monolingual: ## Start backend acceptance server .PHONY: ci-acceptance-backend-start-monolingual ci-acceptance-backend-start-monolingual: ## Start backend acceptance server in headless mode for CI - # docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) - make acceptance-backend-start-monolingual + $(MAKE) -C "./backend/" acceptance-backend-start-monolingual .PHONY: acceptance-test-monolingual acceptance-test-monolingual: ## Start Cypress in interactive mode - pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}' + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}',screenshotsFolder=$(CURRENT_DIR)'/cypress/screenshots' .PHONY: ci-acceptance-test-monolingual ci-acceptance-test-monolingual: ## Run cypress tests in headless mode for CI - pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}' + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/monolingual.*.{js,jsx,ts,tsx}',screenshotsFolder=$(CURRENT_DIR)'/cypress/screenshots' ########################################### @@ -220,14 +219,13 @@ acceptance-backend-start-multilingual: ## Start backend acceptance server .PHONY: ci-acceptance-backend-start-multilingual ci-acceptance-backend-start-multilingual: ## Start backend acceptance server in headless mode for CI - # docker run -i --rm -p 55001:55001 $(DOCKER_IMAGE_ACCEPTANCE) - make acceptance-backend-start-multilingual + $(MAKE) -C "./backend/" acceptance-backend-start-multilingual .PHONY: acceptance-test-multilingual acceptance-test-multilingual: ## Start Cypress in interactive mode - pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/multilingual.*.{js,jsx,ts,tsx}' + pnpm --filter @plone/volto exec cypress open --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/multilingual.*.{js,jsx,ts,tsx}',screenshotsFolder=$(CURRENT_DIR)'/cypress/screenshots' .PHONY: ci-acceptance-test-multilingual ci-acceptance-test-multilingual: ## Run cypress tests in headless mode for CI - pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/multilingual.*.{js,jsx,ts,tsx}' + pnpm --filter @plone/volto exec cypress run --config-file $(CURRENT_DIR)/cypress.config.js --config specPattern=$(CURRENT_DIR)'/cypress/tests/**/multilingual.*.{js,jsx,ts,tsx}',screenshotsFolder=$(CURRENT_DIR)'/cypress/screenshots' From 1bd651bbcc112c050b145473dfbe22838eb14dcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 09:53:15 +0100 Subject: [PATCH 66/98] Add testing fixtures package --- .../testing-volto-searchkit-block/README.md | 5 +++++ .../package.json | 15 +++++++++++++ .../src/components/.gitkeep | 0 .../src/index.js | 21 +++++++++++++++++++ 4 files changed, 41 insertions(+) create mode 100644 packages/testing-volto-searchkit-block/README.md create mode 100644 packages/testing-volto-searchkit-block/package.json create mode 100644 packages/testing-volto-searchkit-block/src/components/.gitkeep create mode 100644 packages/testing-volto-searchkit-block/src/index.js diff --git a/packages/testing-volto-searchkit-block/README.md b/packages/testing-volto-searchkit-block/README.md new file mode 100644 index 00000000..9d55f3bd --- /dev/null +++ b/packages/testing-volto-searchkit-block/README.md @@ -0,0 +1,5 @@ +# testing-volto-searchkit-block (testing-volto-searchkit-block) + +fixtures for testing + +- multilingual / monolingual diff --git a/packages/testing-volto-searchkit-block/package.json b/packages/testing-volto-searchkit-block/package.json new file mode 100644 index 00000000..2ef93336 --- /dev/null +++ b/packages/testing-volto-searchkit-block/package.json @@ -0,0 +1,15 @@ +{ + "name": "testing-volto-searchkit-block", + "version": "1.0.0", + "description": "fixtures", + "author": "Katja Süss", + "homepage": "https://github.com/ksuess/testing-volto-searchkit-block", + "license": "MIT", + "keywords": [ + "volto-addon", + "volto", + "plone", + "react" + ], + "main": "src/index.js" +} diff --git a/packages/testing-volto-searchkit-block/src/components/.gitkeep b/packages/testing-volto-searchkit-block/src/components/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/packages/testing-volto-searchkit-block/src/index.js b/packages/testing-volto-searchkit-block/src/index.js new file mode 100644 index 00000000..0465dfd9 --- /dev/null +++ b/packages/testing-volto-searchkit-block/src/index.js @@ -0,0 +1,21 @@ +export const multilingualFixture = (config) => { + config.settings.isMultilingual = true; + config.settings.supportedLanguages = ['de', 'en']; + config.settings.defaultLanguage = 'de'; + + return config; +}; + +export const monolingualFixture = (config) => { + config.settings.isMultilingual = false; + config.settings.supportedLanguages = ['de']; + config.settings.defaultLanguage = 'de'; + + return config; +}; + +const applyConfig = (config) => { + return config; +}; + +export default applyConfig; From 95ba5fde8e761c6de98c340cc828630303a19433 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 09:54:35 +0100 Subject: [PATCH 67/98] Include fixture package --- Makefile | 8 ++++---- package.json | 3 ++- pnpm-lock.yaml | 42 ++++++++++++++++++++++++++++++------------ 3 files changed, 36 insertions(+), 17 deletions(-) diff --git a/Makefile b/Makefile index 0508f75e..bb40144a 100644 --- a/Makefile +++ b/Makefile @@ -179,11 +179,11 @@ storybook-build: ## Build Storybook ########################################### .PHONY: acceptance-frontend-dev-start acceptance-frontend-dev-start-monolingual: ## Start acceptance frontend in development mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + ADDONS=testing-volto-searchkit-block:monolingualFixture RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start .PHONY: acceptance-frontend-prod-start acceptance-frontend-prod-start-monolingual: ## Start acceptance frontend in production mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + ADDONS=testing-volto-searchkit-block:monolingualFixture RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start backend acceptance server @@ -207,11 +207,11 @@ ci-acceptance-test-monolingual: ## Run cypress tests in headless mode for CI ########################################### .PHONY: acceptance-frontend-dev-start acceptance-frontend-dev-start-multilingual: ## Start acceptance frontend in development mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start + ADDONS=testing-volto-searchkit-block:multilingualFixture RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm start .PHONY: acceptance-frontend-prod-start acceptance-frontend-prod-start-multilingual: ## Start acceptance frontend in production mode - RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod + ADDONS=testing-volto-searchkit-block:multilingualFixture RAZZLE_API_PATH=http://127.0.0.1:55001/plone pnpm build && pnpm start:prod .PHONY: acceptance-backend-start-multilingual acceptance-backend-start-multilingual: ## Start backend acceptance server diff --git a/package.json b/package.json index 2d7dbb38..276e3879 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "volto-searchkit-block": "workspace:*" }, "devDependencies": { - "mrs-developer": "^2.2.0" + "mrs-developer": "^2.2.0", + "testing-volto-searchkit-block": "workspace:*" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 517f34db..c79bb162 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,6 +25,9 @@ importers: mrs-developer: specifier: ^2.2.0 version: 2.2.0 + testing-volto-searchkit-block: + specifier: workspace:* + version: link:packages/testing-volto-searchkit-block core/packages/blocks: dependencies: @@ -1466,6 +1469,8 @@ importers: specifier: ^17.1.1 version: 17.1.1(typescript@5.6.3) + packages/testing-volto-searchkit-block: {} + packages/volto-searchkit-block: dependencies: '@eeacms/volto-matomo': @@ -16891,7 +16896,7 @@ snapshots: '@parcel/source-map': 2.1.1 '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) abortcontroller-polyfill: 1.7.5 base-x: 3.0.10 browserslist: 4.24.2 @@ -16919,7 +16924,7 @@ snapshots: '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) transitivePeerDependencies: - '@swc/helpers' @@ -16929,7 +16934,7 @@ snapshots: '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) transitivePeerDependencies: - '@swc/helpers' @@ -17018,7 +17023,7 @@ snapshots: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/rust': 2.12.0 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) transitivePeerDependencies: - '@swc/helpers' @@ -17065,7 +17070,7 @@ snapshots: '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -17077,9 +17082,9 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0 - '@parcel/types': 2.12.0(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) '@swc/core': 1.7.40(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: @@ -17307,7 +17312,7 @@ snapshots: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) nullthrows: 1.1.1 transitivePeerDependencies: - '@swc/helpers' @@ -17320,7 +17325,7 @@ snapshots: '@parcel/rust': 2.12.0 '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@swc/helpers': 0.5.13 browserslist: 4.24.2 nullthrows: 1.1.1 @@ -17430,7 +17435,7 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -17443,7 +17448,7 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -17516,15 +17521,28 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/logger': 2.12.0 + '@parcel/profiler': 2.12.0 + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' + + '@parcel/workers@2.12.0(@swc/helpers@0.5.13)': + dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/logger': 2.12.0 '@parcel/profiler': 2.12.0 '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 + transitivePeerDependencies: + - '@swc/helpers' '@pkgjs/parseargs@0.11.0': optional: true From 5dbb62f3da9b3e13e65a90a7e53ffdb2f707bd92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 09:54:58 +0100 Subject: [PATCH 68/98] Volto "18.0.0-alpha.48" --- mrs.developer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mrs.developer.json b/mrs.developer.json index 0096e8ea..72a61fca 100644 --- a/mrs.developer.json +++ b/mrs.developer.json @@ -4,6 +4,6 @@ "package": "@plone/volto", "url": "git@github.com:plone/volto.git", "https": "https://github.com/plone/volto.git", - "tag": "18.0.0-alpha.47" + "tag": "18.0.0-alpha.48" } } From c489b8a73264687a27d2c654f3c6636398902ccc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 09:55:48 +0100 Subject: [PATCH 69/98] screenshots: fix location --- .github/workflows/acceptance_monolingual.yml | 4 ++-- .github/workflows/acceptance_multilingual.yml | 4 ++-- .gitignore | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml index 790a812b..3a8d560a 100644 --- a/.github/workflows/acceptance_monolingual.yml +++ b/.github/workflows/acceptance_monolingual.yml @@ -91,11 +91,11 @@ jobs: if: failure() with: name: cypress-screenshots-acceptance - path: acceptance/cypress/screenshots + path: cypress/screenshots # Upload Cypress videos - uses: actions/upload-artifact@v4 if: failure() with: name: cypress-videos-acceptance - path: acceptance/cypress/videos + path: cypress/videos diff --git a/.github/workflows/acceptance_multilingual.yml b/.github/workflows/acceptance_multilingual.yml index f9b006c5..f820bec2 100644 --- a/.github/workflows/acceptance_multilingual.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -91,12 +91,12 @@ jobs: if: failure() with: name: cypress-screenshots-acceptance - path: acceptance/cypress/screenshots + path: cypress/screenshots # Upload Cypress videos - uses: actions/upload-artifact@v4 if: failure() with: name: cypress-videos-acceptance - path: acceptance/cypress/videos + path: cypress/videos \ No newline at end of file diff --git a/.gitignore b/.gitignore index cdcd9372..5a9dd66a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,3 +11,4 @@ node_modules results yarn.lock /public +cypress/screenshots/* \ No newline at end of file From 669d5916036598fc294102377c6e24c85d127ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 10:02:33 +0100 Subject: [PATCH 70/98] After including fixtures package: remove settings in cypress tests --- .../monolingual/monolingual.search.cy.js | 12 ---- .../multilingual/multilingual.language.cy.js | 17 ++---- .../multilingual.search.anonymous.cy.js | 10 ---- .../multilingual/multilingual.search.cy.js | 59 ++----------------- 4 files changed, 12 insertions(+), 86 deletions(-) diff --git a/cypress/tests/monolingual/monolingual.search.cy.js b/cypress/tests/monolingual/monolingual.search.cy.js index c67742fe..0d551032 100644 --- a/cypress/tests/monolingual/monolingual.search.cy.js +++ b/cypress/tests/monolingual/monolingual.search.cy.js @@ -82,12 +82,6 @@ describe('Searchkit block tests – search - monolingual', () => { }); it('I can search with inflection', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.supportedLanguages = ['de']; - settings.isMultilingual = false; - }); - cy.wait(2000); cy.get('.searchbar-wrapper input').type('Männer{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); @@ -117,12 +111,6 @@ describe('Searchkit block tests – search - monolingual', () => { }); it('I can search for a compounded word', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.supportedLanguages = ['de']; - settings.isMultilingual = false; - }); - cy.wait(2000); cy.get('.searchbar-wrapper input').type('stelle{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); diff --git a/cypress/tests/multilingual/multilingual.language.cy.js b/cypress/tests/multilingual/multilingual.language.cy.js index 72ae057b..4c95ef6f 100644 --- a/cypress/tests/multilingual/multilingual.language.cy.js +++ b/cypress/tests/multilingual/multilingual.language.cy.js @@ -49,19 +49,14 @@ describe('Searchkit block tests – search - multilingual - language', () => { cy.wait(5000); }); - it('I can search within language', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - + it('I can search within language', function () { cy.get('.searchbar-wrapper input') .type('februax{enter}') - .wait('@kitsearch') - .get('.block.searchkitsearch') - .should('not.contain', 'Der Garten im Februar') - .get('.block.searchkitsearch') + .wait('@kitsearch'); + cy.screenshot(); + cy.get('.block.searchkitsearch') + .should('not.contain', 'Der Garten im Februar'); + cy.get('.block.searchkitsearch') .contains('The garden in february'); }); }); diff --git a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js index 45a81000..2f9d60ad 100644 --- a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js @@ -60,11 +60,6 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { }); it('I can search', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); cy.get('.searchbar-wrapper input').type('february{enter}'); cy.get('.block.searchkitsearch').contains('The garden in february'); cy.get('.searchbar-wrapper input').clear().type('march{enter}'); @@ -72,11 +67,6 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { }); it('As anonymous I see only published content', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'en'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('/**/@logout').as('logout'); diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index cc332069..435e2be2 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -4,7 +4,7 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); // Wait a bit to previous teardown to complete correctly because Heisenbug in this point - cy.wait(3000); + cy.wait(2000); // given a logged in editor and a page in edit mode cy.autologin(); @@ -57,7 +57,7 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { path: '/de', }); // Wait after creating content for ingest and OpenSearch to index - cy.wait(3000); + cy.wait(2000); // Add search block cy.visit('/de/suche/edit'); @@ -79,38 +79,21 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { cy.removeContent({ path: 'de/testseite-lsb' }); cy.removeContent({ path: 'de/testseite-s' }); cy.removeContent({ path: 'de/suche' }); - cy.wait(5000); + cy.wait(2000); }); it('I see all if no filter selected', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); + cy.screenshot(); }); it('I can search fuzzy', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.searchbar-wrapper input').type('februax{enter}'); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); cy.get('.block.searchkitsearch').should('not.contain', 'März'); }); it('I can search with inflection', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.searchbar-wrapper input').clear().type('Männer{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); @@ -119,12 +102,6 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I can search with decompounding', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.searchbar-wrapper input').type('Garten{enter}'); cy.get('.block.searchkitsearch').contains('Garten-Blog'); @@ -133,23 +110,11 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I can search with wildcard', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.searchbar-wrapper input').type('Feb*{enter}'); cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); }); it('I can search for an exact match', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.searchbar-wrapper input').type('"Mann"{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Mann'); cy.get('.searchbar-wrapper input').clear().type('"Mann"{enter}'); @@ -157,12 +122,6 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { }); it('I can search for a compounded word', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.get('.searchbar-wrapper input').type('stelle{enter}'); cy.get('.block.searchkitsearch').contains('Testseite Lehrstellenbörsen'); cy.get('.searchbar-wrapper input').clear().type('Lehre{enter}'); @@ -175,12 +134,6 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { // Blocks text it('I can search in blocks', function () { - cy.settings().then((settings) => { - settings.defaultLanguage = 'de'; - settings.isMultilingual = true; - settings.supportedLanguages = ['de', 'en']; - }); - cy.wait(4000); cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.visit('/de/garten-blog/februar'); cy.get('a.edit').click(); @@ -193,10 +146,10 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { // cy.toolbarSave(); cy.get('#toolbar-save').click(); cy.wait('@content'); - + cy.log('I added a text block'); // Wait after creating content for ingest and OpenSearch to index - cy.wait(3000); + cy.wait(1000); // Searching cy.visit('de/suche'); From 3831908b9c4aef0342d200033e66b1de7a6006a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 10:58:23 +0100 Subject: [PATCH 71/98] Fix monolingual tests after fixture package --- cypress/tests/monolingual/monolingual.create_search.cy.js | 4 ++-- cypress/tests/monolingual/monolingual.results.cy.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cypress/tests/monolingual/monolingual.create_search.cy.js b/cypress/tests/monolingual/monolingual.create_search.cy.js index a1cbd925..b869ac6e 100644 --- a/cypress/tests/monolingual/monolingual.create_search.cy.js +++ b/cypress/tests/monolingual/monolingual.create_search.cy.js @@ -49,7 +49,7 @@ describe('Searchkit block tests- create search ', () => { // Add block cy.getSlate().click(); cy.get('button.block-add-button').click(); - cy.get('.blocks-chooser .title').contains('Common').click(); + cy.get('.blocks-chooser .title').contains('Allgemein').click(); cy.get('.blocks-chooser .button.searchkitblock').click({ force: true }); cy.get('#toolbar-save').click(); @@ -60,7 +60,7 @@ describe('Searchkit block tests- create search ', () => { cy.get('.block.searchkitsearch').contains('The garden in february'); // searching for a query string - cy.get('.searchbar-wrapper input').type('Februar{enter}'); + cy.get('.searchbar-wrapper input').type('february{enter}'); cy.get('.block.searchkitsearch').contains('The garden in february'); }); }); diff --git a/cypress/tests/monolingual/monolingual.results.cy.js b/cypress/tests/monolingual/monolingual.results.cy.js index 2588b804..d96c3887 100644 --- a/cypress/tests/monolingual/monolingual.results.cy.js +++ b/cypress/tests/monolingual/monolingual.results.cy.js @@ -53,8 +53,8 @@ describe('Searchkit block tests – search - monolingual', () => { it('I see the start date', function () { cy.get('.searchbar-wrapper input').type('matterhorn{enter}'); - // 10/29/2024 - cy.get('.block.searchkitsearch').contains('/202'); + // 29.10.2024 + cy.get('.block.searchkitsearch').contains('.202'); }); it('I can open a result', function () { From 2d9a0fd5eb9574b9c6efab0c0469a9de6cbd71bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 11:42:08 +0100 Subject: [PATCH 72/98] attac security issue --- .github/workflows/acceptance_monolingual.yml | 3 +++ .github/workflows/acceptance_multilingual.yml | 3 +++ Makefile | 4 ++++ backend/dockerfiles/.env | 2 -- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml index 3a8d560a..b1f1384e 100644 --- a/.github/workflows/acceptance_monolingual.yml +++ b/.github/workflows/acceptance_monolingual.yml @@ -57,6 +57,9 @@ jobs: - uses: JarvusInnovations/background-action@v1 name: Start Servers + env: + INDEX_PASSWORD: ${{ secrets.SECRET_INDEX_PASSWORD}} + PLONE_PASSWORD: ${{ secrets.SECRET_PLONE_PASSWORD}} with: run: | make ci-acceptance-backend-start-monolingual & diff --git a/.github/workflows/acceptance_multilingual.yml b/.github/workflows/acceptance_multilingual.yml index f820bec2..f1f8f5a9 100644 --- a/.github/workflows/acceptance_multilingual.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -57,6 +57,9 @@ jobs: - uses: JarvusInnovations/background-action@v1 name: Start Servers + env: + INDEX_PASSWORD: ${{ secrets.SECRET_INDEX_PASSWORD}} + PLONE_PASSWORD: ${{ secrets.SECRET_PLONE_PASSWORD}} with: run: | make ci-acceptance-backend-start-multilingual & diff --git a/Makefile b/Makefile index bb40144a..aebaf805 100644 --- a/Makefile +++ b/Makefile @@ -187,6 +187,8 @@ acceptance-frontend-prod-start-monolingual: ## Start acceptance frontend in prod .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start backend acceptance server + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=secret $(MAKE) -C "./backend/" acceptance-backend-start-monolingual .PHONY: ci-acceptance-backend-start-monolingual @@ -215,6 +217,8 @@ acceptance-frontend-prod-start-multilingual: ## Start acceptance frontend in pro .PHONY: acceptance-backend-start-multilingual acceptance-backend-start-multilingual: ## Start backend acceptance server + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=secret $(MAKE) -C "./backend/" acceptance-backend-start-multilingual .PHONY: ci-acceptance-backend-start-multilingual diff --git a/backend/dockerfiles/.env b/backend/dockerfiles/.env index a52b3cea..dd00a54d 100644 --- a/backend/dockerfiles/.env +++ b/backend/dockerfiles/.env @@ -3,7 +3,6 @@ export INDEX_NAME=plone export INDEX_OPENSEARCH=1 export INDEX_USE_SSL=1 export INDEX_LOGIN=admin -export INDEX_PASSWORD=paraDiesli,17 export CELERY_BROKER=redis://redis:6379/0 export CELERY_LOGLEVEL=info @@ -11,7 +10,6 @@ export CELERY_LOGLEVEL=info export PLONE_SERVICE=http://backend-acceptance:55001 export PLONE_SITE_PREFIX_PATH=plone export PLONE_USER=admin -export PLONE_PASSWORD=secret export MAPPINGS_FILE=/configuration/mappings.json export ANALYSIS_FILE=/configuration/analysis.json From 9190624510624cd7efbe0ce9c201fb7d78e3bc9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 12:14:25 +0100 Subject: [PATCH 73/98] Fix Makefile indentation --- Makefile | 8 +- pnpm-lock.yaml | 1128 +++++++++++++++++++++++++++--------------------- 2 files changed, 634 insertions(+), 502 deletions(-) diff --git a/Makefile b/Makefile index aebaf805..8bb7b3a5 100644 --- a/Makefile +++ b/Makefile @@ -187,8 +187,8 @@ acceptance-frontend-prod-start-monolingual: ## Start acceptance frontend in prod .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start backend acceptance server - export INDEX_PASSWORD=paraDiesli,17 - export PLONE_PASSWORD=secret + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=secret $(MAKE) -C "./backend/" acceptance-backend-start-monolingual .PHONY: ci-acceptance-backend-start-monolingual @@ -217,8 +217,8 @@ acceptance-frontend-prod-start-multilingual: ## Start acceptance frontend in pro .PHONY: acceptance-backend-start-multilingual acceptance-backend-start-multilingual: ## Start backend acceptance server - export INDEX_PASSWORD=paraDiesli,17 - export PLONE_PASSWORD=secret + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=secret $(MAKE) -C "./backend/" acceptance-backend-start-multilingual .PHONY: ci-acceptance-backend-start-multilingual diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c79bb162..592cc939 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -58,7 +58,7 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) @@ -70,7 +70,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) core/packages/client: dependencies: @@ -98,7 +98,7 @@ importers: version: 2.12.0(@swc/helpers@0.5.13) '@parcel/optimizer-terser': specifier: 2.12.0 - version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) '@parcel/packager-ts': specifier: ^2.12.0 version: 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -134,10 +134,10 @@ importers: version: 9.0.8 '@vitejs/plugin-react': specifier: ^4.1.0 - version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 4.3.3(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) '@vitest/coverage-v8': specifier: ^1.3.1 - version: 1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 1.6.0(vitest@2.1.4(@types/node@22.8.5)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) glob: specifier: 7.1.6 version: 7.1.6 @@ -158,7 +158,7 @@ importers: version: 17.1.1(typescript@5.6.3) tsup: specifier: ^8.0.2 - version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3) + version: 8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.5))(@swc/core@1.7.42(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3) typescript: specifier: ^5.4.5 version: 5.6.3 @@ -167,13 +167,13 @@ importers: version: 9.0.1 vite: specifier: ^5.4.8 - version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) vite-plugin-dts: specifier: ^3.7.3 - version: 3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 3.9.1(@types/node@22.8.5)(rollup@4.24.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.5)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) wait-on: specifier: ^7.2.0 version: 7.2.0(debug@4.3.4) @@ -249,13 +249,13 @@ importers: version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) '@storybook/react-vite': specifier: ^8.0.4 - version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.3)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) '@storybook/theming': specifier: ^8.0.4 version: 8.3.6(storybook@8.3.6) '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) '@testing-library/react': specifier: 14.2.1 version: 14.2.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -270,10 +270,10 @@ importers: version: 18.2.12 '@vitejs/plugin-react': specifier: ^4.1.0 - version: 4.3.3(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 4.3.3(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) '@vitest/coverage-v8': specifier: ^1.3.1 - version: 1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 1.6.0(vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) browserslist: specifier: ^4.23.0 version: 4.24.2 @@ -306,13 +306,13 @@ importers: version: 5.6.3 vite: specifier: ^5.4.8 - version: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) vitest-axe: specifier: ^0.1.0 - version: 0.1.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + version: 0.1.0(vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) core/packages/coresandbox: dependencies: @@ -438,7 +438,7 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: ^17.1.1 version: 17.1.1(typescript@5.6.3) @@ -450,7 +450,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) core/packages/providers: dependencies: @@ -517,7 +517,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) core/packages/registry: dependencies: @@ -554,7 +554,7 @@ importers: version: 8.1.0 '@types/node': specifier: ^20 - version: 20.17.2 + version: 20.17.4 '@types/react': specifier: ^18 version: 18.2.27 @@ -566,7 +566,7 @@ importers: version: 0.2.6 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3) react: specifier: ^18.2.0 version: 18.2.0 @@ -584,10 +584,10 @@ importers: version: 5.6.3 vite: specifier: ^5.4.8 - version: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 5.4.10(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@20.17.4)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) core/packages/scripts: dependencies: @@ -673,7 +673,7 @@ importers: version: 18.2.12 parcel: specifier: ^2.12.0 - version: 2.12.0(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + version: 2.12.0(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3) release-it: specifier: 17.1.1 version: 17.1.1(typescript@5.6.3) @@ -685,7 +685,7 @@ importers: version: 5.6.3 vitest: specifier: ^2.1.3 - version: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + version: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) core/packages/tsconfig: {} @@ -1090,7 +1090,7 @@ importers: version: 10.0.1(cypress@13.13.2) '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@26.6.3)(vitest@2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4)) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@26.6.3)(vitest@2.1.4(jsdom@16.7.0)(less@3.11.1)(sass@1.80.5)) '@testing-library/react': specifier: 14.2.0 version: 14.2.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1108,7 +1108,7 @@ importers: version: 5.13.9 '@types/lodash': specifier: ^4.14.201 - version: 4.17.12 + version: 4.17.13 '@types/react': specifier: ^18 version: 18.2.27 @@ -1360,7 +1360,7 @@ importers: dependencies: '@plone/scripts': specifier: '*' - version: 3.6.2 + version: 3.7.0 core/packages/volto-slate: dependencies: @@ -1448,7 +1448,7 @@ importers: version: 10.0.1(cypress@13.13.2) '@testing-library/jest-dom': specifier: 6.4.2 - version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3) + version: 6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.4) '@testing-library/react': specifier: 12.1.5 version: 12.1.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -1491,7 +1491,7 @@ importers: devDependencies: '@plone/scripts': specifier: ^3.6.1 - version: 3.6.2 + version: 3.7.0 release-it: specifier: ^17.1.1 version: 17.1.1(typescript@5.6.3) @@ -1508,12 +1508,12 @@ packages: '@babel/code-frame@7.10.4': resolution: {integrity: sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==} - '@babel/code-frame@7.26.0': - resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + '@babel/code-frame@7.26.2': + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.26.0': - resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + '@babel/compat-data@7.26.2': + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} '@babel/core@7.26.0': @@ -1527,8 +1527,8 @@ packages: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 - '@babel/generator@7.26.0': - resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + '@babel/generator@7.26.2': + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.25.9': @@ -1626,8 +1626,8 @@ packages: resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.26.1': - resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + '@babel/parser@7.26.2': + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2326,8 +2326,8 @@ packages: peerDependencies: postcss-selector-parser: ^6.1.0 - '@cypress/request@3.0.5': - resolution: {integrity: sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==} + '@cypress/request@3.0.6': + resolution: {integrity: sha512-fi0eVdCOtKu5Ed6+E8mYxUF6ZTFJDZvHogCBelM0xVXmrDEkyM22gRArQzq1YcHPm1V47Vf/iAD+WgVdUlJCGg==} engines: {node: '>= 6'} '@cypress/xvfb@1.2.4': @@ -2846,8 +2846,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.11.2': - resolution: {integrity: sha512-2WwyTYNVaMNUWPZTOJdkax9iqTdirrApgTbk+Qoq5EPX6myqZvG8QGFRgdKmkjKVG6/G/a565vpPauHk0+hpBA==} + '@eslint-community/regexpp@4.12.1': + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} '@eslint/eslintrc@2.1.4': @@ -3777,8 +3777,8 @@ packages: resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - '@plone/scripts@3.6.2': - resolution: {integrity: sha512-52S2Nb8sUDnHobzoYBstn6UkXxri+UGEh5DWZfy0xJ9h/ia6n9XI+mjtSEG3vKkr+hsbLH9sO8RlX4tpG3Kyhg==} + '@plone/scripts@3.7.0': + resolution: {integrity: sha512-YCCWu9llrzdiLsnHFeI9PyZkuOvkpsSWDjSGbtllTX6VbjDEjWXgJrnqpnpgIXVCkogErMfNmn7WCR0u2VeHPw==} hasBin: true '@pmmmwh/react-refresh-webpack-plugin@0.5.15': @@ -4384,83 +4384,93 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': - resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} + '@rollup/rollup-android-arm-eabi@4.24.3': + resolution: {integrity: sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.24.0': - resolution: {integrity: sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==} + '@rollup/rollup-android-arm64@4.24.3': + resolution: {integrity: sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.24.0': - resolution: {integrity: sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==} + '@rollup/rollup-darwin-arm64@4.24.3': + resolution: {integrity: sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.24.0': - resolution: {integrity: sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==} + '@rollup/rollup-darwin-x64@4.24.3': + resolution: {integrity: sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==} cpu: [x64] os: [darwin] - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': - resolution: {integrity: sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==} + '@rollup/rollup-freebsd-arm64@4.24.3': + resolution: {integrity: sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.3': + resolution: {integrity: sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': + resolution: {integrity: sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.24.0': - resolution: {integrity: sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==} + '@rollup/rollup-linux-arm-musleabihf@4.24.3': + resolution: {integrity: sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.24.0': - resolution: {integrity: sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==} + '@rollup/rollup-linux-arm64-gnu@4.24.3': + resolution: {integrity: sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.24.0': - resolution: {integrity: sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==} + '@rollup/rollup-linux-arm64-musl@4.24.3': + resolution: {integrity: sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': - resolution: {integrity: sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': + resolution: {integrity: sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.24.0': - resolution: {integrity: sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==} + '@rollup/rollup-linux-riscv64-gnu@4.24.3': + resolution: {integrity: sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.24.0': - resolution: {integrity: sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==} + '@rollup/rollup-linux-s390x-gnu@4.24.3': + resolution: {integrity: sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.24.0': - resolution: {integrity: sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==} + '@rollup/rollup-linux-x64-gnu@4.24.3': + resolution: {integrity: sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.24.0': - resolution: {integrity: sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==} + '@rollup/rollup-linux-x64-musl@4.24.3': + resolution: {integrity: sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.24.0': - resolution: {integrity: sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==} + '@rollup/rollup-win32-arm64-msvc@4.24.3': + resolution: {integrity: sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.24.0': - resolution: {integrity: sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==} + '@rollup/rollup-win32-ia32-msvc@4.24.3': + resolution: {integrity: sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.24.0': - resolution: {integrity: sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==} + '@rollup/rollup-win32-x64-msvc@4.24.3': + resolution: {integrity: sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==} cpu: [x64] os: [win32] @@ -4798,68 +4808,68 @@ packages: peerDependencies: storybook: ^8.3.6 - '@swc/core-darwin-arm64@1.7.40': - resolution: {integrity: sha512-LRRrCiRJLb1kpQtxMNNsr5W82Inr0dy5Imho+4HQzVx/Ismi0qX4hQBgzJAnyOBNLK1+OBVb/912UVhKXppdfQ==} + '@swc/core-darwin-arm64@1.7.42': + resolution: {integrity: sha512-fWhaCs2+8GDRIcjExVDEIfbptVrxDqG8oHkESnXgymmvqTWzWei5SOnPNMS8Q+MYsn/b++Y2bDxkcwmq35Bvxg==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.7.40': - resolution: {integrity: sha512-Lpl0XK/4fLzS5jsK48opUuGXrqJXwqJckYYPwyGbCfCXm4MsBe+7dX2hq/Kc4YMY25+NeTmzAXhla8TT4WYD/g==} + '@swc/core-darwin-x64@1.7.42': + resolution: {integrity: sha512-ZaVHD2bijrlkCyD7NDzLmSK849Jgcx+6DdL4x1dScoz1slJ8GTvLtEu0JOUaaScQwA+cVlhmrmlmi9ssjbRLGQ==} engines: {node: '>=10'} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.7.40': - resolution: {integrity: sha512-4bEvvjptpoc5BRPr/R419h6fXTEuub+frpxxlxBOEKxgXjAF/S3xdxyPijUAakmW/xXBF0u7OC4KYI+38yQp6g==} + '@swc/core-linux-arm-gnueabihf@1.7.42': + resolution: {integrity: sha512-iF0BJj7hVTbY/vmbvyzVTh/0W80+Q4fbOYschdUM3Bsud39TA+lSaPOefOHywkNH58EQ1z3EAxYcJOWNES7GFQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.7.40': - resolution: {integrity: sha512-v2fBlHJ/6Ovz0L2xFAI9TRiKyl9DTdx139PuAHD9gyzp16Utl/W0MPd4t2cYdkI6hPXE9PsJCSzMOrduh+YoDg==} + '@swc/core-linux-arm64-gnu@1.7.42': + resolution: {integrity: sha512-xGu8j+DOLYTLkVmsfZPJbNPW1EkiWgSucT0nOlz77bLxImukt/0+HVm2hOwHSKuArQ8C3cjahAMY3b/s4VH2ww==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.7.40': - resolution: {integrity: sha512-uMkduQuU4LFVkW6txv8AVArT8GjJVJ5IHoWloXaUBMT447iE8NALmpePdZWhMyj6KV7j0y23CM5rzV/I2eNGLg==} + '@swc/core-linux-arm64-musl@1.7.42': + resolution: {integrity: sha512-qtW3JNO7i1yHEko59xxz+jY38+tYmB96JGzj6XzygMbYJYZDYbrOpXQvKbMGNG3YeTDan7Fp2jD0dlKf7NgDPA==} engines: {node: '>=10'} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.7.40': - resolution: {integrity: sha512-4LZdY1MBSnXyTpW5fpBU/+JGAhkuHT+VnFTDNegRboN5nSPh7y0Yvn4LmIioESV+sWzjKkEXujJPGjrp+oSp5w==} + '@swc/core-linux-x64-gnu@1.7.42': + resolution: {integrity: sha512-F9WY1TN+hhhtiEzZjRQziNLt36M5YprMeOBHjsLVNqwgflzleSI7ulgnlQECS8c8zESaXj3ksGduAoJYtPC1cA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-linux-x64-musl@1.7.40': - resolution: {integrity: sha512-FPjOwT3SgI6PAwH1O8bhOGBPzuvzOlzKeCtxLaCjruHJu9V8KKBrMTWOZT/FJyYC9mX5Ip1+l9j30UqUZdQxtA==} + '@swc/core-linux-x64-musl@1.7.42': + resolution: {integrity: sha512-7YMdOaYKLMQ8JGfnmRDwidpLFs/6ka+80zekeM0iCVO48yLrJR36G0QGXzMjKsXI0BPhq+mboZRRENK4JfQnEA==} engines: {node: '>=10'} cpu: [x64] os: [linux] - '@swc/core-win32-arm64-msvc@1.7.40': - resolution: {integrity: sha512-//ovXdD9GsTmhPmXJlXnIbRQkeuL6PSrYSr7uCMNcclrUdJG0YkO0GMM2afUKYbdJcunylDDWsSS8PFWn0QxmA==} + '@swc/core-win32-arm64-msvc@1.7.42': + resolution: {integrity: sha512-C5CYWaIZEyqPl5W/EwcJ/mLBJFHVoUEa/IwWi0b4q2fCXcSCktQGwKXOQ+d67GneiZoiq0HasgcdMmMpGS9YRQ==} engines: {node: '>=10'} cpu: [arm64] os: [win32] - '@swc/core-win32-ia32-msvc@1.7.40': - resolution: {integrity: sha512-iD/1auVhHGlhWAPrWmfRWL3w4AvXIWGVXZiSA109/xnRIPiHKb/HqqTp/qB94E/ZHMPRgLKkLTNwamlkueUs8g==} + '@swc/core-win32-ia32-msvc@1.7.42': + resolution: {integrity: sha512-3j47seZ5pO62mbrqvPe1iwhe2BXnM5q7iB+n2xgA38PCGYt0mnaJafqmpCXm/uYZOCMqSNynaoOWCMMZm4sqtA==} engines: {node: '>=10'} cpu: [ia32] os: [win32] - '@swc/core-win32-x64-msvc@1.7.40': - resolution: {integrity: sha512-ZlFAV1WFPhhWQ/8esiygmetkb905XIcMMtHRRG0FBGCllO+HVL5nikUaLDgTClz1onmEY9sMXUFQeoPtvliV+w==} + '@swc/core-win32-x64-msvc@1.7.42': + resolution: {integrity: sha512-FXl9MdeUogZLGDcLr6QIRdDVkpG0dkN4MLM4dwQ5kcAk+XfKPrQibX6M2kcfhsCx+jtBqtK7hRFReRXPWJZGbA==} engines: {node: '>=10'} cpu: [x64] os: [win32] - '@swc/core@1.7.40': - resolution: {integrity: sha512-0HIzM5vigVT5IvNum+pPuST9p8xFhN6mhdIKju7qYYeNuZG78lwms/2d8WgjTJJlzp6JlPguXGrMMNzjQw0qNg==} + '@swc/core@1.7.42': + resolution: {integrity: sha512-iQrRk3SKndQZ4ptJv1rzeQSiCYQIhMjiO97QXOlCcCoaazOLKPnLnXzU4Kv0FuBFyYfG2FE94BoR0XI2BN02qw==} engines: {node: '>=10'} peerDependencies: '@swc/helpers': '*' @@ -5158,8 +5168,8 @@ packages: '@types/loadable__component@5.13.9': resolution: {integrity: sha512-QWOtIkwZqHNdQj3nixQ8oyihQiTMKZLk/DNuvNxMSbTfxf47w+kqcbnxlUeBgAxdOtW0Dh48dTAIp83iJKtnrQ==} - '@types/lodash@4.17.12': - resolution: {integrity: sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ==} + '@types/lodash@4.17.13': + resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==} '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} @@ -5185,11 +5195,11 @@ packages: '@types/node@15.14.9': resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} - '@types/node@20.17.2': - resolution: {integrity: sha512-OOHK4sjXqkL7yQ7VEEHcf6+0jSvKjWqwnaCtY7AKD/VLEvRHMsxxu7eI8ErnjxHS8VwmekD4PeVCpu4qZEZSxg==} + '@types/node@20.17.4': + resolution: {integrity: sha512-Fi1Bj8qTJr4f1FDdHFR7oMlOawEYSzkHNdBJK+aRjcDDNHwEV3jPPjuZP2Lh2QNgXeqzM8Y+U6b6urKAog2rZw==} - '@types/node@22.8.1': - resolution: {integrity: sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==} + '@types/node@22.8.5': + resolution: {integrity: sha512-5iYk6AMPtsMbkZqCO1UGF9W5L38twq11S2pYWkybGHH2ogPUvXWNlQqJBzuEZWKj/WRH+QTeiv6ySWqJtvIEgA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -5463,14 +5473,13 @@ packages: '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} - '@vitest/expect@2.1.3': - resolution: {integrity: sha512-SNBoPubeCJhZ48agjXruCI57DvxcsivVDdWz+SSsmjTT4QN/DfHk3zB/xKsJqMs26bLZ/pNRLnCf0j679i0uWQ==} + '@vitest/expect@2.1.4': + resolution: {integrity: sha512-DOETT0Oh1avie/D/o2sgMHGrzYUFFo3zqESB2Hn70z6QB1HrS2IQ9z5DfyTqU8sg4Bpu13zZe9V4+UTNQlUeQA==} - '@vitest/mocker@2.1.3': - resolution: {integrity: sha512-eSpdY/eJDuOvuTA3ASzCjdithHa+GIF1L4PqtEELl6Qa3XafdMLBpBlZCIUCX2J+Q6sNmjmxtosAG62fK4BlqQ==} + '@vitest/mocker@2.1.4': + resolution: {integrity: sha512-Ky/O1Lc0QBbutJdW0rqLeFNbuLEyS+mIPiNdlVlp2/yhJ0SbyYqObS5IHdhferJud8MbbwMnexg4jordE5cCoQ==} peerDependencies: - '@vitest/spy': 2.1.3 - msw: ^2.3.5 + msw: ^2.4.9 vite: ^5.0.0 peerDependenciesMeta: msw: @@ -5481,26 +5490,26 @@ packages: '@vitest/pretty-format@2.0.5': resolution: {integrity: sha512-h8k+1oWHfwTkyTkb9egzwNMfJAEx4veaPSnMeKbVSjp4euqGSbQlm5+6VHwTr7u4FJslVVsUG5nopCaAYdOmSQ==} - '@vitest/pretty-format@2.1.3': - resolution: {integrity: sha512-XH1XdtoLZCpqV59KRbPrIhFCOO0hErxrQCMcvnQete3Vibb9UeIOX02uFPfVn3Z9ZXsq78etlfyhnkmIZSzIwQ==} + '@vitest/pretty-format@2.1.4': + resolution: {integrity: sha512-L95zIAkEuTDbUX1IsjRl+vyBSLh3PwLLgKpghl37aCK9Jvw0iP+wKwIFhfjdUtA2myLgjrG6VU6JCFLv8q/3Ww==} - '@vitest/runner@2.1.3': - resolution: {integrity: sha512-JGzpWqmFJ4fq5ZKHtVO3Xuy1iF2rHGV4d/pdzgkYHm1+gOzNZtqjvyiaDGJytRyMU54qkxpNzCx+PErzJ1/JqQ==} + '@vitest/runner@2.1.4': + resolution: {integrity: sha512-sKRautINI9XICAMl2bjxQM8VfCMTB0EbsBc/EDFA57V6UQevEKY/TOPOF5nzcvCALltiLfXWbq4MaAwWx/YxIA==} - '@vitest/snapshot@2.1.3': - resolution: {integrity: sha512-qWC2mWc7VAXmjAkEKxrScWHWFyCQx/cmiZtuGqMi+WwqQJ2iURsVY4ZfAK6dVo6K2smKRU6l3BPwqEBvhnpQGg==} + '@vitest/snapshot@2.1.4': + resolution: {integrity: sha512-3Kab14fn/5QZRog5BPj6Rs8dc4B+mim27XaKWFWHWA87R56AKjHTGcBFKpvZKDzC4u5Wd0w/qKsUIio3KzWW4Q==} '@vitest/spy@2.0.5': resolution: {integrity: sha512-c/jdthAhvJdpfVuaexSrnawxZz6pywlTPe84LUB2m/4t3rl2fTo9NFGBG4oWgaD+FTgDDV8hJ/nibT7IfH3JfA==} - '@vitest/spy@2.1.3': - resolution: {integrity: sha512-Nb2UzbcUswzeSP7JksMDaqsI43Sj5+Kry6ry6jQJT4b5gAK+NS9NED6mDb8FlMRCX8m5guaHCDZmqYMMWRy5nQ==} + '@vitest/spy@2.1.4': + resolution: {integrity: sha512-4JOxa+UAizJgpZfaCPKK2smq9d8mmjZVPMt2kOsg/R8QkoRzydHH1qHxIYNvr1zlEaFj4SXiaaJWxq/LPLKaLg==} '@vitest/utils@2.0.5': resolution: {integrity: sha512-d8HKbqIcya+GR67mkZbrzhS5kKhtp8dQLcmRZLGTscGVg7yImT82cIrhtn2L8+VujWcy6KZweApgNmPsTAO/UQ==} - '@vitest/utils@2.1.3': - resolution: {integrity: sha512-xpiVfDSg1RrYT0tX6czgerkpcKFmFOF/gCr30+Mve5V2kewCy4Prn1/NDMSRwaSmT7PRaOF83wu+bEtsY1wrvA==} + '@vitest/utils@2.1.4': + resolution: {integrity: sha512-MXDnZn0Awl2S86PSNIim5PWXgIAx8CIkzu35mBdSApUip6RFOGXBCf3YFyeEu8n1IHk4bWD46DeYFu9mQlFIRg==} '@volar/language-core@1.11.1': resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} @@ -5626,8 +5635,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true @@ -6374,8 +6383,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001671: - resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} + caniuse-lite@1.0.30001676: + resolution: {integrity: sha512-Qz6zwGCiPghQXGJvgQAem79esjitvJ+CxSbSQkW9H/UX5hg8XM88d4lp2W+MEQ81j+Hip58Il+jGVdazk1z9cw==} capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -6809,11 +6818,11 @@ packages: peerDependencies: webpack: ^4.37.0 || ^5.0.0 - core-js-compat@3.38.1: - resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} + core-js-compat@3.39.0: + resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} - core-js-pure@3.38.1: - resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} + core-js-pure@3.39.0: + resolution: {integrity: sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==} core-js@1.2.7: resolution: {integrity: sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==} @@ -7459,8 +7468,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.47: - resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} + electron-to-chromium@1.5.49: + resolution: {integrity: sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==} emittery@0.7.2: resolution: {integrity: sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==} @@ -7915,6 +7924,10 @@ packages: resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==} engines: {node: '>=0.10.0'} + expect-type@1.1.0: + resolution: {integrity: sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==} + engines: {node: '>=12.0.0'} + expect@26.6.2: resolution: {integrity: sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==} engines: {node: '>= 10.14.2'} @@ -10231,8 +10244,8 @@ packages: mdast-util-phrasing@4.1.0: resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - mdast-util-to-markdown@2.1.0: - resolution: {integrity: sha512-SR2VnIEdVNCJbP6y7kVTJgPLifdr8WEU440fQec7qHoHOUz/oJ2jmNRqdDQ3rbiStOXb2mCDGTuwsK5OPUgYlQ==} + mdast-util-to-markdown@2.1.1: + resolution: {integrity: sha512-OrkcCoqAkEg9b1ykXBrA0ehRc8H4fGU/03cACmW2xXzau1+dIdS+qJugh1Cqex3hMumSBgSE/5pc7uqP12nLAw==} mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} @@ -10584,8 +10597,8 @@ packages: resolution: {integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==} hasBin: true - msgpackr@1.11.0: - resolution: {integrity: sha512-I8qXuuALqJe5laEBYoFykChhSXLikZmUhccjGsPuSJ/7uPip2TJ7lwdIQwWSAi0jGZDXv4WOP8Qg65QZRuXxXw==} + msgpackr@1.11.1: + resolution: {integrity: sha512-P6RWMjddZDjSndqKd5XhmHhpnxohGEj4+55w9tSACji7X/P6gTP/KzYGj7/U2RfE2D3HONS6Y63eGkuFXJEMtA==} muggle-string@0.3.1: resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} @@ -11130,8 +11143,8 @@ packages: parse5@6.0.1: resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - parse5@7.2.0: - resolution: {integrity: sha512-ZkDsAOcxsUMZ4Lz5fVciOehNcJ+Gb8gTzcA4yl3wnc273BAybYWrQ+Ks/OjCjSEpjvQkDSeZbybK9qj2VHHdGA==} + parse5@7.2.1: + resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -12346,8 +12359,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.11.1: - resolution: {integrity: sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==} + regjsparser@0.11.2: + resolution: {integrity: sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==} hasBin: true rehype-external-links@3.0.0: @@ -12530,8 +12543,8 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.24.0: - resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} + rollup@4.24.3: + resolution: {integrity: sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -12620,8 +12633,8 @@ packages: sass: optional: true - sass@1.80.4: - resolution: {integrity: sha512-rhMQ2tSF5CsuuspvC94nPM9rToiAFw2h3JTrLlgmNw1MH79v8Cr3DH6KF6o6r+8oofY3iYVPUf66KzC8yuVN1w==} + sass@1.80.5: + resolution: {integrity: sha512-TQd2aoQl/+zsxRMEDSxVdpPIqeq9UFc6pr7PzkugiTx3VYCFPUaa3P4RrBQsqok4PO200Vkz0vXQBNlg7W907g==} engines: {node: '>=14.0.0'} hasBin: true @@ -13474,6 +13487,13 @@ packages: resolution: {integrity: sha512-7MUlYyGJ6rSitEZ3r1Q1QNV8uSIzapS8SmmhSusBuIc7uIxPPwsKllEP0GRp1NS6Ik6F+fRZvnjDWm3ecv2hDw==} hasBin: true + tldts-core@6.1.57: + resolution: {integrity: sha512-lXnRhuQpx3zU9EONF9F7HfcRLvN1uRYUBIiKL+C/gehC/77XTU+Jye6ui86GA3rU6FjlJ0triD1Tkjt2F/2lEg==} + + tldts@6.1.57: + resolution: {integrity: sha512-Oy7yDXK8meJl8vPMOldzA+MtueAJ5BrH4l4HXwZuj2AtfoQbLjmTJmjNWPUcAo+E/ibHn7QlqMS0BOcXJFJyHQ==} + hasBin: true + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -13533,6 +13553,10 @@ packages: resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} engines: {node: '>=6'} + tough-cookie@5.0.0: + resolution: {integrity: sha512-FRKsF7cz96xIIeMZ82ehjC3xW2E+O2+v11udrDYewUbszngYhsGa8z6YUMMzO9QJZzzyd0nGGXnML/TReX6W8Q==} + engines: {node: '>=16'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -13560,8 +13584,8 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@1.3.0: - resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + ts-api-utils@1.4.0: + resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -13833,8 +13857,8 @@ packages: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - unplugin@1.14.1: - resolution: {integrity: sha512-lBlHbfSFPToDYp9pjXlUEFVxYLaue9f9T1HC+4OHlmj+HnMDdz9oZY+erXfoCe/5V/7gKUSY2jpXPb9S7f0f/w==} + unplugin@1.15.0: + resolution: {integrity: sha512-jTPIs63W+DUEDW207ztbaoO7cQ4p5aVaB823LSlxpsFEU3Mykwxf3ZGC/wzxFJeZlASZYgVrWeo7LgOrqJZ8RA==} engines: {node: '>=14.0.0'} peerDependencies: webpack-sources: ^3 @@ -14005,8 +14029,8 @@ packages: resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} engines: {node: '>= 0.10'} - vite-node@2.1.3: - resolution: {integrity: sha512-I1JadzO+xYX887S39Do+paRePCKoiDrWRRjp9kkG5he0t7RXNvPAJPCQSJqbGN4uCrFFeS3Kj3sLqY8NMYBEdA==} + vite-node@2.1.4: + resolution: {integrity: sha512-kqa9v+oi4HwkG6g8ufRnb5AeplcRw8jUF6/7/Qz1qRQOXHImG8YnLbB+LLszENwFnoBl9xIf9nVdCFzNd7GQEg==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true @@ -14056,15 +14080,15 @@ packages: peerDependencies: vitest: '>=0.16.0' - vitest@2.1.3: - resolution: {integrity: sha512-Zrxbg/WiIvUP2uEzelDNTXmEMJXuzJ1kCpbDvaKByFA9MNeO95V+7r/3ti0qzJzrxdyuUw5VduN7k+D3VmVOSA==} + vitest@2.1.4: + resolution: {integrity: sha512-eDjxbVAJw1UJJCHr5xr/xM86Zx+YxIEXGAR+bmnEID7z9qWfoxpHw0zdobz+TQAFOLT+nEXz3+gx6nUJ7RgmlQ==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@edge-runtime/vm': '*' '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 2.1.3 - '@vitest/ui': 2.1.3 + '@vitest/browser': 2.1.4 + '@vitest/ui': 2.1.4 happy-dom: '*' jsdom: '*' peerDependenciesMeta: @@ -14506,23 +14530,23 @@ snapshots: dependencies: '@babel/highlight': 7.25.9 - '@babel/code-frame@7.26.0': + '@babel/code-frame@7.26.2': dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/compat-data@7.26.0': {} + '@babel/compat-data@7.26.2': {} '@babel/core@7.26.0': dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 @@ -14542,9 +14566,9 @@ snapshots: eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/generator@7.26.0': + '@babel/generator@7.26.2': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -14563,7 +14587,7 @@ snapshots: '@babel/helper-compilation-targets@7.25.9': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -14687,7 +14711,7 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 - '@babel/parser@7.26.1': + '@babel/parser@7.26.2': dependencies: '@babel/types': 7.26.0 @@ -14775,7 +14799,7 @@ snapshots: '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 @@ -15338,7 +15362,7 @@ snapshots: '@babel/preset-env@7.26.0(@babel/core@7.26.0)': dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-plugin-utils': 7.25.9 @@ -15406,7 +15430,7 @@ snapshots: babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.26.0) babel-plugin-polyfill-corejs3: 0.10.6(@babel/core@7.26.0) babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.38.1 + core-js-compat: 3.39.0 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -15443,7 +15467,7 @@ snapshots: '@babel/runtime-corejs3@7.26.0': dependencies: - core-js-pure: 3.38.1 + core-js-pure: 3.39.0 regenerator-runtime: 0.14.1 '@babel/runtime@7.20.6': @@ -15456,15 +15480,15 @@ snapshots: '@babel/template@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@babel/traverse@7.25.9': dependencies: - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/types': 7.26.0 debug: 4.3.4(supports-color@8.1.1) @@ -15510,7 +15534,7 @@ snapshots: dependencies: postcss-selector-parser: 6.1.2 - '@cypress/request@3.0.5': + '@cypress/request@3.0.6': dependencies: aws-sign2: 0.7.0 aws4: 1.13.2 @@ -15527,7 +15551,7 @@ snapshots: performance-now: 2.1.0 qs: 6.13.0 safe-buffer: 5.2.1 - tough-cookie: 4.1.4 + tough-cookie: 5.0.0 tunnel-agent: 0.6.0 uuid: 8.3.2 @@ -15862,7 +15886,7 @@ snapshots: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.11.2': {} + '@eslint-community/regexpp@4.12.1': {} '@eslint/eslintrc@2.1.4': dependencies: @@ -16001,7 +16025,7 @@ snapshots: '@jest/console@26.6.2': dependencies: '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 chalk: 4.1.2 jest-message-util: 26.6.2 jest-util: 26.6.2 @@ -16014,7 +16038,7 @@ snapshots: '@jest/test-result': 26.6.2 '@jest/transform': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 ansi-escapes: 4.3.2 chalk: 4.1.2 exit: 0.1.2 @@ -16048,14 +16072,14 @@ snapshots: dependencies: '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-mock: 26.6.2 '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -16073,7 +16097,7 @@ snapshots: dependencies: '@jest/types': 26.6.2 '@sinonjs/fake-timers': 6.0.1 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-message-util: 26.6.2 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -16082,7 +16106,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -16221,7 +16245,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/yargs': 15.0.19 chalk: 4.1.2 @@ -16230,17 +16254,17 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: glob: 7.2.3 glob-promise: 4.2.2(glob@7.2.3) magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.6.3) - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) optionalDependencies: typescript: 5.6.3 @@ -16335,23 +16359,23 @@ snapshots: '@types/react': 18.2.27 react: 18.2.0 - '@microsoft/api-extractor-model@7.28.13(@types/node@22.8.1)': + '@microsoft/api-extractor-model@7.28.13(@types/node@22.8.5)': dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.8.1) + '@rushstack/node-core-library': 4.0.2(@types/node@22.8.5) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.43.0(@types/node@22.8.1)': + '@microsoft/api-extractor@7.43.0(@types/node@22.8.5)': dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@22.8.1) + '@microsoft/api-extractor-model': 7.28.13(@types/node@22.8.5) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.8.1) + '@rushstack/node-core-library': 4.0.2(@types/node@22.8.5) '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@22.8.1) - '@rushstack/ts-command-line': 4.19.1(@types/node@22.8.1) + '@rushstack/terminal': 0.10.0(@types/node@22.8.5) + '@rushstack/ts-command-line': 4.19.1(@types/node@22.8.5) lodash: 4.17.21 minimatch: 3.0.8 resolve: 1.22.8 @@ -16836,6 +16860,51 @@ snapshots: - '@swc/helpers' '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + dependencies: + '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/namer-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-htmlnano': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3) + '@parcel/optimizer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-svgo': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/optimizer-swc': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/packager-wasm': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/resolver-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-browser-hmr': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-react-refresh': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/runtime-service-worker': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-babel': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-css': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-html': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-image': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-js': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) + '@parcel/transformer-json': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-postcss': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-posthtml': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-react-refresh-wrap': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/transformer-svg': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + + '@parcel/config-default@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3)': dependencies: '@parcel/bundler-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/compressor-raw': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -16904,7 +16973,7 @@ snapshots: dotenv: 7.0.0 dotenv-expand: 5.1.0 json5: 2.2.3 - msgpackr: 1.11.0 + msgpackr: 1.11.1 nullthrows: 1.1.1 semver: 7.6.3 transitivePeerDependencies: @@ -16934,7 +17003,7 @@ snapshots: '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/watcher': 2.4.1 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0 transitivePeerDependencies: - '@swc/helpers' @@ -17016,6 +17085,24 @@ snapshots: - typescript - uncss + '@parcel/optimizer-htmlnano@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(postcss@8.4.47)(relateurl@0.2.7)(terser@5.36.0)(typescript@5.6.3)': + dependencies: + '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + htmlnano: 2.1.1(postcss@8.4.47)(relateurl@0.2.7)(svgo@2.8.0)(terser@5.36.0)(typescript@5.6.3) + nullthrows: 1.1.1 + posthtml: 0.16.6 + svgo: 2.8.0 + transitivePeerDependencies: + - '@parcel/core' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + '@parcel/optimizer-image@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: '@parcel/core': 2.12.0(@swc/helpers@0.5.13) @@ -17043,13 +17130,13 @@ snapshots: '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 '@parcel/utils': 2.12.0 - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@swc/core': 1.7.42(@swc/helpers@0.5.13) nullthrows: 1.1.1 transitivePeerDependencies: - '@parcel/core' - '@swc/helpers' - '@parcel/optimizer-terser@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/optimizer-terser@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))': dependencies: '@parcel/diagnostic': 2.12.0 '@parcel/plugin': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) @@ -17059,7 +17146,6 @@ snapshots: terser: 5.36.0 transitivePeerDependencies: - '@parcel/core' - - '@swc/helpers' '@parcel/package-manager@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: @@ -17068,10 +17154,10 @@ snapshots: '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0(@parcel/core@2.12.0(@swc/helpers@0.5.13)) - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 '@parcel/workers': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@swc/core': 1.7.42(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: - '@swc/helpers' @@ -17082,10 +17168,10 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/logger': 2.12.0 '@parcel/node-resolver-core': 3.3.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0 + '@swc/core': 1.7.42(@swc/helpers@0.5.13) semver: 7.6.3 transitivePeerDependencies: - '@swc/helpers' @@ -17448,7 +17534,7 @@ snapshots: '@parcel/fs': 2.12.0(@swc/helpers@0.5.13) '@parcel/package-manager': 2.12.0(@swc/helpers@0.5.13) '@parcel/source-map': 2.1.1 - '@parcel/workers': 2.12.0(@swc/helpers@0.5.13) + '@parcel/workers': 2.12.0 utility-types: 3.11.0 transitivePeerDependencies: - '@parcel/core' @@ -17521,24 +17607,22 @@ snapshots: '@parcel/watcher-win32-ia32': 2.4.1 '@parcel/watcher-win32-x64': 2.4.1 - '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': + '@parcel/workers@2.12.0': dependencies: - '@parcel/core': 2.12.0(@swc/helpers@0.5.13) '@parcel/diagnostic': 2.12.0 '@parcel/logger': 2.12.0 '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 - transitivePeerDependencies: - - '@swc/helpers' - '@parcel/workers@2.12.0(@swc/helpers@0.5.13)': + '@parcel/workers@2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)': dependencies: + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) '@parcel/diagnostic': 2.12.0 '@parcel/logger': 2.12.0 '@parcel/profiler': 2.12.0 - '@parcel/types': 2.12.0(@swc/helpers@0.5.13) + '@parcel/types': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) '@parcel/utils': 2.12.0 nullthrows: 1.1.1 transitivePeerDependencies: @@ -17549,7 +17633,7 @@ snapshots: '@pkgr/core@0.1.1': {} - '@plone/scripts@3.6.2': + '@plone/scripts@3.7.0': dependencies: '@babel/core': 7.26.0 babel-plugin-react-intl: 5.1.17 @@ -17573,7 +17657,7 @@ snapshots: '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(sockjs-client@1.4.0)(type-fest@2.19.0)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1)': dependencies: ansi-html: 0.0.9 - core-js-pure: 3.38.1 + core-js-pure: 3.39.0 error-stack-parser: 2.1.4 html-entities: 2.5.2 loader-utils: 2.0.4 @@ -18598,67 +18682,73 @@ snapshots: immutable: 4.3.7 redux: 4.2.1 - '@rollup/pluginutils@5.1.3(rollup@4.24.0)': + '@rollup/pluginutils@5.1.3(rollup@4.24.3)': dependencies: '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.24.0 + rollup: 4.24.3 + + '@rollup/rollup-android-arm-eabi@4.24.3': + optional: true - '@rollup/rollup-android-arm-eabi@4.24.0': + '@rollup/rollup-android-arm64@4.24.3': optional: true - '@rollup/rollup-android-arm64@4.24.0': + '@rollup/rollup-darwin-arm64@4.24.3': optional: true - '@rollup/rollup-darwin-arm64@4.24.0': + '@rollup/rollup-darwin-x64@4.24.3': optional: true - '@rollup/rollup-darwin-x64@4.24.0': + '@rollup/rollup-freebsd-arm64@4.24.3': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.24.0': + '@rollup/rollup-freebsd-x64@4.24.3': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.24.0': + '@rollup/rollup-linux-arm-gnueabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm64-gnu@4.24.0': + '@rollup/rollup-linux-arm-musleabihf@4.24.3': optional: true - '@rollup/rollup-linux-arm64-musl@4.24.0': + '@rollup/rollup-linux-arm64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.24.0': + '@rollup/rollup-linux-arm64-musl@4.24.3': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.24.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.24.3': optional: true - '@rollup/rollup-linux-s390x-gnu@4.24.0': + '@rollup/rollup-linux-riscv64-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-gnu@4.24.0': + '@rollup/rollup-linux-s390x-gnu@4.24.3': optional: true - '@rollup/rollup-linux-x64-musl@4.24.0': + '@rollup/rollup-linux-x64-gnu@4.24.3': optional: true - '@rollup/rollup-win32-arm64-msvc@4.24.0': + '@rollup/rollup-linux-x64-musl@4.24.3': optional: true - '@rollup/rollup-win32-ia32-msvc@4.24.0': + '@rollup/rollup-win32-arm64-msvc@4.24.3': optional: true - '@rollup/rollup-win32-x64-msvc@4.24.0': + '@rollup/rollup-win32-ia32-msvc@4.24.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.3': optional: true '@rtsao/scc@1.1.0': {} '@rushstack/eslint-patch@1.10.4': {} - '@rushstack/node-core-library@4.0.2(@types/node@22.8.1)': + '@rushstack/node-core-library@4.0.2(@types/node@22.8.5)': dependencies: fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -18667,23 +18757,23 @@ snapshots: semver: 7.5.4 z-schema: 5.0.5 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.5 '@rushstack/rig-package@0.5.2': dependencies: resolve: 1.22.8 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.10.0(@types/node@22.8.1)': + '@rushstack/terminal@0.10.0(@types/node@22.8.5)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@22.8.1) + '@rushstack/node-core-library': 4.0.2(@types/node@22.8.5) supports-color: 8.1.1 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.5 - '@rushstack/ts-command-line@4.19.1(@types/node@22.8.1)': + '@rushstack/ts-command-line@4.19.1(@types/node@22.8.5)': dependencies: - '@rushstack/terminal': 0.10.0(@types/node@22.8.1) + '@rushstack/terminal': 0.10.0(@types/node@22.8.5) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 @@ -18893,7 +18983,7 @@ snapshots: '@storybook/csf': 0.1.11 '@storybook/global': 5.0.0 '@storybook/icons': 1.2.12(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - '@types/lodash': 4.17.12 + '@types/lodash': 4.17.13 color-convert: 2.0.1 dequal: 2.0.3 lodash: 4.17.21 @@ -18909,7 +18999,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/builder-vite@8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@storybook/builder-vite@8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: '@storybook/csf-plugin': 8.3.6(storybook@8.3.6)(webpack-sources@3.2.3) '@types/find-cache-dir': 3.2.1 @@ -18921,7 +19011,7 @@ snapshots: magic-string: 0.30.12 storybook: 8.3.6 ts-dedent: 2.2.0 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -18931,7 +19021,7 @@ snapshots: '@storybook/builder-webpack5@8.3.6(storybook@8.3.6)(typescript@5.6.3)': dependencies: '@storybook/core-webpack': 8.3.6(storybook@8.3.6) - '@types/node': 22.8.1 + '@types/node': 22.8.5 '@types/semver': 7.5.8 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -18974,7 +19064,7 @@ snapshots: '@storybook/core-webpack@8.3.6(storybook@8.3.6)': dependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.5 storybook: 8.3.6 ts-dedent: 2.2.0 @@ -19001,7 +19091,7 @@ snapshots: '@storybook/csf-plugin@8.3.6(storybook@8.3.6)(webpack-sources@3.2.3)': dependencies: storybook: 8.3.6 - unplugin: 1.14.1(webpack-sources@3.2.3) + unplugin: 1.15.0(webpack-sources@3.2.3) transitivePeerDependencies: - webpack-sources @@ -19023,7 +19113,7 @@ snapshots: '@storybook/instrumenter@8.3.6(storybook@8.3.6)': dependencies: '@storybook/global': 5.0.0 - '@vitest/utils': 2.1.3 + '@vitest/utils': 2.1.4 storybook: 8.3.6 util: 0.12.5 @@ -19036,7 +19126,7 @@ snapshots: '@storybook/core-webpack': 8.3.6(storybook@8.3.6) '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.6.3)(webpack@5.90.1) - '@types/node': 22.8.1 + '@types/node': 22.8.5 '@types/semver': 7.5.8 find-up: 5.0.0 fs-extra: 11.2.0 @@ -19083,11 +19173,11 @@ snapshots: react-dom: 18.2.0(react@18.2.0) storybook: 8.3.6 - '@storybook/react-vite@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.0)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@storybook/react-vite@8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.24.3)(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) - '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - '@storybook/builder-vite': 8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) + '@storybook/builder-vite': 8.3.6(storybook@8.3.6)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) find-up: 5.0.0 magic-string: 0.30.12 @@ -19097,7 +19187,7 @@ snapshots: resolve: 1.22.8 storybook: 8.3.6 tsconfig-paths: 4.2.0 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - '@preact/preset-vite' - '@storybook/test' @@ -19112,7 +19202,7 @@ snapshots: '@storybook/builder-webpack5': 8.3.6(storybook@8.3.6)(typescript@5.6.3) '@storybook/preset-react-webpack': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) '@storybook/react': 8.3.6(@storybook/test@8.3.6(storybook@8.3.6))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.3.6)(typescript@5.6.3) - '@types/node': 22.8.1 + '@types/node': 22.8.5 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) storybook: 8.3.6 @@ -19137,7 +19227,7 @@ snapshots: '@storybook/theming': 8.3.6(storybook@8.3.6) '@types/escodegen': 0.0.6 '@types/estree': 0.0.51 - '@types/node': 22.8.1 + '@types/node': 22.8.5 acorn: 7.4.1 acorn-jsx: 5.3.2(acorn@7.4.1) acorn-walk: 7.2.0 @@ -19173,51 +19263,51 @@ snapshots: dependencies: storybook: 8.3.6 - '@swc/core-darwin-arm64@1.7.40': + '@swc/core-darwin-arm64@1.7.42': optional: true - '@swc/core-darwin-x64@1.7.40': + '@swc/core-darwin-x64@1.7.42': optional: true - '@swc/core-linux-arm-gnueabihf@1.7.40': + '@swc/core-linux-arm-gnueabihf@1.7.42': optional: true - '@swc/core-linux-arm64-gnu@1.7.40': + '@swc/core-linux-arm64-gnu@1.7.42': optional: true - '@swc/core-linux-arm64-musl@1.7.40': + '@swc/core-linux-arm64-musl@1.7.42': optional: true - '@swc/core-linux-x64-gnu@1.7.40': + '@swc/core-linux-x64-gnu@1.7.42': optional: true - '@swc/core-linux-x64-musl@1.7.40': + '@swc/core-linux-x64-musl@1.7.42': optional: true - '@swc/core-win32-arm64-msvc@1.7.40': + '@swc/core-win32-arm64-msvc@1.7.42': optional: true - '@swc/core-win32-ia32-msvc@1.7.40': + '@swc/core-win32-ia32-msvc@1.7.42': optional: true - '@swc/core-win32-x64-msvc@1.7.40': + '@swc/core-win32-x64-msvc@1.7.42': optional: true - '@swc/core@1.7.40(@swc/helpers@0.5.13)': + '@swc/core@1.7.42(@swc/helpers@0.5.13)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.13 optionalDependencies: - '@swc/core-darwin-arm64': 1.7.40 - '@swc/core-darwin-x64': 1.7.40 - '@swc/core-linux-arm-gnueabihf': 1.7.40 - '@swc/core-linux-arm64-gnu': 1.7.40 - '@swc/core-linux-arm64-musl': 1.7.40 - '@swc/core-linux-x64-gnu': 1.7.40 - '@swc/core-linux-x64-musl': 1.7.40 - '@swc/core-win32-arm64-msvc': 1.7.40 - '@swc/core-win32-ia32-msvc': 1.7.40 - '@swc/core-win32-x64-msvc': 1.7.40 + '@swc/core-darwin-arm64': 1.7.42 + '@swc/core-darwin-x64': 1.7.42 + '@swc/core-linux-arm-gnueabihf': 1.7.42 + '@swc/core-linux-arm64-gnu': 1.7.42 + '@swc/core-linux-arm64-musl': 1.7.42 + '@swc/core-linux-x64-gnu': 1.7.42 + '@swc/core-linux-x64-musl': 1.7.42 + '@swc/core-win32-arm64-msvc': 1.7.42 + '@swc/core-win32-ia32-msvc': 1.7.42 + '@swc/core-win32-x64-msvc': 1.7.42 '@swc/helpers': 0.5.13 '@swc/counter@0.1.3': {} @@ -19253,7 +19343,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@babel/runtime': 7.20.6 '@types/aria-query': 5.0.4 aria-query: 5.3.0 @@ -19274,7 +19364,7 @@ snapshots: '@testing-library/dom@8.20.1': dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@babel/runtime': 7.20.6 '@types/aria-query': 5.0.4 aria-query: 5.1.3 @@ -19285,7 +19375,7 @@ snapshots: '@testing-library/dom@9.3.4': dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@babel/runtime': 7.20.6 '@types/aria-query': 5.0.4 aria-query: 5.1.3 @@ -19306,7 +19396,7 @@ snapshots: lodash: 4.17.21 redent: 3.0.0 - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@26.6.3)(vitest@2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@26.6.3)(vitest@2.1.4(jsdom@16.7.0)(less@3.11.1)(sass@1.80.5))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.20.6 @@ -19320,9 +19410,9 @@ snapshots: '@jest/globals': 29.7.0 '@types/jest': 29.5.14 jest: 26.6.3 - vitest: 2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4) + vitest: 2.1.4(jsdom@16.7.0)(less@3.11.1)(sass@1.80.5) - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.20.6 @@ -19335,9 +19425,9 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.14 - vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) - '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.3)': + '@testing-library/jest-dom@6.4.2(@jest/globals@29.7.0)(@types/jest@29.5.14)(vitest@2.1.4)': dependencies: '@adobe/css-tools': 4.4.0 '@babel/runtime': 7.20.6 @@ -19350,7 +19440,7 @@ snapshots: optionalDependencies: '@jest/globals': 29.7.0 '@types/jest': 29.5.14 - vitest: 2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest: 2.1.4(@types/node@20.17.4)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) '@testing-library/jest-dom@6.5.0': dependencies: @@ -19437,7 +19527,7 @@ snapshots: '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@types/babel__generator': 7.6.8 '@types/babel__template': 7.4.4 @@ -19449,7 +19539,7 @@ snapshots: '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.20.5 '@types/babel__traverse@7.20.6': @@ -19459,20 +19549,20 @@ snapshots: '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/bonjour@3.5.13': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.1 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/connect@3.4.38': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/cookie@0.3.3': {} @@ -19502,14 +19592,14 @@ snapshots: '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 '@types/express-serve-static-core@5.0.1': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/qs': 6.9.16 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -19526,16 +19616,16 @@ snapshots: '@types/glob@7.2.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/hast@3.0.4': dependencies: @@ -19556,7 +19646,7 @@ snapshots: '@types/http-proxy@1.17.15': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/invariant@2.2.37': {} @@ -19593,13 +19683,13 @@ snapshots: '@types/keyv@3.1.4': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/loadable__component@5.13.9': dependencies: '@types/react': 18.2.27 - '@types/lodash@4.17.12': {} + '@types/lodash@4.17.13': {} '@types/mdast@4.0.4': dependencies: @@ -19617,15 +19707,15 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/node@15.14.9': {} - '@types/node@20.17.2': + '@types/node@20.17.4': dependencies: undici-types: 6.19.8 - '@types/node@22.8.1': + '@types/node@22.8.5': dependencies: undici-types: 6.19.8 @@ -19689,7 +19779,7 @@ snapshots: '@types/responselike@1.0.3': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/retry@0.12.0': {} @@ -19704,7 +19794,7 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/serve-index@1.9.4': dependencies: @@ -19713,7 +19803,7 @@ snapshots: '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/send': 0.17.4 '@types/sinonjs__fake-timers@8.1.1': {} @@ -19722,7 +19812,7 @@ snapshots: '@types/sockjs@0.3.36': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/stack-utils@2.0.3': {} @@ -19755,11 +19845,11 @@ snapshots: '@types/vinyl@2.0.12': dependencies: '@types/expect': 1.20.4 - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/ws@8.5.12': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 '@types/yargs-parser@21.0.3': {} @@ -19777,12 +19867,12 @@ snapshots: '@types/yauzl@2.10.3': dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 optional: true '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) @@ -19801,7 +19891,7 @@ snapshots: '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.6.3))(eslint@8.57.1)(typescript@5.6.3)': dependencies: - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) @@ -19811,7 +19901,7 @@ snapshots: graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -19878,7 +19968,7 @@ snapshots: '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.6.3) debug: 4.3.4(supports-color@8.1.1) eslint: 8.57.1 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -19911,7 +20001,7 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.3.0(typescript@5.6.3) + ts-api-utils: 1.4.0(typescript@5.6.3) optionalDependencies: typescript: 5.6.3 transitivePeerDependencies: @@ -19955,18 +20045,18 @@ snapshots: '@ungap/structured-clone@1.2.0': {} - '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@vitejs/plugin-react@4.3.3(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@vitest/coverage-v8@1.6.0(vitest@2.1.4(@types/node@22.8.5)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -19981,11 +20071,11 @@ snapshots: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest: 2.1.4(@types/node@22.8.5)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@1.6.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@vitest/coverage-v8@1.6.0(vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 0.2.3 @@ -20000,7 +20090,7 @@ snapshots: std-env: 3.7.0 strip-literal: 2.1.0 test-exclude: 6.0.0 - vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - supports-color @@ -20011,45 +20101,45 @@ snapshots: chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/expect@2.1.3': + '@vitest/expect@2.1.4': dependencies: - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0))': + '@vitest/mocker@2.1.4(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0))': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) - '@vitest/mocker@2.1.3(@vitest/spy@2.1.3)(vite@5.4.10)': + '@vitest/mocker@2.1.4(vite@5.4.10)': dependencies: - '@vitest/spy': 2.1.3 + '@vitest/spy': 2.1.4 estree-walker: 3.0.3 magic-string: 0.30.12 optionalDependencies: - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) '@vitest/pretty-format@2.0.5': dependencies: tinyrainbow: 1.2.0 - '@vitest/pretty-format@2.1.3': + '@vitest/pretty-format@2.1.4': dependencies: tinyrainbow: 1.2.0 - '@vitest/runner@2.1.3': + '@vitest/runner@2.1.4': dependencies: - '@vitest/utils': 2.1.3 + '@vitest/utils': 2.1.4 pathe: 1.1.2 - '@vitest/snapshot@2.1.3': + '@vitest/snapshot@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.4 magic-string: 0.30.12 pathe: 1.1.2 @@ -20057,7 +20147,7 @@ snapshots: dependencies: tinyspy: 3.0.2 - '@vitest/spy@2.1.3': + '@vitest/spy@2.1.4': dependencies: tinyspy: 3.0.2 @@ -20068,9 +20158,9 @@ snapshots: loupe: 3.1.2 tinyrainbow: 1.2.0 - '@vitest/utils@2.1.3': + '@vitest/utils@2.1.4': dependencies: - '@vitest/pretty-format': 2.1.3 + '@vitest/pretty-format': 2.1.4 loupe: 3.1.2 tinyrainbow: 1.2.0 @@ -20089,7 +20179,7 @@ snapshots: '@vue/compiler-core@3.5.12': dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@vue/shared': 3.5.12 entities: 4.5.0 estree-walker: 2.0.2 @@ -20218,30 +20308,30 @@ snapshots: acorn-globals@7.0.1: dependencies: - acorn: 8.13.0 + acorn: 8.14.0 acorn-walk: 8.3.4 - acorn-import-assertions@1.9.0(acorn@8.13.0): + acorn-import-assertions@1.9.0(acorn@8.14.0): dependencies: - acorn: 8.13.0 + acorn: 8.14.0 acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 - acorn-jsx@5.3.2(acorn@8.13.0): + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: - acorn: 8.13.0 + acorn: 8.14.0 acorn-walk@7.2.0: {} acorn-walk@8.3.4: dependencies: - acorn: 8.13.0 + acorn: 8.14.0 acorn@7.4.1: {} - acorn@8.13.0: {} + acorn@8.14.0: {} add-dom-event-listener@1.1.0: dependencies: @@ -20561,7 +20651,7 @@ snapshots: autoprefixer@10.4.8(postcss@8.4.31): dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001671 + caniuse-lite: 1.0.30001676 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 @@ -20715,7 +20805,7 @@ snapshots: babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.26.0): dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) semver: 6.3.1 @@ -20726,7 +20816,7 @@ snapshots: dependencies: '@babel/core': 7.26.0 '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.26.0) - core-js-compat: 3.38.1 + core-js-compat: 3.39.0 transitivePeerDependencies: - supports-color @@ -21057,15 +21147,15 @@ snapshots: browserslist@4.14.2: dependencies: - caniuse-lite: 1.0.30001671 - electron-to-chromium: 1.5.47 + caniuse-lite: 1.0.30001676 + electron-to-chromium: 1.5.49 escalade: 3.2.0 node-releases: 1.1.77 browserslist@4.24.2: dependencies: - caniuse-lite: 1.0.30001671 - electron-to-chromium: 1.5.47 + caniuse-lite: 1.0.30001676 + electron-to-chromium: 1.5.49 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -21283,11 +21373,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.24.2 - caniuse-lite: 1.0.30001671 + caniuse-lite: 1.0.30001676 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001671: {} + caniuse-lite@1.0.30001676: {} capture-exit@2.0.0: dependencies: @@ -21690,11 +21780,11 @@ snapshots: transitivePeerDependencies: - bluebird - core-js-compat@3.38.1: + core-js-compat@3.39.0: dependencies: browserslist: 4.24.2 - core-js-pure@3.38.1: {} + core-js-pure@3.39.0: {} core-js@1.2.7: {} @@ -21966,7 +22056,7 @@ snapshots: cypress@13.13.2: dependencies: - '@cypress/request': 3.0.5 + '@cypress/request': 3.0.6 '@cypress/xvfb': 1.2.4(supports-color@8.1.1) '@types/sinonjs__fake-timers': 8.1.1 '@types/sizzle': 2.3.9 @@ -22397,7 +22487,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.47: {} + electron-to-chromium@1.5.49: {} emittery@0.7.2: {} @@ -22971,7 +23061,7 @@ snapshots: eslint@8.57.1: dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -23020,8 +23110,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -23163,6 +23253,8 @@ snapshots: transitivePeerDependencies: - supports-color + expect-type@1.1.0: {} + expect@26.6.2: dependencies: '@jest/types': 26.6.2 @@ -23466,7 +23558,7 @@ snapshots: fork-ts-checker-webpack-plugin@4.1.6(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack@5.90.1): dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.10.4 chalk: 2.4.2 micromatch: 3.1.10 minimatch: 3.1.2 @@ -23483,7 +23575,7 @@ snapshots: fork-ts-checker-webpack-plugin@8.0.0(typescript@5.6.3)(webpack@5.90.1): dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 chalk: 4.1.2 chokidar: 3.6.0 cosmiconfig: 7.1.0 @@ -24727,7 +24819,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -24881,7 +24973,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-mock: 26.6.2 jest-util: 26.6.2 jsdom: 16.7.0 @@ -24896,7 +24988,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/fake-timers': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-mock: 26.6.2 jest-util: 26.6.2 @@ -24910,7 +25002,7 @@ snapshots: dependencies: '@jest/types': 26.6.2 '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.2 + '@types/node': 20.17.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -24930,7 +25022,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.17.2 + '@types/node': 20.17.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -24949,7 +25041,7 @@ snapshots: '@jest/source-map': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 chalk: 4.1.2 co: 4.6.0 expect: 26.6.2 @@ -24963,11 +25055,7 @@ snapshots: pretty-format: 26.6.2 throat: 5.0.0 transitivePeerDependencies: - - bufferutil - - canvas - supports-color - - ts-node - - utf-8-validate jest-leak-detector@26.6.2: dependencies: @@ -24997,7 +25085,7 @@ snapshots: jest-message-util@26.6.2: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@jest/types': 26.6.2 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -25009,7 +25097,7 @@ snapshots: jest-message-util@29.7.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -25022,12 +25110,12 @@ snapshots: jest-mock@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@26.6.2): @@ -25063,7 +25151,7 @@ snapshots: '@jest/environment': 26.6.2 '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 chalk: 4.1.2 emittery: 0.7.2 exit: 0.1.2 @@ -25124,7 +25212,7 @@ snapshots: jest-serializer@26.6.2: dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 graceful-fs: 4.2.11 jest-snapshot@26.6.2: @@ -25151,7 +25239,7 @@ snapshots: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/generator': 7.26.2 '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) '@babel/types': 7.20.5 @@ -25176,7 +25264,7 @@ snapshots: jest-util@26.6.2: dependencies: '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 chalk: 4.1.2 graceful-fs: 4.2.11 is-ci: 2.0.0 @@ -25185,7 +25273,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 20.17.2 + '@types/node': 20.17.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -25204,7 +25292,7 @@ snapshots: dependencies: '@jest/test-result': 26.6.2 '@jest/types': 26.6.2 - '@types/node': 20.17.2 + '@types/node': 20.17.4 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 26.6.2 @@ -25217,19 +25305,19 @@ snapshots: jest-worker@26.6.2: dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 merge-stream: 2.0.0 supports-color: 7.2.0 jest-worker@27.5.1: dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -25288,7 +25376,7 @@ snapshots: jsdom@16.7.0: dependencies: abab: 2.0.6 - acorn: 8.13.0 + acorn: 8.14.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 @@ -25322,7 +25410,7 @@ snapshots: jsdom@21.1.2: dependencies: abab: 2.0.6 - acorn: 8.13.0 + acorn: 8.14.0 acorn-globals: 7.0.1 cssstyle: 3.0.0 data-urls: 4.0.0 @@ -25335,7 +25423,7 @@ snapshots: https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.13 - parse5: 7.2.0 + parse5: 7.2.1 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -25365,7 +25453,7 @@ snapshots: https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 nwsapi: 2.2.13 - parse5: 7.2.0 + parse5: 7.2.1 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -25671,7 +25759,7 @@ snapshots: lmdb@2.8.5: dependencies: - msgpackr: 1.11.0 + msgpackr: 1.11.1 node-addon-api: 6.1.0 node-gyp-build-optional-packages: 5.1.1 ordered-binary: 1.5.2 @@ -25852,7 +25940,7 @@ snapshots: magicast@0.3.5: dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 source-map-js: 1.2.1 @@ -25989,7 +26077,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.1 micromark-util-normalize-identifier: 2.0.0 transitivePeerDependencies: - supports-color @@ -25998,7 +26086,7 @@ snapshots: dependencies: '@types/mdast': 4.0.4 mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color @@ -26008,7 +26096,7 @@ snapshots: devlop: 1.1.0 markdown-table: 3.0.4 mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color @@ -26017,7 +26105,7 @@ snapshots: '@types/mdast': 4.0.4 devlop: 1.1.0 mdast-util-from-markdown: 2.0.2 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color @@ -26029,7 +26117,7 @@ snapshots: mdast-util-gfm-strikethrough: 2.0.0 mdast-util-gfm-table: 2.0.0 mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.1 transitivePeerDependencies: - supports-color @@ -26038,13 +26126,14 @@ snapshots: '@types/mdast': 4.0.4 unist-util-is: 6.0.0 - mdast-util-to-markdown@2.1.0: + mdast-util-to-markdown@2.1.1: dependencies: '@types/mdast': 4.0.4 '@types/unist': 3.0.3 longest-streak: 3.1.0 mdast-util-phrasing: 4.1.0 mdast-util-to-string: 4.0.0 + micromark-util-classify-character: 2.0.0 micromark-util-decode-string: 2.0.0 unist-util-visit: 5.0.0 zwitch: 2.0.4 @@ -26514,7 +26603,7 @@ snapshots: '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 optional: true - msgpackr@1.11.0: + msgpackr@1.11.1: optionalDependencies: msgpackr-extract: 3.0.3 @@ -27133,7 +27222,7 @@ snapshots: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.6.3 + semver: 7.6.0 pacote@12.0.3: dependencies: @@ -27216,6 +27305,33 @@ snapshots: - typescript - uncss + parcel@2.12.0(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3): + dependencies: + '@parcel/config-default': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13)(terser@5.36.0)(typescript@5.6.3) + '@parcel/core': 2.12.0(@swc/helpers@0.5.13) + '@parcel/diagnostic': 2.12.0 + '@parcel/events': 2.12.0 + '@parcel/fs': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/logger': 2.12.0 + '@parcel/package-manager': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-cli': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-dev-server': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/reporter-tracer': 2.12.0(@parcel/core@2.12.0(@swc/helpers@0.5.13))(@swc/helpers@0.5.13) + '@parcel/utils': 2.12.0 + chalk: 4.1.2 + commander: 7.2.0 + get-port: 4.2.0 + transitivePeerDependencies: + - '@swc/helpers' + - cssnano + - postcss + - purgecss + - relateurl + - srcset + - terser + - typescript + - uncss + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -27233,7 +27349,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -27248,7 +27364,7 @@ snapshots: parse5@6.0.1: {} - parse5@7.2.0: + parse5@7.2.1: dependencies: entities: 4.5.0 @@ -27920,7 +28036,7 @@ snapshots: razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1): dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 chalk: 4.1.2 filesize: 6.4.0 gzip-size: 6.0.0 @@ -27951,8 +28067,8 @@ snapshots: razzle: 4.2.18(@babel/core@7.26.0)(babel-preset-razzle@4.2.18)(eslint@8.57.1)(html-webpack-plugin@5.5.0(webpack@5.90.1))(mini-css-extract-plugin@2.7.2(webpack@5.90.1))(razzle-dev-utils@4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1))(sockjs-client@1.4.0)(type-fest@2.19.0)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack-hot-middleware@2.26.1)(webpack@5.90.1) razzle-dev-utils: 4.2.18(eslint@8.57.1)(typescript@5.6.3)(vue-template-compiler@2.7.16)(webpack-dev-server@4.11.1(debug@4.3.2)(webpack@5.90.1))(webpack@5.90.1) resolve-url-loader: 3.1.5 - sass: 1.80.4 - sass-loader: 10.5.2(sass@1.80.4)(webpack@5.90.1) + sass: 1.80.5 + sass-loader: 10.5.2(sass@1.80.5)(webpack@5.90.1) transitivePeerDependencies: - fibers - node-sass @@ -28855,7 +28971,7 @@ snapshots: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.0 regjsgen: 0.8.0 - regjsparser: 0.11.1 + regjsparser: 0.11.2 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.0 @@ -28877,7 +28993,7 @@ snapshots: regjsgen@0.8.0: {} - regjsparser@0.11.1: + regjsparser@0.11.2: dependencies: jsesc: 3.0.2 @@ -28990,7 +29106,7 @@ snapshots: remark-stringify@11.0.0: dependencies: '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.0 + mdast-util-to-markdown: 2.1.1 unified: 11.0.5 remove-trailing-separator@1.1.0: {} @@ -29148,26 +29264,28 @@ snapshots: dependencies: glob: 7.1.6 - rollup@4.24.0: + rollup@4.24.3: dependencies: '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.24.0 - '@rollup/rollup-android-arm64': 4.24.0 - '@rollup/rollup-darwin-arm64': 4.24.0 - '@rollup/rollup-darwin-x64': 4.24.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.24.0 - '@rollup/rollup-linux-arm-musleabihf': 4.24.0 - '@rollup/rollup-linux-arm64-gnu': 4.24.0 - '@rollup/rollup-linux-arm64-musl': 4.24.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.24.0 - '@rollup/rollup-linux-riscv64-gnu': 4.24.0 - '@rollup/rollup-linux-s390x-gnu': 4.24.0 - '@rollup/rollup-linux-x64-gnu': 4.24.0 - '@rollup/rollup-linux-x64-musl': 4.24.0 - '@rollup/rollup-win32-arm64-msvc': 4.24.0 - '@rollup/rollup-win32-ia32-msvc': 4.24.0 - '@rollup/rollup-win32-x64-msvc': 4.24.0 + '@rollup/rollup-android-arm-eabi': 4.24.3 + '@rollup/rollup-android-arm64': 4.24.3 + '@rollup/rollup-darwin-arm64': 4.24.3 + '@rollup/rollup-darwin-x64': 4.24.3 + '@rollup/rollup-freebsd-arm64': 4.24.3 + '@rollup/rollup-freebsd-x64': 4.24.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.3 + '@rollup/rollup-linux-arm-musleabihf': 4.24.3 + '@rollup/rollup-linux-arm64-gnu': 4.24.3 + '@rollup/rollup-linux-arm64-musl': 4.24.3 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.3 + '@rollup/rollup-linux-riscv64-gnu': 4.24.3 + '@rollup/rollup-linux-s390x-gnu': 4.24.3 + '@rollup/rollup-linux-x64-gnu': 4.24.3 + '@rollup/rollup-linux-x64-musl': 4.24.3 + '@rollup/rollup-win32-arm64-msvc': 4.24.3 + '@rollup/rollup-win32-ia32-msvc': 4.24.3 + '@rollup/rollup-win32-x64-msvc': 4.24.3 fsevents: 2.3.3 rrule@2.7.1: @@ -29245,7 +29363,7 @@ snapshots: transitivePeerDependencies: - supports-color - sass-loader@10.5.2(sass@1.80.4)(webpack@5.90.1): + sass-loader@10.5.2(sass@1.80.5)(webpack@5.90.1): dependencies: klona: 2.0.6 loader-utils: 2.0.4 @@ -29254,9 +29372,9 @@ snapshots: semver: 7.6.3 webpack: 5.90.1 optionalDependencies: - sass: 1.80.4 + sass: 1.80.5 - sass@1.80.4: + sass@1.80.5: dependencies: '@parcel/watcher': 2.4.1 chokidar: 4.0.1 @@ -29546,7 +29664,7 @@ snapshots: dependencies: '@juggle/resize-observer': 3.4.0 '@types/is-hotkey': 0.1.10 - '@types/lodash': 4.17.12 + '@types/lodash': 4.17.13 direction: 1.0.4 is-hotkey: 0.1.8 is-plain-object: 5.0.0 @@ -30216,7 +30334,7 @@ snapshots: terser@4.8.1: dependencies: - acorn: 8.13.0 + acorn: 8.14.0 commander: 2.20.3 source-map: 0.6.1 source-map-support: 0.5.21 @@ -30224,7 +30342,7 @@ snapshots: terser@5.36.0: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.13.0 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -30285,6 +30403,12 @@ snapshots: tlds@1.203.1: {} + tldts-core@6.1.57: {} + + tldts@6.1.57: + dependencies: + tldts-core: 6.1.57 + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -30339,6 +30463,10 @@ snapshots: universalify: 0.2.0 url-parse: 1.5.10 + tough-cookie@5.0.0: + dependencies: + tldts: 6.1.57 + tr46@0.0.3: {} tr46@1.0.1: @@ -30361,7 +30489,7 @@ snapshots: trough@2.2.0: {} - ts-api-utils@1.3.0(typescript@5.6.3): + ts-api-utils@1.4.0(typescript@5.6.3): dependencies: typescript: 5.6.3 @@ -30414,7 +30542,7 @@ snapshots: tslib@2.8.0: {} - tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.1))(@swc/core@1.7.40(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3): + tsup@8.3.5(@microsoft/api-extractor@7.43.0(@types/node@22.8.5))(@swc/core@1.7.42(@swc/helpers@0.5.13))(postcss@8.4.47)(typescript@5.6.3): dependencies: bundle-require: 5.0.0(esbuild@0.24.0) cac: 6.7.14 @@ -30426,15 +30554,15 @@ snapshots: picocolors: 1.1.1 postcss-load-config: 6.0.1(postcss@8.4.47) resolve-from: 5.0.0 - rollup: 4.24.0 + rollup: 4.24.3 source-map: 0.8.0-beta.0 sucrase: 3.35.0 tinyexec: 0.3.1 tinyglobby: 0.2.10 tree-kill: 1.2.2 optionalDependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) - '@swc/core': 1.7.40(@swc/helpers@0.5.13) + '@microsoft/api-extractor': 7.43.0(@types/node@22.8.5) + '@swc/core': 1.7.42(@swc/helpers@0.5.13) postcss: 8.4.47 typescript: 5.6.3 transitivePeerDependencies: @@ -30651,9 +30779,9 @@ snapshots: unpipe@1.0.0: {} - unplugin@1.14.1(webpack-sources@3.2.3): + unplugin@1.15.0(webpack-sources@3.2.3): dependencies: - acorn: 8.13.0 + acorn: 8.14.0 webpack-virtual-modules: 0.6.2 optionalDependencies: webpack-sources: 3.2.3 @@ -30703,7 +30831,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.5.4 + semver: 7.6.3 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -30858,12 +30986,12 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vite-node@2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite-node@2.1.4(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -30875,12 +31003,12 @@ snapshots: - supports-color - terser - vite-node@2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite-node@2.1.4(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: cac: 6.7.14 debug: 4.3.7 pathe: 1.1.2 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - less @@ -30892,10 +31020,10 @@ snapshots: - supports-color - terser - vite-plugin-dts@3.9.1(@types/node@22.8.1)(rollup@4.24.0)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + vite-plugin-dts@3.9.1(@types/node@22.8.5)(rollup@4.24.3)(typescript@5.6.3)(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)): dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@22.8.1) - '@rollup/pluginutils': 5.1.3(rollup@4.24.0) + '@microsoft/api-extractor': 7.43.0(@types/node@22.8.5) + '@rollup/pluginutils': 5.1.3(rollup@4.24.3) '@vue/language-core': 1.8.27(typescript@5.6.3) debug: 4.3.4(supports-color@8.1.1) kolorist: 1.8.0 @@ -30903,39 +31031,39 @@ snapshots: typescript: 5.6.3 vue-tsc: 1.8.27(typescript@5.6.3) optionalDependencies: - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite@5.4.10(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.24.0 + rollup: 4.24.3 optionalDependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 fsevents: 2.3.3 less: 3.11.1 lightningcss: 1.27.0 - sass: 1.80.4 + sass: 1.80.5 terser: 5.36.0 - vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: esbuild: 0.21.5 postcss: 8.4.47 - rollup: 4.24.0 + rollup: 4.24.3 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.5 fsevents: 2.3.3 less: 3.11.1 lightningcss: 1.27.0 - sass: 1.80.4 + sass: 1.80.5 terser: 5.36.0 - vitest-axe@0.1.0(vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)): + vitest-axe@0.1.0(vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)): dependencies: aria-query: 5.3.2 axe-core: 4.8.4 @@ -30943,19 +31071,20 @@ snapshots: dom-accessibility-api: 0.5.16 lodash-es: 4.17.21 redent: 3.0.0 - vitest: 2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vitest: 2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) - vitest@2.1.3(@types/node@20.17.2)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vitest@2.1.4(@types/node@20.17.4)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 debug: 4.3.7 + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 @@ -30963,11 +31092,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) + vite-node: 2.1.4(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 20.17.2 + '@types/node': 20.17.4 jsdom: 22.1.0 transitivePeerDependencies: - less @@ -30980,17 +31109,18 @@ snapshots: - supports-color - terser - vitest@2.1.3(@types/node@22.8.1)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vitest@2.1.4(@types/node@22.8.5)(jsdom@21.1.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 debug: 4.3.7 + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 @@ -30998,11 +31128,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) + vite-node: 2.1.4(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.5 jsdom: 21.1.2 transitivePeerDependencies: - less @@ -31015,17 +31145,18 @@ snapshots: - supports-color - terser - vitest@2.1.3(@types/node@22.8.1)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0): + vitest@2.1.4(@types/node@22.8.5)(jsdom@22.1.0)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0)) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0)) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 debug: 4.3.7 + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 @@ -31033,11 +31164,11 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@22.8.1)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) + vite-node: 2.1.4(@types/node@22.8.5)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.8.1 + '@types/node': 22.8.5 jsdom: 22.1.0 transitivePeerDependencies: - less @@ -31050,17 +31181,18 @@ snapshots: - supports-color - terser - vitest@2.1.3(jsdom@16.7.0)(less@3.11.1)(sass@1.80.4): + vitest@2.1.4(jsdom@16.7.0)(less@3.11.1)(sass@1.80.5): dependencies: - '@vitest/expect': 2.1.3 - '@vitest/mocker': 2.1.3(@vitest/spy@2.1.3)(vite@5.4.10) - '@vitest/pretty-format': 2.1.3 - '@vitest/runner': 2.1.3 - '@vitest/snapshot': 2.1.3 - '@vitest/spy': 2.1.3 - '@vitest/utils': 2.1.3 + '@vitest/expect': 2.1.4 + '@vitest/mocker': 2.1.4(vite@5.4.10) + '@vitest/pretty-format': 2.1.4 + '@vitest/runner': 2.1.4 + '@vitest/snapshot': 2.1.4 + '@vitest/spy': 2.1.4 + '@vitest/utils': 2.1.4 chai: 5.1.2 debug: 4.3.7 + expect-type: 1.1.0 magic-string: 0.30.12 pathe: 1.1.2 std-env: 3.7.0 @@ -31068,8 +31200,8 @@ snapshots: tinyexec: 0.3.1 tinypool: 1.0.1 tinyrainbow: 1.2.0 - vite: 5.4.10(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) - vite-node: 2.1.3(@types/node@20.17.2)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.4)(terser@5.36.0) + vite: 5.4.10(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) + vite-node: 2.1.4(@types/node@20.17.4)(less@3.11.1)(lightningcss@1.27.0)(sass@1.80.5)(terser@5.36.0) why-is-node-running: 2.3.0 optionalDependencies: jsdom: 16.7.0 @@ -31183,7 +31315,7 @@ snapshots: webpack-bundle-analyzer@4.10.1: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.13.0 + acorn: 8.14.0 acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 @@ -31291,8 +31423,8 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@webassemblyjs/wasm-edit': 1.12.1 '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.13.0 - acorn-import-assertions: 1.9.0(acorn@8.13.0) + acorn: 8.14.0 + acorn-import-assertions: 1.9.0(acorn@8.14.0) browserslist: 4.24.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.17.1 From bfc13ae94e52b8c0d0e35d1e6af9c1f7ddaa8fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Thu, 31 Oct 2024 16:37:11 +0100 Subject: [PATCH 74/98] trigger GitGuardian Security Checks --- packages/testing-volto-searchkit-block/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/testing-volto-searchkit-block/package.json b/packages/testing-volto-searchkit-block/package.json index 2ef93336..5c57746a 100644 --- a/packages/testing-volto-searchkit-block/package.json +++ b/packages/testing-volto-searchkit-block/package.json @@ -1,9 +1,9 @@ { "name": "testing-volto-searchkit-block", "version": "1.0.0", - "description": "fixtures", + "description": "fixtures for testing", "author": "Katja Süss", - "homepage": "https://github.com/ksuess/testing-volto-searchkit-block", + "homepage": "https://github.com/rohberg/volto-searchkit-block", "license": "MIT", "keywords": [ "volto-addon", From c00a32b866ffc04e8e83da9e00598721fdb534a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 1 Nov 2024 10:45:24 +0100 Subject: [PATCH 75/98] :sparkles: add dev backend --- Makefile | 79 +--- backend/.dockerignore | 14 - backend/.editorconfig | 54 --- backend/.flake8 | 22 -- backend/.gitignore | 51 --- backend/CONTRIBUTORS.md | 3 - backend/Dockerfile | 41 --- backend/Dockerfile.acceptance | 43 --- backend/LICENSE.GPL | 339 ------------------ backend/MANIFEST.in | 20 -- backend/Makefile | 117 +----- backend/README.md | 31 -- backend/constraints.txt | 1 - backend/dockerfiles/.env | 1 - .../dockerfiles/backend/Dockerfile.acceptance | 2 +- .../Dockerfile.acceptance.multilingual | 2 +- .../backend/Dockerfile.dev.monolingual | 47 +++ ...erfile.dev => Dockerfile.dev.multilingual} | 12 +- .../backend/requirements-docker.txt | 5 +- ...pose.yml => docker-compose-acceptance.yml} | 2 +- backend/dockerfiles/docker-compose-dev.yml | 146 ++++++++ backend/instance.yaml | 3 - backend/mx.ini | 17 - backend/news/.changelog_template.jinja | 15 - backend/news/.gitkeep | 1 - backend/pyproject.toml | 170 --------- backend/requirements-docker.txt | 1 - backend/requirements.txt | 1 - backend/scripts/create_site.py | 72 ---- backend/tox.ini | 212 ----------- backend/variables.mk | 2 +- 31 files changed, 243 insertions(+), 1283 deletions(-) delete mode 100644 backend/.dockerignore delete mode 100644 backend/.editorconfig delete mode 100644 backend/.flake8 delete mode 100644 backend/.gitignore delete mode 100644 backend/CONTRIBUTORS.md delete mode 100644 backend/Dockerfile delete mode 100644 backend/Dockerfile.acceptance delete mode 100644 backend/LICENSE.GPL delete mode 100644 backend/MANIFEST.in delete mode 100644 backend/constraints.txt create mode 100644 backend/dockerfiles/backend/Dockerfile.dev.monolingual rename backend/dockerfiles/backend/{Dockerfile.dev => Dockerfile.dev.multilingual} (73%) rename backend/dockerfiles/{docker-compose.yml => docker-compose-acceptance.yml} (98%) create mode 100644 backend/dockerfiles/docker-compose-dev.yml delete mode 100644 backend/instance.yaml delete mode 100644 backend/mx.ini delete mode 100644 backend/news/.changelog_template.jinja delete mode 100644 backend/news/.gitkeep delete mode 100644 backend/pyproject.toml delete mode 100644 backend/requirements-docker.txt delete mode 100644 backend/requirements.txt delete mode 100644 backend/scripts/create_site.py delete mode 100644 backend/tox.ini diff --git a/Makefile b/Makefile index 8bb7b3a5..9008f85d 100644 --- a/Makefile +++ b/Makefile @@ -22,72 +22,31 @@ YELLOW=`tput setaf 3` GIT_FOLDER=$(CURRENT_DIR)/.git PRE_COMMIT=pipx run --spec 'pre-commit==3.7.1' pre-commit -PLONE_VERSION=6 -DOCKER_IMAGE=plone/server-dev:${PLONE_VERSION} -# DOCKER_IMAGE_ACCEPTANCE=plone/server-acceptance:${PLONE_VERSION} -# TODO use build image with c.e.plone -DOCKER_IMAGE_ACCEPTANCE=plone/server-acceptance:${PLONE_VERSION} - ADDON_NAME='volto-searchkit-block' + .PHONY: help help: ## Show this help @echo -e "$$(grep -hE '^\S+:.*##' $(MAKEFILE_LIST) | sed -e 's/:.*##\s*/:/' -e 's/^\(.\+\):\(.*\)/\\x1b[36m\1\\x1b[m:\2/' | column -c2 -t -s :)" - ########################################### -# Backend +# dev backend ########################################### -.PHONY: backend-install -backend-install: ## Create virtualenv and install Plone - $(MAKE) -C "./backend/" install - $(MAKE) backend-create-site - -.PHONY: backend-build -backend-build: ## Build Backend - $(MAKE) -C "./backend/" install - -.PHONY: backend-create-site -backend-create-site: ## Create a Plone site with default content - $(MAKE) -C "./backend/" create-site - -.PHONY: backend-update-example-content -backend-update-example-content: ## Export example content inside package - $(MAKE) -C "./backend/" update-example-content - -.PHONY: backend-start -backend-start: ## Start Plone Backend - $(MAKE) -C "./backend/" start - -.PHONY: backend-test -backend-test: ## Test backend codebase - @echo "Test backend" - $(MAKE) -C "./backend/" test - -# .PHONY: install -# install: ## Install -# @echo "Install Backend & Frontend" -# if [ -d $(GIT_FOLDER) ]; then $(PRE_COMMIT) install; else echo "$(RED) Not installing pre-commit$(RESET)";fi -# $(MAKE) backend-install -# $(MAKE) frontend-install - -# .PHONY: start -# start: ## Start -# @echo "Starting application" -# $(MAKE) backend-start -# $(MAKE) frontend-start - -# .PHONY: clean -# clean: ## Clean installation -# @echo "Clean installation" -# $(MAKE) -C "./backend/" clean -# $(MAKE) -C "./frontend/" clean - -# .PHONY: check -# check: ## Lint and Format codebase -# @echo "Lint and Format codebase" -# $(PRE_COMMIT) run -a + +.PHONY: dev-backend-start-monolingual +dev-backend-start-monolingual: ## Start backend dev server + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=admin + export PLONE_SITE_PREFIX_PATH=Plone + $(MAKE) -C "./backend/" dev-backend-start-monolingual + +.PHONY: dev-backend-start-multilingual +dev-backend-start-multilingual: ## Start backend dev server + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=admin + export PLONE_SITE_PREFIX_PATH=Plone + $(MAKE) -C "./backend/" dev-backend-start-multilingual ########################################### @@ -157,11 +116,6 @@ ci-test: ## Run unit tests in CI VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests -# .PHONY: backend-docker-start -# backend-docker-start: ## Starts a Docker-based backend for development -# @echo "$(GREEN)==> Start Docker-based Plone Backend$(RESET)" -# docker run -it --rm --name=backend -p 8080:8080 -e SITE=Plone $(DOCKER_IMAGE) - ## Storybook .PHONY: storybook-start storybook-start: ## Start Storybook server on port 6006 @@ -174,6 +128,7 @@ storybook-build: ## Build Storybook mkdir -p $(CURRENT_DIR)/.storybook-build pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build + ########################################### # Acceptance monolingual ########################################### diff --git a/backend/.dockerignore b/backend/.dockerignore deleted file mode 100644 index e9e94ffc..00000000 --- a/backend/.dockerignore +++ /dev/null @@ -1,14 +0,0 @@ -.editorconfig -.gitattributes -bin -Dockerfile -Dockerfile.acceptance -include -instance -instance.yaml -lib -lib64 -Makefile -pyvenv.cfg -var -.venv diff --git a/backend/.editorconfig b/backend/.editorconfig deleted file mode 100644 index 8ae05aaa..00000000 --- a/backend/.editorconfig +++ /dev/null @@ -1,54 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -# -# EditorConfig Configuration file, for more details see: -# http://EditorConfig.org -# EditorConfig is a convention description, that could be interpreted -# by multiple editors to enforce common coding conventions for specific -# file types - -# top-most EditorConfig file: -# Will ignore other EditorConfig files in Home directory or upper tree level. -root = true - - -[*] # For All Files -# Unix-style newlines with a newline ending every file -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true -# Set default charset -charset = utf-8 -# Indent style default -indent_style = space -# Max Line Length - a hard line wrap, should be disabled -max_line_length = off - -[*.{py,cfg,ini}] -# 4 space indentation -indent_size = 4 - -[*.{yml,zpt,pt,dtml,zcml}] -# 2 space indentation -indent_size = 2 - -[*.{json,jsonl,js,jsx,ts,tsx,css,less,scss,html}] # Frontend development -# 2 space indentation -indent_size = 2 -max_line_length = 80 - -[{Makefile,.gitmodules}] -# Tab indentation (no size specified, but view as 4 spaces) -indent_style = tab -indent_size = unset -tab_width = unset - - -## -# Add extra configuration options in .meta.toml: -# [editorconfig] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/.flake8 b/backend/.flake8 deleted file mode 100644 index 7ef4f64d..00000000 --- a/backend/.flake8 +++ /dev/null @@ -1,22 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -[flake8] -doctests = 1 -ignore = - # black takes care of line length - E501, - # black takes care of where to break lines - W503, - # black takes care of spaces within slicing (list[:]) - E203, - # black takes care of spaces after commas - E231, - -## -# Add extra configuration options in .meta.toml: -# [flake8] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/.gitignore b/backend/.gitignore deleted file mode 100644 index 6a1e51f3..00000000 --- a/backend/.gitignore +++ /dev/null @@ -1,51 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -# python related -*.egg-info -*.pyc -*.pyo - -# tools related -build/ -.coverage -coverage.xml -dist/ -docs/_build -__pycache__/ -.tox -.vscode/ -node_modules/ - -# venv / buildout related -bin/ -develop-eggs/ -eggs/ -.eggs/ -etc/ -.installed.cfg -include/ -lib/ -lib64 -.mr.developer.cfg -parts/ -pyvenv.cfg -var/ - -# mxdev -/instance/ -/.make-sentinels/ -/*-mxdev.txt -/reports/ -/sources/ -/venv/ -.installed.txt -.lock - -## -# Add extra configuration options in .meta.toml: -# [gitignore] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/CONTRIBUTORS.md b/backend/CONTRIBUTORS.md deleted file mode 100644 index 5a1aabd6..00000000 --- a/backend/CONTRIBUTORS.md +++ /dev/null @@ -1,3 +0,0 @@ -# Contributors - -- Plone Foundation [collective@plone.org] diff --git a/backend/Dockerfile b/backend/Dockerfile deleted file mode 100644 index 99da983f..00000000 --- a/backend/Dockerfile +++ /dev/null @@ -1,41 +0,0 @@ -# syntax=docker/dockerfile:1 -ARG PLONE_VERSION=6.0.13 -FROM plone/server-builder:${PLONE_VERSION} as builder - -WORKDIR /app - - -# Add local code -COPY scripts/ scripts/ -COPY . src - -# Install local requirements and pre-compile mo files -RUN < - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/backend/MANIFEST.in b/backend/MANIFEST.in deleted file mode 100644 index 45aae324..00000000 --- a/backend/MANIFEST.in +++ /dev/null @@ -1,20 +0,0 @@ -graft src/searchkit -graft docs -graft news -graft tests -graft scripts -include *.acceptance -include .coveragerc -include .dockerignore -include .editorconfig -include *.txt -include *.yml -include *.md -exclude *-mxdev.txt -exclude Dockerfile -exclude mx.ini -exclude Makefile -recursive-exclude frontend * -exclude instance.yaml -global-exclude *.pyc -global-exclude .DS_Store diff --git a/backend/Makefile b/backend/Makefile index 8b025f44..7419a7cc 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -39,7 +39,6 @@ endif PLONE_SITE_ID=Plone BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) -PLONE_VERSION=$(shell cat $(BACKEND_FOLDER)/version.txt) EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/searchkit/block/setuphandlers/examplecontent GIT_FOLDER=$(BACKEND_FOLDER)/.git @@ -47,16 +46,19 @@ VENV_FOLDER=$(BACKEND_FOLDER)/.venv BIN_FOLDER=$(VENV_FOLDER)/bin -BACKEND_ADDONS='collective.elastic.plone ${KGS} $(TESTING_ADDONS)' -DEV_COMPOSE=dockerfiles/docker-compose.yml -ACCEPTANCE_COMPOSE=dockerfiles/docker-compose.yml -CMD_ENVS=CURRENT_DIR=${CURRENT_DIR} PLONE_VERSION=${PLONE_VERSION} BACKEND_ADDONS=${BACKEND_ADDONS} -CMD=${CMD_ENVS} docker compose -DOCKER_COMPOSE=${CMD} -p ${PROJECT_NAME} -f ${DEV_COMPOSE} -ACCEPTANCE_MONOLINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance-monolingual -f ${ACCEPTANCE_COMPOSE} -ACCEPTANCE_MULTILINGUAL=${CMD} -p ${PROJECT_NAME}-acceptance-multilingual -f ${ACCEPTANCE_COMPOSE} +ACCEPTANCE_BACKEND_ADDONS='collective.elastic.plone ${KGS} $(TESTING_ADDONS)' +ACCEPTANCE_COMPOSE_FILE=dockerfiles/docker-compose-acceptance.yml +CMD_ENVS=CURRENT_DIR=${CURRENT_DIR} PLONE_VERSION=${PLONE_VERSION} +ACCEPTANCE_CMD=${CMD_ENVS} BACKEND_ADDONS=${ACCEPTANCE_BACKEND_ADDONS} docker compose +ACCEPTANCE_COMPOSE_MONOLINGUAL=${ACCEPTANCE_CMD} -p ${PROJECT_NAME}-acceptance-monolingual -f ${ACCEPTANCE_COMPOSE_FILE} +ACCEPTANCE_COMPOSE_MULTILINGUAL=${ACCEPTANCE_CMD} -p ${PROJECT_NAME}-acceptance-multilingual -f ${ACCEPTANCE_COMPOSE_FILE} + +DEV_BACKEND_ADDONS='collective.elastic.plone ${KGS}' +DEV_COMPOSE_FILE=dockerfiles/docker-compose-dev.yml +DEV_CMD=${CMD_ENVS} BACKEND_ADDONS=${DEV_BACKEND_ADDONS} docker compose +DEV_COMPOSE_MONOLINGUAL=${DEV_CMD} -p ${PROJECT_NAME}-dev-monolingual -f ${DEV_COMPOSE_FILE} +DEV_COMPOSE_MULTILINGUAL=${DEV_CMD} -p ${PROJECT_NAME}-dev-multilingual -f ${DEV_COMPOSE_FILE} -all: build # Add the following 'help' target to your Makefile # And add help text after each target name starting with '\#\#' @@ -64,101 +66,18 @@ all: build help: ## This help message @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -# $(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: -# @echo "$(GREEN)==> Setup Virtual Env$(RESET)" -# $(PYTHON) -m venv $(VENV_FOLDER) -# $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" -# if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi - -# instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration -# @echo "$(GREEN)==> Create instance configuration$(RESET)" -# $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance - -# .PHONY: config -# config: instance/etc/zope.ini - -# .PHONY: build-dev -# build-dev: config ## Install Plone packages -# @echo "$(GREEN)==> Setup Build$(RESET)" -# $(BIN_FOLDER)/mxdev -c mx.ini -# $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt - -# .PHONY: install -# install: build-dev ## Install Plone - -# .PHONY: build -# build: build-dev ## Install Plone - -# .PHONY: clean -# clean: ## Clean environment -# @echo "$(RED)==> Cleaning environment and build$(RESET)" -# rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache - -# .PHONY: start -# start: ## Start a Plone instance on localhost:8080 -# PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini - -# .PHONY: console -# console: instance/etc/zope.ini ## Start a console into a Plone instance -# PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf - -# .PHONY: create-site -# create-site: instance/etc/zope.ini ## Create a new site from scratch -# PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py - -# # Example Content -# .PHONY: update-example-content -# update-example-content: $(BIN_FOLDER)/tox ## Export example content inside package -# @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER) $(RESET)" -# if [ -d $(EXAMPLE_CONTENT_FOLDER)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER)/* ;fi -# $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID) $(EXAMPLE_CONTENT_FOLDER) - - -# .PHONY: check -# check: $(BIN_FOLDER)/tox ## Check and fix code base according to Plone standards -# @echo "$(GREEN)==> Format codebase$(RESET)" -# $(BIN_FOLDER)/tox -e lint - -# # i18n -# $(BIN_FOLDER)/i18ndude: $(BIN_FOLDER)/pip -# @echo "$(GREEN)==> Install translation tools$(RESET)" -# $(BIN_FOLDER)/uv pip install i18ndude - -# .PHONY: i18n -# i18n: $(BIN_FOLDER)/i18ndude ## Update locales -# @echo "$(GREEN)==> Updating locales$(RESET)" -# $(BIN_FOLDER)/update_locale - -# # Tests -# .PHONY: test -# test: $(BIN_FOLDER)/tox ## run tests -# $(BIN_FOLDER)/tox -e test - -# .PHONY: test-coverage -# test-coverage: $(BIN_FOLDER)/tox ## run tests with coverage -# $(BIN_FOLDER)/tox -e coverage - -# # Build Docker images -# .PHONY: build-image -# build-image: ## Build Docker Images -# @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend:$(IMAGE_TAG) -f Dockerfile --build-arg PLONE_VERSION=$(PLONE_VERSION) - -# TODO development backend (and OpenSearch and ingest containers) +.PHONY: dev-backend-start-monolingual +dev-backend-start-monolingual: ## Start dev containers (backend and OpenSearch) + ${DEV_COMPOSE_MONOLINGUAL} --profile monolingual up -d --force-recreate +.PHONY: dev-backend-start-multilingual +dev-backend-start-multilingual: ## Start dev containers (backend and OpenSearch) + ${DEV_COMPOSE_MULTILINGUAL} --profile multilingual up -d --force-recreate # ######################################################################## # Acceptance monolingual # ######################################################################## -# # Acceptance tests -# .PHONY: acceptance-backend-start -# acceptance-backend-start: ## Start backend acceptance server -# ZSERVER_HOST=0.0.0.0 ZSERVER_PORT=55001 LISTEN_PORT=55001 APPLY_PROFILES="collective.elastic.plone:default" CONFIGURE_PACKAGES="plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone" $(BIN_FOLDER)/robot-server plone.app.robotframework.testing.VOLTO_ROBOT_TESTING - -# .PHONY: acceptance-image-build -# acceptance-image-build: ## Build Docker Images -# @DOCKER_BUILDKIT=1 docker build . -t $(IMAGE_NAME_PREFIX)-backend-acceptance:$(IMAGE_TAG) -f Dockerfile.acceptance --build-arg PLONE_VERSION=$(PLONE_VERSION) - .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start acceptance containers (backend and OpenSearch) ${ACCEPTANCE_MONOLINGUAL} --profile monolingual up -d --force-recreate diff --git a/backend/README.md b/backend/README.md index 88351384..124d68b0 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,33 +1,2 @@ # backend with collective.elastic.plone and ElasticSearch -A new project using Plone 6. - -## Features - -TODO: List our awesome features - -## Installation - -Install searchkit.block with `pip`: - -```shell -pip install searchkit.block -``` -And to create the Plone site: - -```shell -make create_site -``` - -## Contribute - -- [Issue Tracker](https://github.com/rohberg/searchkit.block/issues) -- [Source Code](https://github.com/rohberg/searchkit.block/) - -## License - -The project is licensed under GPLv2. - -## Credits and Acknowledgements 🙏 - -Crafted with care by **This was generated by [cookiecutter-plone](https://github.com/plone/cookieplone-templates/backend_addon) on 2024-10-26 11:06:16**. A special thanks to all contributors and supporters! diff --git a/backend/constraints.txt b/backend/constraints.txt deleted file mode 100644 index 3bb2e326..00000000 --- a/backend/constraints.txt +++ /dev/null @@ -1 +0,0 @@ --c https://dist.plone.org/release/6.0.13/constraints.txt diff --git a/backend/dockerfiles/.env b/backend/dockerfiles/.env index dd00a54d..e2cc5dfa 100644 --- a/backend/dockerfiles/.env +++ b/backend/dockerfiles/.env @@ -7,7 +7,6 @@ export INDEX_LOGIN=admin export CELERY_BROKER=redis://redis:6379/0 export CELERY_LOGLEVEL=info -export PLONE_SERVICE=http://backend-acceptance:55001 export PLONE_SITE_PREFIX_PATH=plone export PLONE_USER=admin diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance b/backend/dockerfiles/backend/Dockerfile.acceptance index 8a15b7bb..6fec5d10 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance +++ b/backend/dockerfiles/backend/Dockerfile.acceptance @@ -6,7 +6,7 @@ ARG PLONE_VERSION=6.0 ARG SEED=7 -FROM plone/server-builder:${PLONE_VERSION} as builder +FROM plone/server-builder:${PLONE_VERSION} AS builder WORKDIR /app diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual index 2c870933..fa42f5a9 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual +++ b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual @@ -6,7 +6,7 @@ ARG PLONE_VERSION=6.0 ARG SEED=6 -FROM plone/server-builder:${PLONE_VERSION} as builder +FROM plone/server-builder:${PLONE_VERSION} AS builder WORKDIR /app diff --git a/backend/dockerfiles/backend/Dockerfile.dev.monolingual b/backend/dockerfiles/backend/Dockerfile.dev.monolingual new file mode 100644 index 00000000..48a7eba9 --- /dev/null +++ b/backend/dockerfiles/backend/Dockerfile.dev.monolingual @@ -0,0 +1,47 @@ +# syntax=docker/dockerfile:1 +# The language is set here: +# PROFILES … rohberg.volto:monolingual +ARG SEED=1000 +ARG PLONE_VERSION=6.0 +FROM plone/plone-backend:${PLONE_VERSION} + + +LABEL maintainer="Plone Foundation " \ + org.label-schema.name="searchkit-backend" \ + org.label-schema.description="searchkit backend image." \ + org.label-schema.vendor="Rohberg" + +# Add local code +COPY ./backend . + +# # Install local requirements and fix permissions +# RUN <=68.2"] - -[tool.towncrier] -directory = "news/" -filename = "CHANGES.md" -start_string = "\n" -title_format = "## {version} ({project_date})" -template = "news/.changelog_template.jinja" -underlines = ["", "", ""] - -[[tool.towncrier.type]] -directory = "breaking" -name = "Breaking changes:" -showcontent = true - -[[tool.towncrier.type]] -directory = "feature" -name = "New features:" -showcontent = true - -[[tool.towncrier.type]] -directory = "bugfix" -name = "Bug fixes:" -showcontent = true - -[[tool.towncrier.type]] -directory = "internal" -name = "Internal:" -showcontent = true - -[[tool.towncrier.type]] -directory = "documentation" -name = "Documentation:" -showcontent = true - -[[tool.towncrier.type]] -directory = "tests" -name = "Tests" -showcontent = true - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# towncrier_extra_lines = """ -# extra_configuration -# """ -## - -[tool.isort] -profile = "plone" - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# isort_extra_lines = """ -# extra_configuration -# """ -## - -[tool.black] -target-version = ["py38"] - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# black_extra_lines = """ -# extra_configuration -# """ -## - -[tool.codespell] -ignore-words-list = "discreet,vew" -skip = "*.po,*.min.js" -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# codespell_ignores = "foo,bar" -# codespell_skip = "*.po,*.map,package-lock.json" -## - -[tool.dependencychecker] -Zope = [ - # Zope own provided namespaces - 'App', 'OFS', 'Products.Five', 'Products.OFSP', 'Products.PageTemplates', - 'Products.SiteAccess', 'Shared', 'Testing', 'ZPublisher', 'ZTUtils', - 'Zope2', 'webdav', 'zmi', - # ExtensionClass own provided namespaces - 'ExtensionClass', 'ComputedAttribute', 'MethodObject', - # Zope dependencies - 'AccessControl', 'Acquisition', 'AuthEncoding', 'beautifulsoup4', 'BTrees', - 'cffi', 'Chameleon', 'DateTime', 'DocumentTemplate', - 'MultiMapping', 'multipart', 'PasteDeploy', 'Persistence', 'persistent', - 'pycparser', 'python-gettext', 'pytz', 'RestrictedPython', 'roman', - 'soupsieve', 'transaction', 'waitress', 'WebOb', 'WebTest', 'WSGIProxy2', - 'z3c.pt', 'zc.lockfile', 'ZConfig', 'zExceptions', 'ZODB', 'zodbpickle', - 'zope.annotation', 'zope.browser', 'zope.browsermenu', 'zope.browserpage', - 'zope.browserresource', 'zope.cachedescriptors', 'zope.component', - 'zope.configuration', 'zope.container', 'zope.contentprovider', - 'zope.contenttype', 'zope.datetime', 'zope.deferredimport', - 'zope.deprecation', 'zope.dottedname', 'zope.event', 'zope.exceptions', - 'zope.filerepresentation', 'zope.globalrequest', 'zope.hookable', - 'zope.i18n', 'zope.i18nmessageid', 'zope.interface', 'zope.lifecycleevent', - 'zope.location', 'zope.pagetemplate', 'zope.processlifetime', 'zope.proxy', - 'zope.ptresource', 'zope.publisher', 'zope.schema', 'zope.security', - 'zope.sequencesort', 'zope.site', 'zope.size', 'zope.structuredtext', - 'zope.tal', 'zope.tales', 'zope.testbrowser', 'zope.testing', - 'zope.traversing', 'zope.viewlet' -] -'Products.CMFCore' = [ - 'docutils', 'five.localsitemanager', 'Missing', 'Products.BTreeFolder2', - 'Products.GenericSetup', 'Products.MailHost', 'Products.PythonScripts', - 'Products.StandardCacheManagers', 'Products.ZCatalog', 'Record', - 'zope.sendmail', 'Zope' -] -'plone.base' = [ - 'plone.batching', 'plone.registry', 'plone.schema','plone.z3cform', - 'Products.CMFCore', 'Products.CMFDynamicViewFTI', -] -python-dateutil = ['dateutil'] -pytest-plone = ['pytest', 'plone.testing', 'plone.app.testing'] -ignore-packages = ['plone.app.iterate', 'plone.app.upgrade', 'plone.volto', 'zestreleaser.towncrier', 'zest.releaser', 'pytest-cov'] - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# dependencies_ignores = "['zestreleaser.towncrier']" -# dependencies_mappings = [ -# "gitpython = ['git']", -# "pygithub = ['github']", -# ] -## - -[tool.check-manifest] -ignore = [ - ".editorconfig", - ".flake8", - ".meta.toml", - ".pre-commit-config.yaml", - "dependabot.yml", - "mx.ini", - "tox.ini", - -] - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# check_manifest_ignores = """ -# "*.map.js", -# "*.pyc", -# """ -# check_manifest_extra_lines = """ -# ignore-bad-ideas = [ -# "some/test/file/PKG-INFO", -# ] -# """ -## - - -## -# Add extra configuration options in .meta.toml: -# [pyproject] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/requirements-docker.txt b/backend/requirements-docker.txt deleted file mode 100644 index da443200..00000000 --- a/backend/requirements-docker.txt +++ /dev/null @@ -1 +0,0 @@ --c constraints.txt diff --git a/backend/requirements.txt b/backend/requirements.txt deleted file mode 100644 index da443200..00000000 --- a/backend/requirements.txt +++ /dev/null @@ -1 +0,0 @@ --c constraints.txt diff --git a/backend/scripts/create_site.py b/backend/scripts/create_site.py deleted file mode 100644 index 4dceb2d2..00000000 --- a/backend/scripts/create_site.py +++ /dev/null @@ -1,72 +0,0 @@ -from AccessControl.SecurityManagement import newSecurityManager -from Products.CMFPlone.factory import _DEFAULT_PROFILE -from Products.CMFPlone.factory import addPloneSite -from Products.GenericSetup.tool import SetupTool -from collective.elastic.plone.interfaces import ICollectiveEsPloneLayer -from Testing.makerequest import makerequest -from zope.interface import directlyProvidedBy -from zope.interface import directlyProvides - -import os -import transaction - - -truthy = frozenset(("t", "true", "y", "yes", "on", "1")) - - -def asbool(s): - """Return the boolean value ``True`` if the case-lowered value of string - input ``s`` is a :term:`truthy string`. If ``s`` is already one of the - boolean values ``True`` or ``False``, return it.""" - if s is None: - return False - if isinstance(s, bool): - return s - s = str(s).strip() - return s.lower() in truthy - - -DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) -EXAMPLE_CONTENT = asbool( - os.getenv("EXAMPLE_CONTENT", "1") -) # Create example content by default - -app = makerequest(globals()["app"]) - -request = app.REQUEST - -ifaces = [ICollectiveEsPloneLayer] + list(directlyProvidedBy(request)) - -directlyProvides(request, *ifaces) - -admin = app.acl_users.getUserById("admin") -admin = admin.__of__(app.acl_users) -newSecurityManager(None, admin) - -site_id = "Plone" -payload = { - "title": "Searchkit Block", - "profile_id": _DEFAULT_PROFILE, - "extension_ids": [ - "collective.elastic.plone:default", - ], - "setup_content": False, - "default_language": "en", - "portal_timezone": "UTC", -} - -if site_id in app.objectIds() and DELETE_EXISTING: - app.manage_delObjects([site_id]) - transaction.commit() - app._p_jar.sync() - -if site_id not in app.objectIds(): - site = addPloneSite(app, site_id, **payload) - transaction.commit() - if EXAMPLE_CONTENT: - portal_setup: SetupTool = site.portal_setup - portal_setup.runAllImportStepsFromProfile( - "collective.elastic.plone:initial" - ) - transaction.commit() - app._p_jar.sync() diff --git a/backend/tox.ini b/backend/tox.ini deleted file mode 100644 index 842da822..00000000 --- a/backend/tox.ini +++ /dev/null @@ -1,212 +0,0 @@ -# Generated from: -# https://github.com/plone/meta/tree/master/config/default -# See the inline comments on how to expand/tweak this configuration file -[tox] -# We need 4.4.0 for constrain_package_deps. -min_version = 4.4.0 -envlist = - lint - test - dependencies - - -## -# Add extra configuration options in .meta.toml: -# [tox] -# envlist_lines = """ -# my_other_environment -# """ -# config_lines = """ -# my_extra_top_level_tox_configuration_lines -# """ -## - -[testenv] -skip_install = true -allowlist_externals = - echo - false -# Make sure typos like `tox -e formaat` are caught instead of silently doing nothing. -# See https://github.com/tox-dev/tox/issues/2858. -commands = - echo "Unrecognized environment name {envname}" - false - -[testenv:init] -description = Prepare environment -skip_install = true -deps = - mxdev -commands = - mxdev -c mx.ini - echo "Initial setup for mxdev" - - -[testenv:format] -description = automatically reformat code -skip_install = true -deps = - pre-commit -commands = - pre-commit run -a pyupgrade - pre-commit run -a isort - pre-commit run -a black - pre-commit run -a zpretty - -[testenv:lint] -description = run linters that will help improve the code style -skip_install = true -deps = - pre-commit -commands = - # Run pre-commit without chdir to the root of the git repository - python -c "from pre_commit import main; main._adjust_args_and_chdir = lambda args: None; raise SystemExit(main.main())" run -a - -[testenv:dependencies] -description = check if the package defines all its dependencies -skip_install = true -deps = - build - z3c.dependencychecker==2.11 -commands = - python -m build --sdist --no-isolation - dependencychecker - -[testenv:dependencies-graph] -description = generate a graph out of the dependencies of the package -skip_install = false -allowlist_externals = - sh -deps = - pipdeptree==2.5.1 - graphviz # optional dependency of pipdeptree -commands = - sh -c 'pipdeptree --exclude setuptools,wheel,pipdeptree,zope.interface,zope.component --graph-output svg > dependencies.svg' - -[testenv:test] -description = run the distribution tests -use_develop = true -skip_install = false -constrain_package_deps = true -set_env = - ROBOT_BROWSER=headlesschrome - -## -# Specify extra test environment variables in .meta.toml: -# [tox] -# test_environment_variables = """ -# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ -# """ -# -# Set constrain_package_deps .meta.toml: -# [tox] -# constrain_package_deps = false -## -deps = - pytest-plone - pytest - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -## -# Specify additional deps in .meta.toml: -# [tox] -# test_deps_additional = """ -# -esources/plonegovbr.portal_base[test] -# """ -# -# Specify a custom constraints file in .meta.toml: -# [tox] -# constraints_file = "https://my-server.com/constraints.txt" -## -commands = - pytest --disable-warnings {posargs} {toxinidir}/tests -extras = - test - - -[testenv:coverage] -description = get a test coverage report -use_develop = true -skip_install = false -constrain_package_deps = true -set_env = - ROBOT_BROWSER=headlesschrome - -## -# Specify extra test environment variables in .meta.toml: -# [tox] -# test_environment_variables = """ -# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ -# """ -# -# Set constrain_package_deps .meta.toml: -# [tox] -# constrain_package_deps = "false" -## -deps = - pytest-plone - pytest - coverage - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -commands = - coverage run --source searchkit.block -m pytest {posargs} --disable-warnings {toxinidir}/tests - coverage report -m --format markdown - coverage xml -extras = - test - - -[testenv:release-check] -description = ensure that the distribution is ready to release -skip_install = true -deps = - twine - build - towncrier - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -commands = - # fake version to not have to install the package - # we build the change log as news entries might break - # the README that is displayed on PyPI - towncrier build --version=100.0.0 --yes - python -m build --sdist --no-isolation - twine check dist/* - -[testenv:circular] -description = ensure there are no cyclic dependencies -use_develop = true -skip_install = false -set_env = - -## -# Specify extra test environment variables in .meta.toml: -# [tox] -# test_environment_variables = """ -# PIP_EXTRA_INDEX_URL=https://my-pypi.my-server.com/ -# """ -## -allowlist_externals = - sh -deps = - pipdeptree - pipforester - -c https://dist.plone.org/release/6.0-dev/constraints.txt - -commands = - # Generate the full dependency tree - sh -c 'pipdeptree -j > forest.json' - # Generate a DOT graph with the circular dependencies, if any - pipforester -i forest.json -o forest.dot --cycles - # Report if there are any circular dependencies, i.e. error if there are any - pipforester -i forest.json --check-cycles -o /dev/null - - -## -# Add extra configuration options in .meta.toml: -# [tox] -# extra_lines = """ -# _your own configuration lines_ -# """ -## diff --git a/backend/variables.mk b/backend/variables.mk index 73df2ab1..d3536111 100644 --- a/backend/variables.mk +++ b/backend/variables.mk @@ -1,4 +1,4 @@ -PLONE_VERSION=6 +PLONE_VERSION=6.0.13 PROJECT_NAME='volto-searchkit-block' # KGS=plone.restapi==9.4.2 plone.volto==4.3.0 plone.rest==4.1.3 KGS= From 252d3d2fe45788613e66242a7ce97c8ce53ed89d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 1 Nov 2024 12:29:06 +0100 Subject: [PATCH 76/98] Update README --- README.md | 88 +++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 56 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 47746208..52a3d2dd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Searchkit Block (volto-searchkit-block) +# Searchkit Block (@rohberg/volto-searchkit-block) Searching with OpenSearch @@ -10,7 +10,25 @@ Searching with OpenSearch ## Features - + + +Search block with highly overridable components for searching, filtering and displaying search results. Sometimes also called faceted navigation. + +As this search is addressing `OpenSearch/ElasticSearch` with text analysis, the search does understand inflection of words, tolerates typos by fuzzy searching, allows exact search and wildcard search. +See [User documentation](#user-documentation) on how to search. + +Matched phrases are shown with highlighted matches. + +Additional metadata per result item can be configured easily. +Meta data values are clickable to find related content. + +The block is prepared for Matomo analytics. + +![Search @rohberg/volto-searchkit-block](public/search.png) ## Installation @@ -67,12 +85,6 @@ Add `volto-searchkit-block` to your `volto.config.js`: const addons = ['volto-searchkit-block']; ``` -If this package provides a Volto theme, and you want to activate it, then add the following to your `volto.config.js`: - -```javascript -const theme = 'volto-searchkit-block'; -``` - ## Test installation Visit http://localhost:3000/ in a browser, login, and check the awesome new features. @@ -96,31 +108,41 @@ For this reason, it only works with pnpm and Volto 18 (currently in alpha). Run `make help` to list the available commands. ```text -help Show this help -install Installs the add-on in a development environment -start Starts Volto, allowing reloading of the add-on during development -build Build a production bundle for distribution of the project with the add-on -i18n Sync i18n -ci-i18n Check if i18n is not synced -format Format codebase -lint Lint, or catch and remove problems, in code base -release Release the add-on on npmjs.org -release-dry-run Dry-run the release of the add-on on npmjs.org -test Run unit tests -ci-test Run unit tests in CI -backend-docker-start Starts a Docker-based backend for development -storybook-start Start Storybook server on port 6006 -storybook-build Build Storybook -acceptance-frontend-dev-start Start acceptance frontend in development mode -acceptance-frontend-prod-start Start acceptance frontend in production mode -acceptance-backend-start Start backend acceptance server -ci-acceptance-backend-start Start backend acceptance server in headless mode for CI -acceptance-test Start Cypress in interactive mode -ci-acceptance-test Run cypress tests in headless mode for CI +help Show this help +dev-backend-start-monolingual Start backend dev server +dev-backend-start-multilingual Start backend dev server +install Installs the add-on in a development environment +start Starts Volto, allowing reloading of the add-on during development +build Build a production bundle for distribution of the project with the add-on +build-deps Build dependencies +i18n Sync i18n +ci-i18n Check if i18n is not synced +format Format codebase +lint Lint, or catch and remove problems, in code base +release Release the add-on on npmjs.org +release-dry-run Dry-run the release of the add-on on npmjs.org +test Run unit tests +ci-test Run unit tests in CI +storybook-start Start Storybook server on port 6006 +storybook-build Build Storybook +acceptance-frontend-dev-start-monolingual Start acceptance frontend in development mode +acceptance-frontend-prod-start-monolingual Start acceptance frontend in production mode +acceptance-backend-start-monolingual Start backend acceptance server +ci-acceptance-backend-start-monolingual Start backend acceptance server in headless mode for CI +acceptance-test-monolingual Start Cypress in interactive mode +ci-acceptance-test-monolingual Run cypress tests in headless mode for CI +acceptance-frontend-dev-start-multilingual Start acceptance frontend in development mode +acceptance-frontend-prod-start-multilingual Start acceptance frontend in production mode +acceptance-backend-start-multilingual Start backend acceptance server +ci-acceptance-backend-start-multilingual Start backend acceptance server in headless mode for CI +acceptance-test-multilingual Start Cypress in interactive mode +ci-acceptance-test-multilingual Run cypress tests in headless mode for CI ``` ### Development environment set up +TODO Development environment set up. backend, frontend + Install package requirements. ```shell @@ -180,21 +202,23 @@ Run each of these steps in separate terminal sessions. In the first session, start the frontend in development mode. ```shell -make acceptance-frontend-dev-start +make acceptance-frontend-dev-start-monolingual ``` In the second session, start the backend acceptance server. ```shell -make acceptance-backend-start +make acceptance-backend-start-monolingual ``` In the third session, start the Cypress interactive test runner. ```shell -make acceptance-test +make acceptance-test-monolingual ``` +Appropriate make commands for **multilingual** Cypress tests are available. + ## License The project is licensed under the MIT license. From ed5837056f0928674be582336a59be54b1ec285e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 1 Nov 2024 12:29:20 +0100 Subject: [PATCH 77/98] Volto 18 final --- mrs.developer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mrs.developer.json b/mrs.developer.json index 72a61fca..17fb25d9 100644 --- a/mrs.developer.json +++ b/mrs.developer.json @@ -4,6 +4,6 @@ "package": "@plone/volto", "url": "git@github.com:plone/volto.git", "https": "https://github.com/plone/volto.git", - "tag": "18.0.0-alpha.48" + "tag": "18.0.0" } } From 738692cce578d40b9572de0792b6c807d6af0d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 2 Nov 2024 18:55:23 +0100 Subject: [PATCH 78/98] backend dev server monolingual and mutlilingual --- .gitignore | 4 +- backend/README.md | 4 + .../backend/Dockerfile.dev.monolingual | 11 +- .../backend/Dockerfile.dev.multilingual | 14 +- backend/dockerfiles/backend/Makefile | 90 ++++ .../dockerfiles/backend/constraints-mxdev.txt | 436 ++++++++++++++++++ backend/dockerfiles/backend/constraints.txt | 1 + backend/dockerfiles/backend/instance.yaml | 3 + backend/dockerfiles/backend/mx.ini | 18 + .../backend/requirements-docker.txt | 2 +- .../backend/requirements-mxdev.txt | 7 + backend/dockerfiles/backend/requirements.txt | 1 + ...create_site_cookieplone_example_content.py | 70 +++ .../README.md | 3 + .../setup.py | 73 +++ .../PKG-INFO | 47 ++ .../SOURCES.txt | 12 + .../dependency_links.txt | 1 + .../entry_points.txt | 2 + .../namespace_packages.txt | 1 + .../not-zip-safe | 1 + .../requires.txt | 14 + .../top_level.txt | 1 + .../src/rohberg/__init__.py | 1 + .../__init__.py | 7 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 519 bytes .../configure.zcml | 11 + .../dependencies.zcml | 7 + .../interfaces.py | 7 + .../profiles.zcml | 49 ++ .../profiles/default/browserlayer.xml | 6 + .../profiles/default/catalog.xml | 13 + .../profiles/default/controlpanel.xml | 4 + .../profiles/default/diff_tool.xml | 6 + .../profiles/default/metadata.xml | 7 + .../profiles/default/registry/.gitkeep | 0 .../profiles/default/repositorytool.xml | 6 + .../profiles/default/rolemap.xml | 6 + .../profiles/default/theme.xml | 5 + .../profiles/default/types.xml | 10 + .../profiles/default/types/.gitkeep | 0 .../profiles/monolingual/metadata.xml | 6 + .../profiles/monolingual/registry.xml | 18 + .../profiles/multilingual/metadata.xml | 7 + .../profiles/multilingual/registry.xml | 19 + .../profiles/uninstall/browserlayer.xml | 6 + .../setuphandlers/__init__.py | 21 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 942 bytes 48 files changed, 1026 insertions(+), 12 deletions(-) create mode 100644 backend/dockerfiles/backend/Makefile create mode 100644 backend/dockerfiles/backend/constraints-mxdev.txt create mode 100644 backend/dockerfiles/backend/constraints.txt create mode 100644 backend/dockerfiles/backend/instance.yaml create mode 100644 backend/dockerfiles/backend/mx.ini create mode 100644 backend/dockerfiles/backend/requirements-mxdev.txt create mode 100644 backend/dockerfiles/backend/requirements.txt create mode 100644 backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py create mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc diff --git a/.gitignore b/.gitignore index 5a9dd66a..27df0725 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,6 @@ node_modules results yarn.lock /public -cypress/screenshots/* \ No newline at end of file +cypress/screenshots/* +backend/dockerfiles/backend/.venv/ +backend/dockerfiles/backend/instance/ diff --git a/backend/README.md b/backend/README.md index 124d68b0..b7e15380 100644 --- a/backend/README.md +++ b/backend/README.md @@ -1,2 +1,6 @@ # backend with collective.elastic.plone and ElasticSearch + +## rohberg.voltosearchkitblocktestingprofiles + +Profiles for monolingual and multilingual testing diff --git a/backend/dockerfiles/backend/Dockerfile.dev.monolingual b/backend/dockerfiles/backend/Dockerfile.dev.monolingual index 48a7eba9..586820d0 100644 --- a/backend/dockerfiles/backend/Dockerfile.dev.monolingual +++ b/backend/dockerfiles/backend/Dockerfile.dev.monolingual @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1 # The language is set here: -# PROFILES … rohberg.volto:monolingual +# PROFILES …:monolingual ARG SEED=1000 ARG PLONE_VERSION=6.0 FROM plone/plone-backend:${PLONE_VERSION} @@ -12,7 +12,7 @@ LABEL maintainer="Plone Foundation " \ org.label-schema.vendor="Rohberg" # Add local code -COPY ./backend . +COPY backend . # # Install local requirements and fix permissions # RUN <= tuple(map(int, '$(PYTHON_VERSION_MIN)'.split('.'))))") +ifeq ($(PYTHON_VERSION_OK),0) + $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)") +endif + +PLONE_SITE_ID=Plone +BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) +PLONE_VERSION=$(shell cat $(BACKEND_FOLDER)/version.txt) +EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/project/title/setuphandlers/examplecontent + +GIT_FOLDER=$(BACKEND_FOLDER)/.git +VENV_FOLDER=$(BACKEND_FOLDER)/.venv +BIN_FOLDER=$(VENV_FOLDER)/bin + + +all: build + +# Add the following 'help' target to your Makefile +# And add help text after each target name starting with '\#\#' +.PHONY: help +help: ## This help message + @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' + +$(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: + @echo "$(GREEN)==> Setup Virtual Env$(RESET)" + $(PYTHON) -m venv $(VENV_FOLDER) + $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" + if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi + +instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration + @echo "$(GREEN)==> Create instance configuration$(RESET)" + $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance + +.PHONY: config +config: instance/etc/zope.ini + +.PHONY: build-dev +build-dev: config ## Install Plone packages + @echo "$(GREEN)==> Setup Build$(RESET)" + $(BIN_FOLDER)/mxdev -c mx.ini + $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt + +.PHONY: install +install: build-dev ## Install Plone + +.PHONY: build +build: build-dev ## Install Plone + +.PHONY: clean +clean: ## Clean environment + @echo "$(RED)==> Cleaning environment and build$(RESET)" + rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache + +.PHONY: start +start: ## Start a Plone instance on localhost:8080 + PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini + +.PHONY: console +console: instance/etc/zope.ini ## Start a console into a Plone instance + PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf diff --git a/backend/dockerfiles/backend/constraints-mxdev.txt b/backend/dockerfiles/backend/constraints-mxdev.txt new file mode 100644 index 00000000..0c6b55d2 --- /dev/null +++ b/backend/dockerfiles/backend/constraints-mxdev.txt @@ -0,0 +1,436 @@ +############################################################################### +# begin constraints from: constraints.txt + +############################################################################### +# begin constraints from: https://dist.plone.org/release/6.0.13/constraints.txt + +AccessControl==6.3 +Acquisition==5.1 +AuthEncoding==5.0 +BTrees==5.1 +Babel==2.13.1 +Chameleon==4.2.0 +DateTime==5.3 +Deprecated==1.2.14 +DocumentTemplate==4.6 +ExtensionClass==5.1 +GitPython==3.1.43 +Jinja2==3.1.2 +Markdown==3.5.2 +MarkupSafe==2.1.3 +Missing==5.0 +MultiMapping==5.0 +Paste==3.7.1 +PasteDeploy==3.1.0 +Persistence==4.1 +Pillow==9.5.0 +Plone==6.0.13 +Products.BTreeFolder2==5.1 +Products.CMFCore==3.5 +Products.CMFDiffTool==4.0.4 +Products.CMFDynamicViewFTI==7.0.2 +Products.CMFEditions==4.0.3 +Products.CMFPlacefulWorkflow==3.0.4 +Products.CMFPlone==6.0.13 +Products.CMFUid==4.2 +Products.DCWorkflow==3.0 +Products.DateRecurringIndex==3.0.1 +Products.ExtendedPathIndex==4.0.1 +Products.ExternalMethod==5.0 +Products.GenericSetup==3.0.2 +Products.MailHost==5.2 +Products.MimetypesRegistry==3.0.1 +Products.PDBDebugMode==2.0 +Products.PlonePAS==8.0.4 +Products.PluggableAuthService==3.0 +Products.PluginRegistry==2.0 +Products.PortalTransforms==4.1.0 +Products.PrintingMailHost==1.1.7 +Products.PythonScripts==5.0 +Products.Sessions==5.0 +Products.SiteErrorLog==6.0 +Products.StandardCacheManagers==5.0 +Products.ZCatalog==7.0 +Products.ZopeVersionControl==4.1 +Products.isurlinportal==2.0.3 +Products.statusmessages==5.0.6 +Products.validation==3.0.0 +PyGithub==2.2.0 +PyJWT==2.8.0 +PyNaCl==1.5.0 +PySocks==1.7.1 +PyYAML==6.0.1 +Pygments==2.17.2 +Record==4.0 +RestrictedPython==7.1 +SecretStorage==3.3.3 +Sphinx==7.1.2; python_version == "3.8" +Sphinx==7.2.6; python_version >= "3.9" +Unidecode==1.3.8 +WSGIProxy2==0.5.1 +WebOb==1.8.7 +WebTest==3.0.0 +ZConfig==4.0 +ZEO==6.0.0 +ZODB==5.8.1 +ZODB3==3.11.0 +Zope==5.10 +Zope2==4.0 +ZopeUndo==6.0 +alabaster==0.7.13 +argcomplete==3.2.3 +argh==0.31.2 +async-generator==1.10 +attrs==23.2.0 +backports.cached-property==1.0.2 +backports.zoneinfo==0.2.1; python_version == "3.8" +beautifulsoup4==4.12.2 +bleach==6.1.0 +borg.localrole==3.1.11 +build==1.0.3 +cachecontrol==0.14.0 +cached-property==1.5.2 +certifi==2024.2.2 +cffi==1.16.0 +charset-normalizer==3.3.2 +check-manifest==0.49 +click==8.1.7 +click-default-group==1.2.4 +cmarkgfm==2024.1.14 +collective.MockMailHost==3.0.0 +collective.monkeypatcher==1.2.1 +collective.recipe.omelette==1.1.0 +collective.recipe.template==2.2 +collective.recipe.vscode==0.1.9 +collective.xmltestreport==2.0.2 +collective.z3cform.datagridfield==3.0.2 +colorama==0.4.6 +commonmark==0.9.1 +configparser==5.3.0 +cryptography==43.0.1 +cssselect==1.2.0 +decorator==5.1.1 +diazo==2.0.2 +distro==1.9.0 +docutils==0.20.1 +exceptiongroup==1.2.0 +fancycompleter==0.9.1 +feedparser==6.0.11 +filelock==3.13.4 +five.customerize==3.0.0 +five.intid==2.0.0 +five.localsitemanager==4.0 +furl==2.1.3 +future==0.18.3 +gitdb==4.0.11 +grpcio-tools==1.59.0 +gunicorn==21.2.0 +h11==0.14.0 +httplib2==0.22.0 +i18ndude==6.2.1 +icalendar==5.0.12 +idna==3.4 +imagesize==1.4.1 +importlib-metadata==6.8.0 +importlib-resources==5.13.0 +incremental==22.10.0 +jaraco.classes==3.3.1 +jeepney==0.8.0 +jsonschema==4.21.1 +jsonschema-specifications==2023.12.1 +keyring==24.3.1 +lockfile==0.12.2 +lxml==5.2.1 +lxml-html-clean==0.1.1 +manuel==1.12.4 +markdown-it-py==3.0.0 +mdurl==0.1.2 +mock==5.1.0 +more-itertools==10.2.0 +mr.developer==2.0.2 +msgpack==1.0.8 +multipart==0.2.4 +mxdev==4.0.2 +nh3==0.2.17 +nt-svcutils==2.13.0 +oauthlib==3.2.2 +orderedmultidict==1.0.1 +outcome==1.3.0post0 +overrides==7.7.0 +packaging==23.2 +pdbpp==0.10.3 +pep440==0.1.2 +pep517==0.13.1 +persistent==5.1 +piexif==1.1.3 +pip==24.2 +pkginfo==1.9.6 +pkgutil-resolve-name==1.3.10; python_version == "3.8" +plone.alterego==2.0.1 +plone.api==2.2.2 +plone.app.blocks==7.0.1 +plone.app.caching==3.1.5 +plone.app.content==4.1.7 +plone.app.contentlisting==3.0.5 +plone.app.contentmenu==3.0.6 +plone.app.contentrules==5.0.4 +plone.app.contenttypes==3.0.8 +plone.app.customerize==2.0.1 +plone.app.debugtoolbar==1.4.0 +plone.app.dexterity==3.2.0 +plone.app.discussion==4.1.3 +plone.app.drafts==2.0.0 +plone.app.event==5.1.6 +plone.app.i18n==4.0.1 +plone.app.intid==2.0.0 +plone.app.iterate==5.0.5 +plone.app.jquerytools==1.9.5 +plone.app.layout==4.1.1 +plone.app.linkintegrity==4.0.6 +plone.app.locales==6.0.24 +plone.app.lockingbehavior==2.0.1 +plone.app.mosaic==3.1.5 +plone.app.multilingual==7.0.4 +plone.app.portlets==5.0.7 +plone.app.querystring==2.1.2 +plone.app.redirector==3.0.3 +plone.app.registry==2.0.5 +plone.app.relationfield==3.0.5 +plone.app.robotframework==2.1.3 +plone.app.standardtiles==3.1.2 +plone.app.testing==7.1.0 +plone.app.textfield==2.0.1 +plone.app.theming==5.0.10 +plone.app.tiles==4.0.1 +plone.app.upgrade==3.1.6 +plone.app.users==3.0.7 +plone.app.uuid==2.2.3 +plone.app.versioningbehavior==2.0.3 +plone.app.viewletmanager==4.0.3 +plone.app.vocabularies==5.0.5 +plone.app.widgets==5.0.0 +plone.app.workflow==5.0.3 +plone.app.z3cform==4.3.2 +plone.autoform==2.0.2 +plone.autoinclude==1.0.1 +plone.base==1.4.0 +plone.batching==2.0.6 +plone.behavior==2.0.1 +plone.browserlayer==3.0.2 +plone.cachepurging==3.0.2 +plone.caching==2.0.1 +plone.contentrules==3.0.1 +plone.dexterity==3.0.6 +plone.event==2.0.2 +plone.folder==4.0.1 +plone.formwidget.autocomplete==1.4.1 +plone.formwidget.namedfile==3.1.0 +plone.formwidget.recurrence==3.0.4 +plone.i18n==5.0.2 +plone.indexer==2.0.1 +plone.intelligenttext==4.0.1 +plone.jsonserializer==0.9.11 +plone.keyring==4.0.1 +plone.locking==3.0.1 +plone.memoize==3.0.2 +plone.namedfile==6.3.1 +plone.outputfilters==5.0.4 +plone.portlet.collection==4.0.3 +plone.portlet.static==4.0.2 +plone.portlets==3.0.1 +plone.protect==5.0.1 +plone.recipe.command==1.1 +plone.recipe.zeoserver==3.0.2 +plone.recipe.zope2instance==7.0.0 +plone.registry==2.0.1 +plone.releaser==2.3.1 +plone.reload==4.0.0 +plone.resource==3.0.2 +plone.resourceeditor==4.0.1 +plone.rest==4.1.3 +plone.restapi==9.7.2 +plone.rfc822==3.0.1 +plone.scale==4.1.3 +plone.schema==2.0.1 +plone.schemaeditor==4.0.5 +plone.session==4.0.4 +plone.staticresources==2.1.16 +plone.stringinterp==2.0.2 +plone.subrequest==2.0.5 +plone.supermodel==2.0.4 +plone.testing==9.0.2 +plone.theme==4.0.1 +plone.tiles==2.3.1 +plone.transformchain==3.0.1 +plone.uuid==2.0.1 +plone.versioncheck==1.8.1 +plone.volto==4.4.3 +plone.z3cform==2.0.3 +plonetheme.barceloneta==3.1.10 +progress==1.6 +prompt-toolkit==2.0.10 +py==1.11.0 +pyOpenSSL==24.1.0 +pycparser==2.21 +pyparsing==3.1.2 +pyproject-hooks==1.0.0 +pyrepl==0.9.0 +pyroma==4.2 +pyrsistent==0.20.0 +python-dateutil==2.8.2 +python-dotenv==1.0.1 +python-gettext==5.0 +pytz==2023.3.post1 +readme-renderer==42.0 +referencing==0.33.0 +repoze.xmliter==1.0b1 +requests==2.31.0 +requests-toolbelt==1.0.0 +responses==0.24.1 +rfc3986==2.0.0 +rich==13.7.1 +robotframework==6.0.2 +robotframework-assertion-engine==2.0.0 +robotframework-browser==17.5.2 +robotframework-debuglibrary==2.3.0 +robotframework-lsp==1.10.1 +robotframework-pythonlibcore==4.2.0 +robotframework-selenium2library==3.0.0 +robotframework-selenium2screenshots==0.8.1 +robotframework-seleniumlibrary==6.1.3 +robotframework-seleniumtestability==2.1.0 +robotsuite==2.3.2 +roman==4.1 +rpds-py==0.13.2 +selenium==4.9.1 +setuptools==74.0.0 +sgmllib3k==1.0.0 +simplejson==3.19.2 +six==1.16.0 +smmap==5.0.1 +sniffio==1.3.1 +snowballstemmer==2.2.0 +sortedcontainers==2.4.0 +soupsieve==2.5 +sphinx-rtd-theme==1.3.0 +sphinxcontrib-applehelp==1.0.4; python_version == "3.8" +sphinxcontrib-applehelp==1.0.7; python_version >= "3.9" +sphinxcontrib-devhelp==1.0.2; python_version == "3.8" +sphinxcontrib-devhelp==1.0.5; python_version >= "3.9" +sphinxcontrib-htmlhelp==2.0.1; python_version == "3.8" +sphinxcontrib-htmlhelp==2.0.4; python_version >= "3.9" +sphinxcontrib-jquery==4.1 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.3; python_version == "3.8" +sphinxcontrib-qthelp==1.0.6; python_version >= "3.9" +sphinxcontrib-serializinghtml==1.1.5; python_version == "3.8" +sphinxcontrib-serializinghtml==1.1.9; python_version >= "3.9" +stdlib-list==0.10.0 +tempstorage==6.0 +toml==0.10.2 +tomli==2.0.1 +towncrier==23.11.0 +transaction==4.0 +trio==0.24.0 +trio-websocket==0.11.1 +trove-classifiers==2024.4.10 +twine==4.0.2 +types-PyYAML==6.0.12.10 +types-toml==0.10.8.5 +typing-extensions==4.9.0 +urllib3==2.1.0 +urllib3-secure-extra==0.1.0 +wadllib==1.3.6 +waitress==2.1.2 +watchdog==3.0.0 +wcwidth==0.2.13 +webencodings==0.5.1 +webresource==1.2 +wheel==0.44.0 +wmctrl==0.5 +wrapt==1.16.0 +wsproto==1.2.0 +z3c.caching==3.0 +z3c.checkversions==2.1 +z3c.dependencychecker==2.15 +z3c.form==4.3 +z3c.formwidget.query==2.0.0 +z3c.jbot==2.0 +z3c.objpath==2.0 +z3c.pt==4.0 +z3c.relationfield==1.0 +z3c.unconfigure==2.0 +z3c.zcmlhook==2.0 +zExceptions==5.0 +zc.buildout==3.1.0 +zc.lockfile==3.0.post1 +zc.recipe.egg==2.0.7 +zc.recipe.testrunner==3.0 +zc.relation==2.0 +zdaemon==5.0 +zest.pocompile==2.0.0 +zest.releaser==9.1.3 +zestreleaser.towncrier==1.3.0 +zipp==3.17.0 +zodbpickle==3.1 +zodbupdate==2.0 +zodbverify==1.2.0 +zope.annotation==5.0 +zope.app.locales==5.0 +zope.browser==3.0 +zope.browsermenu==5.0 +zope.browserpage==5.0 +zope.browserresource==5.1 +zope.cachedescriptors==5.0 +zope.component==6.0 +zope.componentvocabulary==2.3.0 +zope.configuration==5.0 +zope.container==5.2 +zope.contentprovider==5.0 +zope.contenttype==5.1 +zope.copy==4.3 +zope.datetime==5.0.0 +zope.deferredimport==5.0 +zope.deprecation==5.0 +zope.dottedname==6.0 +zope.event==5.0 +zope.exceptions==5.0.1 +zope.filerepresentation==6.0 +zope.globalrequest==2.0 +zope.hookable==6.0 +zope.i18n==5.1 +zope.i18nmessageid==6.1.0 +zope.interface==6.3 +zope.intid==5.0 +zope.keyreference==6.0 +zope.lifecycleevent==5.0 +zope.location==5.0 +zope.mkzeoinstance==5.1.1 +zope.pagetemplate==5.0 +zope.processlifetime==3.0 +zope.proxy==5.1 +zope.ptresource==5.0 +zope.publisher==7.0 +zope.ramcache==3.0 +zope.schema==7.0.1 +zope.security==6.2 +zope.sendmail==6.2 +zope.sequencesort==5.0 +zope.site==5.0 +zope.size==5.0 +zope.structuredtext==5.0 +zope.tal==5.0.1 +zope.tales==6.0 +zope.testbrowser==6.0 +zope.testing==5.0.1 +zope.testrunner==6.4 +zope.traversing==5.0 +zope.viewlet==5.0 + +# end constraints from: https://dist.plone.org/release/6.0.13/constraints.txt +############################################################################### + + +# end constraints from: constraints.txt +############################################################################### + diff --git a/backend/dockerfiles/backend/constraints.txt b/backend/dockerfiles/backend/constraints.txt new file mode 100644 index 00000000..3bb2e326 --- /dev/null +++ b/backend/dockerfiles/backend/constraints.txt @@ -0,0 +1 @@ +-c https://dist.plone.org/release/6.0.13/constraints.txt diff --git a/backend/dockerfiles/backend/instance.yaml b/backend/dockerfiles/backend/instance.yaml new file mode 100644 index 00000000..99ba2b06 --- /dev/null +++ b/backend/dockerfiles/backend/instance.yaml @@ -0,0 +1,3 @@ +default_context: + initial_user_password: 'admin' + zcml_package_includes: 'rohberg.voltosearchkitblocktestingprofiles' \ No newline at end of file diff --git a/backend/dockerfiles/backend/mx.ini b/backend/dockerfiles/backend/mx.ini new file mode 100644 index 00000000..65d56400 --- /dev/null +++ b/backend/dockerfiles/backend/mx.ini @@ -0,0 +1,18 @@ +; This is a mxdev configuration file +; it can be used to override versions of packages already defined in the +; constraints files and to add new packages from VCS like git. +; to learn more about mxdev visit https://pypi.org/project/mxdev/ + +[settings] +main-package = -e sources/rohberg.voltosearchkitblocktestingprofiles + +; example how to override a package version +; version-overrides = +; example.package==2.1.0a2 + +; example section to use packages from git +; [example.contenttype] +; url = https://github.com/collective/example.contenttype.git +; pushurl = git@github.com:collective/example.contenttype.git +; extras = test +; branch = feature-7 diff --git a/backend/dockerfiles/backend/requirements-docker.txt b/backend/dockerfiles/backend/requirements-docker.txt index 13d7ff23..695eefb3 100644 --- a/backend/dockerfiles/backend/requirements-docker.txt +++ b/backend/dockerfiles/backend/requirements-docker.txt @@ -1,3 +1,3 @@ collective.elastic.plone[redis,opensearch]==2.1.1 elasticsearch -rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git \ No newline at end of file +-e sources/rohberg.voltosearchkitblocktestingprofiles \ No newline at end of file diff --git a/backend/dockerfiles/backend/requirements-mxdev.txt b/backend/dockerfiles/backend/requirements-mxdev.txt new file mode 100644 index 00000000..3d4df43e --- /dev/null +++ b/backend/dockerfiles/backend/requirements-mxdev.txt @@ -0,0 +1,7 @@ +############################################################################### +# mxdev combined constraints +-c constraints-mxdev.txt + +############################################################################### +# main package +-e sources/rohberg.voltosearchkitblocktestingprofiles diff --git a/backend/dockerfiles/backend/requirements.txt b/backend/dockerfiles/backend/requirements.txt new file mode 100644 index 00000000..da443200 --- /dev/null +++ b/backend/dockerfiles/backend/requirements.txt @@ -0,0 +1 @@ +-c constraints.txt diff --git a/backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py b/backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py new file mode 100644 index 00000000..267facab --- /dev/null +++ b/backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py @@ -0,0 +1,70 @@ +from AccessControl.SecurityManagement import newSecurityManager +from Products.CMFPlone.factory import _DEFAULT_PROFILE +from Products.CMFPlone.factory import addPloneSite +from Products.GenericSetup.tool import SetupTool +from rohberg.voltosearchkitblocktestingprofiles.interfaces import IBrowserLayer +from Testing.makerequest import makerequest +from zope.interface import directlyProvidedBy +from zope.interface import directlyProvides + +import os +import transaction + + +truthy = frozenset(("t", "true", "y", "yes", "on", "1")) + + +def asbool(s): + """Return the boolean value ``True`` if the case-lowered value of string + input ``s`` is a :term:`truthy string`. If ``s`` is already one of the + boolean values ``True`` or ``False``, return it.""" + if s is None: + return False + if isinstance(s, bool): + return s + s = str(s).strip() + return s.lower() in truthy + + +DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) +# EXAMPLE_CONTENT = asbool( +# os.getenv("EXAMPLE_CONTENT", "1") +# ) # Create example content by default + +app = makerequest(globals()["app"]) + +request = app.REQUEST + +ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) + +directlyProvides(request, *ifaces) + +admin = app.acl_users.getUserById("admin") +admin = admin.__of__(app.acl_users) +newSecurityManager(None, admin) + +site_id = "Plone" +payload = { + "title": "Project Title", + "profile_id": _DEFAULT_PROFILE, + # "extension_ids": [ + # "project.title:default", + # ], + "setup_content": False, + "default_language": "en", + "portal_timezone": "UTC", +} + +if site_id in app.objectIds() and DELETE_EXISTING: + app.manage_delObjects([site_id]) + transaction.commit() + app._p_jar.sync() + +if site_id not in app.objectIds(): + site = addPloneSite(app, site_id, **payload) + transaction.commit() + # if EXAMPLE_CONTENT: + # portal_setup: SetupTool = site.portal_setup + # portal_setup.runAllImportStepsFromProfile("project.title:initial") + # transaction.commit() + app._p_jar.sync() diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md new file mode 100644 index 00000000..6a696826 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md @@ -0,0 +1,3 @@ +# rohberg.voltosearchkitblocktestingprofiles + +Profiles for testing monolingual and multilingual diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py new file mode 100644 index 00000000..a851bf54 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py @@ -0,0 +1,73 @@ +"""Installer for the rohberg.voltosearchkitblocktestingprofiles package.""" + +from pathlib import Path +from setuptools import find_packages +from setuptools import setup + + +long_description = f""" +{Path("README.md").read_text()}\n +""" + + +setup( + name="rohberg.voltosearchkitblocktestingprofiles", + version="1.0.0a0", + description="A new add-on boo with hui", + long_description=long_description, + long_description_content_type="text/markdown", + classifiers=[ + "Development Status :: 3 - Alpha", + "Environment :: Web Environment", + "Framework :: Plone", + "Framework :: Plone :: Addon", + "Framework :: Plone :: 6.0", + "Programming Language :: Python", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Operating System :: OS Independent", + "License :: OSI Approved :: GNU General Public License v2 (GPLv2)", + ], + keywords="Python Plone CMS", + author="Plone Community", + author_email="collective@plone.org", + url="https://github.com/rohberg/rohberg.voltosearchkitblocktestingprofiles", + project_urls={ + "PyPI": "https://pypi.org/project/rohberg.voltosearchkitblocktestingprofiles", + "Source": "https://github.com/rohberg/rohberg.voltosearchkitblocktestingprofiles", + "Tracker": "https://github.com/rohberg/rohberg.voltosearchkitblocktestingprofiles/issues", + }, + license="GPL version 2", + packages=find_packages("src", exclude=["ez_setup"]), + namespace_packages=["rohberg"], + package_dir={"": "src"}, + include_package_data=True, + zip_safe=False, + python_requires=">=3.8", + install_requires=[ + "setuptools", + "Products.CMFPlone", + "plone.api", + "plone.restapi", + "plone.volto", + ], + extras_require={ + "test": [ + "zest.releaser[recommended]", + "zestreleaser.towncrier", + "plone.app.testing", + "plone.restapi[test]", + "pytest", + "pytest-cov", + "pytest-plone>=0.5.0", + ], + }, + entry_points=""" + [z3c.autoinclude.plugin] + target = plone + [console_scripts] + """, +) diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO new file mode 100644 index 00000000..501f977a --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO @@ -0,0 +1,47 @@ +Metadata-Version: 2.1 +Name: rohberg.voltosearchkitblocktestingprofiles +Version: 1.0.0a0 +Summary: A new add-on boo with hui +Home-page: https://github.com/rohberg/rohberg.voltosearchkitblocktestingprofiles +Author: Plone Community +Author-email: collective@plone.org +License: GPL version 2 +Project-URL: PyPI, https://pypi.org/project/rohberg.voltosearchkitblocktestingprofiles +Project-URL: Source, https://github.com/rohberg/rohberg.voltosearchkitblocktestingprofiles +Project-URL: Tracker, https://github.com/rohberg/rohberg.voltosearchkitblocktestingprofiles/issues +Keywords: Python Plone CMS +Classifier: Development Status :: 3 - Alpha +Classifier: Environment :: Web Environment +Classifier: Framework :: Plone +Classifier: Framework :: Plone :: Addon +Classifier: Framework :: Plone :: 6.0 +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Operating System :: OS Independent +Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2) +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +Requires-Dist: setuptools +Requires-Dist: Products.CMFPlone +Requires-Dist: plone.api +Requires-Dist: plone.restapi +Requires-Dist: plone.volto +Provides-Extra: test +Requires-Dist: zest.releaser[recommended]; extra == "test" +Requires-Dist: zestreleaser.towncrier; extra == "test" +Requires-Dist: plone.app.testing; extra == "test" +Requires-Dist: plone.restapi[test]; extra == "test" +Requires-Dist: pytest; extra == "test" +Requires-Dist: pytest-cov; extra == "test" +Requires-Dist: pytest-plone>=0.5.0; extra == "test" + + +# rohberg.voltosearchkitblocktestingprofiles + +Profiles for testing monolingual and multilingual + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt new file mode 100644 index 00000000..96df331f --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt @@ -0,0 +1,12 @@ +README.md +setup.py +src/rohberg/__init__.py +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt +src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt +src/rohberg/voltosearchkitblocktestingprofiles/__init__.py \ No newline at end of file diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt new file mode 100644 index 00000000..0e4c7771 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt @@ -0,0 +1,2 @@ +[z3c.autoinclude.plugin] +target = plone diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt new file mode 100644 index 00000000..3c0521ea --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt @@ -0,0 +1 @@ +rohberg diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe @@ -0,0 +1 @@ + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt new file mode 100644 index 00000000..468b29d6 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt @@ -0,0 +1,14 @@ +setuptools +Products.CMFPlone +plone.api +plone.restapi +plone.volto + +[test] +zest.releaser[recommended] +zestreleaser.towncrier +plone.app.testing +plone.restapi[test] +pytest +pytest-cov +pytest-plone>=0.5.0 diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt new file mode 100644 index 00000000..3c0521ea --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt @@ -0,0 +1 @@ +rohberg diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py new file mode 100644 index 00000000..5284146e --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py @@ -0,0 +1 @@ +__import__("pkg_resources").declare_namespace(__name__) diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py new file mode 100644 index 00000000..17272319 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py @@ -0,0 +1,7 @@ +"""Init and utils.""" + +import logging + +PACKAGE_NAME = "rohberg.voltosearchkitblocktestingprofiles" + +logger = logging.getLogger(PACKAGE_NAME) diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a6348354f4a170ceeebd7a490d7d79e716bf50e7 GIT binary patch literal 519 zcma)2u}T9$5WTy^#M8u7BBTlyVuWN{!5{<)B5JVF;+o~MJ6aIF=@)NECb9=W=8($U_F`B%}MvHa=KqQ2z^y@Lt2WI&t&x@L7V+8!P_kmUiFeQ z#U;3cv;$wY7$<=Osr=CE3V!Z0kmZFqi!tQ{<2cK>=V>g?oz(XZ>-!DdtRFXG+XHo^ z5fE`EVSsovMv2gPh)yL4i2_%3Tp3A;&Jsa1k*&;iD-&Vt5&~W2h6Mf~5Y7W1x{QZ_ zS}qA7q)0mpKuoO8|0ItD0g3*9C6a>7=u`2zx!*!T82dU{jH}(=c(HcDX~bYxEbE(- q{N=iSK2xS?z8kAUV`Wg-xy}vj;_cd-U3{^N54Bf&^Clx~P5T137^TAi literal 0 HcmV?d00001 diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml new file mode 100644 index 00000000..32bb6cdf --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml @@ -0,0 +1,11 @@ + + + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml new file mode 100644 index 00000000..ce05598e --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml @@ -0,0 +1,7 @@ + + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py new file mode 100644 index 00000000..7e2f2884 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py @@ -0,0 +1,7 @@ +"""Module where all interfaces, events and exceptions live.""" + +from zope.publisher.interfaces.browser import IDefaultBrowserLayer + + +class IBrowserLayer(IDefaultBrowserLayer): + """Marker interface that defines a browser layer.""" diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml new file mode 100644 index 00000000..86999937 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml new file mode 100644 index 00000000..852aaf69 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml new file mode 100644 index 00000000..9558132b --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml new file mode 100644 index 00000000..a75d00ca --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml @@ -0,0 +1,4 @@ + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml new file mode 100644 index 00000000..6a1c5f4e --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml new file mode 100644 index 00000000..eec40a34 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml @@ -0,0 +1,7 @@ + + + 1000 + + profile-plone.volto:default + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml new file mode 100644 index 00000000..4f674d65 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml new file mode 100644 index 00000000..71ca5838 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml new file mode 100644 index 00000000..7f916aad --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml @@ -0,0 +1,5 @@ + + + barceloneta + true + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml new file mode 100644 index 00000000..bed2b0d4 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml @@ -0,0 +1,10 @@ + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml new file mode 100644 index 00000000..27e17a3b --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml @@ -0,0 +1,6 @@ + + 1000 + + profile-plone.volto:default + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml new file mode 100644 index 00000000..f57aae61 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml @@ -0,0 +1,18 @@ + + + + de + + + + + de + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml new file mode 100644 index 00000000..474f155a --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml @@ -0,0 +1,7 @@ + + 1000 + + profile-plone.app.multilingual:default + profile-plone.volto:default + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml new file mode 100644 index 00000000..7e305a93 --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml @@ -0,0 +1,19 @@ + + + + en + + + + + en + de + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml new file mode 100644 index 00000000..0c370d2e --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml @@ -0,0 +1,6 @@ + + + + diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py new file mode 100644 index 00000000..8eb1fe9c --- /dev/null +++ b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py @@ -0,0 +1,21 @@ +from plone.app.multilingual.browser.setup import SetupMultilingualSite +from rohberg.voltosearchkitblocktestingprofiles import logger +from Products.CMFPlone.interfaces import INonInstallable +from zope.component.hooks import getSite +from zope.interface import implementer + + +@implementer(INonInstallable) +class HiddenProfiles: + def getNonInstallableProfiles(self): + """Hide uninstall profile from site-creation and quickinstaller.""" + return [ + "project.title:uninstall", + ] + + +def init_pam(tool): + """After installation run setup to create LRF and LIF.""" + setup_tool = SetupMultilingualSite() + setup_tool.setupSite(getSite()) + logger.info("plone.app.multilingual content created.") diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a34eaaaf8c9f1572f7379799874cb3fcddf8643e GIT binary patch literal 942 zcmah{KX2496n{=~N4fUOp9LWS%2bh|$%+uLAQd{as)S&;#mYJFuI@Q@YCA|h7KRRd zgMJ3okHW|nsS^|1RW~4Y!oJ*9bf~bDU*3EEJ-@#{`u!fb^QFHv-Xj3Nys|o-r7+)d z!Wk4$5CJ6_5aQ)P1Z6k~2?T&4l5^+nPXOR=v1@a)p7 Hi_HE4ufPqX literal 0 HcmV?d00001 From 312cd99bdfc2558a3cfc3e1faf4baf7102d4c002 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 2 Nov 2024 18:56:32 +0100 Subject: [PATCH 79/98] make commands start dev server with language settings by fixtures --- Makefile | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9008f85d..382ce1b8 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,7 @@ dev-backend-start-monolingual: ## Start backend dev server $(MAKE) -C "./backend/" dev-backend-start-monolingual .PHONY: dev-backend-start-multilingual -dev-backend-start-multilingual: ## Start backend dev server +dev-backend-start-multilingual: ## Start backend dev server with two languages export INDEX_PASSWORD=paraDiesli,17 export PLONE_PASSWORD=admin export PLONE_SITE_PREFIX_PATH=Plone @@ -65,6 +65,14 @@ install: ## Installs the add-on in a development environment start: ## Starts Volto, allowing reloading of the add-on during development pnpm start +.PHONY: start +start-monolingual: ## Same as `make start` but with language 'de' + ADDONS=testing-volto-searchkit-block:monolingualFixture pnpm start + +.PHONY: start +start-multilingual: ## Same as `make start` but with language 'de' and multi lingual + ADDONS=testing-volto-searchkit-block:multilingualFixture pnpm start + .PHONY: build build: ## Build a production bundle for distribution of the project with the add-on pnpm build From 4810b10cfadc29f5c1a3f4e9485c1d433cab8044 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 3 Nov 2024 08:46:54 +0100 Subject: [PATCH 80/98] Replace former external backend testing profiles with new included --- backend/Makefile | 6 +++--- .../dockerfiles/backend/Dockerfile.acceptance | 18 +++++++++--------- .../backend/Dockerfile.acceptance.multilingual | 15 ++++++++------- .../dockerfiles/docker-compose-acceptance.yml | 4 ++-- backend/dockerfiles/docker-compose-dev.yml | 4 ++-- 5 files changed, 24 insertions(+), 23 deletions(-) diff --git a/backend/Makefile b/backend/Makefile index 7419a7cc..980a2d65 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -80,11 +80,11 @@ dev-backend-start-multilingual: ## Start dev containers (backend and OpenSearch) .PHONY: acceptance-backend-start-monolingual acceptance-backend-start-monolingual: ## Start acceptance containers (backend and OpenSearch) - ${ACCEPTANCE_MONOLINGUAL} --profile monolingual up -d --force-recreate + ${ACCEPTANCE_COMPOSE_MONOLINGUAL} --profile monolingual up -d --force-recreate .PHONY: acceptance-backend-image-build-monolingual acceptance-backend-image-build-monolingual: ## Build acceptance containers (backend and OpenSearch) - ${ACCEPTANCE_MONOLINGUAL} --profile monolingual build --no-cache + ${ACCEPTANCE_COMPOSE_MONOLINGUAL} --profile monolingual build --no-cache # ######################################################################## @@ -93,4 +93,4 @@ acceptance-backend-image-build-monolingual: ## Build acceptance containers (back .PHONY: acceptance-backend-start-multilingual acceptance-backend-start-multilingual: ## Start acceptance containers (backend and OpenSearch) - ${ACCEPTANCE_MULTILINGUAL} --profile multilingual up -d --force-recreate + ${ACCEPTANCE_COMPOSE_MULTILINGUAL} --profile multilingual up -d --force-recreate diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance b/backend/dockerfiles/backend/Dockerfile.acceptance index 6fec5d10..7a314d98 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance +++ b/backend/dockerfiles/backend/Dockerfile.acceptance @@ -1,31 +1,31 @@ # syntax=docker/dockerfile:1 # Dockerfile from cookiecutter-plone-starter # The language is set here: -# APPLY_PROFILES … rohberg.volto:monolingual -# TODO ! Move language profiles to volto-searchkit-block/backend policy package. +# APPLY_PROFILES … rohberg.voltosearchkitblocktestingprofiles:monolingual ARG PLONE_VERSION=6.0 -ARG SEED=7 +ARG SEED=1 FROM plone/server-builder:${PLONE_VERSION} AS builder WORKDIR /app # # Add local code -# COPY . . +COPY backend . # Install local requirements RUN <=2.0.0 - bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 - # bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' - bin/pip install 'rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git' + ./bin/pip install -r requirements.txt EOT FROM plone/server-acceptance:${PLONE_VERSION} -ENV APPLY_PROFILES="collective.elastic.plone:default,rohberg.volto:monolingual" +ENV APPLY_PROFILES="collective.elastic.plone:default,rohberg.voltosearchkitblocktestingprofiles:monolingual" # Copy /app from builder COPY --from=builder /app /app diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual index fa42f5a9..c76c92be 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual +++ b/backend/dockerfiles/backend/Dockerfile.acceptance.multilingual @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # Dockerfile from cookiecutter-plone-starter # The language is set here: -# APPLY_PROFILES … rohberg.volto:multilingual +# APPLY_PROFILES … rohberg.voltosearchkitblocktestingprofiles:monolingual # Run robotserver verbose ARG PLONE_VERSION=6.0 @@ -11,21 +11,22 @@ FROM plone/server-builder:${PLONE_VERSION} AS builder WORKDIR /app # # Add local code -# COPY . . +COPY backend . # Install local requirements RUN <=2.0.0 - bin/pip install collective.elastic.plone[redis,opensearch]>=2.1.0 - # bin/pip install 'collective.elastic.plone[redis,opensearch] @ git+https://github.com/collective/collective.elastic.plone.git' - bin/pip install 'rohberg.volto[test] @ git+https://github.com/rohberg/rohberg.volto.git' + ./bin/pip install -r requirements.txt EOT FROM plone/server-acceptance:${PLONE_VERSION} -ENV APPLY_PROFILES="collective.elastic.plone:default,rohberg.volto:multilingual" +ENV APPLY_PROFILES="collective.elastic.plone:default,rohberg.voltosearchkitblocktestingprofiles:multilingual" # Copy /app from builder COPY --from=builder /app /app diff --git a/backend/dockerfiles/docker-compose-acceptance.yml b/backend/dockerfiles/docker-compose-acceptance.yml index 363116a1..ff6c133a 100644 --- a/backend/dockerfiles/docker-compose-acceptance.yml +++ b/backend/dockerfiles/docker-compose-acceptance.yml @@ -15,7 +15,7 @@ services: INDEX_LOGIN: ${INDEX_LOGIN?unset} INDEX_PASSWORD: ${INDEX_PASSWORD?unset} CELERY_BROKER: ${CELERY_BROKER?unset} - CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' + CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex INSTALL_PRODUCTS: 'collective.elastic.plone' ports: @@ -40,7 +40,7 @@ services: INDEX_LOGIN: ${INDEX_LOGIN?unset} INDEX_PASSWORD: ${INDEX_PASSWORD?unset} CELERY_BROKER: ${CELERY_BROKER?unset} - CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' + CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex INSTALL_PRODUCTS: 'collective.elastic.plone' ports: diff --git a/backend/dockerfiles/docker-compose-dev.yml b/backend/dockerfiles/docker-compose-dev.yml index f0726a28..fe14e91c 100644 --- a/backend/dockerfiles/docker-compose-dev.yml +++ b/backend/dockerfiles/docker-compose-dev.yml @@ -13,7 +13,7 @@ services: INDEX_LOGIN: ${INDEX_LOGIN?unset} INDEX_PASSWORD: ${INDEX_PASSWORD?unset} CELERY_BROKER: ${CELERY_BROKER?unset} - CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' + CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex INSTALL_PRODUCTS: 'collective.elastic.plone' ports: @@ -36,7 +36,7 @@ services: INDEX_LOGIN: ${INDEX_LOGIN?unset} INDEX_PASSWORD: ${INDEX_PASSWORD?unset} CELERY_BROKER: ${CELERY_BROKER?unset} - CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.volto' + CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex INSTALL_PRODUCTS: 'collective.elastic.plone' ports: From b2ed8efd66abc1b503b37e9f57df30d50fe550b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 3 Nov 2024 10:15:05 +0100 Subject: [PATCH 81/98] Fix acceptance tests multilingual after new backend profiles --- .github/workflows/acceptance_monolingual.yml | 1 + .github/workflows/acceptance_multilingual.yml | 1 + .../multilingual/multilingual.language.cy.js | 50 +++++++++++-------- .../multilingual.search.anonymous.cy.js | 20 ++++++++ .../multilingual/multilingual.search.cy.js | 32 ++++++++++++ 5 files changed, 84 insertions(+), 20 deletions(-) diff --git a/.github/workflows/acceptance_monolingual.yml b/.github/workflows/acceptance_monolingual.yml index b1f1384e..58108b8b 100644 --- a/.github/workflows/acceptance_monolingual.yml +++ b/.github/workflows/acceptance_monolingual.yml @@ -8,6 +8,7 @@ on: - "cypress/tests/monolingual/**" - "packages/**" - ".github/workflows/acceptance_monolingual.yml" + - "backend/dockerfiles/**" env: NODE_VERSION: 20.x diff --git a/.github/workflows/acceptance_multilingual.yml b/.github/workflows/acceptance_multilingual.yml index f1f8f5a9..b6bac349 100644 --- a/.github/workflows/acceptance_multilingual.yml +++ b/.github/workflows/acceptance_multilingual.yml @@ -8,6 +8,7 @@ on: - "cypress/tests/multilingual/**" - "packages/**" - ".github/workflows/acceptance_multilingual.yml" + - "backend/dockerfiles/**" env: NODE_VERSION: 20.x diff --git a/cypress/tests/multilingual/multilingual.language.cy.js b/cypress/tests/multilingual/multilingual.language.cy.js index 4c95ef6f..b4324d31 100644 --- a/cypress/tests/multilingual/multilingual.language.cy.js +++ b/cypress/tests/multilingual/multilingual.language.cy.js @@ -1,38 +1,47 @@ describe('Searchkit block tests – search - multilingual - language', () => { beforeEach(() => { - cy.intercept('POST', '/**/@kitsearch').as('kitsearch'); cy.intercept('GET', `/**/*?expand*`).as('content'); cy.intercept('GET', '/**/Document').as('schema'); // Wait a bit to previous teardown to complete correctly because Heisenbug in this point cy.wait(2000); - // given a logged in editor and a page in edit mode cy.autologin(); cy.createContent({ contentType: 'Document', - contentId: 'searching', - contentTitle: 'Searching', - path: 'en', + contentId: 'suche', + contentTitle: 'Suche', + path: 'de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', - contentId: 'garden-in-february', - contentTitle: 'The garden in february', - path: 'en', + contentId: 'der-garten-im-februar', + contentTitle: 'Der Garten im Februar', + path: 'de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', - contentId: 'der-garten-im-februar', - contentTitle: 'Der Garten im Februar', - path: 'de', - language: 'de', + contentId: 'garden-in-february', + contentTitle: 'The garden in february', + path: 'en', + bodyModifier(body) { + body.language = 'en'; + return body; + }, }); // Add search block - cy.visit('/en/searching/edit'); + cy.visit('/de/suche/edit'); cy.wait('@schema'); cy.addNewBlock('searchkit'); @@ -43,20 +52,21 @@ describe('Searchkit block tests – search - multilingual - language', () => { }); afterEach(() => { - cy.removeContent({ path: 'en/searching' }); + cy.removeContent({ path: 'de/suche' }); cy.removeContent({ path: 'en/garden-in-february' }); cy.removeContent({ path: 'de/der-garten-im-februar' }); cy.wait(5000); }); - it('I can search within language', function () { + it('I can search within language', function () { + cy.visit('/de/suche'); cy.get('.searchbar-wrapper input') .type('februax{enter}') .wait('@kitsearch'); - cy.screenshot(); - cy.get('.block.searchkitsearch') - .should('not.contain', 'Der Garten im Februar'); - cy.get('.block.searchkitsearch') - .contains('The garden in february'); + cy.get('.block.searchkitsearch').should( + 'not.contain', + 'The garden in february', + ); + cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); }); }); diff --git a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js index 2f9d60ad..857a9393 100644 --- a/cypress/tests/multilingual/multilingual.search.anonymous.cy.js +++ b/cypress/tests/multilingual/multilingual.search.anonymous.cy.js @@ -8,11 +8,17 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { // given a logged in editor and a page in edit mode cy.autologin(); + cy.visit('/en/'); + cy.createContent({ contentType: 'Document', contentId: 'searching', contentTitle: 'Searching', path: 'en', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.setWorkflow({ @@ -26,6 +32,10 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { contentId: 'garden-in-february', contentTitle: 'The garden in february', path: 'en', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.setWorkflow({ @@ -39,6 +49,10 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { contentId: 'garden-in-march', contentTitle: 'The garden in march', path: 'en', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); // Add search block @@ -60,8 +74,14 @@ describe('Searchkit block tests – search - multilingual - anonymous', () => { }); it('I can search', function () { + cy.visit('/en/searching'); + cy.wait('@kitsearch'); cy.get('.searchbar-wrapper input').type('february{enter}'); cy.get('.block.searchkitsearch').contains('The garden in february'); + cy.get('.block.searchkitsearch').should( + 'not.contain', + 'The garden in march', + ); cy.get('.searchbar-wrapper input').clear().type('march{enter}'); cy.get('.block.searchkitsearch').contains('The garden in march'); }); diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index 435e2be2..7dd693cf 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -13,48 +13,80 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { contentId: 'suche', contentTitle: 'Suche', path: '/de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'garten-blog', contentTitle: 'Garten-Blog', path: '/de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'februar', contentTitle: 'Der Garten im Februar', path: '/de/garten-blog', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'marz', contentTitle: 'Der Garten im März', path: '/de/garten-blog', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'testseite-mann', contentTitle: 'Testseite Mann', path: '/de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'testseite-manner', contentTitle: 'Testseite Männer', path: '/de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'testseite-lsb', contentTitle: 'Testseite Lehrstellenbörsen', path: '/de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); cy.createContent({ contentType: 'Document', contentId: 'testseite-s', contentTitle: 'Testseite Stelle', path: '/de', + bodyModifier(body) { + body.language = 'de'; + return body; + }, }); // Wait after creating content for ingest and OpenSearch to index cy.wait(2000); From ad7589cd924ce840156b23a49aa0394618df315f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:31:50 +0100 Subject: [PATCH 82/98] dev backend --- Makefile | 62 ++++++++---- backend/.dev-env | 16 ++++ backend/{dockerfiles => }/.env | 6 +- .../backend => }/Dockerfile.acceptance | 2 +- .../Dockerfile.acceptance.multilingual | 2 +- backend/Makefile | 65 +++++++++++-- .../collective.elastic.plone-configure.zcml | 0 .../backend => }/constraints-mxdev.txt | 0 .../{dockerfiles/backend => }/constraints.txt | 0 .../docker-compose-acceptance.yml | 4 +- .../{dockerfiles => }/docker-compose-dev.yml | 51 +--------- .../backend/Dockerfile.dev.monolingual | 50 ---------- .../backend/Dockerfile.dev.multilingual | 50 ---------- backend/dockerfiles/backend/Makefile | 90 ------------------ backend/dockerfiles/backend/instance.yaml | 3 - .../backend/requirements-mxdev.txt | 7 -- ...create_site_cookieplone_example_content.py | 70 -------------- .../__pycache__/__init__.cpython-312.pyc | Bin 942 -> 0 bytes backend/instance.yaml | 3 + backend/{dockerfiles/backend => }/mx.ini | 12 +++ .../opensearch/Dockerfile.opensearch | 0 .../{dockerfiles => }/opensearch/README.md | 0 .../ingest-configuration/analysis.json | 0 .../ingest-configuration/mappings.json | 0 .../ingest-configuration/preprocessings.json | 0 .../opensearch-configuration/keywords.txt | 0 .../keywords_english.txt | 0 .../opensearch-configuration/lexicon.txt | 0 .../lexicon_english.txt | 0 .../backend => }/requirements-docker.txt | 0 backend/requirements-mxdev.txt | 21 ++++ .../backend => }/requirements.txt | 2 + .../README.md | 0 .../setup.py | 0 .../PKG-INFO | 0 .../SOURCES.txt | 4 +- .../dependency_links.txt | 0 .../entry_points.txt | 0 .../namespace_packages.txt | 0 .../not-zip-safe | 0 .../requires.txt | 0 .../top_level.txt | 0 .../src/rohberg/__init__.py | 0 .../__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin .../__pycache__/interfaces.cpython-312.pyc | Bin 0 -> 701 bytes .../configure.zcml | 0 .../dependencies.zcml | 0 .../interfaces.py | 0 .../profiles.zcml | 0 .../profiles/default/browserlayer.xml | 0 .../profiles/default/catalog.xml | 0 .../profiles/default/controlpanel.xml | 0 .../profiles/default/diff_tool.xml | 0 .../profiles/default/metadata.xml | 0 .../profiles/default/registry/.gitkeep | 0 .../profiles/default/repositorytool.xml | 0 .../profiles/default/rolemap.xml | 0 .../profiles/default/theme.xml | 0 .../profiles/default/types.xml | 0 .../profiles/default/types/.gitkeep | 0 .../profiles/monolingual/metadata.xml | 0 .../profiles/monolingual/registry.xml | 0 .../profiles/multilingual/metadata.xml | 0 .../profiles/multilingual/registry.xml | 0 .../profiles/uninstall/browserlayer.xml | 0 .../setuphandlers/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1521 bytes 68 files changed, 169 insertions(+), 351 deletions(-) create mode 100644 backend/.dev-env rename backend/{dockerfiles => }/.env (62%) rename backend/{dockerfiles/backend => }/Dockerfile.acceptance (98%) rename backend/{dockerfiles/backend => }/Dockerfile.acceptance.multilingual (98%) rename backend/{dockerfiles/backend => }/collective.elastic.plone-configure.zcml (100%) rename backend/{dockerfiles/backend => }/constraints-mxdev.txt (100%) rename backend/{dockerfiles/backend => }/constraints.txt (100%) rename backend/{dockerfiles => }/docker-compose-acceptance.yml (97%) rename backend/{dockerfiles => }/docker-compose-dev.yml (61%) delete mode 100644 backend/dockerfiles/backend/Dockerfile.dev.monolingual delete mode 100644 backend/dockerfiles/backend/Dockerfile.dev.multilingual delete mode 100644 backend/dockerfiles/backend/Makefile delete mode 100644 backend/dockerfiles/backend/instance.yaml delete mode 100644 backend/dockerfiles/backend/requirements-mxdev.txt delete mode 100644 backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py delete mode 100644 backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc create mode 100644 backend/instance.yaml rename backend/{dockerfiles/backend => }/mx.ini (61%) rename backend/{dockerfiles => }/opensearch/Dockerfile.opensearch (100%) rename backend/{dockerfiles => }/opensearch/README.md (100%) rename backend/{dockerfiles => }/opensearch/ingest-configuration/analysis.json (100%) rename backend/{dockerfiles => }/opensearch/ingest-configuration/mappings.json (100%) rename backend/{dockerfiles => }/opensearch/ingest-configuration/preprocessings.json (100%) rename backend/{dockerfiles => }/opensearch/opensearch-configuration/keywords.txt (100%) rename backend/{dockerfiles => }/opensearch/opensearch-configuration/keywords_english.txt (100%) rename backend/{dockerfiles => }/opensearch/opensearch-configuration/lexicon.txt (100%) rename backend/{dockerfiles => }/opensearch/opensearch-configuration/lexicon_english.txt (100%) rename backend/{dockerfiles/backend => }/requirements-docker.txt (100%) create mode 100644 backend/requirements-mxdev.txt rename backend/{dockerfiles/backend => }/requirements.txt (55%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/README.md (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt (76%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc (100%) create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/interfaces.cpython-312.pyc rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml (100%) rename backend/{dockerfiles/backend => }/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py (100%) create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc diff --git a/Makefile b/Makefile index 382ce1b8..84d7cf77 100644 --- a/Makefile +++ b/Makefile @@ -34,19 +34,43 @@ help: ## Show this help # dev backend ########################################### +.PHONY: dev-backend-install +dev-backend-install: ## Install Plone + $(MAKE) -C "./backend/" install + .PHONY: dev-backend-start-monolingual -dev-backend-start-monolingual: ## Start backend dev server +dev-backend-start-monolingual: ## Start Plone + export INDEX_NAME=monolingual export INDEX_PASSWORD=paraDiesli,17 - export PLONE_PASSWORD=admin - export PLONE_SITE_PREFIX_PATH=Plone - $(MAKE) -C "./backend/" dev-backend-start-monolingual + $(MAKE) -C "./backend/" start .PHONY: dev-backend-start-multilingual -dev-backend-start-multilingual: ## Start backend dev server with two languages +dev-backend-start-multilingual: ## Start Plone + export INDEX_NAME=multilingual + export INDEX_PASSWORD=paraDiesli,17 + $(MAKE) -C "./backend/" start + +.PHONY: create-site-monolingual +create-site-monolingual: + $(MAKE) -C "./backend/" create-site-monolingual + +.PHONY: create-site-multilingual +create-site-multilingual: + $(MAKE) -C "./backend/" create-site-multilingual + +.PHONY: dev-index-start-monolingual +dev-index-start-monolingual: ## Start index dev server monolingual export INDEX_PASSWORD=paraDiesli,17 export PLONE_PASSWORD=admin export PLONE_SITE_PREFIX_PATH=Plone - $(MAKE) -C "./backend/" dev-backend-start-multilingual + $(MAKE) -C "./backend/" dev-index-start-monolingual + +.PHONY: dev-index-start-multilingual +dev-index-start-multilingual: ## Start index dev server multilingual + export INDEX_PASSWORD=paraDiesli,17 + export PLONE_PASSWORD=admin + export PLONE_SITE_PREFIX_PATH=Multilingual + $(MAKE) -C "./backend/" dev-index-start-multilingual ########################################### @@ -70,8 +94,8 @@ start-monolingual: ## Same as `make start` but with language 'de' ADDONS=testing-volto-searchkit-block:monolingualFixture pnpm start .PHONY: start -start-multilingual: ## Same as `make start` but with language 'de' and multi lingual - ADDONS=testing-volto-searchkit-block:multilingualFixture pnpm start +start-multilingual: ## Same as `make start` but with language 'de' and multilingual + ADDONS=testing-volto-searchkit-block:multilingualFixture RAZZLE_DEV_PROXY_API_PATH=http://127.0.0.1:8080/Multilingual pnpm start .PHONY: build build: ## Build a production bundle for distribution of the project with the add-on @@ -124,17 +148,17 @@ ci-test: ## Run unit tests in CI VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests -## Storybook -.PHONY: storybook-start -storybook-start: ## Start Storybook server on port 6006 - @echo "$(GREEN)==> Start Storybook$(RESET)" - pnpm run storybook - -.PHONY: storybook-build -storybook-build: ## Build Storybook - @echo "$(GREEN)==> Build Storybook$(RESET)" - mkdir -p $(CURRENT_DIR)/.storybook-build - pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build +# ## Storybook +# .PHONY: storybook-start +# storybook-start: ## Start Storybook server on port 6006 +# @echo "$(GREEN)==> Start Storybook$(RESET)" +# pnpm run storybook + +# .PHONY: storybook-build +# storybook-build: ## Build Storybook +# @echo "$(GREEN)==> Build Storybook$(RESET)" +# mkdir -p $(CURRENT_DIR)/.storybook-build +# pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build ########################################### diff --git a/backend/.dev-env b/backend/.dev-env new file mode 100644 index 00000000..5c923afc --- /dev/null +++ b/backend/.dev-env @@ -0,0 +1,16 @@ +export INDEX_SERVER=localhost:9200 +export INDEX_NAME=plone +export INDEX_OPENSEARCH=1 +export INDEX_USE_SSL=1 +export INDEX_LOGIN=admin + +export CELERY_BROKER=redis://localhost:6379/0 +export CELERY_LOGLEVEL=info + +export PLONE_SITE_PREFIX_PATH=plone +export PLONE_USER=admin + +export MAPPINGS_FILE=opensearch/ingest-configuration/mappings.json +export ANALYSIS_FILE=opensearch/ingest-configuration/analysis.json +export PREPROCESSINGS_FILE=opensearch/ingest-configuration/preprocessings.json + diff --git a/backend/dockerfiles/.env b/backend/.env similarity index 62% rename from backend/dockerfiles/.env rename to backend/.env index e2cc5dfa..99c36ec2 100644 --- a/backend/dockerfiles/.env +++ b/backend/.env @@ -10,6 +10,6 @@ export CELERY_LOGLEVEL=info export PLONE_SITE_PREFIX_PATH=plone export PLONE_USER=admin -export MAPPINGS_FILE=/configuration/mappings.json -export ANALYSIS_FILE=/configuration/analysis.json -export PREPROCESSINGS_FILE=/configuration/preprocessings.json +export MAPPINGS_FILE=configuration/mappings.json +export ANALYSIS_FILE=configuration/analysis.json +export PREPROCESSINGS_FILE=configuration/preprocessings.json diff --git a/backend/dockerfiles/backend/Dockerfile.acceptance b/backend/Dockerfile.acceptance similarity index 98% rename from backend/dockerfiles/backend/Dockerfile.acceptance rename to backend/Dockerfile.acceptance index 7a314d98..54154fe9 100644 --- a/backend/dockerfiles/backend/Dockerfile.acceptance +++ b/backend/Dockerfile.acceptance @@ -10,7 +10,7 @@ FROM plone/server-builder:${PLONE_VERSION} AS builder WORKDIR /app # # Add local code -COPY backend . +COPY . . # Install local requirements RUN < Setup Virtual Env$(RESET)" + $(PYTHON) -m venv $(VENV_FOLDER) + $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" + if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi + +instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration + @echo "$(GREEN)==> Create instance configuration$(RESET)" + $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance + +.PHONY: config +config: instance/etc/zope.ini + +.PHONY: build-dev +build-dev: config ## Install Plone packages + @echo "$(GREEN)==> Setup Build$(RESET)" + $(BIN_FOLDER)/mxdev -c mx.ini + $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt + +.PHONY: install +install: build-dev ## Install Plone + +.PHONY: build +build: build-dev ## Install Plone + +.PHONY: clean +clean: ## Clean environment + @echo "$(RED)==> Cleaning environment and build$(RESET)" + rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache + +.PHONY: start +start: ## Start a Plone instance on localhost:8080 + source .dev-env + PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini + +.PHONY: console +console: instance/etc/zope.ini ## Start a console into a Plone instance + source .dev-env + PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf + +.PHONY: create-site-monolingual +create-site-monolingual: instance/etc/zope.ini ## Create a new site from scratch + DELETE_EXISTING=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site_cookieplone_example_content.py + +.PHONY: create-site-multilingual +create-site-multilingual: instance/etc/zope.ini ## Create a new site from scratch + DELETE_EXISTING=true ISMULTILINGUAL=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site_cookieplone_example_content.py + +.PHONY: dev-index-start-monolingual +dev-index-start-monolingual: ## Start dev containers (OpenSearch, ingest, etc.) ${DEV_COMPOSE_MONOLINGUAL} --profile monolingual up -d --force-recreate -.PHONY: dev-backend-start-multilingual -dev-backend-start-multilingual: ## Start dev containers (backend and OpenSearch) +.PHONY: dev-index-start-multilingual +dev-index-start-multilingual: ## Start dev containers (OpenSearch, ingest, etc.) ${DEV_COMPOSE_MULTILINGUAL} --profile multilingual up -d --force-recreate # ######################################################################## diff --git a/backend/dockerfiles/backend/collective.elastic.plone-configure.zcml b/backend/collective.elastic.plone-configure.zcml similarity index 100% rename from backend/dockerfiles/backend/collective.elastic.plone-configure.zcml rename to backend/collective.elastic.plone-configure.zcml diff --git a/backend/dockerfiles/backend/constraints-mxdev.txt b/backend/constraints-mxdev.txt similarity index 100% rename from backend/dockerfiles/backend/constraints-mxdev.txt rename to backend/constraints-mxdev.txt diff --git a/backend/dockerfiles/backend/constraints.txt b/backend/constraints.txt similarity index 100% rename from backend/dockerfiles/backend/constraints.txt rename to backend/constraints.txt diff --git a/backend/dockerfiles/docker-compose-acceptance.yml b/backend/docker-compose-acceptance.yml similarity index 97% rename from backend/dockerfiles/docker-compose-acceptance.yml rename to backend/docker-compose-acceptance.yml index ff6c133a..7f9c2a87 100644 --- a/backend/dockerfiles/docker-compose-acceptance.yml +++ b/backend/docker-compose-acceptance.yml @@ -2,7 +2,7 @@ services: backend-acceptance: build: context: ./ - dockerfile: ./backend/Dockerfile.acceptance + dockerfile: ./Dockerfile.acceptance args: PLONE_VERSION: ${PLONE_VERSION:-6.0} environment: @@ -27,7 +27,7 @@ services: backend-acceptance-multilingual: build: context: ./ - dockerfile: ./backend/Dockerfile.acceptance.multilingual + dockerfile: ./Dockerfile.acceptance.multilingual args: PLONE_VERSION: ${PLONE_VERSION:-6.0} environment: diff --git a/backend/dockerfiles/docker-compose-dev.yml b/backend/docker-compose-dev.yml similarity index 61% rename from backend/dockerfiles/docker-compose-dev.yml rename to backend/docker-compose-dev.yml index fe14e91c..9caf6fe9 100644 --- a/backend/dockerfiles/docker-compose-dev.yml +++ b/backend/docker-compose-dev.yml @@ -1,49 +1,4 @@ services: - backend-dev: - build: - context: ./ - dockerfile: ./backend/Dockerfile.dev.monolingual - args: - PLONE_VERSION: ${PLONE_VERSION:-6.0} - environment: - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_NAME: ${INDEX_NAME?unset} - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - CELERY_BROKER: ${CELERY_BROKER?unset} - CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' - # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex - INSTALL_PRODUCTS: 'collective.elastic.plone' - ports: - - 8080:8080 - profiles: - - dev - - monolingual - - backend-dev-multilingual: - build: - context: ./ - dockerfile: ./backend/Dockerfile.dev.multilingual - args: - PLONE_VERSION: ${PLONE_VERSION:-6.0} - environment: - INDEX_SERVER: ${INDEX_SERVER?unset} - INDEX_NAME: multilingual - INDEX_OPENSEARCH: ${INDEX_OPENSEARCH?unset} - INDEX_USE_SSL: ${INDEX_USE_SSL?unset} - INDEX_LOGIN: ${INDEX_LOGIN?unset} - INDEX_PASSWORD: ${INDEX_PASSWORD?unset} - CELERY_BROKER: ${CELERY_BROKER?unset} - CONFIGURE_PACKAGES: 'plone.restapi,plone.volto,plone.volto.cors,collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' - # Run initialize of collective.elastic.plone to register ElasticSearchProxyIndex - INSTALL_PRODUCTS: 'collective.elastic.plone' - ports: - - 8080:8080 - profiles: - - multilingual - ingest: image: ghcr.io/collective/collective.elastic.ingest:latest environment: @@ -59,7 +14,7 @@ services: CELERY_BROKER: ${CELERY_BROKER?unset} CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} CELERY_LOGLEVEL: ${CELERY_LOGLEVEL:-info} - PLONE_SERVICE: http://backend-dev:8080 + PLONE_SERVICE: http://host.docker.internal:8080 PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} PLONE_USER: ${PLONE_USER?unset} PLONE_PASSWORD: ${PLONE_PASSWORD?unset} @@ -87,8 +42,8 @@ services: CELERY_BROKER: ${CELERY_BROKER?unset} CELERY_CONCURRENCY: ${CELERY_CONCURRENCY:-1} CELERY_LOGLEVEL: ${CELERY_LOGLEVEL:-info} - PLONE_SERVICE: http://backend-dev-multilingual:8080 - PLONE_SITE_PREFIX_PATH: ${PLONE_SITE_PREFIX_PATH?unset} + PLONE_SERVICE: http://host.docker.internal:8080 + PLONE_SITE_PREFIX_PATH: Multilingual PLONE_USER: ${PLONE_USER?unset} PLONE_PASSWORD: ${PLONE_PASSWORD?unset} SENTRY_DSN: ${SENTRY_DSN} diff --git a/backend/dockerfiles/backend/Dockerfile.dev.monolingual b/backend/dockerfiles/backend/Dockerfile.dev.monolingual deleted file mode 100644 index 586820d0..00000000 --- a/backend/dockerfiles/backend/Dockerfile.dev.monolingual +++ /dev/null @@ -1,50 +0,0 @@ -# syntax=docker/dockerfile:1 -# The language is set here: -# PROFILES …:monolingual -ARG SEED=1000 -ARG PLONE_VERSION=6.0 -FROM plone/plone-backend:${PLONE_VERSION} - - -LABEL maintainer="Plone Foundation " \ - org.label-schema.name="searchkit-backend" \ - org.label-schema.description="searchkit backend image." \ - org.label-schema.vendor="Rohberg" - -# Add local code -COPY backend . - -# # Install local requirements and fix permissions -# RUN <= tuple(map(int, '$(PYTHON_VERSION_MIN)'.split('.'))))") -ifeq ($(PYTHON_VERSION_OK),0) - $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)") -endif - -PLONE_SITE_ID=Plone -BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) -PLONE_VERSION=$(shell cat $(BACKEND_FOLDER)/version.txt) -EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/project/title/setuphandlers/examplecontent - -GIT_FOLDER=$(BACKEND_FOLDER)/.git -VENV_FOLDER=$(BACKEND_FOLDER)/.venv -BIN_FOLDER=$(VENV_FOLDER)/bin - - -all: build - -# Add the following 'help' target to your Makefile -# And add help text after each target name starting with '\#\#' -.PHONY: help -help: ## This help message - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' - -$(BIN_FOLDER)/pip $(BIN_FOLDER)/tox $(BIN_FOLDER)/pipx $(BIN_FOLDER)/uv $(BIN_FOLDER)/mxdev: - @echo "$(GREEN)==> Setup Virtual Env$(RESET)" - $(PYTHON) -m venv $(VENV_FOLDER) - $(BIN_FOLDER)/pip install -U "pip" "uv" "wheel" "pipx" "mxdev" "tox" "pre-commit" - if [ -d $(GIT_FOLDER) ]; then $(BIN_FOLDER)/pre-commit install; else echo "$(RED) Not installing pre-commit$(RESET)";fi - -instance/etc/zope.ini: $(BIN_FOLDER)/pip ## Create instance configuration - @echo "$(GREEN)==> Create instance configuration$(RESET)" - $(BIN_FOLDER)/pipx run cookiecutter -f --no-input --config-file instance.yaml gh:plone/cookiecutter-zope-instance - -.PHONY: config -config: instance/etc/zope.ini - -.PHONY: build-dev -build-dev: config ## Install Plone packages - @echo "$(GREEN)==> Setup Build$(RESET)" - $(BIN_FOLDER)/mxdev -c mx.ini - $(BIN_FOLDER)/uv pip install -r requirements-mxdev.txt - -.PHONY: install -install: build-dev ## Install Plone - -.PHONY: build -build: build-dev ## Install Plone - -.PHONY: clean -clean: ## Clean environment - @echo "$(RED)==> Cleaning environment and build$(RESET)" - rm -rf $(VENV_FOLDER) pyvenv.cfg .installed.cfg instance .tox .venv .pytest_cache - -.PHONY: start -start: ## Start a Plone instance on localhost:8080 - PYTHONWARNINGS=ignore $(BIN_FOLDER)/runwsgi instance/etc/zope.ini - -.PHONY: console -console: instance/etc/zope.ini ## Start a console into a Plone instance - PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf diff --git a/backend/dockerfiles/backend/instance.yaml b/backend/dockerfiles/backend/instance.yaml deleted file mode 100644 index 99ba2b06..00000000 --- a/backend/dockerfiles/backend/instance.yaml +++ /dev/null @@ -1,3 +0,0 @@ -default_context: - initial_user_password: 'admin' - zcml_package_includes: 'rohberg.voltosearchkitblocktestingprofiles' \ No newline at end of file diff --git a/backend/dockerfiles/backend/requirements-mxdev.txt b/backend/dockerfiles/backend/requirements-mxdev.txt deleted file mode 100644 index 3d4df43e..00000000 --- a/backend/dockerfiles/backend/requirements-mxdev.txt +++ /dev/null @@ -1,7 +0,0 @@ -############################################################################### -# mxdev combined constraints --c constraints-mxdev.txt - -############################################################################### -# main package --e sources/rohberg.voltosearchkitblocktestingprofiles diff --git a/backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py b/backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py deleted file mode 100644 index 267facab..00000000 --- a/backend/dockerfiles/backend/scripts/create_site_cookieplone_example_content.py +++ /dev/null @@ -1,70 +0,0 @@ -from AccessControl.SecurityManagement import newSecurityManager -from Products.CMFPlone.factory import _DEFAULT_PROFILE -from Products.CMFPlone.factory import addPloneSite -from Products.GenericSetup.tool import SetupTool -from rohberg.voltosearchkitblocktestingprofiles.interfaces import IBrowserLayer -from Testing.makerequest import makerequest -from zope.interface import directlyProvidedBy -from zope.interface import directlyProvides - -import os -import transaction - - -truthy = frozenset(("t", "true", "y", "yes", "on", "1")) - - -def asbool(s): - """Return the boolean value ``True`` if the case-lowered value of string - input ``s`` is a :term:`truthy string`. If ``s`` is already one of the - boolean values ``True`` or ``False``, return it.""" - if s is None: - return False - if isinstance(s, bool): - return s - s = str(s).strip() - return s.lower() in truthy - - -DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) -# EXAMPLE_CONTENT = asbool( -# os.getenv("EXAMPLE_CONTENT", "1") -# ) # Create example content by default - -app = makerequest(globals()["app"]) - -request = app.REQUEST - -ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) - -directlyProvides(request, *ifaces) - -admin = app.acl_users.getUserById("admin") -admin = admin.__of__(app.acl_users) -newSecurityManager(None, admin) - -site_id = "Plone" -payload = { - "title": "Project Title", - "profile_id": _DEFAULT_PROFILE, - # "extension_ids": [ - # "project.title:default", - # ], - "setup_content": False, - "default_language": "en", - "portal_timezone": "UTC", -} - -if site_id in app.objectIds() and DELETE_EXISTING: - app.manage_delObjects([site_id]) - transaction.commit() - app._p_jar.sync() - -if site_id not in app.objectIds(): - site = addPloneSite(app, site_id, **payload) - transaction.commit() - # if EXAMPLE_CONTENT: - # portal_setup: SetupTool = site.portal_setup - # portal_setup.runAllImportStepsFromProfile("project.title:initial") - # transaction.commit() - app._p_jar.sync() diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc b/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index a34eaaaf8c9f1572f7379799874cb3fcddf8643e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 942 zcmah{KX2496n{=~N4fUOp9LWS%2bh|$%+uLAQd{as)S&;#mYJFuI@Q@YCA|h7KRRd zgMJ3okHW|nsS^|1RW~4Y!oJ*9bf~bDU*3EEJ-@#{`u!fb^QFHv-Xj3Nys|o-r7+)d z!Wk4$5CJ6_5aQ)P1Z6k~2?T&4l5^+nPXOR=v1@a)p7 Hi_HE4ufPqX diff --git a/backend/instance.yaml b/backend/instance.yaml new file mode 100644 index 00000000..22f9d9d2 --- /dev/null +++ b/backend/instance.yaml @@ -0,0 +1,3 @@ +default_context: + initial_user_password: 'admin' + zcml_package_includes: 'collective.elastic.plone,rohberg.voltosearchkitblocktestingprofiles' \ No newline at end of file diff --git a/backend/dockerfiles/backend/mx.ini b/backend/mx.ini similarity index 61% rename from backend/dockerfiles/backend/mx.ini rename to backend/mx.ini index 65d56400..8c57cb0a 100644 --- a/backend/dockerfiles/backend/mx.ini +++ b/backend/mx.ini @@ -16,3 +16,15 @@ main-package = -e sources/rohberg.voltosearchkitblocktestingprofiles ; pushurl = git@github.com:collective/example.contenttype.git ; extras = test ; branch = feature-7 + +[collective.elastic.plone] +url = https://github.com/collective/collective.elastic.plone.git +pushurl = git@github.com:collective/collective.elastic.plone.git +extras = test,redis,opensearch +branch = main + +[collective.elastic.ingest] +url = https://github.com/collective/collective.elastic.ingest.git +pushurl = git@github.com:collective/collective.elastic.ingest.git +extras = test,redis,opensearch +branch = main diff --git a/backend/dockerfiles/opensearch/Dockerfile.opensearch b/backend/opensearch/Dockerfile.opensearch similarity index 100% rename from backend/dockerfiles/opensearch/Dockerfile.opensearch rename to backend/opensearch/Dockerfile.opensearch diff --git a/backend/dockerfiles/opensearch/README.md b/backend/opensearch/README.md similarity index 100% rename from backend/dockerfiles/opensearch/README.md rename to backend/opensearch/README.md diff --git a/backend/dockerfiles/opensearch/ingest-configuration/analysis.json b/backend/opensearch/ingest-configuration/analysis.json similarity index 100% rename from backend/dockerfiles/opensearch/ingest-configuration/analysis.json rename to backend/opensearch/ingest-configuration/analysis.json diff --git a/backend/dockerfiles/opensearch/ingest-configuration/mappings.json b/backend/opensearch/ingest-configuration/mappings.json similarity index 100% rename from backend/dockerfiles/opensearch/ingest-configuration/mappings.json rename to backend/opensearch/ingest-configuration/mappings.json diff --git a/backend/dockerfiles/opensearch/ingest-configuration/preprocessings.json b/backend/opensearch/ingest-configuration/preprocessings.json similarity index 100% rename from backend/dockerfiles/opensearch/ingest-configuration/preprocessings.json rename to backend/opensearch/ingest-configuration/preprocessings.json diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/keywords.txt b/backend/opensearch/opensearch-configuration/keywords.txt similarity index 100% rename from backend/dockerfiles/opensearch/opensearch-configuration/keywords.txt rename to backend/opensearch/opensearch-configuration/keywords.txt diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/keywords_english.txt b/backend/opensearch/opensearch-configuration/keywords_english.txt similarity index 100% rename from backend/dockerfiles/opensearch/opensearch-configuration/keywords_english.txt rename to backend/opensearch/opensearch-configuration/keywords_english.txt diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/lexicon.txt b/backend/opensearch/opensearch-configuration/lexicon.txt similarity index 100% rename from backend/dockerfiles/opensearch/opensearch-configuration/lexicon.txt rename to backend/opensearch/opensearch-configuration/lexicon.txt diff --git a/backend/dockerfiles/opensearch/opensearch-configuration/lexicon_english.txt b/backend/opensearch/opensearch-configuration/lexicon_english.txt similarity index 100% rename from backend/dockerfiles/opensearch/opensearch-configuration/lexicon_english.txt rename to backend/opensearch/opensearch-configuration/lexicon_english.txt diff --git a/backend/dockerfiles/backend/requirements-docker.txt b/backend/requirements-docker.txt similarity index 100% rename from backend/dockerfiles/backend/requirements-docker.txt rename to backend/requirements-docker.txt diff --git a/backend/requirements-mxdev.txt b/backend/requirements-mxdev.txt new file mode 100644 index 00000000..295532be --- /dev/null +++ b/backend/requirements-mxdev.txt @@ -0,0 +1,21 @@ +############################################################################### +# mxdev combined constraints +-c constraints-mxdev.txt + +############################################################################### +# mxdev development sources +-e ./sources/collective.elastic.plone[test,redis,opensearch] +-e ./sources/collective.elastic.ingest[test,redis,opensearch] + + +############################################################################### +# begin requirements from: requirements.txt + + +elasticsearch + +# end requirements from: requirements.txt +############################################################################### +############################################################################### +# main package +-e sources/rohberg.voltosearchkitblocktestingprofiles diff --git a/backend/dockerfiles/backend/requirements.txt b/backend/requirements.txt similarity index 55% rename from backend/dockerfiles/backend/requirements.txt rename to backend/requirements.txt index da443200..80910eb6 100644 --- a/backend/dockerfiles/backend/requirements.txt +++ b/backend/requirements.txt @@ -1 +1,3 @@ -c constraints.txt + +elasticsearch diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/README.md diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt similarity index 76% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt index 96df331f..bbaa1450 100644 --- a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt @@ -9,4 +9,6 @@ src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt -src/rohberg/voltosearchkitblocktestingprofiles/__init__.py \ No newline at end of file +src/rohberg/voltosearchkitblocktestingprofiles/__init__.py +src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py +src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py \ No newline at end of file diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/dependency_links.txt diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/entry_points.txt diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/namespace_packages.txt diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/not-zip-safe diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/__init__.py diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__init__.py diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/interfaces.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/interfaces.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9adfbc1528cdda90e2cfe50f2321944f901005d2 GIT binary patch literal 701 zcmaJezw6t?fuw3G%hbYL_KB8c9tMM51aBvgqa24Kiy`Rtd(oMRuhFD04#ANm_A zehLeW+=>|3kOE65?7M_^0T0jLv!B2B`MvjPFxW+5y?*sz@+0iuqO)0BYp{A0zy%U$ zgaj6e!n0(QV3eTeNTlaT^dR||cCn*$u{G>34^NG#6_B$jSRhO(BDDuQW*ppO0&~#b z5vB!!4;(5ljdn!IIb=}-8scXEQ+ODWf4T7%xGK+?m>jGUnDy3$T-{rT)v@5_@o7>PcnISgH`}EZ>B8iT)pc z-K(rx*f<5P=?CDVcaECgp}oC154Ezlg45hznhLV2E|hek@!1WYb#-kVla4WtUB|H( q(ACb;rtzfsuRmwy0Ta?@Y{ literal 0 HcmV?d00001 diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/configure.zcml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/browserlayer.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/catalog.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/controlpanel.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/diff_tool.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/metadata.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/registry/.gitkeep diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/repositorytool.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/rolemap.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/theme.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/default/types/.gitkeep diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/metadata.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/monolingual/registry.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/metadata.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/registry.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/uninstall/browserlayer.xml diff --git a/backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py similarity index 100% rename from backend/dockerfiles/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py rename to backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..97fbe09e26a38c758347a72c06c376de25ce6c8b GIT binary patch literal 1521 zcma)6Pj4GV6rb5$|J&4Qf~cBGP^|n9{`oIy^cv+9rZ+_-r{dMih*j{7Ixb!d5IpXnmMS8$#1BpVhX z-%m6HMV*V`kV%j(@9v3gH&Z&~JnVB+Hik^k?N*XB=PYHJW-^*5GJo@O$m}IJo)SiS zG$uVOrci=?WOeLv^`j(?S$1EFLBg4e79Qx1vJJmk6Bx9I4(UGWSmWE^!@MF(s(QS< za`pyNq@IG(wW)Hv7^*_4?q`B)(S3+~Td`0^2ctx9_qm8hK^R3W*I^d1=NLpnj1rb}k+E(+ zj7BVryGj%?VyY{}L7&N?Z$d94o4}eW4O5vvQgxM#7Uor=7ntL051o{dI2(mC`K~TCu zkcznAC|?SK2LQB6BUiyzt{}UNtc|R-U^so%0CqxVj#G0h8&sb|ivt%1EgFPVqL)Zo zK>rK+h#sQF1=5Q(TrSCCjVRHW*U%xBae-p`uO*^+{O0=uSOISiwhDr>$UKEZ@U-v@ zFqwDvlN|%iySqF7_=bUmALhBA{$~fhNWea2dhQeZd!3rZ^2?S9hr1{1aF+P;(n+#` z=vbwrh2W)YOahb@egQnsG_`D+@#kSGH{ccrr)~f{CV#ANK3?BC{`ePX^@+3bqqFht z)o-r-DL%R4`;z4Nnk({z5XbE$m&*(LjZDL#jl@lE!s*f;(^w5x}_0w|1& zNGtz?dpq}WTl@q+EQ1ghMdGZ=m&YP!ek9Tyw3+q~V6&9zMY(EJO9zSbtDuArzJRf( z&07^9-;>uti-=Kg0h`*C(h1p_klPdT_JnLr$mU;lVzs{x9@AI-rRr Lvo(jlYufV<{Gg)w literal 0 HcmV?d00001 From 6b43b415a6c04590c5ee028ff4a8c817c4da418d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:31:56 +0100 Subject: [PATCH 83/98] Update .gitignore --- .gitignore | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 27df0725..bc72f47d 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,7 @@ results yarn.lock /public cypress/screenshots/* -backend/dockerfiles/backend/.venv/ -backend/dockerfiles/backend/instance/ +backend/.venv/ +backend/instance/ +backend/sources/collective.elastic.plone/ +backend/sources/collective.elastic.ingest/ From 6505eef9607f947f905c4749cd85bcc12dc55bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:32:03 +0100 Subject: [PATCH 84/98] Update README.md --- README.md | 124 +++++++++++++++++++++++++++++++++++------------------- 1 file changed, 80 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 52a3d2dd..0082fb4d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Searchkit Block (@rohberg/volto-searchkit-block) -Searching with OpenSearch +Searching with OpenSearch or ElasticSearch [![npm](https://img.shields.io/npm/v/@rohberg/volto-searchkit-block)](https://www.npmjs.com/package/@rohberg/volto-searchkit-block) [![Acceptance tests multilingual](https://github.com/rohberg/volto-searchkit-block/actions/workflows/acceptance_multilingual.yml/badge.svg)](https://github.com/rohberg/volto-searchkit-block/actions/workflows/acceptance_multilingual.yml) @@ -32,68 +32,73 @@ The block is prepared for Matomo analytics. ## Installation -To install your project, you must choose the method appropriate to your version of Volto. +### Plone backend +TODO backend instructions -### Volto 17 and earlier +### OpenSearch / ElasticSearch -Create a new Volto project (you can skip this step if you already have one): +TODO OpenSearch -``` -npm install -g yo @plone/generator-volto -yo @plone/volto my-volto-project --addon volto-searchkit-block -cd my-volto-project -``` - -Add `volto-searchkit-block` to your package.json: +### Volto frontend -```JSON -"addons": [ - "volto-searchkit-block" -], +Add `volto-searchkit-block` to your `package.json`: +```json "dependencies": { - "volto-searchkit-block": "*" + "@rohberg/volto-searchkit-block": "^2.0.0" } ``` -Download and install the new add-on by running: +Add `@rohberg/volto-searchkit-block` to your `volto.config.js`: -``` -yarn install +```javascript +const addons = ['@rohberg/volto-searchkit-block']; ``` -Start volto with: +### Configuration of the search block -``` -yarn start -``` +TODO Configuration of the search block -### Volto 18 and later +## Demo -Add `volto-searchkit-block` to your `package.json`: +TODO demo -```json -"dependencies": { - "volto-searchkit-block": "*" -} -``` +Visit http://localhost:3000/ in a browser, login, and check the awesome new features. -Add `volto-searchkit-block` to your `volto.config.js`: +## User instructions -```javascript -const addons = ['volto-searchkit-block']; -``` +The search is a fuzzy search, that means typos are compensated. +Approximate matches and inflections are found. -## Test installation +To force the match of a search string, precede it with "+". +To exclude matches of a search string, precede it with "-". -Visit http://localhost:3000/ in a browser, login, and check the awesome new features. +Use wildcards to find matches of words that complement the search string. + +For exact matches of a search string embrace it with quotation marks. + +A search for a word with hyphen is equivalent to a search for the word and the parts of it. +Example: A search for "LSR-Lehrbetrieb" is equivalent to a search for "LSR-Lehrbetrieb LSR Lehrbetrieb" + +Words with hyphen are matched by searches for part of the words. +Example: "LSR-Lehrbetrieb" is found by a search for "LSR". + +### Multiple search strings + +Search results include at least one of the search strings. +# Panel for testing matches + +You can test search results on a test panel: `/controlpanel/test-searchkit-querystrings` + +Please update the settings according to your deployment: `/controlpanel/volto_searchkit_block_control_panel` + ## Development The development of this add-on is done in isolation using a new approach using pnpm workspaces and latest `mrs-developer` and other Volto core improvements. -For this reason, it only works with pnpm and Volto 18 (currently in alpha). +For this reason, it only works with pnpm and Volto 18. ### Pre-requisites @@ -110,9 +115,11 @@ Run `make help` to list the available commands. ```text help Show this help dev-backend-start-monolingual Start backend dev server -dev-backend-start-multilingual Start backend dev server +dev-backend-start-multilingual Start backend dev server with two languages install Installs the add-on in a development environment start Starts Volto, allowing reloading of the add-on during development +start-monolingual Same as `make start` but with language 'de' +start-multilingual Same as `make start` but with language 'de' and multi lingual build Build a production bundle for distribution of the project with the add-on build-deps Build dependencies i18n Sync i18n @@ -123,8 +130,6 @@ release Release the add-on on npmjs.org release-dry-run Dry-run the release of the add-on on npmjs.org test Run unit tests ci-test Run unit tests in CI -storybook-start Start Storybook server on port 6006 -storybook-build Build Storybook acceptance-frontend-dev-start-monolingual Start acceptance frontend in development mode acceptance-frontend-prod-start-monolingual Start acceptance frontend in production mode acceptance-backend-start-monolingual Start backend acceptance server @@ -141,9 +146,16 @@ ci-acceptance-test-multilingual Run cypress tests in headless mode ### Development environment set up -TODO Development environment set up. backend, frontend +It's recommended to start three individual terminal sessions, one each for running the Plone backend, the Volto frontend, and the index server. +All sessions should start from the root directory. + +Install backend. + +```shell +make dev-backend-install +``` -Install package requirements. +Install the frontend. ```shell make install @@ -154,13 +166,37 @@ make install Start the backend. ```shell -make backend-docker-start +make dev-backend-start +``` + +Create a site. + +```shell +make create-site-monolingual +``` + +or create a multilingual site: + +```shell +make create-site-multilingual +``` + +Start the index server. + +```shell +make dev-index-start-monolingual ``` In a separate terminal session, start the frontend. ```shell -make start +make start-monolingual +``` + +or start multilingual: + +```shell +make start-multilingual ``` ### Lint code From f8b159e18c4177da99f0e08d56bdbcbc1c8cfef8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:32:08 +0100 Subject: [PATCH 85/98] Delete CHANGES.md --- backend/CHANGES.md | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 backend/CHANGES.md diff --git a/backend/CHANGES.md b/backend/CHANGES.md deleted file mode 100644 index 3020bae6..00000000 --- a/backend/CHANGES.md +++ /dev/null @@ -1,10 +0,0 @@ -# Changelog - - - - From 91e2e5e80322e78516cbc8fabd213e7a02de742a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:32:40 +0100 Subject: [PATCH 86/98] create_site script with monolingual/multilingual --- ...create_site_cookieplone_example_content.py | 77 +++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 backend/scripts/create_site_cookieplone_example_content.py diff --git a/backend/scripts/create_site_cookieplone_example_content.py b/backend/scripts/create_site_cookieplone_example_content.py new file mode 100644 index 00000000..cc430371 --- /dev/null +++ b/backend/scripts/create_site_cookieplone_example_content.py @@ -0,0 +1,77 @@ +from AccessControl.SecurityManagement import newSecurityManager +from Products.CMFPlone.factory import _DEFAULT_PROFILE +from Products.CMFPlone.factory import addPloneSite +from Products.GenericSetup.tool import SetupTool +from rohberg.voltosearchkitblocktestingprofiles.interfaces import IBrowserLayer +from Testing.makerequest import makerequest +from zope.interface import directlyProvidedBy +from zope.interface import directlyProvides + +import os +import transaction + + +truthy = frozenset(("t", "true", "y", "yes", "on", "1")) + + +def asbool(s): + """Return the boolean value ``True`` if the case-lowered value of string + input ``s`` is a :term:`truthy string`. If ``s`` is already one of the + boolean values ``True`` or ``False``, return it.""" + if s is None: + return False + if isinstance(s, bool): + return s + s = str(s).strip() + return s.lower() in truthy + + +DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) +# EXAMPLE_CONTENT = asbool( +# os.getenv("EXAMPLE_CONTENT", "1") +# ) # Create example content by default + +app = makerequest(globals()["app"]) + +request = app.REQUEST + +ifaces = [IBrowserLayer] + list(directlyProvidedBy(request)) + +directlyProvides(request, *ifaces) + +admin = app.acl_users.getUserById("admin") +admin = admin.__of__(app.acl_users) +newSecurityManager(None, admin) + +payload = { + "title": "Project Title", + "profile_id": _DEFAULT_PROFILE, + "extension_ids": [ + "collective.elastic.plone:default", + ], + "setup_content": False, + "portal_timezone": "UTC", +} +ISMULTILINGUAL = asbool(os.getenv("ISMULTILINGUAL")) +if ISMULTILINGUAL: + site_id = "Multilingual" + payload["extension_ids"].append( + "rohberg.voltosearchkitblocktestingprofiles:multilingual") +else: + site_id = "Plone" + payload["extension_ids"].append( + "rohberg.voltosearchkitblocktestingprofiles:monolingual") + +if site_id in app.objectIds() and DELETE_EXISTING: + app.manage_delObjects([site_id]) + transaction.commit() + app._p_jar.sync() + +if site_id not in app.objectIds(): + site = addPloneSite(app, site_id, **payload) + transaction.commit() + # if EXAMPLE_CONTENT: + # portal_setup: SetupTool = site.portal_setup + # portal_setup.runAllImportStepsFromProfile("project.title:initial") + # transaction.commit() + app._p_jar.sync() From 6e36fd4bc60a7fe79fa3defa354e6bf4dc67b631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:32:46 +0100 Subject: [PATCH 87/98] Update multilingual.search.cy.js --- cypress/tests/multilingual/multilingual.search.cy.js | 1 - 1 file changed, 1 deletion(-) diff --git a/cypress/tests/multilingual/multilingual.search.cy.js b/cypress/tests/multilingual/multilingual.search.cy.js index 7dd693cf..98fa2054 100644 --- a/cypress/tests/multilingual/multilingual.search.cy.js +++ b/cypress/tests/multilingual/multilingual.search.cy.js @@ -116,7 +116,6 @@ describe('Searchkit block tests – search -multilingual - fuzzy etc', () => { it('I see all if no filter selected', function () { cy.get('.block.searchkitsearch').contains('Der Garten im Februar'); - cy.screenshot(); }); it('I can search fuzzy', function () { From 2e914aaadef0c9d5214dd894502243eb8e5198bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Fri, 8 Nov 2024 13:33:25 +0100 Subject: [PATCH 88/98] some comments --- .../src/components/Views/FacetedSearch.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx index d078c701..499aeabb 100644 --- a/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx +++ b/packages/volto-searchkit-block/src/components/Views/FacetedSearch.jsx @@ -73,7 +73,7 @@ const translate = (querystringindexes, fieldname, key) => { return label; }; -// TODO Make reviewstatemapping configurable +// TODO 2nd priority: Make reviewstatemapping configurable export const ploneSearchApi = (data, language) => { const cookies = new Cookies(); const authToken = cookies.get('auth_token'); From ae34abe2e0aa1fe79712f5bbc3793291b4cafe9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 9 Nov 2024 13:05:45 +0100 Subject: [PATCH 89/98] re-enable make commands storybook --- Makefile | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 84d7cf77..48ae9e9b 100644 --- a/Makefile +++ b/Makefile @@ -148,17 +148,17 @@ ci-test: ## Run unit tests in CI VOLTOCONFIG=$(pwd)/volto.config.js pnpm --filter @plone/volto i18n CI=1 RAZZLE_JEST_CONFIG=$(CURRENT_DIR)/jest-addon.config.js pnpm --filter @plone/volto test -- --passWithNoTests -# ## Storybook -# .PHONY: storybook-start -# storybook-start: ## Start Storybook server on port 6006 -# @echo "$(GREEN)==> Start Storybook$(RESET)" -# pnpm run storybook - -# .PHONY: storybook-build -# storybook-build: ## Build Storybook -# @echo "$(GREEN)==> Build Storybook$(RESET)" -# mkdir -p $(CURRENT_DIR)/.storybook-build -# pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build +## Storybook +.PHONY: storybook-start +storybook-start: ## Start Storybook server on port 6006 + @echo "$(GREEN)==> Start Storybook$(RESET)" + pnpm run storybook + +.PHONY: storybook-build +storybook-build: ## Build Storybook + @echo "$(GREEN)==> Build Storybook$(RESET)" + mkdir -p $(CURRENT_DIR)/.storybook-build + pnpm run storybook-build -o $(CURRENT_DIR)/.storybook-build ########################################### From b824579fea05e16d41f39f22ef225f2995b4fd42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 9 Nov 2024 13:11:54 +0100 Subject: [PATCH 90/98] Update .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index bc72f47d..f7d08fcd 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ backend/.venv/ backend/instance/ backend/sources/collective.elastic.plone/ backend/sources/collective.elastic.ingest/ +*.pyc +__pycache__/ From f5ebacde4b5364f6195b93ee4ec2f34ac2058195 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 9 Nov 2024 13:12:02 +0100 Subject: [PATCH 91/98] Update dependencies.zcml --- .../voltosearchkitblocktestingprofiles/dependencies.zcml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml index ce05598e..fad908d4 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/dependencies.zcml @@ -1,7 +1,9 @@ - + From 1964f3cfb6d33b7bef07799a37507b22e0f3e7e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 9 Nov 2024 13:13:50 +0100 Subject: [PATCH 92/98] reduce to profiles monolingual and multilingual. --- .../profiles.zcml | 10 ++++----- .../setuphandlers/__init__.py | 19 ++++++++++-------- .../__pycache__/__init__.cpython-312.pyc | Bin 1521 -> 1714 bytes 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml index 86999937..e1fa0de0 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml @@ -4,9 +4,9 @@ i18n_domain="rohberg.voltosearchkitblocktestingprofiles" > - + /> --> diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py index 8eb1fe9c..b283db4f 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py @@ -1,7 +1,6 @@ -from plone.app.multilingual.browser.setup import SetupMultilingualSite +from plone.app.multilingual.setuphandlers import init_pam from rohberg.voltosearchkitblocktestingprofiles import logger from Products.CMFPlone.interfaces import INonInstallable -from zope.component.hooks import getSite from zope.interface import implementer @@ -10,12 +9,16 @@ class HiddenProfiles: def getNonInstallableProfiles(self): """Hide uninstall profile from site-creation and quickinstaller.""" return [ - "project.title:uninstall", + "rohberg.voltosearchkitblocktestingprofiles:install", + "rohberg.voltosearchkitblocktestingprofiles:uninstall", + "rohberg.voltosearchkitblocktestingprofiles:monolingual", + "rohberg.voltosearchkitblocktestingprofiles:multilingual", ] -def init_pam(tool): - """After installation run setup to create LRF and LIF.""" - setup_tool = SetupMultilingualSite() - setup_tool.setupSite(getSite()) - logger.info("plone.app.multilingual content created.") +def multilingual(tool): + init_pam() + # TODO enable behavior 'volto.blocks' + logger.info( + "rohberg.voltosearchkitblocktestingprofiles:multilingual profile applied." + ) diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc index 97fbe09e26a38c758347a72c06c376de25ce6c8b..db366a01dcf3e4ed616a11af0e79c9b77e397f78 100644 GIT binary patch delta 188 zcmey!y@{9aG%qg~0}$MB)K5Rmypd0jQG^M|Wd`EUAc^S==?p21izfRqy0B=nR2fZH zXVT)b%FHV+NzBQqG68XUtV;7>0%jlqKC9gPy!@QZy!6t@tK){N$vv^h$Y6t KXkEk))Cd4AUocSs delta 143 zcmdnQ`;nXPG%qg~0}$L!R!hImw2@DbQHT-9Wd`EU96(|^LkeU1p8CFK11d#a5%)lh~feFMCU}3Z_;s@#m02Tfr*Z=?k From 402d0e4cb65225cb04d8e9cabb388d772cf755ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sat, 9 Nov 2024 13:14:40 +0100 Subject: [PATCH 93/98] Apply behavior volto.blocks to LRF --- .../profiles/multilingual/types/LRF.xml | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml new file mode 100644 index 00000000..424e8cf6 --- /dev/null +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml @@ -0,0 +1,22 @@ + + + + False + + + + + + + + + + + + From 092a9a8143e52b559dbffd65d75c0e57c9ad2fa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 10 Nov 2024 09:35:44 +0100 Subject: [PATCH 94/98] dev environment: create_site, fix LRF --- Makefile | 8 ++++++-- backend/Makefile | 6 ++++-- ...ite_cookieplone_example_content.py => create_site.py} | 2 +- .../profiles/multilingual/types/LRF.xml | 9 +++++++++ .../setuphandlers/__init__.py | 2 +- 5 files changed, 21 insertions(+), 6 deletions(-) rename backend/scripts/{create_site_cookieplone_example_content.py => create_site.py} (95%) diff --git a/Makefile b/Makefile index 48ae9e9b..eb823c5f 100644 --- a/Makefile +++ b/Makefile @@ -51,11 +51,15 @@ dev-backend-start-multilingual: ## Start Plone $(MAKE) -C "./backend/" start .PHONY: create-site-monolingual -create-site-monolingual: +create-site-monolingual: ## Create monolingual site + export INDEX_NAME=monolingual + export INDEX_PASSWORD=paraDiesli,17 $(MAKE) -C "./backend/" create-site-monolingual .PHONY: create-site-multilingual -create-site-multilingual: +create-site-multilingual: ## Create multilingual site + export INDEX_NAME=multilingual + export INDEX_PASSWORD=paraDiesli,17 $(MAKE) -C "./backend/" create-site-multilingual .PHONY: dev-index-start-monolingual diff --git a/backend/Makefile b/backend/Makefile index f06bc101..a3c9e2db 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -113,11 +113,13 @@ console: instance/etc/zope.ini ## Start a console into a Plone instance .PHONY: create-site-monolingual create-site-monolingual: instance/etc/zope.ini ## Create a new site from scratch - DELETE_EXISTING=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site_cookieplone_example_content.py + source .dev-env + DELETE_EXISTING=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py .PHONY: create-site-multilingual create-site-multilingual: instance/etc/zope.ini ## Create a new site from scratch - DELETE_EXISTING=true ISMULTILINGUAL=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site_cookieplone_example_content.py + source .dev-env + DELETE_EXISTING=true ISMULTILINGUAL=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py .PHONY: dev-index-start-monolingual dev-index-start-monolingual: ## Start dev containers (OpenSearch, ingest, etc.) diff --git a/backend/scripts/create_site_cookieplone_example_content.py b/backend/scripts/create_site.py similarity index 95% rename from backend/scripts/create_site_cookieplone_example_content.py rename to backend/scripts/create_site.py index cc430371..fc810df4 100644 --- a/backend/scripts/create_site_cookieplone_example_content.py +++ b/backend/scripts/create_site.py @@ -72,6 +72,6 @@ def asbool(s): transaction.commit() # if EXAMPLE_CONTENT: # portal_setup: SetupTool = site.portal_setup - # portal_setup.runAllImportStepsFromProfile("project.title:initial") + # portal_setup.runAllImportStepsFromProfile("rohberg.voltosearchkitblocktestingprofiles:initialmultilingual") # transaction.commit() app._p_jar.sync() diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml index 424e8cf6..c6c061c2 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles/multilingual/types/LRF.xml @@ -19,4 +19,13 @@ + folder_listing + + + + + + + + diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py index b283db4f..38a2e9d1 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py @@ -17,7 +17,7 @@ def getNonInstallableProfiles(self): def multilingual(tool): - init_pam() + init_pam(tool) # TODO enable behavior 'volto.blocks' logger.info( "rohberg.voltosearchkitblocktestingprofiles:multilingual profile applied." From a8437cf7558fcfb435ca5e2e81e78b913d4e7c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 10 Nov 2024 09:38:42 +0100 Subject: [PATCH 95/98] remove __pycache__ --- .../__pycache__/__init__.cpython-312.pyc | Bin 519 -> 0 bytes .../__pycache__/interfaces.cpython-312.pyc | Bin 701 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1714 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc delete mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/interfaces.cpython-312.pyc delete mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index a6348354f4a170ceeebd7a490d7d79e716bf50e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 519 zcma)2u}T9$5WTy^#M8u7BBTlyVuWN{!5{<)B5JVF;+o~MJ6aIF=@)NECb9=W=8($U_F`B%}MvHa=KqQ2z^y@Lt2WI&t&x@L7V+8!P_kmUiFeQ z#U;3cv;$wY7$<=Osr=CE3V!Z0kmZFqi!tQ{<2cK>=V>g?oz(XZ>-!DdtRFXG+XHo^ z5fE`EVSsovMv2gPh)yL4i2_%3Tp3A;&Jsa1k*&;iD-&Vt5&~W2h6Mf~5Y7W1x{QZ_ zS}qA7q)0mpKuoO8|0ItD0g3*9C6a>7=u`2zx!*!T82dU{jH}(=c(HcDX~bYxEbE(- q{N=iSK2xS?z8kAUV`Wg-xy}vj;_cd-U3{^N54Bf&^Clx~P5T137^TAi diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/interfaces.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/__pycache__/interfaces.cpython-312.pyc deleted file mode 100644 index 9adfbc1528cdda90e2cfe50f2321944f901005d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 701 zcmaJezw6t?fuw3G%hbYL_KB8c9tMM51aBvgqa24Kiy`Rtd(oMRuhFD04#ANm_A zehLeW+=>|3kOE65?7M_^0T0jLv!B2B`MvjPFxW+5y?*sz@+0iuqO)0BYp{A0zy%U$ zgaj6e!n0(QV3eTeNTlaT^dR||cCn*$u{G>34^NG#6_B$jSRhO(BDDuQW*ppO0&~#b z5vB!!4;(5ljdn!IIb=}-8scXEQ+ODWf4T7%xGK+?m>jGUnDy3$T-{rT)v@5_@o7>PcnISgH`}EZ>B8iT)pc z-K(rx*f<5P=?CDVcaECgp}oC154Ezlg45hznhLV2E|hek@!1WYb#-kVla4WtUB|H( q(ACb;rtzfsuRmwy0Ta?@Y{ diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index db366a01dcf3e4ed616a11af0e79c9b77e397f78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1714 zcmb7E&2QX96rb_h`{8`FMFmm`Doda?Mv5%~qNPxz3MmlUMio(e@Wt}lvm0l}Gw#f| zC>BUTiUj{b4shaz@@H`50xF2gVoz}47T5z)Pt1(%rHNXp8EN0XnfIROef)m&Cw zVj52b;zG8e`6j>C1eR}~B4(ai`OYb#GD>JOf%3{};+`1Y_iCahM|i|lFP+Cz|1L+2 z`;$oQM7-eKzo%;Ub>(aG(${qDVHC$G7ZHikGaO<{Cn?G?CCDE}@dS~?=d@rk;{Nle z>~j{k?)63UM4mPSpDToJ%UNPoN*Jaj6=CS*yVV5=!{gX&u~e=e$Cmd@PlYeOD8(N5 z$F$DcN5C4`Gr0$wu37cNkVF{@!^#fBj3xzE`eGQ~mrSWGY+3rU1trcXv82SH6@97j zo)r6FX7((*_EF|za5v?FhP#l;0T6R4wA}pyehzn($B8A{cLcPa?K=R0Q1|M!qtZCB z68OKTqGS2ijgjQA(?Gsv5G#nI`|k+qXkH=b)~D;5S+_RUz4Ed~gBRtwmpy?*C#Ld2 zAfky$yiM0)D*bApKc^lK)|GpvDzD6xjHqi=rl1s8wsr}X&ec2MIJ&7-Ur#=dGPWX5 z&&wabEX5x9^W3F}=T`SVd1NmCX0H5fu6+CQHy3^}U;Ev(zqT0PcYf1d ztX_Y5%HELC&m>zseS4kk8_$pGx{y~S0FxpX-23qM`W;0SFI6w&D3TmuYF5?xlIF;Z zX_iYX5#F{W71zC}mbGafz|{O|D5-)^VC-@K{Th%Tu#3{F5W}xXanykjPQm&VT%Urg oQ?NP(m;UYoW9jSgA$;{;qYovYqaq&oPXD^xXJ>8!F09au1r~m)} From d34bd86b42928aba5f11394633b5d322943c6ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 10 Nov 2024 15:57:15 +0100 Subject: [PATCH 96/98] Fix .dev-env --- backend/.dev-env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/.dev-env b/backend/.dev-env index 5c923afc..fe38e134 100644 --- a/backend/.dev-env +++ b/backend/.dev-env @@ -1,5 +1,5 @@ export INDEX_SERVER=localhost:9200 -export INDEX_NAME=plone +# export INDEX_NAME=plone export INDEX_OPENSEARCH=1 export INDEX_USE_SSL=1 export INDEX_LOGIN=admin From 381608d088051e7c0c4ddd8e2c841714201f4011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 10 Nov 2024 16:44:33 +0100 Subject: [PATCH 97/98] create content, update content --- Makefile | 10 ++++++++ backend/Makefile | 20 ++++++++++++++-- backend/scripts/create_site.py | 20 ++++++++++------ .../setup.py | 1 + .../PKG-INFO | 1 + .../SOURCES.txt | 3 ++- .../requires.txt | 1 + .../profiles.zcml | 21 +++++++++++++++++ .../profiles/multilingual/types/LRF.xml | 8 ++----- .../setuphandlers/__init__.py | 4 +++- .../setuphandlers/initial.py | 23 +++++++++++++++++++ 11 files changed, 95 insertions(+), 17 deletions(-) create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/initial.py diff --git a/Makefile b/Makefile index eb823c5f..db259983 100644 --- a/Makefile +++ b/Makefile @@ -50,6 +50,7 @@ dev-backend-start-multilingual: ## Start Plone export INDEX_PASSWORD=paraDiesli,17 $(MAKE) -C "./backend/" start +# content .PHONY: create-site-monolingual create-site-monolingual: ## Create monolingual site export INDEX_NAME=monolingual @@ -62,6 +63,15 @@ create-site-multilingual: ## Create multilingual site export INDEX_PASSWORD=paraDiesli,17 $(MAKE) -C "./backend/" create-site-multilingual +.PHONY: backend-update-example-content-monolingual +backend-update-example-content-monolingual: ## Export monolingual example content inside package + $(MAKE) -C "./backend/" update-example-content-monolingual + +.PHONY: backend-update-example-content-multilingual +backend-update-example-content-multilingual: ## Export multilingual example content inside package + $(MAKE) -C "./backend/" update-example-content-multilingual + +# Index server .PHONY: dev-index-start-monolingual dev-index-start-monolingual: ## Start index dev server monolingual export INDEX_PASSWORD=paraDiesli,17 diff --git a/backend/Makefile b/backend/Makefile index a3c9e2db..d678b6bd 100644 --- a/backend/Makefile +++ b/backend/Makefile @@ -37,9 +37,11 @@ ifeq ($(PYTHON_VERSION_OK),0) $(error "Need python $(PYTHON_VERSION) >= $(PYTHON_VERSION_MIN)") endif -PLONE_SITE_ID=Plone +PLONE_SITE_ID_MONOLINGUAL=Plone +PLONE_SITE_ID_MULTILINGUAL=Multilingual BACKEND_FOLDER=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST)))) -EXAMPLE_CONTENT_FOLDER=${BACKEND_FOLDER}/src/searchkit/block/setuphandlers/examplecontent +EXAMPLE_CONTENT_FOLDER_MONOLINGUAL=${BACKEND_FOLDER}/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual +EXAMPLE_CONTENT_FOLDER_MULTILINGUAL=${BACKEND_FOLDER}/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual GIT_FOLDER=$(BACKEND_FOLDER)/.git VENV_FOLDER=$(BACKEND_FOLDER)/.venv @@ -111,6 +113,7 @@ console: instance/etc/zope.ini ## Start a console into a Plone instance source .dev-env PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole debug instance/etc/zope.conf +# Example Content .PHONY: create-site-monolingual create-site-monolingual: instance/etc/zope.ini ## Create a new site from scratch source .dev-env @@ -121,6 +124,19 @@ create-site-multilingual: instance/etc/zope.ini ## Create a new site from scratc source .dev-env DELETE_EXISTING=true ISMULTILINGUAL=true PYTHONWARNINGS=ignore $(BIN_FOLDER)/zconsole run instance/etc/zope.conf ./scripts/create_site.py +.PHONY: update-example-content-monolingual +update-example-content-monolingual: $(BIN_FOLDER)/tox ## Export example content inside package + @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER_MONOLINGUAL) $(RESET)" + if [ -d $(EXAMPLE_CONTENT_FOLDER_MONOLINGUAL)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER_MONOLINGUAL)/* ;fi + $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID_MONOLINGUAL) $(EXAMPLE_CONTENT_FOLDER_MONOLINGUAL) + +.PHONY: update-example-content-multilingual +update-example-content-multilingual: $(BIN_FOLDER)/tox ## Export example content inside package + @echo "$(GREEN)==> Export example content into $(EXAMPLE_CONTENT_FOLDER_MULTILINGUAL) $(RESET)" + if [ -d $(EXAMPLE_CONTENT_FOLDER_MULTILINGUAL)/content ]; then rm -r $(EXAMPLE_CONTENT_FOLDER_MULTILINGUAL)/* ;fi + $(BIN_FOLDER)/plone-exporter instance/etc/zope.conf $(PLONE_SITE_ID_MULTILINGUAL) $(EXAMPLE_CONTENT_FOLDER_MULTILINGUAL) + +# Index server .PHONY: dev-index-start-monolingual dev-index-start-monolingual: ## Start dev containers (OpenSearch, ingest, etc.) ${DEV_COMPOSE_MONOLINGUAL} --profile monolingual up -d --force-recreate diff --git a/backend/scripts/create_site.py b/backend/scripts/create_site.py index fc810df4..3fb6ac83 100644 --- a/backend/scripts/create_site.py +++ b/backend/scripts/create_site.py @@ -27,9 +27,9 @@ def asbool(s): DELETE_EXISTING = asbool(os.getenv("DELETE_EXISTING")) -# EXAMPLE_CONTENT = asbool( -# os.getenv("EXAMPLE_CONTENT", "1") -# ) # Create example content by default +EXAMPLE_CONTENT = asbool( + os.getenv("EXAMPLE_CONTENT", "1") +) # Create example content by default app = makerequest(globals()["app"]) @@ -47,6 +47,7 @@ def asbool(s): "title": "Project Title", "profile_id": _DEFAULT_PROFILE, "extension_ids": [ + "rohberg.voltosearchkitblocktestingprofiles:default", "collective.elastic.plone:default", ], "setup_content": False, @@ -70,8 +71,13 @@ def asbool(s): if site_id not in app.objectIds(): site = addPloneSite(app, site_id, **payload) transaction.commit() - # if EXAMPLE_CONTENT: - # portal_setup: SetupTool = site.portal_setup - # portal_setup.runAllImportStepsFromProfile("rohberg.voltosearchkitblocktestingprofiles:initialmultilingual") - # transaction.commit() + if EXAMPLE_CONTENT: + portal_setup: SetupTool = site.portal_setup + if ISMULTILINGUAL: + portal_setup.runAllImportStepsFromProfile( + "rohberg.voltosearchkitblocktestingprofiles:initialmultilingual") + else: + portal_setup.runAllImportStepsFromProfile( + "rohberg.voltosearchkitblocktestingprofiles:initialmonolingual") + transaction.commit() app._p_jar.sync() diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py index a851bf54..588e7b6b 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/setup.py @@ -53,6 +53,7 @@ "plone.api", "plone.restapi", "plone.volto", + "plone.exportimport", ], extras_require={ "test": [ diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO index 501f977a..ea7c18f8 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/PKG-INFO @@ -30,6 +30,7 @@ Requires-Dist: Products.CMFPlone Requires-Dist: plone.api Requires-Dist: plone.restapi Requires-Dist: plone.volto +Requires-Dist: plone.exportimport Provides-Extra: test Requires-Dist: zest.releaser[recommended]; extra == "test" Requires-Dist: zestreleaser.towncrier; extra == "test" diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt index bbaa1450..cf3be23a 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/SOURCES.txt @@ -11,4 +11,5 @@ src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt src/rohberg.voltosearchkitblocktestingprofiles.egg-info/top_level.txt src/rohberg/voltosearchkitblocktestingprofiles/__init__.py src/rohberg/voltosearchkitblocktestingprofiles/interfaces.py -src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py \ No newline at end of file +src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py +src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/initial.py \ No newline at end of file diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt index 468b29d6..5ab5fe23 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg.voltosearchkitblocktestingprofiles.egg-info/requires.txt @@ -3,6 +3,7 @@ Products.CMFPlone plone.api plone.restapi plone.volto +plone.exportimport [test] zest.releaser[recommended] diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml index e1fa0de0..b7a7f8a0 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/profiles.zcml @@ -21,6 +21,7 @@ /> --> + + + + + + + - folder_listing + document_view - - - - - + diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py index 38a2e9d1..4951d019 100644 --- a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/__init__.py @@ -13,6 +13,8 @@ def getNonInstallableProfiles(self): "rohberg.voltosearchkitblocktestingprofiles:uninstall", "rohberg.voltosearchkitblocktestingprofiles:monolingual", "rohberg.voltosearchkitblocktestingprofiles:multilingual", + "rohberg.voltosearchkitblocktestingprofiles:initialmultilingual", + "rohberg.voltosearchkitblocktestingprofiles:initialmonolingual", ] @@ -20,5 +22,5 @@ def multilingual(tool): init_pam(tool) # TODO enable behavior 'volto.blocks' logger.info( - "rohberg.voltosearchkitblocktestingprofiles:multilingual profile applied." + "profile rohberg.voltosearchkitblocktestingprofiles:multilingual applied." ) diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/initial.py b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/initial.py new file mode 100644 index 00000000..348242db --- /dev/null +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/initial.py @@ -0,0 +1,23 @@ +from pathlib import Path +from plone import api +from plone.exportimport import importers +from Products.GenericSetup.tool import SetupTool +from rohberg.voltosearchkitblocktestingprofiles import logger + + +def create_example_content_multilingual(portal_setup: SetupTool): + """Import content available at the examplecontent folder.""" + EXAMPLE_CONTENT_FOLDER = Path(__file__).parent / "examplecontent_multilingual" + portal = api.portal.get() + importer = importers.get_importer(portal) + for line in importer.import_site(EXAMPLE_CONTENT_FOLDER): + logger.info(line) + + +def create_example_content_monolingual(portal_setup: SetupTool): + """Import content available at the examplecontent folder.""" + EXAMPLE_CONTENT_FOLDER = Path(__file__).parent / "examplecontent_monolingual" + portal = api.portal.get() + importer = importers.get_importer(portal) + for line in importer.import_site(EXAMPLE_CONTENT_FOLDER): + logger.info(line) From 2c1228481820712d3ba00cb8a9739d574252e1f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Katja=20Su=CC=88ss?= Date: Sun, 10 Nov 2024 16:44:50 +0100 Subject: [PATCH 98/98] example content --- .../examplecontent_monolingual/.gitkeep | 0 .../data.json | 91 +++ .../content/__metadata__.json | 131 ++++ .../data.json | 52 ++ .../image/plone-foundation.png | Bin 0 -> 50737 bytes .../data.json | 96 +++ .../data.json | 141 ++++ .../content/plone_site_root/data.json | 108 +++ .../discussions.json | 1 + .../examplecontent_monolingual/portlets.json | 67 ++ .../principals.json | 38 ++ .../examplecontent_monolingual/redirects.json | 1 + .../examplecontent_monolingual/relations.json | 1 + .../translations.json | 1 + .../examplecontent_multilingual/.gitkeep | 0 .../data.json | 181 +++++ .../data.json | 190 ++++++ .../data.json | 121 ++++ .../data.json | 146 ++++ .../data.json | 96 +++ .../data.json | 96 +++ .../data.json | 180 +++++ .../content/__metadata__.json | 209 ++++++ .../data.json | 94 +++ .../data.json | 59 ++ .../data.json | 116 ++++ .../data.json | 96 +++ .../data.json | 59 ++ .../content/plone_site_root/data.json | 631 ++++++++++++++++++ .../discussions.json | 1 + .../examplecontent_multilingual/portlets.json | 67 ++ .../principals.json | 38 ++ .../redirects.json | 5 + .../relations.json | 1 + .../translations.json | 8 + 35 files changed, 3122 insertions(+) create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/.gitkeep create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/47cd2abace0c41538859c6b6d492c6d3/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/__metadata__.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a720393b3c0240e5bd27c43fcd2cfd1e/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/ae5aa9374ceb4e628aa1f572342837c7/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/plone_site_root/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/discussions.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/portlets.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/principals.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/redirects.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/relations.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/translations.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/.gitkeep create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/138b7df4f083424f947834cdc13dc4a3/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/3103a02f496946a2a64d2f4cad7183d3/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/644f7e9d70ca4235abff8b3420467602/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/6488ef93b30d45188104fbe91f75b2a4/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/85c6f4b329ca4e9887367790b545492f/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/957ed9149ade46168e2d996bfece41b4/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/9a4e4bed089744ffbbd9558dcd8a5636/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/__metadata__.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/a77a024d428b48b1ac107e0da28128f1/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/b0604ef9a7b64d8cae36efc6ec2b39f6/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/b51b1a9ec25a442b84cf982ce21e9f0a/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/e691250cb621416f8c5070d1c261c6c4/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/ff6b6a977d964f3b83c5eb2ca539e55d/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/content/plone_site_root/data.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/discussions.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/portlets.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/principals.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/redirects.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/relations.json create mode 100644 backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_multilingual/translations.json diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/.gitkeep b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/47cd2abace0c41538859c6b6d492c6d3/data.json b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/47cd2abace0c41538859c6b6d492c6d3/data.json new file mode 100644 index 00000000..275cac1a --- /dev/null +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/47cd2abace0c41538859c6b6d492c6d3/data.json @@ -0,0 +1,91 @@ +{ + "@id": "/nachrichten", + "@type": "Document", + "UID": "47cd2abace0c41538859c6b6d492c6d3", + "allow_discussion": null, + "blocks": { + "0d57a973-0e21-4535-8f5f-5b7e3b01bdc5": { + "@type": "title" + }, + "27f32c20-d10c-4204-94fe-f8f34969d982": { + "@type": "listing", + "headlineTag": "h2", + "querystring": { + "query": [ + { + "i": "path", + "o": "plone.app.querystring.operation.string.relativePath", + "v": "." + } + ], + "sort_order": "ascending" + }, + "variation": "default" + }, + "9f462115-9b02-4335-8dbe-edaceda88459": { + "@type": "slate" + } + }, + "blocks_layout": { + "items": [ + "0d57a973-0e21-4535-8f5f-5b7e3b01bdc5", + "27f32c20-d10c-4204-94fe-f8f34969d982", + "9f462115-9b02-4335-8dbe-edaceda88459" + ] + }, + "contributors": [], + "created": "2024-11-10T15:32:41+00:00", + "creators": [ + "admin" + ], + "description": "", + "effective": "2024-11-10T16:32:47", + "exclude_from_nav": false, + "expires": null, + "exportimport.constrains": {}, + "exportimport.conversation": [], + "exportimport.versions": {}, + "id": "nachrichten", + "is_folderish": true, + "language": "##DEFAULT##", + "layout": "document_view", + "lock": { + "locked": false, + "stealable": true + }, + "modified": "2024-11-10T15:33:42+00:00", + "parent": { + "@id": "/", + "@type": "Plone Site", + "UID": "plone_site_root", + "description": "", + "title": "Project Title", + "type_title": "Plone Site" + }, + "preview_caption": null, + "preview_image": null, + "review_state": "published", + "rights": "", + "subjects": [], + "title": "Nachrichten", + "type_title": "Page", + "version": "current", + "workflow_history": { + "simple_publication_workflow": [ + { + "action": null, + "actor": "admin", + "comments": "", + "review_state": "private", + "time": "2024-11-10T15:32:41+00:00" + }, + { + "action": "publish", + "actor": "admin", + "comments": "", + "review_state": "published", + "time": "2024-11-10T15:32:47+00:00" + } + ] + } +} diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/__metadata__.json b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/__metadata__.json new file mode 100644 index 00000000..15f8c468 --- /dev/null +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/__metadata__.json @@ -0,0 +1,131 @@ +{ + "__version__": "1.0.0", + "_blob_files_": [ + "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png" + ], + "_data_files_": [ + "plone_site_root/data.json", + "a720393b3c0240e5bd27c43fcd2cfd1e/data.json", + "a58ccead718140c1baa98d43595fc3e6/data.json", + "47cd2abace0c41538859c6b6d492c6d3/data.json", + "ae5aa9374ceb4e628aa1f572342837c7/data.json" + ], + "default_page": {}, + "local_permissions": { + "47cd2abace0c41538859c6b6d492c6d3": {}, + "a58ccead718140c1baa98d43595fc3e6": {}, + "a720393b3c0240e5bd27c43fcd2cfd1e": {}, + "ae5aa9374ceb4e628aa1f572342837c7": {}, + "plone_site_root": { + "Add portal member": { + "acquire": false, + "roles": [ + "Manager", + "Site Administrator", + "Owner" + ] + }, + "Content rules: Manage rules": { + "acquire": false, + "roles": [ + "Manager", + "Site Administrator" + ] + }, + "Delete own comments": { + "acquire": false, + "roles": [ + "Manager", + "Site Administrator", + "Reviewer", + "Owner" + ] + }, + "Reply to item": { + "acquire": false, + "roles": [ + "Authenticated" + ] + }, + "Set own password": { + "acquire": false, + "roles": [ + "Authenticated", + "Manager", + "Site Administrator" + ] + }, + "Set own properties": { + "acquire": false, + "roles": [ + "Authenticated", + "Manager", + "Site Administrator" + ] + }, + "Show Toolbar": { + "acquire": false, + "roles": [ + "Authenticated" + ] + }, + "plone.resource: Export ZIP file": { + "acquire": false, + "roles": [ + "Manager" + ] + }, + "plone.resourceeditor: Manage Sources": { + "acquire": false, + "roles": [ + "Manager", + "Site Administrator" + ] + } + } + }, + "local_roles": { + "47cd2abace0c41538859c6b6d492c6d3": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "a58ccead718140c1baa98d43595fc3e6": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "a720393b3c0240e5bd27c43fcd2cfd1e": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "ae5aa9374ceb4e628aa1f572342837c7": { + "local_roles": { + "admin": [ + "Owner" + ] + } + }, + "plone_site_root": { + "local_roles": { + "admin": [ + "Owner" + ] + } + } + }, + "ordering": { + "47cd2abace0c41538859c6b6d492c6d3": 43, + "a58ccead718140c1baa98d43595fc3e6": 0, + "a720393b3c0240e5bd27c43fcd2cfd1e": 42, + "ae5aa9374ceb4e628aa1f572342837c7": 0 + }, + "relations": [] +} diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/data.json b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/data.json new file mode 100644 index 00000000..3540b739 --- /dev/null +++ b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/data.json @@ -0,0 +1,52 @@ +{ + "@id": "/images/plone-foundation.png", + "@type": "Image", + "UID": "a58ccead718140c1baa98d43595fc3e6", + "allow_discussion": false, + "contributors": [], + "created": "2024-05-27T03:23:37+00:00", + "creators": [ + "admin" + ], + "description": "", + "effective": null, + "exclude_from_nav": false, + "expires": null, + "exportimport.constrains": {}, + "exportimport.conversation": [], + "exportimport.versions": {}, + "id": "plone-foundation.png", + "image": { + "blob_path": "a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png", + "content-type": "image/png", + "filename": "plone-foundation.png", + "height": 439, + "size": 50737, + "width": 2000 + }, + "is_folderish": false, + "language": "##DEFAULT##", + "layout": "image_view", + "lock": {}, + "modified": "2024-05-27T03:24:00+00:00", + "parent": { + "@id": "/images", + "@type": "Document", + "UID": "a720393b3c0240e5bd27c43fcd2cfd1e", + "description": "Site images", + "image_field": null, + "image_scales": {}, + "review_state": "published", + "title": "Images", + "type_title": "Page" + }, + "review_state": null, + "rights": "", + "subjects": [ + "Plone" + ], + "title": "Plone Foundation Logo", + "type_title": "Image", + "version": "current", + "workflow_history": {} +} diff --git a/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png b/backend/sources/rohberg.voltosearchkitblocktestingprofiles/src/rohberg/voltosearchkitblocktestingprofiles/setuphandlers/examplecontent_monolingual/content/a58ccead718140c1baa98d43595fc3e6/image/plone-foundation.png new file mode 100644 index 0000000000000000000000000000000000000000..9516c4c6392f24444bec95824f40fcf6bf3a0631 GIT binary patch literal 50737 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 z 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