diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 884248e7d..264e79800 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -7,8 +7,8 @@ on: pull_request: env: - RUBY_VERSION: 3.0.6 - NODE_VERSION: 16.9.1 + RUBY_VERSION: 3.1.1 + NODE_VERSION: 18.17.1 jobs: lint-report: diff --git a/.github/workflows/precompile.yml b/.github/workflows/precompile.yml deleted file mode 100644 index edae4d578..000000000 --- a/.github/workflows/precompile.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: "[CI] Precompile" - -on: - push: - branches: - - main - pull_request: - -env: - RUBY_VERSION: 3.0.6 - NODE_VERSION: 16.9.1 - -jobs: - lint-report: - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:11 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_PASSWORD: postgres - env: - DATABASE_USERNAME: postgres - DATABASE_PASSWORD: postgres - DATABASE_HOST: localhost - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ env.RUBY_VERSION }} - bundler-cache: true - - - uses: actions/setup-node@master - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Setup Test App - run: bundle exec rake test_app - - - name: Precompile - run: | - cd spec/decidim_dummy_app - bundle exec rails assets:precompile - env: - RAILS_ENV: production - SECRET_KEY_BASE: just-testing \ No newline at end of file diff --git a/.github/workflows/tests-legacy.yml b/.github/workflows/tests-legacy.yml deleted file mode 100644 index 3ce5c2d89..000000000 --- a/.github/workflows/tests-legacy.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: "[CI] Tests 0.26" - -on: - push: - branches: - - main - pull_request: - -env: - CI: 1 - SIMPLECOV: 1 - NODE_VERSION: 16.9.1 - RUBY_VERSION: 2.7.7 - BUNDLE_GEMFILE: Gemfile.legacy - -jobs: - tests-legacy: - runs-on: ubuntu-latest - strategy: - matrix: - include: - - rspec: awesome_summary_spec.rb - features: disabled - - rspec: " --exclude-pattern 'spec/system/**/*_spec.rb'" - features: enabled - - rspec: system/admin - features: enabled - - rspec: system/*_spec.rb - features: enabled - - rspec: system/awesome_map - features: enabled - fail-fast: false - - services: - postgres: - image: postgres:11 - ports: ["5432:5432"] - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - env: - POSTGRES_PASSWORD: postgres - env: - DATABASE_USERNAME: postgres - DATABASE_PASSWORD: postgres - DATABASE_HOST: localhost - - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - uses: ruby/setup-ruby@v1 - with: - ruby-version: ${{ env.RUBY_VERSION }} - bundler-cache: true - - - uses: actions/setup-node@master - with: - node-version: ${{ env.NODE_VERSION }} - - - name: Setup Test App - run: bundle exec rake test_app - - - name: General RSpec with config vars ${{ matrix.features }} - run: bundle exec rspec spec/${{ matrix.rspec }} - env: - FEATURES: ${{ matrix.features }} - - - name: Upload coverage reports to Codecov - uses: codecov/codecov-action@v3 - - - uses: actions/upload-artifact@v2-preview - if: always() - with: - name: screenshots - path: ./spec/decidim_dummy_app/tmp/screenshots diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6dd51ed48..84495b812 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,4 +1,4 @@ -name: "[CI] Tests 0.27" +name: "[CI] Tests 0.28" on: push: @@ -9,25 +9,111 @@ on: env: CI: 1 SIMPLECOV: 1 - NODE_VERSION: 16.9.1 - RUBY_VERSION: 3.0.6 + NODE_VERSION: 18.17.1 + RUBY_VERSION: 3.1.1 BUNDLE_GEMFILE: Gemfile + DISPLAY: ":99" + PARALLEL_TEST_PROCESSORS: 2 + SHAKAPACKER_RUNTIME_COMPILE: "false" + NODE_ENV: "test" + RAILS_ENV: "test" + RUBYOPT: '-W:no-deprecated' + DATABASE_USERNAME: postgres + DATABASE_PASSWORD: postgres + DATABASE_HOST: localhost + POSTGRES_PASSWORD: postgres jobs: + build: + name: Build & Precompile + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:11 + ports: ["5432:5432"] + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + env: + POSTGRES_PASSWORD: postgres + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - uses: nanasess/setup-chromedriver@v2 + with: + chromedriver-version: 119.0.6045.105 + + - name: List Chrome + run: apt list --installed | grep chrome + + - name: Remove Chrome + run: sudo apt remove google-chrome-stable + + - uses: browser-actions/setup-chrome@v1 + with: + chrome-version: 119.0.6045.105 + + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.RUBY_VERSION }} + bundler-cache: true + + - uses: actions/setup-node@master + with: + node-version: ${{ env.NODE_VERSION }} + + - uses: actions/cache@v3 + id: app-cache + with: + path: ./spec/decidim_dummy_app/ + key: app-${{ github.sha }} + restore-keys: app-${{ github.sha }} + + - run: bundle exec rake test_app + name: Create test app + shell: "bash" + + - run: mkdir -p ./spec/decidim_dummy_app/tmp/screenshots + name: Create the screenshots folder + shell: "bash" + + - run: bundle exec rails assets:precompile + name: Precompile assets + working-directory: ./spec/decidim_dummy_app/ + shell: "bash" + env: + BUNDLE_GEMFILE: ../../Gemfile + + - run: tar -zcf /tmp/testapp-env.tar.gz ./spec/decidim_dummy_app + + - uses: actions/upload-artifact@v3 + with: + name: workspace + path: /tmp/testapp-env.tar.gz + tests-latest: + name: Tests latest runs-on: ubuntu-latest + needs: build + strategy: matrix: include: - - rspec: awesome_summary_spec.rb + - rspec: spec/awesome_summary_spec.rb features: disabled - - rspec: " --exclude-pattern 'spec/system/**/*_spec.rb'" + - rspec: spec\/(?!system) features: enabled - - rspec: system/admin + - rspec: spec/system/admin features: enabled - - rspec: system/*_spec.rb + - rspec: spec/system/public features: enabled - - rspec: system/awesome_map + - rspec: spec/system/awesome_map features: enabled fail-fast: false @@ -42,41 +128,44 @@ jobs: --health-retries 5 env: POSTGRES_PASSWORD: postgres - env: - DATABASE_USERNAME: postgres - DATABASE_PASSWORD: postgres - DATABASE_HOST: localhost steps: - uses: actions/checkout@v4 with: fetch-depth: 1 - - uses: nanasess/setup-chromedriver@v2 - with: - chromedriver-version: 119.0.6045.105 - - uses: ruby/setup-ruby@v1 with: ruby-version: ${{ env.RUBY_VERSION }} bundler-cache: true - - uses: actions/setup-node@master + - uses: actions/download-artifact@v3 with: - node-version: ${{ env.NODE_VERSION }} + name: workspace + path: /tmp + + - run: tar -zxf /tmp/testapp-env.tar.gz + name: Restore application - - name: Setup Test App - run: bundle exec rake test_app + - run: bundle exec rake parallel:create parallel:load_schema + name: Parallel tests + shell: "bash" + working-directory: ./spec/decidim_dummy_app/ + env: + BUNDLE_GEMFILE: ../../Gemfile - name: General RSpec with config vars ${{ matrix.features }} - run: bundle exec rspec spec/${{ matrix.rspec }} + run: | + sudo Xvfb -ac $DISPLAY -screen 0 1920x1084x24 > /dev/null 2>&1 & # optional + ln -s spec/decidim_dummy_app spec/decidim_dummy_app_last + bundle exec rake parallel:spec['${{ matrix.rspec }}'] env: FEATURES: ${{ matrix.features }} - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v3 - - uses: actions/upload-artifact@v2-preview + - uses: actions/upload-artifact@v3 if: always() with: name: screenshots diff --git a/.gitignore b/.gitignore index f651acad8..bf8715337 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ node_modules/ npm_debug.log .ruby-version +.rubocop-http* \ No newline at end of file diff --git a/.gitpod.dockerfile b/.gitpod.dockerfile index 59df600d9..e5b1c718f 100644 --- a/.gitpod.dockerfile +++ b/.gitpod.dockerfile @@ -5,4 +5,4 @@ RUN sudo apt-get update && sudo apt-get install -y redis-server apt-transport-h USER gitpod SHELL ["/bin/bash", "-c"] -RUN cd && /home/gitpod/.rvm/bin/rvm install "ruby-3.0.5" +RUN cd && /home/gitpod/.rvm/bin/rvm install "ruby-3.1.1" diff --git a/.rubocop.yml b/.rubocop.yml index 870c0b9ff..0b769b2b4 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,3 +1,5 @@ inherit_from: - - .rubocop_ruby.yml - - .rubocop_rails.yml + - https://raw.githubusercontent.com/decidim/decidim/release/0.28-stable/.rubocop.yml + +RSpec/IndexedLet: + Enabled: false diff --git a/Gemfile b/Gemfile index 8564a8285..61147102a 100644 --- a/Gemfile +++ b/Gemfile @@ -4,32 +4,31 @@ source "https://rubygems.org" ruby RUBY_VERSION -DECIDIM_VERSION = "0.27.4" +DECIDIM_VERSION = "0.28.0" gem "decidim", DECIDIM_VERSION gem "decidim-decidim_awesome", path: "." gem "bootsnap", "~> 1.4" -gem "puma", ">= 5.5.1" - -gem "faker", "~> 2.14" +gem "puma", ">= 6.3.1" group :development, :test do gem "byebug", "~> 11.0", platform: :mri gem "decidim-dev", DECIDIM_VERSION + + gem "brakeman", "~> 5.4" + gem "net-imap", "~> 0.2.3" + gem "net-pop", "~> 0.1.1" + gem "net-smtp", "~> 0.3.1" + gem "parallel_tests", "~> 4.2" end group :development do - gem "letter_opener_web", "~> 1.3" + gem "letter_opener_web", "~> 2.0" gem "listen", "~> 3.1" - gem "rubocop-faker" gem "spring", "~> 2.0" - gem "spring-watcher-listen", "~> 2.0.0" - gem "web-console" -end - -group :test do - gem "codecov", require: false + gem "spring-watcher-listen", "~> 2.0" + gem "web-console", "~> 4.2" end diff --git a/Gemfile.legacy b/Gemfile.legacy deleted file mode 100644 index c276279d9..000000000 --- a/Gemfile.legacy +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -source "https://rubygems.org" - -ruby RUBY_VERSION -DECIDIM_VERSION = "0.26.8" - -gem "decidim", DECIDIM_VERSION -gem "decidim-decidim_awesome", path: "." - -gem "bootsnap", "~> 1.4" - -gem "puma", ">= 5.5.1" -gem "uglifier", "~> 4.1" - -gem "faker", "~> 2.14" - -group :development, :test do - gem "byebug", "~> 11.0", platform: :mri - - gem "decidim-dev", DECIDIM_VERSION -end - -group :development do - gem "letter_opener_web", "~> 1.3" - gem "listen", "~> 3.1" - gem "rubocop-faker" - gem "spring", "~> 2.0" - gem "spring-watcher-listen", "~> 2.0.0" - gem "web-console", "~> 3.5" -end - -group :test do - gem "codecov", require: false -end diff --git a/Gemfile.legacy.lock b/Gemfile.legacy.lock deleted file mode 100644 index b0620d4c4..000000000 --- a/Gemfile.legacy.lock +++ /dev/null @@ -1,811 +0,0 @@ -PATH - remote: . - specs: - decidim-decidim_awesome (0.10.2) - decidim-admin (>= 0.26.0, < 0.28) - decidim-core (>= 0.26.0, < 0.28) - deface (>= 1.5) - sassc (~> 2.3) - -GEM - remote: https://rubygems.org/ - specs: - actioncable (6.0.6.1) - actionpack (= 6.0.6.1) - nio4r (~> 2.0) - websocket-driver (>= 0.6.1) - actionmailbox (6.0.6.1) - actionpack (= 6.0.6.1) - activejob (= 6.0.6.1) - activerecord (= 6.0.6.1) - activestorage (= 6.0.6.1) - activesupport (= 6.0.6.1) - mail (>= 2.7.1) - actionmailer (6.0.6.1) - actionpack (= 6.0.6.1) - actionview (= 6.0.6.1) - activejob (= 6.0.6.1) - mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 2.0) - actionpack (6.0.6.1) - actionview (= 6.0.6.1) - activesupport (= 6.0.6.1) - rack (~> 2.0, >= 2.0.8) - rack-test (>= 0.6.3) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.0.6.1) - actionpack (= 6.0.6.1) - activerecord (= 6.0.6.1) - activestorage (= 6.0.6.1) - activesupport (= 6.0.6.1) - nokogiri (>= 1.8.5) - actionview (6.0.6.1) - activesupport (= 6.0.6.1) - builder (~> 3.1) - erubi (~> 1.4) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - active_link_to (1.0.5) - actionpack - addressable - activejob (6.0.6.1) - activesupport (= 6.0.6.1) - globalid (>= 0.3.6) - activemodel (6.0.6.1) - activesupport (= 6.0.6.1) - activerecord (6.0.6.1) - activemodel (= 6.0.6.1) - activesupport (= 6.0.6.1) - activestorage (6.0.6.1) - actionpack (= 6.0.6.1) - activejob (= 6.0.6.1) - activerecord (= 6.0.6.1) - marcel (~> 1.0) - activesupport (6.0.6.1) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) - acts_as_list (0.9.19) - activerecord (>= 3.0) - addressable (2.8.5) - public_suffix (>= 2.0.2, < 6.0) - ast (2.4.2) - axe-core-api (4.8.0) - dumb_delegator - virtus - axe-core-rspec (4.1.0) - axe-core-api - dumb_delegator - virtus - axiom-types (0.1.1) - descendants_tracker (~> 0.0.4) - ice_nine (~> 0.11.0) - thread_safe (~> 0.3, >= 0.3.1) - base64 (0.2.0) - batch-loader (1.5.0) - bcrypt (3.1.19) - better_html (1.0.16) - actionview (>= 4.0) - activesupport (>= 4.0) - ast (~> 2.0) - erubi (~> 1.4) - html_tokenizer (~> 0.0.6) - parser (>= 2.4) - smart_properties - bindex (0.8.1) - bootsnap (1.17.0) - msgpack (~> 1.2) - browser (2.7.1) - builder (3.2.4) - byebug (11.1.3) - capybara (3.39.2) - addressable - matrix - mini_mime (>= 0.1.3) - nokogiri (~> 1.8) - rack (>= 1.6.0) - rack-test (>= 0.6.3) - regexp_parser (>= 1.5, < 3.0) - xpath (~> 3.2) - carrierwave (2.2.4) - activemodel (>= 5.0.0) - activesupport (>= 5.0.0) - addressable (~> 2.6) - image_processing (~> 1.1) - marcel (~> 1.0.0) - mini_mime (>= 0.1.3) - ssrf_filter (~> 1.0) - cells (4.1.7) - declarative-builder (< 0.2.0) - declarative-option (< 0.2.0) - tilt (>= 1.4, < 3) - uber (< 0.2.0) - cells-erb (0.1.0) - cells (~> 4.0) - erbse (>= 0.1.1) - cells-rails (0.1.5) - actionpack (>= 5.0) - cells (>= 4.1.6, < 5.0.0) - charlock_holmes (0.7.7) - chef-utils (18.3.0) - concurrent-ruby - childprocess (3.0.0) - codecov (0.6.0) - simplecov (>= 0.15, < 0.22) - coercible (1.0.0) - descendants_tracker (~> 0.0.1) - coffee-rails (5.0.0) - coffee-script (>= 2.2.0) - railties (>= 5.2.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) - concurrent-ruby (1.2.2) - crack (0.4.5) - rexml - crass (1.0.6) - css_parser (1.16.0) - addressable - date (3.3.4) - date_validator (0.9.0) - activemodel - activesupport - db-query-matchers (0.10.0) - activesupport (>= 4.0, < 7) - rspec (~> 3.0) - decidim (0.26.8) - decidim-accountability (= 0.26.8) - decidim-admin (= 0.26.8) - decidim-api (= 0.26.8) - decidim-assemblies (= 0.26.8) - decidim-blogs (= 0.26.8) - decidim-budgets (= 0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - decidim-debates (= 0.26.8) - decidim-forms (= 0.26.8) - decidim-generators (= 0.26.8) - decidim-meetings (= 0.26.8) - decidim-pages (= 0.26.8) - decidim-participatory_processes (= 0.26.8) - decidim-proposals (= 0.26.8) - decidim-sortitions (= 0.26.8) - decidim-surveys (= 0.26.8) - decidim-system (= 0.26.8) - decidim-templates (= 0.26.8) - decidim-verifications (= 0.26.8) - decidim-accountability (0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - decidim-admin (0.26.8) - active_link_to (~> 1.0) - decidim-core (= 0.26.8) - devise (~> 4.7) - devise-i18n (~> 1.2) - devise_invitable (~> 2.0) - decidim-api (0.26.8) - graphql (~> 1.12, < 1.13) - rack-cors (~> 1.0) - redcarpet (~> 3.5, >= 3.5.1) - decidim-assemblies (0.26.8) - decidim-core (= 0.26.8) - decidim-blogs (0.26.8) - decidim-admin (= 0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - decidim-budgets (0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - decidim-comments (0.26.8) - decidim-core (= 0.26.8) - redcarpet (~> 3.5, >= 3.5.1) - decidim-core (0.26.8) - active_link_to (~> 1.0) - acts_as_list (~> 0.9) - batch-loader (~> 1.2) - browser (~> 2.7) - carrierwave (~> 2.2.1) - cells-erb (~> 0.1.0) - cells-rails (~> 0.1.3) - charlock_holmes (~> 0.7) - date_validator (~> 0.9.0) - decidim-api (= 0.26.8) - devise (~> 4.7) - devise-i18n (~> 1.2) - diffy (~> 3.3) - doorkeeper (~> 5.1) - doorkeeper-i18n (~> 4.0) - file_validators (~> 2.1) - fog-local (~> 0.6) - foundation_rails_helper - geocoder (~> 1.7.5) - hashdiff (>= 0.4.0, < 2.0.0) - invisible_captcha (~> 0.12) - kaminari (~> 1.2, >= 1.2.1) - loofah (~> 2.3.1) - mime-types (>= 1.16, < 4.0) - mini_magick (~> 4.9) - mustache (~> 1.1.0) - omniauth (~> 2.0) - omniauth-facebook (~> 5.0) - omniauth-google-oauth2 (~> 1.0) - omniauth-rails_csrf_protection (~> 1.0) - omniauth-twitter (~> 1.4) - paper_trail (~> 12.0) - pg (~> 1.1.4, < 2) - pg_search (~> 2.2) - premailer-rails (~> 1.10) - rack (~> 2.2, >= 2.2.3) - rack-attack (~> 6.0) - rails (~> 6.0.4) - rails-i18n (~> 6.0) - ransack (~> 2.4.1) - rectify (~> 0.13.0) - redis (~> 4.1) - request_store (~> 1.5.0) - rubyXL (~> 3.4) - rubyzip (~> 2.0) - searchlight (~> 4.1) - seven_zip_ruby (~> 1.3) - social-share-button (~> 1.2, >= 1.2.1) - valid_email2 (~> 2.1) - webpacker (= 6.0.0.rc.5) - wisper (~> 2.0) - decidim-debates (0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - decidim-dev (0.26.8) - axe-core-rspec (~> 4.1.0) - byebug (~> 11.0) - capybara (~> 3.24) - db-query-matchers (~> 0.10.0) - decidim (= 0.26.8) - erb_lint (~> 0.0.35) - factory_bot_rails (~> 4.8) - i18n-tasks (~> 0.9.18) - mdl (~> 0.5) - nokogiri (~> 1.12) - puma (~> 5.0) - rails-controller-testing (~> 1.0) - rspec-cells (~> 0.3.4) - rspec-html-matchers (~> 0.9.1) - rspec-rails (~> 4.0) - rspec-retry (~> 0.6.2) - rspec_junit_formatter (~> 0.3.0) - rubocop (~> 0.92.0) - rubocop-rails (~> 2.8) - rubocop-rspec (= 1.43.2) - selenium-webdriver (~> 3.142) - simplecov (~> 0.19.0) - simplecov-cobertura (~> 1.3.1) - system_test_html_screenshots (~> 0.2) - w3c_rspec_validators (~> 0.3.0) - webmock (~> 3.6) - wisper-rspec (~> 1.0) - decidim-forms (0.26.8) - decidim-core (= 0.26.8) - wicked_pdf (~> 2.1) - wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.26.8) - decidim-core (= 0.26.8) - decidim-meetings (0.26.8) - decidim-core (= 0.26.8) - decidim-forms (= 0.26.8) - icalendar (~> 2.5) - decidim-pages (0.26.8) - decidim-core (= 0.26.8) - decidim-participatory_processes (0.26.8) - decidim-core (= 0.26.8) - decidim-proposals (0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - doc2text (~> 0.4.4) - redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.26.8) - decidim-admin (= 0.26.8) - decidim-comments (= 0.26.8) - decidim-core (= 0.26.8) - decidim-proposals (= 0.26.8) - decidim-surveys (0.26.8) - decidim-core (= 0.26.8) - decidim-forms (= 0.26.8) - decidim-templates (= 0.26.8) - decidim-system (0.26.8) - active_link_to (~> 1.0) - decidim-core (= 0.26.8) - devise (~> 4.7) - devise-i18n (~> 1.2) - devise_invitable (~> 2.0) - decidim-templates (0.26.8) - decidim-core (= 0.26.8) - decidim-forms (= 0.26.8) - decidim-verifications (0.26.8) - decidim-core (= 0.26.8) - declarative-builder (0.1.0) - declarative-option (< 0.2.0) - declarative-option (0.1.0) - deface (1.9.0) - actionview (>= 5.2) - nokogiri (>= 1.6) - polyglot - railties (>= 5.2) - rainbow (>= 2.1.0) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) - devise (4.9.3) - bcrypt (~> 3.0) - orm_adapter (~> 0.1) - railties (>= 4.1.0) - responders - warden (~> 1.2.3) - devise-i18n (1.12.0) - devise (>= 4.9.0) - devise_invitable (2.0.9) - actionmailer (>= 5.0) - devise (>= 4.6) - diff-lcs (1.5.0) - diffy (3.4.2) - doc2text (0.4.6) - nokogiri (>= 1.13.2, < 1.15.0) - rubyzip (~> 2.3.0) - docile (1.4.0) - doorkeeper (5.6.6) - railties (>= 5) - doorkeeper-i18n (4.0.1) - dumb_delegator (1.0.0) - equalizer (0.0.11) - erb_lint (0.0.37) - activesupport - better_html (~> 1.0.7) - html_tokenizer - parser (>= 2.7.1.4) - rainbow - rubocop - smart_properties - erbse (0.1.4) - temple - erubi (1.12.0) - excon (0.104.0) - execjs (2.9.1) - factory_bot (4.11.1) - activesupport (>= 3.0.0) - factory_bot_rails (4.11.1) - factory_bot (~> 4.11.1) - railties (>= 3.0.0) - faker (2.23.0) - i18n (>= 1.8.11, < 2) - faraday (2.7.11) - base64 - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) - ffi (1.16.3) - file_validators (2.3.0) - activemodel (>= 3.2) - mime-types (>= 1.0) - fog-core (2.3.0) - builder - excon (~> 0.71) - formatador (>= 0.2, < 2.0) - mime-types - fog-local (0.8.0) - fog-core (>= 1.27, < 3.0) - formatador (1.1.0) - foundation_rails_helper (4.0.1) - actionpack (>= 4.1, < 7.1) - activemodel (>= 4.1, < 7.1) - activesupport (>= 4.1, < 7.1) - railties (>= 4.1, < 7.1) - geocoder (1.7.5) - globalid (1.1.0) - activesupport (>= 5.0) - graphql (1.12.24) - hashdiff (1.0.1) - hashie (5.0.0) - highline (2.1.0) - html_tokenizer (0.0.7) - htmlentities (4.3.4) - i18n (1.14.1) - concurrent-ruby (~> 1.0) - i18n-tasks (0.9.37) - activesupport (>= 4.0.2) - ast (>= 2.1.0) - erubi - highline (>= 2.0.0) - i18n - parser (>= 2.2.3.0) - rails-i18n - rainbow (>= 2.2.2, < 4.0) - terminal-table (>= 1.5.1) - icalendar (2.10.0) - ice_cube (~> 0.16) - ice_cube (0.16.4) - ice_nine (0.11.2) - image_processing (1.12.2) - mini_magick (>= 4.9.5, < 5) - ruby-vips (>= 2.0.17, < 3) - invisible_captcha (0.13.0) - rails (>= 3.2.0) - json (2.6.3) - jwt (2.7.1) - kaminari (1.2.2) - activesupport (>= 4.1.0) - kaminari-actionview (= 1.2.2) - kaminari-activerecord (= 1.2.2) - kaminari-core (= 1.2.2) - kaminari-actionview (1.2.2) - actionview - kaminari-core (= 1.2.2) - kaminari-activerecord (1.2.2) - activerecord - kaminari-core (= 1.2.2) - kaminari-core (1.2.2) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - launchy (2.5.2) - addressable (~> 2.8) - letter_opener (1.8.1) - launchy (>= 2.2, < 3) - letter_opener_web (1.4.1) - actionmailer (>= 3.2) - letter_opener (~> 1.0) - railties (>= 3.2) - listen (3.8.0) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.3.1) - crass (~> 1.0.2) - nokogiri (>= 1.5.9) - mail (2.8.1) - mini_mime (>= 0.1.1) - net-imap - net-pop - net-smtp - marcel (1.0.2) - matrix (0.4.2) - mdl (0.13.0) - kramdown (~> 2.3) - kramdown-parser-gfm (~> 1.1) - mixlib-cli (~> 2.1, >= 2.1.1) - mixlib-config (>= 2.2.1, < 4) - mixlib-shellout - method_source (1.0.0) - mime-types (3.5.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2023.1003) - mini_magick (4.12.0) - mini_mime (1.1.5) - minitest (5.20.0) - mixlib-cli (2.1.8) - mixlib-config (3.0.27) - tomlrb - mixlib-shellout (3.2.7) - chef-utils - msgpack (1.7.2) - multi_xml (0.6.0) - mustache (1.1.1) - net-imap (0.4.5) - date - net-protocol - net-pop (0.1.2) - net-protocol - net-protocol (0.2.2) - timeout - net-smtp (0.4.0) - net-protocol - nio4r (2.5.9) - nokogiri (1.14.5-x86_64-linux) - racc (~> 1.4) - oauth (1.1.0) - oauth-tty (~> 1.0, >= 1.0.1) - snaky_hash (~> 2.0) - version_gem (~> 1.1) - oauth-tty (1.0.5) - version_gem (~> 1.1, >= 1.1.1) - oauth2 (2.0.9) - faraday (>= 0.17.3, < 3.0) - jwt (>= 1.0, < 3.0) - multi_xml (~> 0.5) - rack (>= 1.2, < 4) - snaky_hash (~> 2.0) - version_gem (~> 1.1) - omniauth (2.1.1) - hashie (>= 3.4.6) - rack (>= 2.2.3) - rack-protection - omniauth-facebook (5.0.0) - omniauth-oauth2 (~> 1.2) - omniauth-google-oauth2 (1.1.1) - jwt (>= 2.0) - oauth2 (~> 2.0.6) - omniauth (~> 2.0) - omniauth-oauth2 (~> 1.8.0) - omniauth-oauth (1.2.0) - oauth - omniauth (>= 1.0, < 3) - omniauth-oauth2 (1.8.0) - oauth2 (>= 1.4, < 3) - omniauth (~> 2.0) - omniauth-rails_csrf_protection (1.0.1) - actionpack (>= 4.2) - omniauth (~> 2.0) - omniauth-twitter (1.4.0) - omniauth-oauth (~> 1.1) - rack - orm_adapter (0.5.0) - paper_trail (12.3.0) - activerecord (>= 5.2) - request_store (~> 1.1) - parallel (1.23.0) - parser (3.2.2.4) - ast (~> 2.4.1) - racc - pg (1.1.4) - pg_search (2.3.6) - activerecord (>= 5.2) - activesupport (>= 5.2) - polyglot (0.3.5) - premailer (1.21.0) - addressable - css_parser (>= 1.12.0) - htmlentities (>= 4.0.0) - premailer-rails (1.12.0) - actionmailer (>= 3) - net-smtp - premailer (~> 1.7, >= 1.7.9) - public_suffix (5.0.3) - puma (5.6.7) - nio4r (~> 2.0) - racc (1.7.3) - rack (2.2.8) - rack-attack (6.7.0) - rack (>= 1.0, < 4) - rack-cors (1.1.1) - rack (>= 2.0.0) - rack-protection (3.1.0) - rack (~> 2.2, >= 2.2.4) - rack-proxy (0.7.7) - rack - rack-test (2.1.0) - rack (>= 1.3) - rails (6.0.6.1) - actioncable (= 6.0.6.1) - actionmailbox (= 6.0.6.1) - actionmailer (= 6.0.6.1) - actionpack (= 6.0.6.1) - actiontext (= 6.0.6.1) - actionview (= 6.0.6.1) - activejob (= 6.0.6.1) - activemodel (= 6.0.6.1) - activerecord (= 6.0.6.1) - activestorage (= 6.0.6.1) - activesupport (= 6.0.6.1) - bundler (>= 1.3.0) - railties (= 6.0.6.1) - sprockets-rails (>= 2.0.0) - rails-controller-testing (1.0.5) - actionpack (>= 5.0.1.rc1) - actionview (>= 5.0.1.rc1) - activesupport (>= 5.0.1.rc1) - rails-dom-testing (2.2.0) - activesupport (>= 5.0.0) - minitest - nokogiri (>= 1.6) - rails-html-sanitizer (1.4.3) - loofah (~> 2.3) - rails-i18n (6.0.0) - i18n (>= 0.7, < 2) - railties (>= 6.0.0, < 7) - railties (6.0.6.1) - actionpack (= 6.0.6.1) - activesupport (= 6.0.6.1) - method_source - rake (>= 0.8.7) - thor (>= 0.20.3, < 2.0) - rainbow (3.1.1) - rake (13.1.0) - ransack (2.4.2) - activerecord (>= 5.2.4) - activesupport (>= 5.2.4) - i18n - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rectify (0.13.0) - activemodel (>= 4.1.0) - activerecord (>= 4.1.0) - activesupport (>= 4.1.0) - virtus (~> 1.0.5) - wisper (>= 1.6.1) - redcarpet (3.6.0) - redis (4.8.1) - regexp_parser (2.8.2) - request_store (1.5.1) - rack (>= 1.4) - responders (3.1.1) - actionpack (>= 5.2) - railties (>= 5.2) - rexml (3.2.6) - rspec (3.12.0) - rspec-core (~> 3.12.0) - rspec-expectations (~> 3.12.0) - rspec-mocks (~> 3.12.0) - rspec-cells (0.3.8) - cells (>= 4.0.0, < 6.0.0) - rspec-rails (>= 3.0.0, < 6.1.0) - rspec-core (3.12.2) - rspec-support (~> 3.12.0) - rspec-expectations (3.12.3) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-html-matchers (0.9.4) - nokogiri (~> 1) - rspec (>= 3.0.0.a, < 4) - rspec-mocks (3.12.6) - diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.12.0) - rspec-rails (4.1.2) - actionpack (>= 4.2) - activesupport (>= 4.2) - railties (>= 4.2) - rspec-core (~> 3.10) - rspec-expectations (~> 3.10) - rspec-mocks (~> 3.10) - rspec-support (~> 3.10) - rspec-retry (0.6.2) - rspec-core (> 3.3) - rspec-support (3.12.1) - rspec_junit_formatter (0.3.0) - rspec-core (>= 2, < 4, != 2.12.0) - rubocop (0.92.0) - parallel (~> 1.10) - parser (>= 2.7.1.5) - rainbow (>= 2.2.2, < 4.0) - regexp_parser (>= 1.7) - rexml - rubocop-ast (>= 0.5.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 2.0) - rubocop-ast (1.30.0) - parser (>= 3.2.1.0) - rubocop-faker (1.1.0) - faker (>= 2.12.0) - rubocop (>= 0.82.0) - rubocop-rails (2.9.1) - activesupport (>= 4.2.0) - rack (>= 1.1) - rubocop (>= 0.90.0, < 2.0) - rubocop-rspec (1.43.2) - rubocop (~> 0.87) - ruby-progressbar (1.13.0) - ruby-vips (2.2.0) - ffi (~> 1.12) - ruby2_keywords (0.0.5) - rubyXL (3.4.25) - nokogiri (>= 1.10.8) - rubyzip (>= 1.3.0) - rubyzip (2.3.2) - sassc (2.4.0) - ffi (~> 1.9) - searchlight (4.1.0) - selenium-webdriver (3.142.7) - childprocess (>= 0.5, < 4.0) - rubyzip (>= 1.2.2) - semantic_range (3.0.0) - seven_zip_ruby (1.3.0) - simplecov (0.19.1) - docile (~> 1.1) - simplecov-html (~> 0.11) - simplecov-cobertura (1.3.1) - simplecov (~> 0.8) - simplecov-html (0.12.3) - smart_properties (1.17.0) - snaky_hash (2.0.1) - hashie - version_gem (~> 1.1, >= 1.1.1) - social-share-button (1.2.4) - coffee-rails - spring (2.1.1) - spring-watcher-listen (2.0.1) - listen (>= 2.7, < 4.0) - spring (>= 1.2, < 3.0) - sprockets (4.2.1) - concurrent-ruby (~> 1.0) - rack (>= 2.2.4, < 4) - sprockets-rails (3.4.2) - actionpack (>= 5.2) - activesupport (>= 5.2) - sprockets (>= 3.0.0) - ssrf_filter (1.1.2) - system_test_html_screenshots (0.2.0) - actionpack (>= 5.2, < 6.1.a) - temple (0.10.3) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - thor (1.3.0) - thread_safe (0.3.6) - tilt (2.3.0) - timeout (0.4.1) - tomlrb (2.0.3) - tzinfo (1.2.11) - thread_safe (~> 0.1) - uber (0.1.0) - uglifier (4.2.0) - execjs (>= 0.3.0, < 3) - unicode-display_width (1.8.0) - valid_email2 (2.3.1) - activemodel (>= 3.2) - mail (~> 2.5) - version_gem (1.1.3) - virtus (1.0.5) - axiom-types (~> 0.1) - coercible (~> 1.0) - descendants_tracker (~> 0.0, >= 0.0.3) - equalizer (~> 0.0, >= 0.0.9) - w3c_rspec_validators (0.3.0) - rails - rspec - w3c_validators - w3c_validators (1.3.7) - json (>= 1.8) - nokogiri (~> 1.6) - rexml (~> 3.2) - warden (1.2.9) - rack (>= 2.0.9) - web-console (3.7.0) - actionview (>= 5.0) - activemodel (>= 5.0) - bindex (>= 0.4.0) - railties (>= 5.0) - webmock (3.19.1) - addressable (>= 2.8.0) - crack (>= 0.3.2) - hashdiff (>= 0.4.0, < 2.0.0) - webpacker (6.0.0.rc.5) - activesupport (>= 5.2) - rack-proxy (>= 0.6.1) - railties (>= 5.2) - semantic_range (>= 2.3.0) - websocket-driver (0.7.6) - websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.5) - wicked_pdf (2.7.0) - activesupport - wisper (2.0.1) - wisper-rspec (1.1.0) - wkhtmltopdf-binary (0.12.6.6) - xpath (3.2.0) - nokogiri (~> 1.8) - zeitwerk (2.6.12) - -PLATFORMS - x86_64-linux - -DEPENDENCIES - bootsnap (~> 1.4) - byebug (~> 11.0) - codecov - decidim (= 0.26.8) - decidim-decidim_awesome! - decidim-dev (= 0.26.8) - faker (~> 2.14) - letter_opener_web (~> 1.3) - listen (~> 3.1) - puma (>= 5.5.1) - rubocop-faker - spring (~> 2.0) - spring-watcher-listen (~> 2.0.0) - uglifier (~> 4.1) - web-console (~> 3.5) - -RUBY VERSION - ruby 2.7.7p221 - -BUNDLED WITH - 2.3.20 diff --git a/Gemfile.lock b/Gemfile.lock index 73618cc11..4f3fc36f3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,9 +1,9 @@ PATH remote: . specs: - decidim-decidim_awesome (0.10.2) - decidim-admin (>= 0.26.0, < 0.28) - decidim-core (>= 0.26.0, < 0.28) + decidim-decidim_awesome (0.11.0) + decidim-admin (>= 0.28.0, < 0.29) + decidim-core (>= 0.28.0, < 0.29) deface (>= 1.5) sassc (~> 2.3) @@ -72,38 +72,30 @@ GEM minitest (>= 5.1) tzinfo (~> 2.0) zeitwerk (~> 2.3) - acts_as_list (0.9.19) - activerecord (>= 3.0) - addressable (2.8.5) + acts_as_list (1.1.0) + activerecord (>= 4.2) + addressable (2.8.6) public_suffix (>= 2.0.2, < 6.0) ast (2.4.2) - axe-core-api (4.8.0) - dumb_delegator - virtus - axe-core-rspec (4.1.0) - axe-core-api - dumb_delegator - virtus - axiom-types (0.1.1) - descendants_tracker (~> 0.0.4) - ice_nine (~> 0.11.0) - thread_safe (~> 0.3, >= 0.3.1) - base64 (0.1.1) + base64 (0.2.0) batch-loader (1.5.0) - bcrypt (3.1.19) - better_html (1.0.16) - actionview (>= 4.0) - activesupport (>= 4.0) + bcrypt (3.1.20) + better_html (2.0.2) + actionview (>= 6.0) + activesupport (>= 6.0) ast (~> 2.0) erubi (~> 1.4) - html_tokenizer (~> 0.0.6) parser (>= 2.4) smart_properties bindex (0.8.1) - bootsnap (1.17.0) + bootsnap (1.17.1) msgpack (~> 1.2) + brakeman (5.4.1) browser (2.7.1) builder (3.2.4) + bullet (7.1.6) + activesupport (>= 3.0.0) + uniform_notifier (~> 1.11) byebug (11.1.3) capybara (3.39.2) addressable @@ -114,7 +106,7 @@ GEM rack-test (>= 0.6.3) regexp_parser (>= 1.5, < 3.0) xpath (~> 3.2) - carrierwave (2.2.4) + carrierwave (2.2.5) activemodel (>= 5.0.0) activesupport (>= 5.0.0) addressable (~> 2.6) @@ -134,95 +126,78 @@ GEM actionpack (>= 5.0) cells (>= 4.1.6, < 5.0.0) charlock_holmes (0.7.7) - chef-utils (18.3.0) - concurrent-ruby - childprocess (4.1.0) - codecov (0.6.0) - simplecov (>= 0.15, < 0.22) - coercible (1.0.0) - descendants_tracker (~> 0.0.1) - coffee-rails (5.0.0) - coffee-script (>= 2.2.0) - railties (>= 5.2.0) - coffee-script (2.4.1) - coffee-script-source - execjs - coffee-script-source (1.12.2) commonmarker (0.23.10) - concurrent-ruby (1.2.2) + concurrent-ruby (1.2.3) crack (0.4.5) rexml crass (1.0.6) css_parser (1.16.0) addressable - date (3.3.3) date_validator (0.12.0) activemodel (>= 3) activesupport (>= 3) - db-query-matchers (0.10.0) - activesupport (>= 4.0, < 7) - rspec (~> 3.0) - decidim (0.27.4) - decidim-accountability (= 0.27.4) - decidim-admin (= 0.27.4) - decidim-api (= 0.27.4) - decidim-assemblies (= 0.27.4) - decidim-blogs (= 0.27.4) - decidim-budgets (= 0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - decidim-debates (= 0.27.4) - decidim-forms (= 0.27.4) - decidim-generators (= 0.27.4) - decidim-meetings (= 0.27.4) - decidim-pages (= 0.27.4) - decidim-participatory_processes (= 0.27.4) - decidim-proposals (= 0.27.4) - decidim-sortitions (= 0.27.4) - decidim-surveys (= 0.27.4) - decidim-system (= 0.27.4) - decidim-templates (= 0.27.4) - decidim-verifications (= 0.27.4) - decidim-accountability (0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - decidim-admin (0.27.4) + decidim (0.28.0) + decidim-accountability (= 0.28.0) + decidim-admin (= 0.28.0) + decidim-api (= 0.28.0) + decidim-assemblies (= 0.28.0) + decidim-blogs (= 0.28.0) + decidim-budgets (= 0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + decidim-debates (= 0.28.0) + decidim-forms (= 0.28.0) + decidim-generators (= 0.28.0) + decidim-meetings (= 0.28.0) + decidim-pages (= 0.28.0) + decidim-participatory_processes (= 0.28.0) + decidim-proposals (= 0.28.0) + decidim-sortitions (= 0.28.0) + decidim-surveys (= 0.28.0) + decidim-system (= 0.28.0) + decidim-templates (= 0.28.0) + decidim-verifications (= 0.28.0) + decidim-accountability (0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + decidim-admin (0.28.0) active_link_to (~> 1.0) - decidim-core (= 0.27.4) + decidim-core (= 0.28.0) devise (~> 4.7) devise-i18n (~> 1.2) - devise_invitable (~> 2.0) - decidim-api (0.27.4) - graphql (~> 1.12, < 1.13) - graphql-docs (~> 2.1.0) + devise_invitable (~> 2.0, >= 2.0.9) + decidim-api (0.28.0) + commonmarker (~> 0.23.0, >= 0.23.9) + graphql (~> 2.0.0) + graphql-docs (~> 3.0.1) rack-cors (~> 1.0) - decidim-assemblies (0.27.4) - decidim-core (= 0.27.4) - decidim-blogs (0.27.4) - decidim-admin (= 0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - decidim-budgets (0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - decidim-comments (0.27.4) - decidim-core (= 0.27.4) + decidim-assemblies (0.28.0) + decidim-core (= 0.28.0) + decidim-blogs (0.28.0) + decidim-admin (= 0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + decidim-budgets (0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + decidim-comments (0.28.0) + decidim-core (= 0.28.0) redcarpet (~> 3.5, >= 3.5.1) - decidim-core (0.27.4) + decidim-core (0.28.0) active_link_to (~> 1.0) - acts_as_list (~> 0.9) + acts_as_list (~> 1.0) batch-loader (~> 1.2) browser (~> 2.7) - carrierwave (~> 2.2.1) + carrierwave (~> 2.2.5, >= 2.2.5) cells-erb (~> 0.1.0) cells-rails (~> 0.1.3) charlock_holmes (~> 0.7) date_validator (~> 0.12.0) - decidim-api (= 0.27.4) + decidim-api (= 0.28.0) devise (~> 4.7) - devise-i18n (~> 1.2) + devise-i18n (~> 1.2, < 1.11.1) diffy (~> 3.3) - doorkeeper (~> 5.1) + doorkeeper (~> 5.6, >= 5.6.6) doorkeeper-i18n (~> 4.0) file_validators (~> 3.0) fog-local (~> 0.6) @@ -231,104 +206,106 @@ GEM hashdiff (>= 0.4.0, < 2.0.0) invisible_captcha (~> 0.12) kaminari (~> 1.2, >= 1.2.1) - loofah (~> 2.19.0) + loofah (~> 2.19, >= 2.19.1) mime-types (>= 1.16, < 4.0) mini_magick (~> 4.9) mustache (~> 1.1.0) + net-smtp (~> 0.3.1) omniauth (~> 2.0) omniauth-facebook (~> 5.0) omniauth-google-oauth2 (~> 1.0) omniauth-rails_csrf_protection (~> 1.0) omniauth-twitter (~> 1.4) paper_trail (~> 12.0) - pg (~> 1.1.4, < 2) + pg (~> 1.4.0, < 2) pg_search (~> 2.2) premailer-rails (~> 1.10) - rack (~> 2.2, >= 2.2.3) + psych (~> 4.0) + rack (~> 2.2, >= 2.2.6.4) rack-attack (~> 6.0) - rails (~> 6.1.0) + rails (~> 6.1.7, >= 6.1.7.4) rails-i18n (~> 6.0) - ransack (~> 2.4.1) + ransack (~> 3.2.1) redis (~> 4.1) request_store (~> 1.5.0) rubyXL (~> 3.4) rubyzip (~> 2.0) seven_zip_ruby (~> 1.3) - social-share-button (~> 1.2, >= 1.2.1) - valid_email2 (~> 2.1) - webpacker (= 6.0.0.rc.5) - webpush (~> 1.1) + shakapacker (~> 7.1.0) + valid_email2 (~> 4.0) + web-push (~> 3.0) wisper (~> 2.0) - decidim-debates (0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - decidim-dev (0.27.4) - axe-core-rspec (~> 4.1.0) + decidim-debates (0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + decidim-dev (0.28.0) + bullet (~> 7.0) byebug (~> 11.0) - capybara (~> 3.24) - db-query-matchers (~> 0.10.0) - decidim (= 0.27.4) - erb_lint (~> 0.0.35) - factory_bot_rails (~> 4.8) - i18n-tasks (~> 0.9.18) - mdl (~> 0.5) - nokogiri (~> 1.13) - parallel_tests (~> 3.7) - puma (~> 5.0) + capybara (~> 3.39) + decidim (= 0.28.0) + erb_lint (~> 0.4.0) + factory_bot_rails (~> 6.2) + faker (~> 3.2) + i18n-tasks (~> 1.0) + nokogiri (~> 1.14, >= 1.14.3) + parallel_tests (~> 4.2) + puma (~> 6.2, >= 6.3.1) rails-controller-testing (~> 1.0) + rspec (~> 3.12) rspec-cells (~> 0.3.7) - rspec-html-matchers (~> 0.9.1) - rspec-rails (~> 4.0) + rspec-html-matchers (~> 0.10) + rspec-rails (~> 6.0) rspec-retry (~> 0.6.2) - rspec_junit_formatter (~> 0.3.0) - rubocop (~> 1.28.0) - rubocop-rails (~> 2.14) - rubocop-rspec (~> 2.10) - selenium-webdriver (~> 4.1.0) - simplecov (~> 0.21.0) + rspec_junit_formatter (~> 0.6.0) + rubocop (~> 1.50.0) + rubocop-faker (~> 1.1) + rubocop-rails (~> 2.19) + rubocop-rspec (~> 2.20) + selenium-webdriver (~> 4.9) + simplecov (~> 0.22.0) simplecov-cobertura (~> 2.1.0) w3c_rspec_validators (~> 0.3.0) - webmock (~> 3.6) + webmock (~> 3.18) wisper-rspec (~> 1.0) - decidim-forms (0.27.4) - decidim-core (= 0.27.4) + decidim-forms (0.28.0) + decidim-core (= 0.28.0) wicked_pdf (~> 2.1) wkhtmltopdf-binary (~> 0.12) - decidim-generators (0.27.4) - decidim-core (= 0.27.4) - decidim-meetings (0.27.4) - decidim-core (= 0.27.4) - decidim-forms (= 0.27.4) + decidim-generators (0.28.0) + decidim-core (= 0.28.0) + decidim-meetings (0.28.0) + decidim-core (= 0.28.0) + decidim-forms (= 0.28.0) icalendar (~> 2.5) - decidim-pages (0.27.4) - decidim-core (= 0.27.4) - decidim-participatory_processes (0.27.4) - decidim-core (= 0.27.4) - decidim-proposals (0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - doc2text (~> 0.4.5) + decidim-pages (0.28.0) + decidim-core (= 0.28.0) + decidim-participatory_processes (0.28.0) + decidim-core (= 0.28.0) + decidim-proposals (0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + doc2text (~> 0.4.6) redcarpet (~> 3.5, >= 3.5.1) - decidim-sortitions (0.27.4) - decidim-admin (= 0.27.4) - decidim-comments (= 0.27.4) - decidim-core (= 0.27.4) - decidim-proposals (= 0.27.4) - decidim-surveys (0.27.4) - decidim-core (= 0.27.4) - decidim-forms (= 0.27.4) - decidim-templates (= 0.27.4) - decidim-system (0.27.4) + decidim-sortitions (0.28.0) + decidim-admin (= 0.28.0) + decidim-comments (= 0.28.0) + decidim-core (= 0.28.0) + decidim-proposals (= 0.28.0) + decidim-surveys (0.28.0) + decidim-core (= 0.28.0) + decidim-forms (= 0.28.0) + decidim-templates (= 0.28.0) + decidim-system (0.28.0) active_link_to (~> 1.0) - decidim-core (= 0.27.4) + decidim-core (= 0.28.0) devise (~> 4.7) devise-i18n (~> 1.2) - devise_invitable (~> 2.0) - decidim-templates (0.27.4) - decidim-core (= 0.27.4) - decidim-forms (= 0.27.4) - decidim-verifications (0.27.4) - decidim-core (= 0.27.4) + devise_invitable (~> 2.0, >= 2.0.9) + decidim-templates (0.28.0) + decidim-core (= 0.28.0) + decidim-forms (= 0.28.0) + decidim-verifications (0.28.0) + decidim-core (= 0.28.0) declarative-builder (0.1.0) declarative-option (< 0.2.0) declarative-option (0.1.0) @@ -338,33 +315,30 @@ GEM polyglot railties (>= 5.2) rainbow (>= 2.1.0) - descendants_tracker (0.0.4) - thread_safe (~> 0.3, >= 0.3.1) devise (4.9.3) bcrypt (~> 3.0) orm_adapter (~> 0.1) railties (>= 4.1.0) responders warden (~> 1.2.3) - devise-i18n (1.12.0) + devise-i18n (1.11.0) devise (>= 4.9.0) devise_invitable (2.0.9) actionmailer (>= 5.0) devise (>= 4.6) diff-lcs (1.5.0) diffy (3.4.2) + digest (3.1.1) doc2text (0.4.6) nokogiri (>= 1.13.2, < 1.15.0) rubyzip (~> 2.3.0) docile (1.4.0) - doorkeeper (5.6.6) + doorkeeper (5.6.8) railties (>= 5) doorkeeper-i18n (4.0.1) - dumb_delegator (1.0.0) - erb_lint (0.0.37) + erb_lint (0.4.0) activesupport - better_html (~> 1.0.7) - html_tokenizer + better_html (>= 2.0.1) parser (>= 2.7.1.4) rainbow rubocop @@ -372,28 +346,26 @@ GEM erbse (0.1.4) temple erubi (1.12.0) - escape_utils (1.3.0) - excon (0.104.0) - execjs (2.9.1) + escape_utils (1.2.2) + excon (0.109.0) extended-markdown-filter (0.7.0) html-pipeline (~> 2.9) - factory_bot (4.11.1) - activesupport (>= 3.0.0) - factory_bot_rails (4.11.1) - factory_bot (~> 4.11.1) - railties (>= 3.0.0) - faker (2.23.0) + factory_bot (6.4.5) + activesupport (>= 5.0.0) + factory_bot_rails (6.4.3) + factory_bot (~> 6.4) + railties (>= 5.0.0) + faker (3.2.3) i18n (>= 1.8.11, < 2) - faraday (2.7.11) - base64 - faraday-net_http (>= 2.0, < 3.1) - ruby2_keywords (>= 0.0.4) - faraday-net_http (3.0.2) + faraday (2.9.0) + faraday-net_http (>= 2.0, < 3.2) + faraday-net_http (3.1.0) + net-http ffi (1.16.3) file_validators (3.0.0) activemodel (>= 3.2) mime-types (>= 1.0) - fog-core (2.3.0) + fog-core (2.4.0) builder excon (~> 0.71) formatador (>= 0.2, < 2.0) @@ -410,46 +382,44 @@ GEM geocoder (1.8.2) globalid (1.2.1) activesupport (>= 6.1) - graphql (1.12.24) - graphql-docs (2.1.0) + graphql (2.0.27) + graphql-docs (3.0.1) commonmarker (~> 0.16) - escape_utils (~> 1.2) + escape_utils (~> 1.2.2) extended-markdown-filter (~> 0.4) gemoji (~> 3.0) - graphql (~> 1.12) + graphql (~> 2.0) html-pipeline (~> 2.9) sass (~> 3.4) - hashdiff (1.0.1) + hashdiff (1.1.0) hashie (5.0.0) - highline (2.1.0) - hkdf (0.3.0) + highline (3.0.1) html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) - html_tokenizer (0.0.7) htmlentities (4.3.4) i18n (1.14.1) concurrent-ruby (~> 1.0) - i18n-tasks (0.9.37) + i18n-tasks (1.0.13) activesupport (>= 4.0.2) ast (>= 2.1.0) + better_html (>= 1.0, < 3.0) erubi highline (>= 2.0.0) i18n - parser (>= 2.2.3.0) + parser (>= 3.2.2.1) rails-i18n rainbow (>= 2.2.2, < 4.0) terminal-table (>= 1.5.1) - icalendar (2.10.0) + icalendar (2.10.1) ice_cube (~> 0.16) ice_cube (0.16.4) - ice_nine (0.11.2) image_processing (1.12.2) mini_magick (>= 4.9.5, < 5) ruby-vips (>= 2.0.17, < 3) invisible_captcha (0.13.0) rails (>= 3.2.0) - json (2.6.3) + json (2.7.1) jwt (2.7.1) kaminari (1.2.2) activesupport (>= 4.1.0) @@ -463,24 +433,21 @@ GEM activerecord kaminari-core (= 1.2.2) kaminari-core (1.2.2) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) launchy (2.5.2) addressable (~> 2.8) letter_opener (1.8.1) launchy (>= 2.2, < 3) - letter_opener_web (1.4.1) - actionmailer (>= 3.2) - letter_opener (~> 1.0) - railties (>= 3.2) + letter_opener_web (2.0.0) + actionmailer (>= 5.2) + letter_opener (~> 1.7) + railties (>= 5.2) + rexml listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - loofah (2.19.1) + loofah (2.22.0) crass (~> 1.0.2) - nokogiri (>= 1.5.9) + nokogiri (>= 1.12.0) mail (2.8.1) mini_mime (>= 0.1.1) net-imap @@ -488,37 +455,29 @@ GEM net-smtp marcel (1.0.2) matrix (0.4.2) - mdl (0.13.0) - kramdown (~> 2.3) - kramdown-parser-gfm (~> 1.1) - mixlib-cli (~> 2.1, >= 2.1.1) - mixlib-config (>= 2.2.1, < 4) - mixlib-shellout method_source (1.0.0) - mime-types (3.5.1) + mime-types (3.5.2) mime-types-data (~> 3.2015) - mime-types-data (3.2023.1003) + mime-types-data (3.2023.1205) mini_magick (4.12.0) mini_mime (1.1.5) - minitest (5.20.0) - mixlib-cli (2.1.8) - mixlib-config (3.0.27) - tomlrb - mixlib-shellout (3.2.7) - chef-utils + minitest (5.21.2) msgpack (1.7.2) multi_xml (0.6.0) mustache (1.1.1) - net-imap (0.4.4) - date + net-http (0.4.1) + uri + net-imap (0.2.4) + digest net-protocol + strscan net-pop (0.1.2) net-protocol - net-protocol (0.2.1) + net-protocol (0.2.2) timeout - net-smtp (0.4.0) + net-smtp (0.3.4) net-protocol - nio4r (2.5.9) + nio4r (2.7.0) nokogiri (1.14.5-x86_64-linux) racc (~> 1.4) oauth (1.1.0) @@ -534,7 +493,7 @@ GEM rack (>= 1.2, < 4) snaky_hash (~> 2.0) version_gem (~> 1.1) - omniauth (2.1.1) + omniauth (2.1.2) hashie (>= 3.4.6) rack (>= 2.2.3) rack-protection @@ -557,22 +516,23 @@ GEM omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) rack + openssl (3.2.0) orm_adapter (0.5.0) paper_trail (12.3.0) activerecord (>= 5.2) request_store (~> 1.1) - parallel (1.23.0) - parallel_tests (3.13.0) + parallel (1.24.0) + parallel_tests (4.4.0) parallel - parser (3.2.2.4) + parser (3.3.0.5) ast (~> 2.4.1) racc - pg (1.1.4) + pg (1.4.6) pg_search (2.3.6) activerecord (>= 5.2) activesupport (>= 5.2) polyglot (0.3.5) - premailer (1.21.0) + premailer (1.22.0) addressable css_parser (>= 1.12.0) htmlentities (>= 4.0.0) @@ -580,16 +540,19 @@ GEM actionmailer (>= 3) net-smtp premailer (~> 1.7, >= 1.7.9) - public_suffix (5.0.3) - puma (5.6.7) + psych (4.0.6) + stringio + public_suffix (5.0.4) + puma (6.4.2) nio4r (~> 2.0) - racc (1.7.2) + racc (1.7.3) rack (2.2.8) rack-attack (6.7.0) rack (>= 1.0, < 4) rack-cors (1.1.1) rack (>= 2.0.0) - rack-protection (3.1.0) + rack-protection (3.2.0) + base64 (>= 0.1.0) rack (~> 2.2, >= 2.2.4) rack-proxy (0.7.7) rack @@ -618,8 +581,9 @@ GEM activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.5.0) - loofah (~> 2.19, >= 2.19.1) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) rails-i18n (6.0.0) i18n (>= 0.7, < 2) railties (>= 6.0.0, < 7) @@ -631,16 +595,16 @@ GEM thor (~> 1.0) rainbow (3.1.1) rake (13.1.0) - ransack (2.4.2) - activerecord (>= 5.2.4) - activesupport (>= 5.2.4) + ransack (3.2.1) + activerecord (>= 6.1.5) + activesupport (>= 6.1.5) i18n rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) redcarpet (3.6.0) redis (4.8.1) - regexp_parser (2.8.2) + regexp_parser (2.9.0) request_store (1.5.1) rack (>= 1.4) responders (3.1.1) @@ -651,57 +615,64 @@ GEM rspec-core (~> 3.12.0) rspec-expectations (~> 3.12.0) rspec-mocks (~> 3.12.0) - rspec-cells (0.3.8) + rspec-cells (0.3.9) cells (>= 4.0.0, < 6.0.0) - rspec-rails (>= 3.0.0, < 6.1.0) + rspec-rails (>= 3.0.0, < 6.2.0) rspec-core (3.12.2) rspec-support (~> 3.12.0) rspec-expectations (3.12.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-html-matchers (0.9.4) + rspec-html-matchers (0.10.0) nokogiri (~> 1) - rspec (>= 3.0.0.a, < 4) + rspec (>= 3.0.0.a) rspec-mocks (3.12.6) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.12.0) - rspec-rails (4.1.2) - actionpack (>= 4.2) - activesupport (>= 4.2) - railties (>= 4.2) - rspec-core (~> 3.10) - rspec-expectations (~> 3.10) - rspec-mocks (~> 3.10) - rspec-support (~> 3.10) + rspec-rails (6.1.0) + actionpack (>= 6.1) + activesupport (>= 6.1) + railties (>= 6.1) + rspec-core (~> 3.12) + rspec-expectations (~> 3.12) + rspec-mocks (~> 3.12) + rspec-support (~> 3.12) rspec-retry (0.6.2) rspec-core (> 3.3) rspec-support (3.12.1) - rspec_junit_formatter (0.3.0) + rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) - rubocop (1.28.2) + rubocop (1.50.2) + json (~> 2.3) parallel (~> 1.10) - parser (>= 3.1.0.0) + parser (>= 3.2.0.0) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 1.8, < 3.0) - rexml - rubocop-ast (>= 1.17.0, < 2.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 3.0) + unicode-display_width (>= 2.4.0, < 3.0) rubocop-ast (1.30.0) parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-factory_bot (2.25.1) + rubocop (~> 1.41) rubocop-faker (1.1.0) faker (>= 2.12.0) rubocop (>= 0.82.0) - rubocop-rails (2.15.2) + rubocop-rails (2.23.1) activesupport (>= 4.2.0) rack (>= 1.1) - rubocop (>= 1.7.0, < 2.0) - rubocop-rspec (2.11.1) - rubocop (~> 1.19) + rubocop (>= 1.33.0, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.26.1) + rubocop (~> 1.40) + rubocop-capybara (~> 2.17) + rubocop-factory_bot (~> 2.22) ruby-progressbar (1.13.0) ruby-vips (2.2.0) ffi (~> 1.12) - ruby2_keywords (0.0.5) rubyXL (3.4.25) nokogiri (>= 1.10.8) rubyzip (>= 1.3.0) @@ -713,13 +684,19 @@ GEM rb-inotify (~> 0.9, >= 0.9.7) sassc (2.4.0) ffi (~> 1.9) - selenium-webdriver (4.1.0) - childprocess (>= 0.5, < 5.0) + selenium-webdriver (4.17.0) + base64 (~> 0.2) rexml (~> 3.2, >= 3.2.5) - rubyzip (>= 1.2.2) + rubyzip (>= 1.2.2, < 3.0) + websocket (~> 1.0) semantic_range (3.0.0) seven_zip_ruby (1.3.0) - simplecov (0.21.2) + shakapacker (7.1.0) + activesupport (>= 5.2) + rack-proxy (>= 0.6.1) + railties (>= 5.2) + semantic_range (>= 2.3.0) + simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) @@ -732,8 +709,6 @@ GEM snaky_hash (2.0.1) hashie version_gem (~> 1.1, >= 1.1.1) - social-share-button (1.2.4) - coffee-rails spring (2.1.1) spring-watcher-listen (2.0.1) listen (>= 2.7, < 4.0) @@ -746,26 +721,24 @@ GEM activesupport (>= 5.2) sprockets (>= 3.0.0) ssrf_filter (1.1.2) + stringio (3.1.0) + strscan (3.1.0) temple (0.10.3) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) thor (1.3.0) - thread_safe (0.3.6) tilt (2.3.0) - timeout (0.4.0) - tomlrb (2.0.3) + timeout (0.4.1) tzinfo (2.0.6) concurrent-ruby (~> 1.0) uber (0.1.0) unicode-display_width (2.5.0) - valid_email2 (2.3.1) + uniform_notifier (1.16.0) + uri (0.13.0) + valid_email2 (4.0.6) activemodel (>= 3.2) mail (~> 2.5) version_gem (1.1.3) - virtus (2.0.0) - axiom-types (~> 0.1) - coercible (~> 1.0) - descendants_tracker (~> 0.0, >= 0.0.3) w3c_rspec_validators (0.3.0) rails rspec @@ -781,18 +754,14 @@ GEM activemodel (>= 6.0.0) bindex (>= 0.4.0) railties (>= 6.0.0) + web-push (3.0.1) + jwt (~> 2.0) + openssl (~> 3.0) webmock (3.19.1) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webpacker (6.0.0.rc.5) - activesupport (>= 5.2) - rack-proxy (>= 0.6.1) - railties (>= 5.2) - semantic_range (>= 2.3.0) - webpush (1.1.0) - hkdf (~> 0.2) - jwt (~> 2.0) + websocket (1.2.10) websocket-driver (0.7.6) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) @@ -810,22 +779,24 @@ PLATFORMS DEPENDENCIES bootsnap (~> 1.4) + brakeman (~> 5.4) byebug (~> 11.0) - codecov - decidim (= 0.27.4) + decidim (= 0.28.0) decidim-decidim_awesome! - decidim-dev (= 0.27.4) - faker (~> 2.14) - letter_opener_web (~> 1.3) + decidim-dev (= 0.28.0) + letter_opener_web (~> 2.0) listen (~> 3.1) - puma (>= 5.5.1) - rubocop-faker + net-imap (~> 0.2.3) + net-pop (~> 0.1.1) + net-smtp (~> 0.3.1) + parallel_tests (~> 4.2) + puma (>= 6.3.1) spring (~> 2.0) - spring-watcher-listen (~> 2.0.0) - web-console + spring-watcher-listen (~> 2.0) + web-console (~> 4.2) RUBY VERSION - ruby 3.0.6p216 + ruby 3.1.1p18 BUNDLED WITH 2.4.21 diff --git a/README.md b/README.md index 5b1478a44..116df9b8c 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,7 @@ # Decidim::DecidimAwesome -[![[CI] Tests 0.27](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/tests.yml/badge.svg)](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/tests.yml) -[![[CI] Tests 0.26](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/tests-legacy.yml/badge.svg)](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/tests-legacy.yml) +[![[CI] Tests 0.28](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/tests.yml/badge.svg)](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/tests.yml) [![[CI] Lint](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/lint.yml/badge.svg)](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/lint.yml) -[![[CI] Precompile](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/precompile.yml/badge.svg)](https://github.com/decidim-ice/decidim-module-decidim_awesome/actions/workflows/precompile.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/2dada53525dd5a944089/maintainability)](https://codeclimate.com/github/decidim-ice/decidim-module-decidim_awesome/maintainability) [![Test Coverage](https://codecov.io/gh/decidim-ice/decidim-module-decidim_awesome/branch/main/graph/badge.svg?token=TFBMCLLZJG)](https://codecov.io/gh/decidim-ice/decidim-module-decidim_awesome) @@ -244,7 +242,7 @@ The `weight_validator` is a Proc that receives the weight value and the context **Notes for view `show_vote_button_view`** -When building a new view for the vote button ([see the original](https://github.com/decidim/decidim/blob/release/0.27-stable/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb)) is important to take into account the following situations: +When building a new view for the vote button ([see the original](https://github.com/decidim/decidim/blob/release/0.28-stable/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb)) is important to take into account the following situations: - If there's a `current_user` logged in - If votes are blocked `if current_settings.votes_blocked?` @@ -252,7 +250,7 @@ When building a new view for the vote button ([see the original](https://github. - If maximum votes have already reached `if proposal.maximum_votes_reached?` - If the proposal can accumulate supports beyond maximum `if proposal.can_accumulate_supports_beyond_threshold` - If the current component allows the user to participate `if current_component.participatory_space.can_participate?(current_user)` -- Note that the [original view](https://github.com/decidim/decidim/blob/release/0.27-stable/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb) is overridden only inside the tag `
`. You only need to substitute the part inside. +- Note that the [original view](https://github.com/decidim/decidim/blob/release/0.28-stable/decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb) is overridden only inside the tag `
`. You only need to substitute the part inside. To cast a vote a `POST` action is needed with the parameters `proposal_id`, `from_proposals_list` and `weight`. The route where to send the vote can be constructed such as: @@ -314,13 +312,14 @@ RAILS_ENV=production bin/rails decidim_awesome:active_storage_migrations:check_m ``` The correct version of Decidim Awesome should resolved automatically by the Bundler. -However you can force some specific version using `gem "decidim-decidim_awesome", "~> 0.10.0"` in the Gemfile. +However you can force some specific version using `gem "decidim-decidim_awesome", "~> 0.11.0"` in the Gemfile. Depending on your Decidim version, choose the corresponding Awesome version to ensure compatibility: | Awesome version | Compatible Decidim versions | |---|---| -| 0.10.0 | >= 0.26.7, >= 0.27.3 | +| 0.11.x | 0.28.x | +| 0.10.x | >= 0.26.7, >= 0.27.x | | 0.9.2 | >= 0.26.7, >= 0.27.3 | | 0.9.x | 0.26.x, 0.27.x | | 0.8.x | 0.25.x, 0.26.x | @@ -329,6 +328,7 @@ Depending on your Decidim version, choose the corresponding Awesome version to e | 0.5.x | 0.21.x, 0.22.x | > *Heads up!* +> * version 0.11.0 is only compatible with Decidim v0.28 as a major redesign makes backward compatibility impractical. > * version 0.10.0 requires database migrations! Don't forget the migrations step when updating. > * version 0.8.0 removes CSS Themes for tenants. If you have been using them you will have to manually migrate them to custom styles. > * version 0.8.0 uses ActiveStorage, same as Decidim 0.25. 2 new rake task have been introduced to facilitate the migration: `bin/rails decidim_awesome:active_storage_migrations:check_migration_from_carrierwave` and @@ -448,6 +448,9 @@ DATABASE_USERNAME= DATABASE_PASSWORD= bundle exec rake test_ DATABASE_USERNAME= DATABASE_PASSWORD= bundle exec rspec ``` +> Note: the following is not currently applicable as version v0.11 is only compatible with version Decidim v0.28 +> Is left here for future reference + However, this project works with different versions of Decidim. In order to test them all, we maintain two different Gemfiles: `Gemfile` and `Gemfile.legacy`. The first one is used for development and testing the latest Decidim version supported, the second one is used for testing against the old Decidim version. You can run run tests against the legacy Decidim versions by using: @@ -455,16 +458,16 @@ You can run run tests against the legacy Decidim versions by using: ```bash export DATABASE_USERNAME= export DATABASE_PASSWORD= -RBENV_VERSION=2.7.6 BUNDLE_GEMFILE=Gemfile.legacy bundle -RBENV_VERSION=2.7.6 BUNDLE_GEMFILE=Gemfile.legacy bundle exec rake test_app -RBENV_VERSION=2.7.6 BUNDLE_GEMFILE=Gemfile.legacy bundle exec rspec +RBENV_VERSION=3.1.1 BUNDLE_GEMFILE=Gemfile.legacy bundle +RBENV_VERSION=3.1.1 BUNDLE_GEMFILE=Gemfile.legacy bundle exec rake test_app +RBENV_VERSION=3.1.1 BUNDLE_GEMFILE=Gemfile.legacy bundle exec rspec ``` -For convenience, you can use the scripts `bin/rspec` and `bin/rspec-legacy` to run tests against one or the other version: +For convenience, you can use the scripts `bin/test` and `bin/test-legacy` to run tests against one or the other version: ```bash -bin/rspec spec/ -bin/rspec-legacy spec/ +bin/test spec/ +bin/test-legacy spec/ ``` - Rbenv is required for this script to work. diff --git a/app/cells/concerns/decidim/decidim_awesome/proposal_m_cell_override.rb b/app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb similarity index 93% rename from app/cells/concerns/decidim/decidim_awesome/proposal_m_cell_override.rb rename to app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb index 5e1e987fd..033cd345d 100644 --- a/app/cells/concerns/decidim/decidim_awesome/proposal_m_cell_override.rb +++ b/app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb @@ -2,7 +2,7 @@ module Decidim module DecidimAwesome - module ProposalMCellOverride + module ProposalLCellOverride extend ActiveSupport::Concern included do @@ -26,8 +26,6 @@ def cache_hash hash << Digest::MD5.hexdigest(model.authors.map(&:cache_key_with_version).to_s) hash << (model.must_render_translation?(model.organization) ? 1 : 0) if model.respond_to?(:must_render_translation?) hash << model.component.participatory_space.active_step.id if model.component.participatory_space.try(:active_step) - hash << has_footer? - hash << has_actions? hash.join(Decidim.cache_key_separator) end diff --git a/app/cells/decidim/decidim_awesome/voting/voting_cards_counter/vote_button.erb b/app/cells/decidim/decidim_awesome/voting/voting_cards_counter/vote_button.erb index 517fd4c52..276187743 100644 --- a/app/cells/decidim/decidim_awesome/voting/voting_cards_counter/vote_button.erb +++ b/app/cells/decidim/decidim_awesome/voting/voting_cards_counter/vote_button.erb @@ -2,7 +2,7 @@ class: "button #{vote_btn_class} small button--sc#{" disabled" if current_settings.votes_blocked?}", title: t("decidim.decidim_awesome.voting.voting_cards.vote_button") do %> <% if user_voted_weight %> - <%= icon "actions", class: "icon" %> <%= t("decidim.decidim_awesome.voting.voting_cards.voted") %> + <%= icon "dashboard-line", class: "icon" %> <%= t("decidim.decidim_awesome.voting.voting_cards.voted") %> <% elsif proposal.maximum_votes_reached? && !proposal.can_accumulate_supports_beyond_threshold && current_component.participatory_space.can_participate?(current_user) %> <%= t("decidim.proposals.proposals.vote_button.maximum_votes_reached") %> <% elsif vote_limit_enabled? && remaining_votes_count_for(current_user) <= 0 %> diff --git a/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb b/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb index 6b71f21b7..fd32be77e 100644 --- a/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb +++ b/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb @@ -12,8 +12,8 @@ def show def vote_block_for(proposal, weight) render partial: "vote_block", locals: { - proposal: proposal, - weight: weight + proposal:, + weight: } end @@ -30,7 +30,7 @@ def from_proposals_list end def proposal_vote_path(weight) - proposal_proposal_vote_path(proposal_id: proposal.id, from_proposals_list: from_proposals_list, weight: weight) + proposal_proposal_vote_path(proposal_id: proposal.id, from_proposals_list:, weight:) end def link_options(weight) @@ -68,7 +68,7 @@ def disabled? return true end - return true if vote_limit_enabled? && remaining_votes_count_for(current_user) <= 0 + true if vote_limit_enabled? && remaining_votes_count_for(current_user) <= 0 end def voted_for_any? diff --git a/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb b/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb index 87e19a8b5..ac94e4bd4 100644 --- a/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +++ b/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb @@ -11,7 +11,7 @@ def create_constraint_never(var) subconfig = AwesomeConfig.find_or_initialize_by(var: "#{var}_#{@ident}", organization: @organization) @constraint = ConfigConstraint.create!( awesome_config: subconfig, - settings: settings + settings: ) end diff --git a/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb b/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb index b56945f20..7ebc62478 100644 --- a/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb +++ b/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb @@ -11,7 +11,7 @@ class DestroyCustomRedirect < Command def initialize(item, organization) @item = item @organization = organization - @redirections = AwesomeConfig.find_by(var: :custom_redirects, organization: organization) + @redirections = AwesomeConfig.find_by(var: :custom_redirects, organization:) end # Executes the command. Broadcasts these events: diff --git a/app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb b/app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb index 4d57a29fc..49db867cb 100644 --- a/app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb +++ b/app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb @@ -11,7 +11,7 @@ class DestroyMenuHack < Command def initialize(item, menu_name, organization) @item = item @organization = organization - @menu = AwesomeConfig.find_by(var: menu_name, organization: organization) + @menu = AwesomeConfig.find_by(var: menu_name, organization:) end # Executes the command. Broadcasts these events: diff --git a/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb b/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb index a4aa4f7f4..1be255820 100644 --- a/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb +++ b/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb @@ -34,7 +34,7 @@ def call end end - broadcast(:ok, { scope: scope, key: @text }) + broadcast(:ok, { scope:, key: @text }) rescue StandardError => e broadcast(:invalid, e.message) end diff --git a/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb b/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb index 50412539a..aef76a009 100644 --- a/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb +++ b/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb @@ -38,8 +38,8 @@ def call delegate :to_params, to: :form def url_exists? - return unless redirects - return unless redirects.value.is_a? Hash + return false unless redirects + return false unless redirects.value.is_a? Hash redirects.value[item.origin].present? end diff --git a/app/commands/decidim/decidim_awesome/command.rb b/app/commands/decidim/decidim_awesome/command.rb index 01ffdb77e..abf99d26b 100644 --- a/app/commands/decidim/decidim_awesome/command.rb +++ b/app/commands/decidim/decidim_awesome/command.rb @@ -2,13 +2,7 @@ module Decidim module DecidimAwesome - # maintains compatibility with v0.26 which uses Rectify - if defined? ::Decidim::Command - class Command < ::Decidim::Command - end - else - class Command < ::Rectify::Command - end + class Command < ::Decidim::Command end end end diff --git a/app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable_helper.rb b/app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable_helper.rb index 3da344bd9..242f3255a 100644 --- a/app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable_helper.rb +++ b/app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable_helper.rb @@ -18,7 +18,7 @@ def applied_filters_tags(i18n_ctx) concat "#{i18n_filter_label(:admin_role_type, filterable_i18n_scope_from_ctx(i18n_ctx))}: " concat t("decidim.decidim_awesome.admin.admin_accountability.admin_roles.#{params[:admin_role_type]}", default: params[:admin_role_type]) concat icon_link_to( - "circle-x", + "close-circle-line", url_for(export_params.except(:admin_role_type)), t("decidim.admin.actions.cancel"), class: "action-icon--remove" diff --git a/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb b/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb index af56b3531..fa5a39833 100644 --- a/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb +++ b/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb @@ -50,7 +50,7 @@ def custom_redirects_destination(fullpath) destination = "#{destination}#{union}#{query}" end - return destination.strip if destination.present? + destination.strip if destination.present? end end end diff --git a/app/controllers/concerns/decidim/decidim_awesome/proposals/proposal_votes_controller_override.rb b/app/controllers/concerns/decidim/decidim_awesome/proposals/proposal_votes_controller_override.rb index 42802e560..3b7349f22 100644 --- a/app/controllers/concerns/decidim/decidim_awesome/proposals/proposal_votes_controller_override.rb +++ b/app/controllers/concerns/decidim/decidim_awesome/proposals/proposal_votes_controller_override.rb @@ -13,7 +13,7 @@ module ProposalVotesControllerOverride # rubocop:enable Rails/LexicallyScopedActionFilter def create - enforce_permission_to :vote, :proposal, proposal: proposal + enforce_permission_to(:vote, :proposal, proposal:) @from_proposals_list = params[:from_proposals_list] == "true" Decidim::Proposals::VoteProposal.call(proposal, current_user) do @@ -27,7 +27,7 @@ def create proposal: Decidim::Proposals::Proposal.where(component: current_component) ).map(&:proposal) - expose(proposals: proposals) + expose(proposals:) render :update_buttons_and_counters end @@ -47,7 +47,7 @@ def validate_weight end def current_vote - @current_vote ||= Decidim::Proposals::ProposalVote.find_by(author: current_user, proposal: proposal) + @current_vote ||= Decidim::Proposals::ProposalVote.find_by(author: current_user, proposal:) end def vote_manifest diff --git a/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb b/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb index b58592998..f9335639f 100644 --- a/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb @@ -34,27 +34,27 @@ def admin_head def head_addons(part) case part when :CSS - ['<%= stylesheet_pack_tag "decidim_decidim_awesome", media: "all" %>', + ['<%= append_stylesheet_pack_tag "decidim_decidim_awesome", media: "all" %>', '<%= render(partial: "layouts/decidim/decidim_awesome/custom_styles") if awesome_custom_styles %>'].join("\n") when :JavaScript ['<%= render partial: "layouts/decidim/decidim_awesome/awesome_config" %>', - '<%= javascript_pack_tag "decidim_decidim_awesome" %>', - '<%= javascript_pack_tag "decidim_decidim_awesome_custom_fields" if awesome_proposal_custom_fields %>'].join("\n") + '<%= append_javascript_pack_tag "decidim_decidim_awesome" %>', + '<%= append_javascript_pack_tag "decidim_decidim_awesome_custom_fields" if awesome_proposal_custom_fields %>'].join("\n") end end def admin_addons(part) case part when :CSS - '<%= stylesheet_pack_tag "decidim_admin_decidim_awesome", media: "all" %>' + '<%= append_stylesheet_pack_tag "decidim_admin_decidim_awesome", media: "all" %>' when :JavaScript - ['<%= javascript_pack_tag "decidim_admin_decidim_awesome", defer: false %>', - '<%= javascript_pack_tag "decidim_decidim_awesome_custom_fields" if awesome_proposal_custom_fields %>'].join("\n") + ['<%= append_javascript_pack_tag "decidim_admin_decidim_awesome", defer: false %>', + '<%= append_javascript_pack_tag "decidim_decidim_awesome_custom_fields" if awesome_proposal_custom_fields %>'].join("\n") end end def render_template(partial) - render_to_string(partial: partial) + render_to_string(partial:) rescue ActionView::Template::Error => e flash.now[:alert] = "Partial [#{partial}] has thrown an error: #{e.message}" end diff --git a/app/controllers/decidim/decidim_awesome/admin/config_controller.rb b/app/controllers/decidim/decidim_awesome/admin/config_controller.rb index 9ea107486..f1703c191 100644 --- a/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/config_controller.rb @@ -44,7 +44,13 @@ def users query = current_organization.users.order(name: :asc) query = query.where("name ILIKE :term OR nickname ILIKE :term OR email ILIKE :term", term: "%#{term}%") - render json: query.all.collect { |u| { id: u.id, text: format_user_name(u) } } + render json: query.all.collect { |u| + { + value: u.id, + text: format_user_name(u), + is_admin: u.read_attribute("admin") + } + } else render json: [] end @@ -88,14 +94,12 @@ def configs DecidimAwesome.config.keys end - # rubocop:disable Style/OpenStructUse def users_for(ids_list) - Decidim::User.where(id: ids_list).map { |user| OpenStruct.new(text: format_user_name(user), id: user.id) } + Decidim::User.where(id: ids_list).map { |user| [format_user_name(user), user.id, { data: { is_admin: user.read_attribute("admin") } }] } end - # rubocop:enable Style/OpenStructUse def format_user_name(user) - "#{user.name} (@#{user.nickname} - #{user.email})" + "#{user.name} (@#{user.nickname} - #{user.email})" end end end diff --git a/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb b/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb index 346cbd688..06ff5f09d 100644 --- a/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb @@ -13,14 +13,14 @@ class ConstraintsController < DecidimAwesome::Admin::ApplicationController enforce_permission_to :edit_config, constraint_key end - def new - @form = form(ConstraintForm).from_params(filtered_params, setting: current_setting) - end - def show @form = form(ConstraintForm).from_params(constraint.settings.merge(filtered_params)) end + def new + @form = form(ConstraintForm).from_params(filtered_params, setting: current_setting) + end + def create @form = form(ConstraintForm).from_params(params, setting: current_setting) CreateConstraint.call(@form) do @@ -39,11 +39,11 @@ def create on(:invalid) do |message| render json: { - id: params[:id], - key: current_setting.var, - message: I18n.t("decidim_awesome.admin.constraints.create.error", scope: "decidim"), - error: message - }, + id: params[:id], + key: current_setting.var, + message: I18n.t("decidim_awesome.admin.constraints.create.error", scope: "decidim"), + error: message + }, status: :unprocessable_entity end end @@ -67,11 +67,11 @@ def update on(:invalid) do |message| render json: { - id: params[:id], - key: constraint.awesome_config.var, - message: I18n.t("decidim_awesome.admin.constraints.update.error", scope: "decidim"), - error: message - }, + id: params[:id], + key: constraint.awesome_config.var, + message: I18n.t("decidim_awesome.admin.constraints.update.error", scope: "decidim"), + error: message + }, status: :unprocessable_entity end end @@ -94,11 +94,11 @@ def destroy on(:invalid) do |message| render json: { - id: params[:id], - key: constraint.awesome_config.var, - message: I18n.t("decidim_awesome.admin.constraints.destroy.error", scope: "decidim"), - error: message - }, + id: params[:id], + key: constraint.awesome_config.var, + message: I18n.t("decidim_awesome.admin.constraints.destroy.error", scope: "decidim"), + error: message + }, status: :unprocessable_entity end end diff --git a/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb b/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb index ad5408d45..bfa23a2d5 100644 --- a/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb @@ -23,6 +23,10 @@ def new @form = form(CustomRedirectForm).instance end + def edit + @form = form(CustomRedirectForm).from_model(redirect_item) + end + def create @form = form(CustomRedirectForm).from_params(params) CreateCustomRedirect.call(@form) do @@ -38,10 +42,6 @@ def create end end - def edit - @form = form(CustomRedirectForm).from_model(redirect_item) - end - def update @form = form(CustomRedirectForm).from_params(params) UpdateCustomRedirect.call(@form, redirect_item) do @@ -63,7 +63,7 @@ def destroy flash[:notice] = I18n.t("custom_redirects.destroy.success", scope: "decidim.decidim_awesome.admin") end on(:invalid) do |error| - flash[:alert] = I18n.t("custom_redirects.destroy.error", scope: "decidim.decidim_awesome.admin", error: error) + flash[:alert] = I18n.t("custom_redirects.destroy.error", scope: "decidim.decidim_awesome.admin", error:) end end redirect_to decidim_admin_decidim_awesome.custom_redirects_path @@ -75,13 +75,11 @@ def redirect_item origin, item = current_config.find { |origin, _| md5(origin) == params[:id] } raise ActiveRecord::RecordNotFound unless item - # rubocop:disable Style/OpenStructUse OpenStruct.new( - origin: origin, + origin:, destination: item["destination"], active: item["active"] ) - # rubocop:enable Style/OpenStructUse end def current_config diff --git a/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb b/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb index 652d7bf7a..49504b19e 100644 --- a/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb @@ -23,6 +23,10 @@ def new @form = form(MenuForm).instance end + def edit + @form = form(MenuForm).from_model(menu_item) + end + def create @form = form(MenuForm).from_params(params) CreateMenuHack.call(@form, current_menu_name) do @@ -38,10 +42,6 @@ def create end end - def edit - @form = form(MenuForm).from_model(menu_item) - end - def update @form = form(MenuForm).from_params(params) UpdateMenuHack.call(@form, current_menu_name) do @@ -63,7 +63,7 @@ def destroy flash[:notice] = I18n.t("menu_hacks.destroy.success", scope: "decidim.decidim_awesome.admin") end on(:invalid) do |error| - flash[:alert] = I18n.t("menu_hacks.destroy.error", scope: "decidim.decidim_awesome.admin", error: error) + flash[:alert] = I18n.t("menu_hacks.destroy.error", scope: "decidim.decidim_awesome.admin", error:) end end redirect_to decidim_admin_decidim_awesome.menu_hacks_path @@ -71,7 +71,6 @@ def destroy private - # rubocop:disable Style/OpenStructUse def menu_item item = current_items.find { |i| md5(i.url) == params[:id] } raise ActiveRecord::RecordNotFound unless item @@ -85,7 +84,6 @@ def menu_item native?: !item.respond_to?(:overrided?) ) end - # rubocop:enable Style/OpenStructUse def current_items @current_items ||= current_menu.items(include_invisible: true) @@ -96,7 +94,7 @@ def current_menu end def current_menu_name - :menu + params[:menu_id].to_sym end def visibility_options diff --git a/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb b/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb index b20ee7864..4e31f3b11 100644 --- a/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb @@ -8,7 +8,7 @@ class ProposalCustomFieldsController < DecidimAwesome::Admin::ConfigController def create CreateProposalCustomField.call(current_organization) do on(:ok) do |key| - flash[:notice] = I18n.t("config.create_proposal_custom_field.success", key: key, scope: "decidim.decidim_awesome.admin") + flash[:notice] = I18n.t("config.create_proposal_custom_field.success", key:, scope: "decidim.decidim_awesome.admin") end on(:invalid) do |message| @@ -22,7 +22,7 @@ def create def destroy DestroyProposalCustomField.call(params[:key], current_organization) do on(:ok) do |key| - flash[:notice] = I18n.t("config.destroy_proposal_custom_field.success", key: key, scope: "decidim.decidim_awesome.admin") + flash[:notice] = I18n.t("config.destroy_proposal_custom_field.success", key:, scope: "decidim.decidim_awesome.admin") end on(:invalid) do |message| diff --git a/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb b/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb index 474acbb3c..d9d82cd4c 100644 --- a/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb @@ -8,7 +8,7 @@ class ScopedAdminsController < DecidimAwesome::Admin::ConfigController def create CreateScopedAdmin.call(current_organization) do on(:ok) do |key| - flash[:notice] = I18n.t("config.create_scoped_admin.success", key: key, scope: "decidim.decidim_awesome.admin") + flash[:notice] = I18n.t("config.create_scoped_admin.success", key:, scope: "decidim.decidim_awesome.admin") end on(:invalid) do |message| @@ -22,7 +22,7 @@ def create def destroy DestroyScopedAdmin.call(params[:key], current_organization) do on(:ok) do |key| - flash[:notice] = I18n.t("config.destroy_scoped_admin.success", key: key, scope: "decidim.decidim_awesome.admin") + flash[:notice] = I18n.t("config.destroy_scoped_admin.success", key:, scope: "decidim.decidim_awesome.admin") end on(:invalid) do |message| diff --git a/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb b/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb index 46700075a..82919d062 100644 --- a/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +++ b/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb @@ -8,7 +8,7 @@ class ScopedStylesController < DecidimAwesome::Admin::ConfigController def create CreateScopedStyle.call(current_organization) do on(:ok) do |key| - flash[:notice] = I18n.t("config.create_scoped_style.success", key: key, scope: "decidim.decidim_awesome.admin") + flash[:notice] = I18n.t("config.create_scoped_style.success", key:, scope: "decidim.decidim_awesome.admin") end on(:invalid) do |message| @@ -22,7 +22,7 @@ def create def destroy DestroyScopedStyle.call(params[:key], current_organization) do on(:ok) do |key| - flash[:notice] = I18n.t("config.destroy_scoped_style.success", key: key, scope: "decidim.decidim_awesome.admin") + flash[:notice] = I18n.t("config.destroy_scoped_style.success", key:, scope: "decidim.decidim_awesome.admin") end on(:invalid) do |message| diff --git a/app/controllers/decidim/decidim_awesome/blank_component_controller.rb b/app/controllers/decidim/decidim_awesome/blank_component_controller.rb index 2845f9249..53da3eeaa 100644 --- a/app/controllers/decidim/decidim_awesome/blank_component_controller.rb +++ b/app/controllers/decidim/decidim_awesome/blank_component_controller.rb @@ -6,13 +6,18 @@ module DecidimAwesome class BlankComponentController < Decidim::Components::BaseController # just redirects to settings def settings - redirect_to EngineRouter.admin_proxy(component.participatory_space).edit_component_path(id: component) + redirect_to EngineRouter.admin_proxy(current_component.participatory_space).edit_component_path(id: current_component) end private - def component - Decidim::Component.find(params[:component_id]) + def set_component_breadcrumb_item + context_breadcrumb_items << { + label: current_component.name, + url: EngineRouter.admin_proxy(current_component.participatory_space).edit_component_path(id: current_component), + active: false, + resource: current_component + } end end end diff --git a/app/controllers/decidim/decidim_awesome/editor_images_controller.rb b/app/controllers/decidim/decidim_awesome/editor_images_controller.rb index d6b6b5a5e..7238143a8 100644 --- a/app/controllers/decidim/decidim_awesome/editor_images_controller.rb +++ b/app/controllers/decidim/decidim_awesome/editor_images_controller.rb @@ -11,14 +11,14 @@ class EditorImagesController < DecidimAwesome::ApplicationController rescue_from Decidim::ActionForbidden, with: :ajax_user_has_no_permission def create - enforce_permission_to :create, :editor_image, awesome_config: awesome_config + enforce_permission_to(:create, :editor_image, awesome_config:) @form = form(EditorImageForm).from_params(form_values) CreateEditorImage.call(@form) do on(:ok) do |image| url = image.attached_uploader(:file).path url = "#{request.base_url}#{url}" unless url&.start_with?("http") - render json: { url: url, message: I18n.t("decidim_awesome.editor_images.create.success", scope: "decidim") } + render json: { url:, message: I18n.t("decidim_awesome.editor_images.create.success", scope: "decidim") } end on(:invalid) do |_message| diff --git a/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb b/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb index 9aba3bab4..5db06c54f 100644 --- a/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb +++ b/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb @@ -5,7 +5,8 @@ module DecidimAwesome module IframeComponent class IframeController < DecidimAwesome::BlankComponentController ALLOWED_ATTRIBUTES = %w(src width height frameborder title allow allowpaymentrequest name referrerpolicy sandbox srcdoc allowfullscreen).freeze - helper_method :iframe, :remove_margins?, :viewport_width? + helper_method :iframe, :viewport_width? + before_action :add_additional_csp_directives, only: :show def show; end @@ -27,13 +28,18 @@ def sanitize(html) document.to_s end - def remove_margins? - current_component.settings.no_margins - end - def viewport_width? current_component.settings.viewport_width end + + def add_additional_csp_directives + iframe_urls = Nokogiri::HTML::DocumentFragment.parse(iframe).children.select { |x| x.name == "iframe" }.filter_map { |x| x.attribute("src")&.value } + return if iframe_urls.blank? + + iframe_urls.each do |url| + content_security_policy.append_csp_directive("frame-src", url) + end + end end end end diff --git a/app/forms/decidim/decidim_awesome/admin/config_form.rb b/app/forms/decidim/decidim_awesome/admin/config_form.rb index 72a8ba05a..863813feb 100644 --- a/app/forms/decidim/decidim_awesome/admin/config_form.rb +++ b/app/forms/decidim/decidim_awesome/admin/config_form.rb @@ -17,7 +17,7 @@ class ConfigForm < Decidim::Form attribute :scoped_styles, Hash attribute :proposal_custom_fields, Hash attribute :scoped_admins, Hash - attribute :menu, Array[MenuForm] + attribute :menu, [MenuForm] attribute :intergram_for_admins, Boolean attribute :intergram_for_admins_settings, IntergramForm attribute :intergram_for_public, Boolean @@ -65,7 +65,7 @@ def css_syntax SassC::Engine.new(code).render rescue SassC::SyntaxError => e - errors.add(:scoped_styles, I18n.t("config.form.errors.incorrect_css", key: key, scope: "decidim.decidim_awesome.admin")) + errors.add(:scoped_styles, I18n.t("config.form.errors.incorrect_css", key:, scope: "decidim.decidim_awesome.admin")) errors.add(key.to_sym, e.message) end end @@ -76,7 +76,7 @@ def json_syntax JSON.parse(code) rescue JSON::ParserError => e - errors.add(:scoped_styles, I18n.t("config.form.errors.incorrect_json", key: key, scope: "decidim.decidim_awesome.admin")) + errors.add(:scoped_styles, I18n.t("config.form.errors.incorrect_json", key:, scope: "decidim.decidim_awesome.admin")) errors.add(key.to_sym, e.message) end end diff --git a/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb b/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb index 8c3c7ae87..948a1741a 100644 --- a/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb +++ b/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb @@ -18,8 +18,8 @@ def to_params sanitize_url(origin), { destination: sanitize_url(destination, strip_host: false), - active: active, - pass_query: pass_query + active:, + pass_query: } ] end diff --git a/app/forms/decidim/decidim_awesome/admin/menu_form.rb b/app/forms/decidim/decidim_awesome/admin/menu_form.rb index 8f1660b45..f12bea76c 100644 --- a/app/forms/decidim/decidim_awesome/admin/menu_form.rb +++ b/app/forms/decidim/decidim_awesome/admin/menu_form.rb @@ -27,10 +27,10 @@ def map_model(model) def to_params { label: raw_label, - position: position, - url: url, - target: target, - visibility: visibility + position:, + url:, + target:, + visibility: } end end diff --git a/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb b/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb index d372fc4ab..1797df89f 100644 --- a/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +++ b/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb @@ -8,26 +8,10 @@ module ConfigConstraintsHelpers include Decidim::TranslatableAttributes - def check(status) - content_tag(:span, icon(status ? "check" : "x", class: "icon", aria_label: status, role: "img"), class: "text-#{status ? "success" : "alert"}") - end + delegate :menus, :config_enabled?, to: "Decidim::DecidimAwesome::Menu" - def menus - @menus ||= { - editors: config_enabled?([:allow_images_in_full_editor, :allow_images_in_small_editor, :use_markdown_editor, :allow_images_in_markdown_editor]), - proposals: config_enabled?([:allow_images_in_proposals, - :validate_title_min_length, :validate_title_max_caps_percent, - :validate_title_max_marks_together, :validate_title_start_with_caps, - :validate_body_min_length, :validate_body_max_caps_percent, - :validate_body_max_marks_together, :validate_body_start_with_caps]), - surveys: config_enabled?(:auto_save_forms), - styles: config_enabled?(:scoped_styles), - proposal_custom_fields: config_enabled?(:proposal_custom_fields), - admins: config_enabled?(:scoped_admins), - menu_hacks: config_enabled?(:menu), - custom_redirects: config_enabled?(:custom_redirects), - livechat: config_enabled?([:intergram_for_admins, :intergram_for_public]) - } + def check(status) + content_tag(:span, icon(status ? "check-line" : "close-line", class: "icon", aria_label: status, role: "img"), class: "text-#{status ? "success" : "alert"}") end # returns only non :disabled vars in config @@ -37,11 +21,6 @@ def enabled_configs(vars) end end - # ensure boolean value - def config_enabled?(var) - DecidimAwesome.enabled?(var) - end - def participatory_space_manifests manifests = OTHER_MANIFESTS.index_with { |m| I18n.t("decidim.decidim_awesome.admin.config.#{m}") } Decidim.participatory_space_manifests.pluck(:name).each do |name| @@ -71,7 +50,7 @@ def components_list(manifest, slug) space = model_for_manifest(manifest) return {} unless space&.column_names&.include? "slug" - components = Component.where(participatory_space: space.find_by(slug: slug)) + components = Component.where(participatory_space: space.find_by(slug:)) components.to_h do |item| [item.id, "#{item.id}: #{translated_attribute(item.name)}"] end diff --git a/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb b/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb index 009452759..b8443cf06 100644 --- a/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb +++ b/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb @@ -26,7 +26,7 @@ def render_amendment_custom_fields_override(fields, attribute, form, original_re custom_fields.apply_xml(body) if body.present? # TODO: find a way to add errors as form is not the parent form # form.object.errors.add(attribute, custom_fields.errors) if custom_fields.errors - render partial: "decidim/decidim_awesome/custom_fields/form_render", locals: { spec: custom_fields.to_json, form: form, name: attribute } + render partial: "decidim/decidim_awesome/custom_fields/form_render", locals: { spec: custom_fields.to_json, form:, name: attribute } end # Amendments don't use a URL specifying participatory space and component diff --git a/app/helpers/decidim/decidim_awesome/breadcrumb_helper_override.rb b/app/helpers/decidim/decidim_awesome/breadcrumb_helper_override.rb new file mode 100644 index 000000000..8b1b5edeb --- /dev/null +++ b/app/helpers/decidim/decidim_awesome/breadcrumb_helper_override.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Decidim + module DecidimAwesome + module BreadcrumbHelperOverride + extend ActiveSupport::Concern + + included do + # alias_method :decidim_active_breadcr, :amendments_form_field_for + + def active_breadcrumb_item(target_menu) + active_item = ::Decidim::MenuPresenter.new(target_menu, self).active_item_for_breadcrumb + + return if active_item.blank? + + { + label: active_item.label, + url: active_item.url, + active: active_item.active? + } + end + end + end + end +end diff --git a/app/helpers/decidim/decidim_awesome/map_helper.rb b/app/helpers/decidim/decidim_awesome/map_helper.rb index dac20acff..a5b468025 100644 --- a/app/helpers/decidim/decidim_awesome/map_helper.rb +++ b/app/helpers/decidim/decidim_awesome/map_helper.rb @@ -11,10 +11,10 @@ def api_ready? # rubocop:disable Metrics/CyclomaticComplexity # rubocop:disable Metrics/PerceivedComplexity: - def awesome_map_for(components, &block) + def awesome_map_for(components, &) return unless map_utility_dynamic - map = awesome_builder.map_element({ class: "google-map", id: "awesome-map-container" }, &block) + map = awesome_builder.map_element({ class: "google-map", id: "awesome-map-container" }, &) help = content_tag(:div, class: "map__help") do sr_content = content_tag(:p, t("screen_reader_explanation", scope: "decidim.map.dynamic"), class: "show-for-sr") @@ -30,7 +30,7 @@ def awesome_map_for(components, &block) type: component.manifest.name, name: translated_attribute(component.name), url: Decidim::EngineRouter.main_proxy(component).root_path, - amendments: component.manifest.name == :proposals ? Decidim::Proposals::Proposal.where(component: component).only_emendations.count : 0 + amendments: component.manifest.name == :proposals ? Decidim::Proposals::Proposal.where(component:).only_emendations.count : 0 } end.to_json, "data-hide-controls" => settings_source.try(:hide_controls), @@ -71,7 +71,6 @@ def settings_source try(:current_component) || self end - # rubocop:disable Rails/HelperInstanceVariable def current_categories(categories) return @current_categories if @current_categories @@ -97,26 +96,12 @@ def awesome_builder } builder = map_utility_dynamic.create_builder(self, options) - # We need awesome map listeners before initialize the official map - unless snippets.any?(:awesome_map_styles) || snippets.any?(:awesome_map_scripts) - snippets.add(:awesome_map_styles, stylesheet_pack_tag("decidim_decidim_awesome_map")) - snippets.add(:awesome_map_scripts, javascript_pack_tag("decidim_decidim_awesome_map", defer: false)) - snippets.add(:head, snippets.for(:awesome_map_styles)) - snippets.add(DecidimAwesome.legacy_version? ? :head : :foot, snippets.for(:awesome_map_scripts)) - end - - unless snippets.any?(:map_styles) || snippets.any?(:map_scripts) - snippets.add(:map_styles, builder.stylesheet_snippets) - snippets.add(:map_scripts, builder.javascript_snippets) - - snippets.add(:head, snippets.for(:map_styles)) - snippets.add(DecidimAwesome.legacy_version? ? :head : :foot, snippets.for(:map_scripts)) - end + append_stylesheet_pack_tag("decidim_decidim_awesome_map") + append_javascript_pack_tag("decidim_decidim_awesome_map") builder end - # rubocop:disable Style/FormatStringToken def append_category(category) @h += @golden_ratio_conjugate @h %= 1 @@ -129,8 +114,6 @@ def append_category(category) color: format("#%02x%02x%02x", r, g, b) ) end - # rubocop:enable Style/FormatStringToken - # rubocop:enable Rails/HelperInstanceVariable # HSV values in [0..1[ # returns [r, g, b] values from 0 to 255 diff --git a/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb b/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb index 206ad548e..b0222ddbe 100644 --- a/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +++ b/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb @@ -69,7 +69,7 @@ def render_proposal_custom_fields_override(fields, form, name, locale = nil) custom_fields.apply_xml(body) if body.present? form.object.errors.add(name, custom_fields.errors) if custom_fields.errors - render partial: "decidim/decidim_awesome/custom_fields/form_render", locals: { spec: custom_fields.to_json, form: form, name: name } + render partial: "decidim/decidim_awesome/custom_fields/form_render", locals: { spec: custom_fields.to_json, form:, name: } end end end diff --git a/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb b/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb index 1ba13a58e..f9e3629a6 100644 --- a/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb +++ b/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb @@ -25,7 +25,7 @@ def migrate_all! cw_uploader: Decidim::Cw::DecidimAwesome::ImageUploader, as_attribute: "file", logger: @logger, - routes_mappings: routes_mappings + routes_mappings: ) end @@ -34,11 +34,11 @@ def transform_images_urls klass, id = mapping[:instance].split("#") next unless klass == "Decidim::DecidimAwesome::EditorImage" - instance = Decidim::DecidimAwesome::EditorImage.find_by(id: id) + instance = Decidim::DecidimAwesome::EditorImage.find_by(id:) next if instance.blank? - mapping.merge!(instance: instance) + mapping.merge!(instance:) end.compact editor_images_available_attributes.each do |model, attributes| @@ -75,7 +75,8 @@ def editor_images_available_attributes "Decidim::Assembly" => %w(short_description description purpose_of_action composition internal_organisation announcement closing_date_reason special_features), "Decidim::Forms::Questionnaire" => %w(description tos), "Decidim::Forms::Question" => %w(description), - "Decidim::Organization" => %w(welcome_notification_body admin_terms_of_use_body description highlighted_content_banner_short_description id_documents_explanation_text), + "Decidim::Organization" => %w(welcome_notification_body admin_terms_of_service_body description highlighted_content_banner_short_description + id_documents_explanation_text), "Decidim::StaticPage" => %w(content), "Decidim::ContextualHelpSection" => %w(content), "Decidim::Category" => %w(description), diff --git a/app/middleware/decidim/decidim_awesome/current_config.rb b/app/middleware/decidim/decidim_awesome/current_config.rb index d6826d613..93e135d9e 100644 --- a/app/middleware/decidim/decidim_awesome/current_config.rb +++ b/app/middleware/decidim/decidim_awesome/current_config.rb @@ -1,6 +1,5 @@ # frozen_string_literal: true -# rubocop:disable Style/OpenStructUse module Decidim module DecidimAwesome # A middleware that stores the current awesome context by parsing the request @@ -101,7 +100,7 @@ def processable_path? end def safe_get_route? - return unless @request.get? + return false unless @request.get? case @request.path when "/" @@ -116,7 +115,7 @@ def safe_get_route? end def safe_post_route? - return unless @request.post? || @request.put? || @request.patch? + return false unless @request.post? || @request.put? || @request.patch? case @request.path when %r{^/admin/admin_terms} @@ -171,7 +170,7 @@ def additional_post_constraints(constraints) next unless model settings["participatory_space_slug"] = model.find_by(slug: settings["participatory_space_slug"])&.id - OpenStruct.new(settings: settings) if settings["participatory_space_slug"] + OpenStruct.new(settings:) if settings["participatory_space_slug"] end end # rubocop:enable Metrics/CyclomaticComplexity @@ -183,4 +182,3 @@ def scoped_admins_active? end end end -# rubocop:enable Style/OpenStructUse diff --git a/app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb b/app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb index 626ce988d..7a1d89532 100644 --- a/app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb +++ b/app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb @@ -41,7 +41,7 @@ def update_vote_weights! def self.all_vote_weights_for(component) Decidim::DecidimAwesome::VoteWeight.where( proposal_vote_id: Decidim::Proposals::ProposalVote.where( - proposal: Decidim::Proposals::Proposal.where(component: component) + proposal: Decidim::Proposals::Proposal.where(component:) ) ).pluck(:weight) end diff --git a/app/models/decidim/decidim_awesome/awesome_config.rb b/app/models/decidim/decidim_awesome/awesome_config.rb index 51a0b4caf..962b528d4 100644 --- a/app/models/decidim/decidim_awesome/awesome_config.rb +++ b/app/models/decidim/decidim_awesome/awesome_config.rb @@ -25,7 +25,7 @@ def add_constraints(constraints) end def self.for_organization(organization) - where(organization: organization) + where(organization:) end # use this instead of "constraints" to evaluate dynamically added constants diff --git a/app/models/decidim/decidim_awesome/paper_trail_version.rb b/app/models/decidim/decidim_awesome/paper_trail_version.rb index e2f38544e..ba5d9e146 100644 --- a/app/models/decidim/decidim_awesome/paper_trail_version.rb +++ b/app/models/decidim/decidim_awesome/paper_trail_version.rb @@ -12,7 +12,7 @@ def self.safe_user_roles scope :space_role_actions, lambda { |organization| role_changes = where(item_type: PaperTrailVersion.safe_user_roles, event: "create") user_ids_from_object_changes = role_changes.pluck(:object_changes).map { |change| change.match(/decidim_user_id:\n- ?\n- (\d+)/)[1].to_i } - relevant_user_ids = Decidim::User.select(:id).where(id: user_ids_from_object_changes, organization: organization).pluck(:id) + relevant_user_ids = Decidim::User.select(:id).where(id: user_ids_from_object_changes, organization:).pluck(:id) # add users that might have been completly destroyed in any organization relevant_user_ids += user_ids_from_object_changes - Decidim::User.select("id").where(id: user_ids_from_object_changes).pluck(:id) @@ -39,9 +39,9 @@ def self.admin_role_actions(filter = nil) def present(html: true) @present ||= if item_type == "Decidim::UserBaseEntity" - UserEntityPresenter.new(self, html: html) + UserEntityPresenter.new(self, html:) elsif item_type.in?(PaperTrailVersion.safe_user_roles) - ParticipatorySpaceRolePresenter.new(self, html: html) + ParticipatorySpaceRolePresenter.new(self, html:) else self end diff --git a/app/models/decidim/decidim_awesome/vote_weight.rb b/app/models/decidim/decidim_awesome/vote_weight.rb index 9f3f26b8b..ad0497e5c 100644 --- a/app/models/decidim/decidim_awesome/vote_weight.rb +++ b/app/models/decidim/decidim_awesome/vote_weight.rb @@ -12,7 +12,7 @@ class VoteWeight < ApplicationRecord after_save :update_vote_weight_totals! def update_vote_weight_totals! - extra = Decidim::DecidimAwesome::ProposalExtraField.find_or_initialize_by(proposal: proposal) + extra = Decidim::DecidimAwesome::ProposalExtraField.find_or_initialize_by(proposal:) extra.vote_weight_totals = extra.vote_weight_totals || {} prev = weight_previous_change&.first @@ -20,7 +20,7 @@ def update_vote_weight_totals! extra.vote_weight_totals[prev.to_s] = Decidim::DecidimAwesome::VoteWeight.where(vote: proposal.votes, weight: prev).count extra.vote_weight_totals.delete(prev.to_s) if extra.vote_weight_totals[prev.to_s].zero? end - extra.vote_weight_totals[weight.to_s] = Decidim::DecidimAwesome::VoteWeight.where(vote: proposal.votes, weight: weight).count + extra.vote_weight_totals[weight.to_s] = Decidim::DecidimAwesome::VoteWeight.where(vote: proposal.votes, weight:).count extra.vote_weight_totals.delete(weight.to_s) if extra.vote_weight_totals[weight.to_s].zero? extra.weight_total = extra.vote_weight_totals.inject(0) { |sum, (weight, count)| sum + (weight.to_i * count) } extra.save! diff --git a/app/overrides/layouts/decidim/_head/add_awesome_legacy_scripts.rb b/app/overrides/layouts/decidim/_head/add_awesome_legacy_scripts.rb deleted file mode 100644 index 2e92086eb..000000000 --- a/app/overrides/layouts/decidim/_head/add_awesome_legacy_scripts.rb +++ /dev/null @@ -1,14 +0,0 @@ -# frozen_string_literal: true - -Deface::Override.new(virtual_path: "layouts/decidim/_head", - name: "legacy_awesome_scripts", - insert_after: 'erb[loud]:contains(\'javascript_pack_tag "decidim_core"\')') do - # NOTE THAT THIS ONLY APPLIES TO DECIDIM 0.26. This will be ignored in 0.27 - ' - <%= javascript_pack_tag "decidim_decidim_awesome", defer: false %> - <%= javascript_pack_tag("decidim_decidim_awesome_custom_fields") if Decidim::DecidimAwesome.enabled?(:proposal_custom_fields) %> - <% if show_public_intergram? %> - <%= render partial: "layouts/decidim/decidim_awesome/intergram_widget", locals: { settings: organization_awesome_config[:intergram_for_public_settings] } %> - <% end %> - ' -end diff --git a/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface b/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface index 0a1f0cfc7..c7d068711 100644 --- a/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface +++ b/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface @@ -1,13 +1,13 @@ -<%= stylesheet_pack_tag "decidim_decidim_awesome", media: "all" %> +<%#= append_stylesheet_pack_tag "decidim_decidim_awesome", media: "all" %> <%= render(partial: "layouts/decidim/decidim_awesome/custom_styles") if awesome_custom_styles.present? %> <%= render partial: "layouts/decidim/decidim_awesome/awesome_config" %> <%# This will render scripts only on Decidim 0.27 %> <% content_for :js_content do %> - <%= javascript_pack_tag "decidim_decidim_awesome", defer: false %> - <%= javascript_pack_tag("decidim_decidim_awesome_custom_fields") if Decidim::DecidimAwesome.enabled?(:proposal_custom_fields) %> + <%= append_javascript_pack_tag "decidim_decidim_awesome", defer: false %> + <%= append_javascript_pack_tag("decidim_decidim_awesome_custom_fields") if Decidim::DecidimAwesome.enabled?(:proposal_custom_fields) %> <% if show_public_intergram? %> <%= render partial: "layouts/decidim/decidim_awesome/intergram_widget", locals: { settings: organization_awesome_config[:intergram_for_public_settings] } %> <% end %> diff --git a/app/overrides/layouts/decidim/admin/_header/replace_scripts.html.erb.deface b/app/overrides/layouts/decidim/admin/_header/replace_scripts.html.erb.deface deleted file mode 100644 index 1ae6cc68f..000000000 --- a/app/overrides/layouts/decidim/admin/_header/replace_scripts.html.erb.deface +++ /dev/null @@ -1,9 +0,0 @@ - - -<%= render partial: "layouts/decidim/decidim_awesome/awesome_config" %> - -<%= javascript_pack_tag "decidim_admin_decidim_awesome", defer: false %> -<%= javascript_pack_tag("decidim_admin_decidim_awesome_custom_fields") if Decidim::DecidimAwesome.enabled?(:proposal_custom_fields) %> -<% if awesome_config[:intergram_for_admins] %> - <%= render partial: "layouts/decidim/decidim_awesome/intergram_widget", locals: { settings: organization_awesome_config[:intergram_for_admins_settings] } %> -<% end %> diff --git a/app/overrides/layouts/decidim/admin/_header/replace_styles.html.erb.deface b/app/overrides/layouts/decidim/admin/_header/replace_styles.html.erb.deface deleted file mode 100644 index d17326a5d..000000000 --- a/app/overrides/layouts/decidim/admin/_header/replace_styles.html.erb.deface +++ /dev/null @@ -1,3 +0,0 @@ - - -<%= stylesheet_pack_tag "decidim_admin_decidim_awesome", media: "all" %> diff --git a/app/packs/entrypoints/decidim_admin_decidim_awesome.js b/app/packs/entrypoints/decidim_admin_decidim_awesome.js index c88a74714..27ad6e4a0 100644 --- a/app/packs/entrypoints/decidim_admin_decidim_awesome.js +++ b/app/packs/entrypoints/decidim_admin_decidim_awesome.js @@ -1,6 +1,5 @@ +// DO NOT include any javascript file here, but inside the following file instead import "src/decidim/decidim_awesome/awesome_admin"; -// This is needed by custom fields builder but if loader there duplicates the jQuery inclusion -import "jquery-ui/ui/widgets/sortable"; // CSS import "entrypoints/decidim_admin_decidim_awesome.scss"; diff --git a/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js b/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js deleted file mode 100644 index c20b35daa..000000000 --- a/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js +++ /dev/null @@ -1,2 +0,0 @@ -import "src/decidim/decidim_awesome/proposals/custom_fields" -import "src/decidim/decidim_awesome/admin/custom_fields_builder" diff --git a/app/packs/entrypoints/decidim_decidim_awesome.js b/app/packs/entrypoints/decidim_decidim_awesome.js index 54de74ed5..8be65ab5c 100644 --- a/app/packs/entrypoints/decidim_decidim_awesome.js +++ b/app/packs/entrypoints/decidim_decidim_awesome.js @@ -1,9 +1,9 @@ -import "src/decidim/decidim_awesome/awesome_application.js" +// import "src/decidim/decidim_awesome/awesome_application.js" -// Images -require.context("../images", true) +// // Images +// require.context("../images", true) -// CSS -import "entrypoints/decidim_decidim_awesome.scss"; +// // CSS +// import "entrypoints/decidim_decidim_awesome.scss"; diff --git a/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js b/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js deleted file mode 100644 index 0b95fc9cf..000000000 --- a/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js +++ /dev/null @@ -1 +0,0 @@ -import "src/decidim/decidim_awesome/admin/form_exit_warn" diff --git a/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js b/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js index 312e18e1b..7bd5202a2 100644 --- a/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js +++ b/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js @@ -1 +1 @@ -import "src/decidim/decidim_awesome/proposals/custom_fields" +// import "src/decidim/decidim_awesome/proposals/custom_fields" diff --git a/app/packs/entrypoints/decidim_decidim_awesome_map.scss b/app/packs/entrypoints/decidim_decidim_awesome_map.scss index 004601b61..965a157e1 100644 --- a/app/packs/entrypoints/decidim_decidim_awesome_map.scss +++ b/app/packs/entrypoints/decidim_decidim_awesome_map.scss @@ -1 +1 @@ -@import "stylesheets/decidim/decidim_awesome/awesome_map/map" +@import "stylesheets/decidim/decidim_awesome/awesome_map/map"; diff --git a/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js b/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js index faa9fc668..bd4a23fae 100644 --- a/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js +++ b/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js @@ -7,6 +7,7 @@ $(() => { const scope = $link.data("scope"); const $target = $(`span.awesome-auto-edit[data-scope="${scope}"]`); const $constraints = $(`.constraints-editor[data-key="${scope}"]`); + if ($target.length === 0) { return; } @@ -16,7 +17,7 @@ $(() => { const $hidden = $(`[name="config[${attribute}][${key}]"]`); const $multiple = $(`[name="config[${attribute}][${key}][]"]`); const $container = $(`.${attribute}_container[data-key="${key}"]`); - const $delete = $(".delete-box", $container); + const $delete = $("#delete-box", $container); const rebuildLabel = (text, withScope) => { $target.text(text); diff --git a/app/packs/src/decidim/decidim_awesome/admin/codemirror.js b/app/packs/src/decidim/decidim_awesome/admin/codemirror.js index 6bcb20566..5b983825b 100644 --- a/app/packs/src/decidim/decidim_awesome/admin/codemirror.js +++ b/app/packs/src/decidim/decidim_awesome/admin/codemirror.js @@ -1,7 +1,7 @@ import CodeMirror from "codemirror" import "codemirror/mode/css/css" import "codemirror/keymap/sublime" -import "stylesheets/decidim/decidim_awesome/admin/codemirror.scss"; +import "codemirror/lib/codemirror.css"; $(() => { $(".awesome-edit-config .scoped_styles_container textarea").each((_idx, el) => { diff --git a/app/packs/src/decidim/decidim_awesome/admin/constraint_form_events.js b/app/packs/src/decidim/decidim_awesome/admin/constraint_form_events.js new file mode 100644 index 000000000..6f0b6285f --- /dev/null +++ b/app/packs/src/decidim/decidim_awesome/admin/constraint_form_events.js @@ -0,0 +1,65 @@ +/* eslint func-style: "off", require-jsdoc: "off", no-use-before-define: "off" */ + +function constraintChange(data) { + // Identify the modal element to be updated + const [{ modalId }] = data; + const modal = window.Decidim.currentDialogs[modalId]; + const { dialogRemoteUrl } = modal.openingTrigger.dataset; + + // Prepare parameters to request the modal content again, but updated based on the user selections + const vars = data.map((setting) => `${setting.key}=${setting.value}`); + const url = `${dialogRemoteUrl}&${vars.join("&")}`; + + // Replace only the "-content" markup + $(modal.dialog.firstElementChild).load(url, (htmlString) => { + // Update the content of the original modal with the new html + modal.dialog.firstElementChild.innerHTML = htmlString + + // Pass the same node as the original event "remote-modal:loaded" receives + // in this way, all js listeners will reboot + updateModalContent({ detail: modal.dialog.firstElementChild }) + }); +} + +function updateModalContent({ detail }) { + let div = detail.querySelector("[id^=constraint-form"); + let spaceManifest = div.getElementsByTagName("select")[0]; + let spaceSlug = div.getElementsByTagName("select")[1]; + let componentManifest = div.getElementsByTagName("select")[2]; + let componentId = div.getElementsByTagName("select")[3]; + + spaceManifest.addEventListener("change", function(event) { + constraintChange([{ + key: "participatory_space_manifest", + value: event.target.value, + modalId: detail.parentElement.id + }]) + }); + + spaceSlug.addEventListener("change", function(event) { + constraintChange([{ + key: "participatory_space_manifest", + value: spaceManifest.value, + modalId: detail.parentElement.id + }, { + key: "participatory_space_slug", + value: event.target.value, + modalId: detail.parentElement.id + }]) + }); + + // Component manfiest and component id are mutually exclusive + componentManifest.addEventListener("change", function (event) { + if (event.target.value) { + componentId.value = ""; + } + }); + + componentId.addEventListener("change", function (event) { + if (event.target.value) { + componentManifest.value = ""; + } + }); +} + +document.addEventListener("remote-modal:loaded", (event) => updateModalContent(event)); diff --git a/app/packs/src/decidim/decidim_awesome/admin/constraints.js b/app/packs/src/decidim/decidim_awesome/admin/constraints.js deleted file mode 100644 index d8c88ce05..000000000 --- a/app/packs/src/decidim/decidim_awesome/admin/constraints.js +++ /dev/null @@ -1,55 +0,0 @@ -$(() => { - const $modal = $("#constraintsModal"); - if (!$modal.length) { - return; - } - - $(".decidim_awesome-form").on("click", ".constraints-editor .add-condition,.constraints-editor .edit-condition", (evt) => { - evt.preventDefault(); - const $this = $(evt.target) - const url = $this.attr("href"); - const $callout = $this.closest(".constraints-editor").find(".callout"); - $callout.hide(); - $callout.removeClass("alert success"); - $modal.find(".modal-content").html(""); - $modal.addClass("loading"); - $modal.data("url", url); - $modal.foundation("open"); - $modal.find(".modal-content").load(url, () => { - $modal.removeClass("loading"); - }); - }); - - // Custom event listener to reload the modal if needed - document.body.addEventListener("constraint:change", (evt) => { - const vars = evt.detail.map((setting) => `${setting.key}=${setting.value}`); - const url = `${$modal.data("url")}&${vars.join("&")}`; - // console.log("constraint:change vars:", vars, "url:", url) - $modal.addClass("loading"); - $modal.find(".modal-content").load(url, () => { - $modal.removeClass("loading"); - }); - }); - - // Rails AJAX events - document.body.addEventListener("ajax:error", (responseText) => { - // console.log("ajax:error", responseText) - const $container = $(`.constraints-editor[data-key="${responseText.detail[0].key}"]`) - const $callout = $container.find(".callout"); - $callout.show(); - $callout.contents("p").html(`${responseText.detail[0].message}: ${responseText.detail[0].error}`); - $callout.addClass("alert"); - }); - - document.body.addEventListener("ajax:success", (responseText) => { - // console.log("ajax:success", responseText) - const $container = $(`.constraints-editor[data-key="${responseText.detail[0].key}"]`) - const $callout = $container.find(".callout"); - $modal.foundation("close"); - $callout.show(); - $callout.contents("p").html(responseText.detail[0].message); - $callout.addClass("success"); - // reconstruct list - $container.replaceWith(responseText.detail[0].html); - }); -}); diff --git a/app/packs/src/decidim/decidim_awesome/admin/user_picker.js b/app/packs/src/decidim/decidim_awesome/admin/user_picker.js index 9f3a1dfcd..aa1317a0e 100644 --- a/app/packs/src/decidim/decidim_awesome/admin/user_picker.js +++ b/app/packs/src/decidim/decidim_awesome/admin/user_picker.js @@ -1,25 +1,61 @@ -/* eslint-disable no-invalid-this */ -import "select2" -import "stylesheets/decidim/decidim_awesome/admin/user_picker.scss" +/* eslint-disable no-invalid-this, no-ternary */ +// import "select2" +// import "stylesheets/decidim/decidim_awesome/admin/user_picker.scss" -$(() => { - $("select.multiusers-select").each(function() { - const url = $(this).attr("data-url"); - $(this).select2({ - ajax: { - url: url, - delay: 100, - dataType: "json", - processResults: (data) => { - return { - results: data - } - } +// $(() => { +// $("select.multiusers-select").each(function() { +// const url = $(this).attr("data-url"); +// $(this).select2({ +// ajax: { +// url: url, +// delay: 100, +// dataType: "json", +// processResults: (data) => { +// return { +// results: data +// } +// } +// }, +// escapeMarkup: (markup) => markup, +// templateSelection: (item) => `${item.text}`, +// minimumInputLength: 1, +// theme: "foundation" +// }); +// }); +// }); + +import TomSelect from "tom-select/dist/cjs/tom-select.popular"; + +document.addEventListener("DOMContentLoaded", () => { + const tagContainers = document.querySelectorAll(".multiusers-select"); + const config = (element) => ({ + plugins: ["remove_button", "dropdown_input"], + create: false, + render: { + option: function (data, escape) { + return `
${escape(data.text)}
`; }, - escapeMarkup: (markup) => markup, - templateSelection: (item) => `${item.text}`, - minimumInputLength: 1, - theme: "foundation" - }); + item: function (data, escape) { + return Boolean(data.is_admin) || data.isAdmin === "true" + ? `
${escape(data.text)}
` + : `
${escape(data.text)}
`; + } + }, + shouldLoad: function (query) { + return query.length > 1; + }, + load: function (query, callback) { + const { url } = element.dataset; + const params = new URLSearchParams({ + term: query + }); + + fetch(`${url}?${params}`). + then((response) => response.json()). + then((json) => callback(json)). + catch(() => callback()); + } }); + + tagContainers.forEach((container) => new TomSelect(container, config(container))); }); diff --git a/app/packs/src/decidim/decidim_awesome/awesome_admin.js b/app/packs/src/decidim/decidim_awesome/awesome_admin.js index e29d4ffb0..73e0d18c9 100644 --- a/app/packs/src/decidim/decidim_awesome/awesome_admin.js +++ b/app/packs/src/decidim/decidim_awesome/awesome_admin.js @@ -1,24 +1,28 @@ -// Webpack seems to "forgget" about certain libraries already being loaded -// if javascript_pack_tag is called two times, let's include the whole Decidim admin here instead -import "entrypoints/decidim_admin" // Custom scripts for awesome -import "src/decidim/decidim_awesome/admin/constraints" +import "src/decidim/decidim_awesome/admin/constraint_form_events" import "src/decidim/decidim_awesome/admin/auto_edit" import "src/decidim/decidim_awesome/admin/user_picker" -import "src/decidim/decidim_awesome/admin/proposal_sortings" -import "src/decidim/decidim_awesome/editors/tabs_focus" +// import "src/decidim/decidim_awesome/admin/proposal_sortings" import "src/decidim/decidim_awesome/admin/codemirror" import "src/decidim/decidim_awesome/admin/check_redirections" +import "src/decidim/decidim_awesome/admin/form_exit_warn" + +import "src/decidim/decidim_awesome/proposals/custom_fields" +import "src/decidim/decidim_awesome/admin/custom_fields_builder" + +import "src/decidim/decidim_awesome/editors/tabs_focus" + +window.DecidimAwesome = window.DecidimAwesome || {}; -import {destroyQuillEditor, createQuillEditor, createMarkdownEditor} from "src/decidim/decidim_awesome/editors/editor" +// import {destroyQuillEditor, createQuillEditor, createMarkdownEditor} from "src/decidim/decidim_awesome/editors/editor" -$(() => { - $(".editor-container").each((_idx, container) => { - destroyQuillEditor(container); - if (window.DecidimAwesome.use_markdown_editor) { - createMarkdownEditor(container); - } else { - createQuillEditor(container); - } - }); -}); +// $(() => { +// $(".editor-container").each((_idx, container) => { +// destroyQuillEditor(container); +// if (window.DecidimAwesome.use_markdown_editor) { +// createMarkdownEditor(container); +// } else { +// createQuillEditor(container); +// } +// }); +// }); diff --git a/app/packs/src/decidim/decidim_awesome/awesome_application.js b/app/packs/src/decidim/decidim_awesome/awesome_application.js index 971758d1f..defac748e 100644 --- a/app/packs/src/decidim/decidim_awesome/awesome_application.js +++ b/app/packs/src/decidim/decidim_awesome/awesome_application.js @@ -1,18 +1,18 @@ import "src/decidim/decidim_awesome/proposals/images" import "src/decidim/decidim_awesome/forms/autosave" import "src/decidim/decidim_awesome/voting/voting_cards" -import {destroyQuillEditor, createQuillEditor, createMarkdownEditor} from "src/decidim/decidim_awesome/editors/editor" +// import {destroyQuillEditor, createQuillEditor, createMarkdownEditor} from "src/decidim/decidim_awesome/editors/editor" -$(() => { - // rebuild editors - if (window.DecidimAwesome.allow_images_in_full_editor || window.DecidimAwesome.allow_images_in_small_editor || window.DecidimAwesome.use_markdown_editor) { - $(".editor-container").each((_idx, container) => { - destroyQuillEditor(container); - if (window.DecidimAwesome.use_markdown_editor) { - createMarkdownEditor(container); - } else { - createQuillEditor(container); - } - }); - } -}); +// $(() => { +// // rebuild editors +// if (window.DecidimAwesome.allow_images_in_full_editor || window.DecidimAwesome.allow_images_in_small_editor || window.DecidimAwesome.use_markdown_editor) { +// $(".editor-container").each((_idx, container) => { +// destroyQuillEditor(container); +// if (window.DecidimAwesome.use_markdown_editor) { +// createMarkdownEditor(container); +// } else { +// createQuillEditor(container); +// } +// }); +// } +// }); diff --git a/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js b/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js index 689874b36..81cc80b9a 100644 --- a/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js +++ b/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js @@ -1,11 +1,11 @@ import * as L from "leaflet"; // comes with Decidim -import "src/decidim/map/icon.js" +// import "src/decidim/map/icon.js" import "src/decidim/vendor/leaflet-tilelayer-here" // Comes with Decidim -import "leaflet.markercluster"; +import "leaflet.markercluster"; // included in this package.json -import "leaflet.featuregroup.subgroup" +import "leaflet.featuregroup.subgroup" import "src/vendor/jquery.truncate" import "jsrender" diff --git a/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js b/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js index 8f723bd36..4514f33ab 100644 --- a/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js +++ b/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js @@ -132,14 +132,13 @@ export default class Controller { this.onFinished(); } - createIcon(Builder, color) { - return new Builder({ - color: "#000000", - fillColor: color, - circleFillColor: color, - weight: 1, - stroke: color, - fillOpacity: 0.9 + createIcon(klass) { + const size = 36 + return L.divIcon({ + html: ` + `, + iconAnchor: [0.5 * size, size], + popupAnchor: [0, -0.5 * size] }); } } diff --git a/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js b/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js index 061c1fe5e..12c14ef7f 100644 --- a/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js +++ b/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js @@ -2,12 +2,6 @@ import * as L from "leaflet"; import Controller from "src/decidim/decidim_awesome/awesome_map/controllers/controller"; import MeetingsFetcher from "src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher"; -const MeetingIcon = L.DivIcon.SVGIcon.DecidimIcon.extend({ - _createPathDescription: function() { - return "M 15.991543,4 C 7.3956015,4 2.9250351,10.5 3.000951,16.999999 3.1063486,26.460968 12.747693,30.000004 15.991543,43 19.242091,30.000004 29,26.255134 29,16.999999 29,10.5 23.951131,4 15.996007,4 m -0.153508,2.6000001 a 2.1720294,2.1076698 0 0 1 2.330514,2.1124998 2.177008,2.1125006 0 0 1 -4.354016,0 2.1720294,2.1076698 0 0 1 2.023502,-2.1124998 m -2.651707,4.8056679 h 5.610202 l 3.935584,7.569899 -1.926038,0.934266 -2.009546,-3.859265 v 14.557403 h -2.484243 v -9.126003 h -0.642162 v 9.126003 H 13.190347 V 16.050568 l -2.009545,3.859265 -1.926036,-0.934266 3.935581,-7.569899"; - } -}); - export default class MeetingsController extends Controller { constructor(awesomeMap, component) { super(awesomeMap, component) @@ -19,7 +13,7 @@ export default class MeetingsController extends Controller { // for each meeting, create a marker with an associated popup this.fetcher.onNode = (meeting) => { let marker = new L.Marker([meeting.coordinates.latitude, meeting.coordinates.longitude], { - icon: this.createIcon(MeetingIcon, this.awesomeMap.getCategory(meeting.category).color), + icon: this.createIcon("text-primary"), title: meeting.title.translation }); // console.log("new meeting", meeting, marker) diff --git a/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js b/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js index d1ae68b44..607d89180 100644 --- a/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js +++ b/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js @@ -2,14 +2,6 @@ import * as L from "leaflet"; import Controller from "src/decidim/decidim_awesome/awesome_map/controllers/controller"; import ProposalsFetcher from "src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher"; -const ProposalIcon = L.DivIcon.SVGIcon.DecidimIcon.extend({ - options: { - fillColor: "#ef604d", - fillOpacity: 0.8, - strokeWidth: 1, - strokeOpcacity: 1 - } -}); export default class ProposalsController extends Controller { constructor(awesomeMap, component) { super(awesomeMap, component) @@ -36,7 +28,7 @@ export default class ProposalsController extends Controller { // for each proposal, create a marker with an associated popup this.fetcher.onNode = (proposal) => { let marker = new L.Marker([proposal.coordinates.latitude, proposal.coordinates.longitude], { - icon: this.createIcon(ProposalIcon, this.awesomeMap.getCategory(proposal.category).color), + icon: this.createIcon("text-secondary"), title: proposal.title.translation }); @@ -67,16 +59,16 @@ export default class ProposalsController extends Controller { // console.log("marker", marker, "parent proposal", parent) // add marker to amendments layers and remove it from proposals if (marker) { - try { - marker.marker.removeFrom(this.controls.group) - } catch (evt) { + try { + marker.marker.removeFrom(this.controls.group) + } catch (evt) { console.error("error removeFrom marker", marker, "layer", this.controls.group, evt); } if (this.awesomeMap.config.menu.amendments) { marker.marker.addTo(this.awesomeMap.layers.amendments.group); // mimic parent category (amendments doesn't have categories) if (parent.category) { - marker.marker.setIcon(this.createIcon(ProposalIcon, this.awesomeMap.getCategory(parent.category).color)); + marker.marker.setIcon(this.createIcon("text-secondary")); this.addMarkerCategory(marker.marker, parent.category) } } diff --git a/app/packs/src/decidim/decidim_awesome/editors/editor.js b/app/packs/src/decidim/decidim_awesome/editors/editor.js index 06eca090e..a2e03f883 100644 --- a/app/packs/src/decidim/decidim_awesome/editors/editor.js +++ b/app/packs/src/decidim/decidim_awesome/editors/editor.js @@ -124,6 +124,8 @@ export function createQuillEditor(container) { } } } + // NOTE: this is work in progress and is going to be removed + /* eslint-disable no-undef */ const quill = new Quill(container, { modules: modules, formats: quillFormats, diff --git a/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js b/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js index c396a62f5..d19b72e62 100644 --- a/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js +++ b/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js @@ -123,7 +123,7 @@ export default class CustomFieldsRenderer { // eslint-disable-line no-unused-var /** * Hack to fix required checkboxes being reset - * Issue: https://github.com/Platoniq/decidim-module-decidim_awesome/issues/82 + * Issue: https://github.com/decidim-ice/decidim-module-decidim_awesome/issues/82 */ this.$container.find(".formbuilder-checkbox-group").each((_key, group) => { const inputs = $(".formbuilder-checkbox input", group); @@ -164,7 +164,7 @@ export default class CustomFieldsRenderer { // eslint-disable-line no-unused-var /** * Hack to fix required radio buttons "other" value - * Issue: https://github.com/Platoniq/decidim-module-decidim_awesome/issues/133 + * Issue: https://github.com/decidim-ice/decidim-module-decidim_awesome/issues/133 */ this.$container.find(".formbuilder-radio input.other-val").on("input", (input) => { const $input = $(input.currentTarget); diff --git a/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js b/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js index 84bdded50..c32a9f7d9 100644 --- a/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js +++ b/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js @@ -4,7 +4,7 @@ * * Registers Decidim Richtext as a subtype for the textarea control */ -import {createQuillEditor} from "src/decidim/decidim_awesome/editors/editor" +// import {createQuillEditor} from "src/decidim/decidim_awesome/editors/editor" // configure the class for runtime loading if (!window.fbControls) { @@ -88,9 +88,9 @@ window.fbControls.push(function(controlClass, allControlClasses) { } window.fbEditors.quill[this.id] = {}; - const editor = window.fbEditors.quill[this.id]; + // const editor = window.fbEditors.quill[this.id]; // createQuillEditor does all the job to update the hidden input wrapper - editor.instance = createQuillEditor(this.wrapper); + // editor.instance = createQuillEditor(this.wrapper); // editor.data = new Delta(); // if (value) { // editor.instance.setContents(window.JSON.parse(this.parsedHtml(value))); diff --git a/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js b/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js index c5846c2ba..eae3f387c 100644 --- a/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js +++ b/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js @@ -1,8 +1,8 @@ import CustomFieldsRenderer from "src/decidim/decidim_awesome/forms/custom_fields_renderer" -window.DecidimAwesome.CustomFieldsRenderer = window.DecidimAwesome.CustomFieldsRenderer || new CustomFieldsRenderer(); - $(() => { + window.DecidimAwesome.CustomFieldsRenderer = window.DecidimAwesome.CustomFieldsRenderer || new CustomFieldsRenderer(); + // use admin multilang specs if exists let $el = $("proposal_custom_field:first", ".tabs-title.is-active"); if (!$el.length) { diff --git a/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss b/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss index b93e97052..1508c311a 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss @@ -1,6 +1,6 @@ input.awesome-auto-edit { display: inline-block; - width: auto; + width: auto !important; margin: 0 2px; padding: 1px; line-height: 0; diff --git a/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss b/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss index 99461c9ec..9a446a2fa 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss @@ -1,5 +1,3 @@ -@import "codemirror/lib/codemirror.css"; - .awesome-edit-config { .scoped_styles_container, .proposal_custom_fields_container { @@ -7,20 +5,20 @@ margin: 0; } - >.CodeMirror { + > .CodeMirror { border-top-left-radius: 5px; border-top-right-radius: 5px; - border-top: .5em solid #e0e0e0; - border-right: .5em solid #e0e0e0; - border-bottom: .5em solid #e0e0e0; + border-top: 0.5em solid #e0e0e0; + border-right: 0.5em solid #e0e0e0; + border-bottom: 0.5em solid #e0e0e0; min-height: 6em; height: auto; max-height: 40em; resize: vertical; overflow: vertical !important; - >.CodeMirror-scroll { - >.CodeMirror-gutters { + > .CodeMirror-scroll { + > .CodeMirror-gutters { background: #e0e0e0; } } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/admin/constraints.scss b/app/packs/stylesheets/decidim/decidim_awesome/admin/constraints.scss index 3f8f597eb..e3bb42b3f 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/admin/constraints.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/admin/constraints.scss @@ -1,12 +1,13 @@ .constraints-editor { background: #f6f6f6; padding: 1rem; - margin: -.5rem 0 2rem; border-radius: 5px; .constraints-list { - padding: 0; - // margin:0 0 1em 0 ; + padding: inherit; + margin: 0 0 1em; + list-style-type: disc; + li { margin: 0 1em 0 0; padding: 0; @@ -36,14 +37,14 @@ } } - a { - margin-left: 1rem; - } - &.inactive { .label:not(.constraint-none) { filter: saturate(10%); } } } + + .flash[hidden] { + display: none; + } } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss b/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss index cd1281d0e..4c026af14 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss @@ -9,20 +9,29 @@ &:first-child { margin-left: 0; } - $colors: ( - "primary": #{$primary}, - "secondary": #{$secondary}, - "success": #{$success}, - "warning": #{$warning}, - "alert": #{$alert}, - "highlight": #{$highlight}, - "highlight_alternative": #{$highlight_alternative} - ); - - @each $name, $color in $colors { - &.#{$name} { - background-color: #{$color}; - } + + &.primary { + background-color: var(--primary); + } + + &.secondary { + background-color: var(--secondary); + } + + &.tertiary { + background-color: var(--tertiary); + } + + &.alert { + background-color: var(--alert); + } + + &.warning { + background-color: var(--warning); + } + + &.success { + background-color: var(--success); } } @@ -35,7 +44,7 @@ .proposal_custom_fields { &_editor { background-color: #e0e0e0; - padding: .5em .5em 1em; + padding: 0.5em 0.5em 1em; border-top-left-radius: 5px; border-top-right-radius: 5px; @@ -72,8 +81,8 @@ color: #555; background-color: #fff; border: 1px solid #ccc; - box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); - transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s; margin: 0; padding: 6px 12px; } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss b/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss index 788f0b860..101726c10 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss @@ -1,29 +1,20 @@ -@import "select2/dist/css/select2.css"; -@import "stylesheets/vendor/select2-foundation-theme"; +@import "tom-select/dist/scss/tom-select"; -.multiusers-select-container { - form label { - margin-bottom: 1rem; - } +/* overwrite tom-select defaults */ +.ts { + &-control { + @apply border-gray text-md min-h-[40px]; - .switch-paddle { - display: inline-block; - vertical-align: middle; - margin-right: 1em; - } -} - -.select2-container--foundation .select2-selection--multiple { - .select2-selection__choice { - display: inline-block; - float: none; - font-weight: normal; + input { + @apply font-normal text-black text-md; + } .is-admin { &::before { - content: '⛔'; + content: "⛔"; display: inline-block; - margin-right: .3em; + margin-right: 0.3em; + text-decoration: none; } text-decoration: line-through; @@ -31,11 +22,11 @@ } } - textarea.select2-search__field { - resize: none; - } -} + &-dropdown { + @apply text-md text-gray-2 font-normal; -.form-conversations-submit { - margin-top: 2rem; + .active { + @apply text-white bg-secondary; + } + } } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss b/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss index dcb661e78..cfc63eed0 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss @@ -1,26 +1,27 @@ -@import "entrypoints/decidim_admin"; @import "stylesheets/decidim/decidim_awesome/admin/constraints"; @import "stylesheets/decidim/decidim_awesome/admin/custom_fields"; @import "stylesheets/decidim/decidim_awesome/admin/auto_edits"; @import "stylesheets/decidim/decidim_awesome/admin/check_redirections"; +@import "stylesheets/decidim/decidim_awesome/admin/user_picker"; +@import "stylesheets/decidim/decidim_awesome/admin/codemirror"; @import "stylesheets/decidim/decidim_awesome/editors/markdown_editor"; @import "stylesheets/decidim/decidim_awesome/editors/quill_editor"; .pokecode-credits { float: right; - margin: 0 1em .5em 0; + margin: 0 1em 0.5em 0; // position: absolute; // bottom: 0; // right: 0; // margin: 1em; - font-size: .8em; + font-size: 0.8em; } .decidim_awesome { &.modal { .spinner { - @include spinner(25px, #aaa, var(--secondary), 800ms); + // @include spinner(25px, #aaa, var(--secondary), 800ms); vertical-align: middle; display: none; @@ -69,6 +70,6 @@ tbody tr.menu_hack-addition { .secondary-nav { li .icon { - margin-right: .5rem; + margin-right: 0.5rem; } } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss b/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss index cbdd7a698..209a5f203 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss @@ -6,12 +6,12 @@ .decidim_awesome-custom_fields { dd { - >div:last-child { + > div:last-child { margin-bottom: 1rem; } &[name="textarea"] { - >div > p { + > div > p { margin-top: 1rem; margin-bottom: 0; } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss b/app/packs/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss index ba88bfcbe..eed7b3150 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss @@ -1,4 +1,4 @@ -.wrapper { +.participatory-space__container { .awesome-iframe { margin: 0 auto; diff --git a/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss b/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss index a32fe4517..8025d26d9 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss @@ -45,7 +45,7 @@ .leaflet-control-layers-list { hr { - margin: .5em 0; + margin: 0.5em 0; } b { @@ -55,13 +55,13 @@ label { line-height: 1; - font-size: .8rem; - margin: 0 .5em .5em; + font-size: 0.8rem; + margin: 0 0.5em 0.5em; i { display: inline-block; - width: .8rem; - height: .8rem; + width: 0.8rem; + height: 0.8rem; background-color: var(--primary); } } @@ -72,7 +72,7 @@ } .map-legend { - background: rgba(255, 255, 255, .8); + background: rgba(255, 255, 255, 0.8); padding: 1em; border: 2px solid #bbb; border-radius: 4px; @@ -83,7 +83,7 @@ cursor: pointer; &::after { - content: ''; + content: ""; width: 0; height: 0; border-left: 5px solid transparent; @@ -112,10 +112,10 @@ display: none; i { - margin-left: .5em; + margin-left: 0.5em; display: inline-block; - width: .8rem; - height: .8rem; + width: 0.8rem; + height: 0.8rem; border-radius: 50%; background-color: var(-- primary); } @@ -144,11 +144,11 @@ line-height: 1; background-color: #f0f0f0; border-radius: 5px; - margin: .5rem; - padding: .5rem; + margin: 0.5rem; + padding: 0.5rem; span { - margin: 0 .5rem 2px 0; + margin: 0 0.5rem 2px 0; } input { @@ -157,8 +157,8 @@ } .awesome_map-toggle_all_tags { - margin: .5rem 1rem; - font-size: .875rem; + margin: 0.5rem 1rem; + font-size: 0.875rem; } .hashtags-container, diff --git a/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss b/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss index 21d7f45de..b4c62b723 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss @@ -1,10 +1,10 @@ -@import "stylesheets/decidim/variables"; -@import "stylesheets/decidim/utils/settings"; -@import "stylesheets/decidim/utils/mixins"; +// @import "stylesheets/decidim/variables"; +// @import "stylesheets/decidim/utils/settings"; +// @import "stylesheets/decidim/utils/mixins"; .editor-loading { &::before { - @include spinner(25px, $medium-gray, var(--primary), 800ms); + // @include spinner(25px, $medium-gray, var(--primary), 800ms); float: right; content: ""; @@ -24,7 +24,7 @@ } .editor.hashtags__container { - >p.help-text { + > p.help-text { margin-top: -1rem; margin-bottom: 1.5rem; } @@ -32,8 +32,8 @@ // For quill editors in custom fields .form-control[type="richtext"] { - >p.help-text { - margin-top: .2rem !important; + > p.help-text { + margin-top: 0.2rem !important; } .ql-snow.ql-toolbar { diff --git a/app/packs/stylesheets/decidim/decidim_awesome/forms/autosave.scss b/app/packs/stylesheets/decidim/decidim_awesome/forms/autosave.scss index 79dd15370..b6857d274 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/forms/autosave.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/forms/autosave.scss @@ -1,10 +1,10 @@ .awesome_autosave-notice { - background-color: rgba(var(--success-rgb), .8); + background-color: rgba(var(--success-rgb), 0.8); position: fixed; top: 0; right: 0; margin: 2em; - padding: .5em 1em; + padding: 0.5em 1em; border-radius: 4px; border: 1px solid var(--success); font-weight: 600; @@ -12,6 +12,6 @@ z-index: 1000; &.error { - background-color: rgba(var(--alert-rgb), .8); + background-color: rgba(var(--alert-rgb), 0.8); } } diff --git a/app/packs/stylesheets/decidim/decidim_awesome/voting/voting_cards.scss b/app/packs/stylesheets/decidim/decidim_awesome/voting/voting_cards.scss index e03dddc1c..3d7e9bc8c 100644 --- a/app/packs/stylesheets/decidim/decidim_awesome/voting/voting_cards.scss +++ b/app/packs/stylesheets/decidim/decidim_awesome/voting/voting_cards.scss @@ -65,11 +65,12 @@ border-bottom: none; .vote-card { - margin-top: .5rem; + margin-top: 0.5rem; .vote-label { margin-bottom: 1rem; - color: $black; + + @apply text-black; } } @@ -80,12 +81,12 @@ } &.loading { - opacity: .3; + opacity: 0.3; pointer-events: none; position: relative; &::before { - @include spinner(25px, $medium-gray, var(--primary), 800ms); + // @include spinner(25px, $medium-gray, var(--primary), 800ms); z-index: 1000; content: ""; @@ -102,7 +103,7 @@ } .votes_counter { - letter-spacing: .2rem; + letter-spacing: 0.2rem; font-size: 1rem; } @@ -123,7 +124,7 @@ width: $rectangle-width; height: calc($rectangle-width * 2); vertical-align: middle; - margin: -.5rem 0 0 .5rem; + margin: -0.5rem 0 0 0.5rem; max-width: 100%; transition: transform 150ms ease-in-out; @@ -171,7 +172,7 @@ } .dim { - opacity: .3; + opacity: 0.3; pointer-events: none; } @@ -199,8 +200,8 @@ &:hover { text-decoration: none; - font-size: .9rem; - margin-top: .1rem; + font-size: 0.9rem; + margin-top: 0.1rem; } } diff --git a/app/permissions/decidim/decidim_awesome/permissions.rb b/app/permissions/decidim/decidim_awesome/permissions.rb index 8b0cdefb7..65c3a3c97 100644 --- a/app/permissions/decidim/decidim_awesome/permissions.rb +++ b/app/permissions/decidim/decidim_awesome/permissions.rb @@ -14,7 +14,7 @@ def permissions end def editor_image_action? - return unless permission_action.subject == :editor_image + return false unless permission_action.subject == :editor_image config = context.fetch(:awesome_config, {}) @@ -22,7 +22,8 @@ def editor_image_action? return allow! if config[:allow_images_in_proposals] return allow! if config[:allow_images_in_small_editor] return allow! if config[:allow_images_in_full_editor] - return allow! if config[:allow_images_in_markdown_editor] + + allow! if config[:allow_images_in_markdown_editor] end end end diff --git a/app/presenters/decidim/decidim_awesome/breadcrumb_root_menu_item_presenter_override.rb b/app/presenters/decidim/decidim_awesome/breadcrumb_root_menu_item_presenter_override.rb new file mode 100644 index 000000000..a393cc44c --- /dev/null +++ b/app/presenters/decidim/decidim_awesome/breadcrumb_root_menu_item_presenter_override.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Decidim + module DecidimAwesome + module BreadcrumbRootMenuItemPresenterOverride + extend ActiveSupport::Concern + + included do + def arrow_link(text, url, args = {}) + link_to url, extended_html_options.merge(class: args.with_indifferent_access[:class]) do + "#{text} #{icon("arrow-right-line")}".html_safe + end + end + + def extended_html_options + {}.tap do |opts| + opts[:target] = "_blank" if @menu_item.try(:target) == "_blank" + end + end + end + end + end +end diff --git a/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb b/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb index a15bd5b0c..34fe3889d 100644 --- a/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb +++ b/app/presenters/decidim/decidim_awesome/menu_item_presenter_override.rb @@ -6,12 +6,12 @@ module MenuItemPresenterOverride extend ActiveSupport::Concern included do - def link_to(name = nil, options = nil, html_options = nil, &block) + def link_to(name = nil, options = nil, html_options = nil, &) html_options ||= {} html_options[:target] = @menu_item.try(:target) options ||= html_options - @view.link_to(name, options, html_options, &block) + @view.link_to(name, options, html_options, &) end def active @@ -19,6 +19,14 @@ def active @menu_item&.active end + + def active_for_breadcrumb? + is_active_link?(url, @menu_item.try(:original_active) || active) + end + + def hacked_not_overriding? + !(@menu_item.is_a?(Decidim::MenuItem) || @menu_item.overrided?) + end end end end diff --git a/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb b/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb index bc6f74f85..cef2a446b 100644 --- a/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb +++ b/app/presenters/decidim/decidim_awesome/menu_presenter_override.rb @@ -17,6 +17,14 @@ def evaluated_menu end end end + + def active_item_for_breadcrumb + presented_items.find do |item| + next if item.hacked_not_overriding? + + item.active_for_breadcrumb? + end + end end end end diff --git a/app/presenters/decidim/decidim_awesome/participatory_space_role_presenter.rb b/app/presenters/decidim/decidim_awesome/participatory_space_role_presenter.rb index 3dec5553c..146d6b98e 100644 --- a/app/presenters/decidim/decidim_awesome/participatory_space_role_presenter.rb +++ b/app/presenters/decidim/decidim_awesome/participatory_space_role_presenter.rb @@ -5,7 +5,7 @@ module DecidimAwesome class ParticipatorySpaceRolePresenter < RoleBasePresenter # Finds the destroyed entry if exists def destroy_entry - @destroy_entry ||= PaperTrail::Version.find_by(item_type: item_type, event: "destroy", item_id: item_id) + @destroy_entry ||= PaperTrail::Version.find_by(item_type:, event: "destroy", item_id:) end # roles are in the destroyed event if the role has been removed diff --git a/app/presenters/decidim/decidim_awesome/user_entity_presenter.rb b/app/presenters/decidim/decidim_awesome/user_entity_presenter.rb index ea363dc8e..de7e01b0e 100644 --- a/app/presenters/decidim/decidim_awesome/user_entity_presenter.rb +++ b/app/presenters/decidim/decidim_awesome/user_entity_presenter.rb @@ -6,7 +6,7 @@ class UserEntityPresenter < RoleBasePresenter # Finds the destroyed entry if exists def destroy_entry @destroy_entry ||= begin - query = PaperTrail::Version.where(item_type: item_type, event: "update", item_id: item_id) + query = PaperTrail::Version.where(item_type:, event: "update", item_id:) .where("id > ?", entry.id) if roles.include? "admin" query.where("object_changes LIKE '%\nadmin:\n- true\n- false%'").first diff --git a/app/serializers/concerns/decidim/decidim_awesome/proposal_serializer_override.rb b/app/serializers/concerns/decidim/decidim_awesome/proposal_serializer_override.rb index 00f7d6a23..7605f9695 100644 --- a/app/serializers/concerns/decidim/decidim_awesome/proposal_serializer_override.rb +++ b/app/serializers/concerns/decidim/decidim_awesome/proposal_serializer_override.rb @@ -35,15 +35,15 @@ def serialize weights: proposal_vote_weights, endorsements: { total_count: proposal.endorsements.size, - user_endorsements: user_endorsements + user_endorsements: }, comments: proposal.comments_count, attachments: proposal.attachments.size, followers: proposal.follows.size, published_at: proposal.published_at, - url: url, + url:, meeting_urls: meetings, - related_proposals: related_proposals, + related_proposals:, is_amend: proposal.emendation?, original_proposal: { title: proposal&.amendable&.title, diff --git a/app/views/decidim/decidim_awesome/admin/checks/index.html.erb b/app/views/decidim/decidim_awesome/admin/checks/index.html.erb index dc64e6999..a98737a3b 100644 --- a/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +++ b/app/views/decidim/decidim_awesome/admin/checks/index.html.erb @@ -1,7 +1,9 @@ +
+

+ <%= t(".title") %> +

+
-
-

<%= t ".title" %>

-

"><%= t ".decidim_version", version: decidim_version %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb b/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb index a6a24560f..e05ade5bd 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb @@ -2,6 +2,8 @@ <%= t("config.#{var}", scope: "activemodel.attributes", id: "#{key}").html_safe %> - <%= icon_link_to "pencil", "#", t("edit_label", scope: "decidim.decidim_awesome.admin.config.form"), class: "action-icon--edit awesome-auto-edit", data: { "scope" => "#{scope}" } %> - <%= link_to t("remove", scope: "decidim.decidim_awesome.admin.config.form_#{var}"), delete_path, method: :delete, class: "float-right delete-box", data: { confirm: t("sure_to_remove", scope: "decidim.decidim_awesome.admin.config.form_#{var}") } %> + + <%= icon_link_to "pencil-line", "#", t("edit_label", scope: "decidim.decidim_awesome.admin.config.form"), class: "action-icon--edit awesome-auto-edit", data: { "scope" => "#{scope}" } %> + + <%= link_to t("remove", scope: "decidim.decidim_awesome.admin.config.form_#{var}"), delete_path, method: :delete, id: "delete-box", class: "float-right button button__sm button__text-secondary", data: { confirm: t("sure_to_remove", scope: "decidim.decidim_awesome.admin.config.form_#{var}") } %> <% end %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb b/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb index d015749ff..254a154bb 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb @@ -1,10 +1,5 @@

- + <%= cell "decidim/announcement", "

".html_safe, hidden: true %>
<%= t ".title" %>
<% if constraints.blank? %> @@ -13,15 +8,27 @@
    "> <% constraints&.each do |constraint| %> -
  • - <% constraint.settings.reverse_each do |k, val| %> - <%= translate_constraint_value constraint, k %> - <% end %> - <%= t ".edit" %> - <%= link_to t(".delete"), constraint_path(id: constraint.id), remote: true, method: :delete %> -
  • - <% end %> +
  • + <% constraint.settings.reverse_each do |k, val| %> + <%= translate_constraint_value constraint, k %> + <% end %> + +
    + + + <%= link_to t(".delete"), constraint_path(id: constraint.id), remote: true, method: :delete, class: "button button__sm button__transparent-secondary" %> +
    +
  • + <% end %>
- <%= t ".add_condition" %> + +
+ +<%= decidim_modal id: "edit-modal-#{key}", class: "decidim_awesome modal", remote: true %> +<%= decidim_modal id: "new-modal-#{key}", class: "decidim_awesome modal", remote: true %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb index f6a8a082a..c1154e285 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb @@ -1,4 +1,4 @@ -
+
<% if config_enabled? :scoped_admins %>

<%= t("help.scoped_admins", scope: "decidim.decidim_awesome.admin.config.form") %>

@@ -7,15 +7,13 @@ <%= render(partial: "decidim/decidim_awesome/admin/config/autoedit_box_label", locals: { var: "scoped_admins", key: key, scope: "scoped_admin_#{key}", delete_path: decidim_admin_decidim_awesome.scoped_admin_path(key: key) }) %>

<%= errors[key.to_sym].join("
") if errors %>

- <%= select_tag "config[scoped_admins][#{key}]", options_from_collection_for_select(users_for(value), :id, :text, proc { true }), { include_blank: false , class: "multiusers-select", multiple: true, data: { url: decidim_admin_decidim_awesome.users_path } } %> + <%= select_tag "config[scoped_admins][#{key}]", options_for_select(users_for(value), value), { include_blank: false , class: "multiusers-select", multiple: true, data: { url: decidim_admin_decidim_awesome.users_path } } %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: "scoped_admin_#{key}", constraints: constraints_for("scoped_admin_#{key}") }) %>
<% end %> - <%= link_to t("new", scope: "decidim.decidim_awesome.admin.config.form_scoped_admins"), decidim_admin_decidim_awesome.scoped_admins_path, method: :post %> + <%= link_to t("new", scope: "decidim.decidim_awesome.admin.config.form_scoped_admins"), decidim_admin_decidim_awesome.scoped_admins_path, method: :post, class: "button button__sm button__text-secondary mr-auto" %> <% end %>
- -<%= javascript_pack_tag "decidim_decidim_awesome_admin_form_exit_warn" %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb index 61a17555c..02d487d88 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb @@ -1,17 +1,15 @@ -
-

<%= t("help.drag_and_drop_supported", scope: "decidim.decidim_awesome.admin.config.form") %>

-

<%= t("help.original_editor_override", scope: "decidim.decidim_awesome.admin.config.form") %>

+
+

<%= t("help.drag_and_drop_supported", scope: "decidim.decidim_awesome.admin.config.form") %>

+

<%= t("help.original_editor_override", scope: "decidim.decidim_awesome.admin.config.form") %>

<% enabled_configs([:allow_images_in_full_editor, :allow_images_in_small_editor]).each do |key| %> - <%= form.check_box key %> -

<%= t("help.#{key}", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.check_box key, help_text: t("help.#{key}", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: key, constraints: constraints_for(key) }) %> <% end %> <% enabled_configs([:use_markdown_editor, :allow_images_in_markdown_editor]).each do |key| %> - <%= form.check_box key %> -

<%= t("help.#{key}", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.check_box key, help_text: t("help.#{key}", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: key, constraints: constraints_for(key) }) %> <% end %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_livechat.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_livechat.html.erb index 93687697c..39dc77042 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_livechat.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_livechat.html.erb @@ -1,13 +1,12 @@ -
+
<% if config_enabled? :intergram_for_public %> - <%= form.check_box :intergram_for_public %> -

<%= t("help.intergram_about", scope: "decidim.decidim_awesome.admin.config.form").html_safe %>

+ <%= form.check_box :intergram_for_public, help_text: t("help.intergram_about", scope: "decidim.decidim_awesome.admin.config.form").html_safe %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :intergram_for_public, constraints: constraints_for(:intergram_for_public) }) %> <%= fields_for "config[intergram_for_public_settings]", form.object.intergram_for_public_settings do |f| %> - <%= f.text_field :chat_id, label: t("intergram_chat_id", scope: "activemodel.attributes.config") %> -

<%= t("help.intergram_config", scope: "decidim.decidim_awesome.admin.config.form").html_safe %>

+ <%= f.text_field :chat_id, label: t("intergram_chat_id", scope: "activemodel.attributes.config"), help_text: t("help.intergram_config", scope: "decidim.decidim_awesome.admin.config.form").html_safe %> + <%= f.check_box :require_login, label: t("intergram_require_login", scope: "activemodel.attributes.config") %> <%= f.check_box :use_floating_button, label: t("intergram_use_floating_button", scope: "activemodel.attributes.config") %> <%= f.color_field :color, label: t("intergram_color", scope: "activemodel.attributes.config") %> @@ -20,16 +19,14 @@ <% end %>
-
+
<% if config_enabled? :intergram_for_admins %> - <%= form.check_box :intergram_for_admins %> -

<%= t("help.intergram_about", scope: "decidim.decidim_awesome.admin.config.form").html_safe %>

+ <%= form.check_box :intergram_for_admins, help_text: t("help.intergram_about", scope: "decidim.decidim_awesome.admin.config.form").html_safe %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :intergram_for_admins, constraints: constraints_for(:intergram_for_admins) }) %> <%= fields_for "config[intergram_for_admins_settings]", form.object.intergram_for_admins_settings do |f| %> - <%= f.text_field :chat_id, label: t("intergram_chat_id", scope: "activemodel.attributes.config") %> -

<%= t("help.intergram_config", scope: "decidim.decidim_awesome.admin.config.form").html_safe %>

+ <%= f.text_field :chat_id, label: t("intergram_chat_id", scope: "activemodel.attributes.config"), help_text: t("help.intergram_config", scope: "decidim.decidim_awesome.admin.config.form").html_safe %> <%= f.check_box :use_floating_button, label: t("intergram_use_floating_button", scope: "activemodel.attributes.config") %> <%= f.color_field :color, label: t("intergram_color", scope: "activemodel.attributes.config") %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb index bfe55096f..6335d84a8 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb @@ -1,9 +1,9 @@
<%= t("caution", scope: "decidim.decidim_awesome.admin.config") %>
-
+
<% if config_enabled? :proposal_custom_fields %> -

<%= t("help.proposal_custom_fields", scope: "decidim.decidim_awesome.admin.config.form") %>

-

<%= t("help.proposal_custom_fields_example", scope: "decidim.decidim_awesome.admin.config.form") %>

-

<%= t("help.proposal_custom_fields_translations", scope: "decidim.decidim_awesome.admin.config.form") %>

+

<%= t("help.proposal_custom_fields", scope: "decidim.decidim_awesome.admin.config.form") %>

+

<%= t("help.proposal_custom_fields_example", scope: "decidim.decidim_awesome.admin.config.form") %>

+

<%= t("help.proposal_custom_fields_translations", scope: "decidim.decidim_awesome.admin.config.form") %>

<% form.object.proposal_custom_fields&.each do |key, value| %>
@@ -21,5 +21,3 @@ <% end %>
- -<%= javascript_pack_tag "decidim_decidim_awesome_admin_form_exit_warn" %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb index 7cb43467c..028b9b884 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb @@ -1,9 +1,8 @@ -
+
<% if config_enabled? :allow_images_in_proposals %>

<%= t("rich_text_editor_in_public_views", scope: "decidim.decidim_awesome.admin.config") if current_organization.rich_text_editor_in_public_views %>

- <%= form.check_box :allow_images_in_proposals, disabled: current_organization.rich_text_editor_in_public_views %> -

<%= t("help.allow_images_in_proposals", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.check_box :allow_images_in_proposals, disabled: current_organization.rich_text_editor_in_public_views, help_text: t("help.allow_images_in_proposals", scope: "decidim.decidim_awesome.admin.config.form") %> <% unless current_organization.rich_text_editor_in_public_views %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :allow_images_in_proposals, constraints: constraints_for(:allow_images_in_proposals) }) %> @@ -20,9 +19,10 @@

<%= t("additional_proposal_sortings.title", scope: "decidim.decidim_awesome.admin.config.form") %>

-
+
<%= form.select :additional_proposal_sortings, @form.additional_proposal_sorting_labels, { include_blank: false }, { multiple: true } %> -

+ +

<%= t("additional_proposal_sortings.help", scope: "decidim.decidim_awesome.admin.config.form") %> <%= link_to t("additional_proposal_sortings.enable_all", scope: "decidim.decidim_awesome.admin.config.form"), "#", id: "additional_proposal_sortings-enable-all" %>.

@@ -39,7 +39,7 @@

<%= t("validators.title", scope: "decidim.decidim_awesome.admin.config.form") %>

-
+
<% if config_enabled? :validate_title_start_with_caps %> <%= form.check_box :validate_title_start_with_caps %> @@ -47,22 +47,19 @@ <% end %> <% if config_enabled? :validate_title_min_length %> - <%= form.number_field :validate_title_min_length %> -

<%= t("help.validate_title_min_length", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.number_field :validate_title_min_length, help_text: t("help.validate_title_min_length", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :validate_title_min_length, constraints: constraints_for(:validate_title_min_length) }) %> <% end %> <% if config_enabled? :validate_title_max_caps_percent %> - <%= form.number_field :validate_title_max_caps_percent %> -

<%= t("help.validate_title_max_caps_percent", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.number_field :validate_title_max_caps_percent, help_text: t("help.validate_title_max_caps_percent", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :validate_title_max_caps_percent, constraints: constraints_for(:validate_title_max_caps_percent) }) %> <% end %> <% if config_enabled? :validate_title_max_marks_together %> - <%= form.number_field :validate_title_max_marks_together %> -

<%= t("help.validate_title_max_marks_together", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.number_field :validate_title_max_marks_together, help_text: t("help.validate_title_max_marks_together", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :validate_title_max_marks_together, constraints: constraints_for(:validate_title_max_marks_together) }) %> <% end %> @@ -85,22 +82,19 @@ <% end %> <% if config_enabled? :validate_body_min_length %> - <%= form.number_field :validate_body_min_length %> -

<%= t("help.validate_body_min_length", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.number_field :validate_body_min_length, help_text: t("help.validate_body_min_length", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :validate_body_min_length, constraints: constraints_for(:validate_body_min_length) }) %> <% end %> <% if config_enabled? :validate_body_max_caps_percent %> - <%= form.number_field :validate_body_max_caps_percent %> -

<%= t("help.validate_body_max_caps_percent", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.number_field :validate_body_max_caps_percent, help_text: t("help.validate_body_max_caps_percent", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :validate_body_max_caps_percent, constraints: constraints_for(:validate_body_max_caps_percent) }) %> <% end %> <% if config_enabled? :validate_body_max_marks_together %> - <%= form.number_field :validate_body_max_marks_together %> -

<%= t("help.validate_body_max_marks_together", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.number_field :validate_body_max_marks_together, help_text: t("help.validate_body_max_marks_together", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :validate_body_max_marks_together, constraints: constraints_for(:validate_body_max_marks_together) }) %> <% end %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb index 248a1bddf..6ee3a4d87 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb @@ -1,11 +1,12 @@ -
+
<% if config_enabled? :scoped_styles %> -

<%= t("help.scoped_styles", scope: "decidim.decidim_awesome.admin.config.form") %> +

<%= t("help.scoped_styles", scope: "decidim.decidim_awesome.admin.config.form") %> <%= t("help.scoped_styles_variables", scope: "decidim.decidim_awesome.admin.config.form") %>

-

- <% ["primary", "secondary", "success", "warning", "alert", "highlight", "highlight_alternative"].each do |color| %> - var(--<%= color %>) +

+ <% ["primary", "secondary", "tertiary", "success", "warning", "alert"].each do |color| %> + + var(--<%= color %>) <% end %>

@@ -18,9 +19,7 @@
<% end %> - <%= link_to t("new", scope: "decidim.decidim_awesome.admin.config.form_scoped_styles"), decidim_admin_decidim_awesome.scoped_styles_path, method: :post %> + <%= link_to t("new", scope: "decidim.decidim_awesome.admin.config.form_scoped_styles"), decidim_admin_decidim_awesome.scoped_styles_path, method: :post, class: "button button__sm button__text-secondary mr-auto" %> <% end %>
- -<%= javascript_pack_tag "decidim_decidim_awesome_admin_form_exit_warn" %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb b/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb index 5ce92ad6f..f96c8e662 100644 --- a/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb @@ -1,8 +1,6 @@ -
+
<% if config_enabled? :auto_save_forms %> - - <%= form.check_box :auto_save_forms %> -

<%= t("help.auto_save_forms", scope: "decidim.decidim_awesome.admin.config.form") %>

+ <%= form.check_box :auto_save_forms, help_text: t("help.auto_save_forms", scope: "decidim.decidim_awesome.admin.config.form") %> <%= render(partial: "decidim/decidim_awesome/admin/config/constraints", locals: { key: :auto_save_forms, constraints: constraints_for(:auto_save_forms) }) %> <% end %> diff --git a/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb b/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb deleted file mode 100644 index 7a73faeff..000000000 --- a/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/app/views/decidim/decidim_awesome/admin/config/show.html.erb b/app/views/decidim/decidim_awesome/admin/config/show.html.erb index a1f757420..57ed77a01 100644 --- a/app/views/decidim/decidim_awesome/admin/config/show.html.erb +++ b/app/views/decidim/decidim_awesome/admin/config/show.html.erb @@ -1,14 +1,22 @@ -<%= decidim_form_for(@form, method: :patch, url: decidim_admin_decidim_awesome.config_path(config_var), html: { class: "awesome-edit-config" }, data: { "safe-path" => decidim_admin_decidim_awesome.config_path(config_var) }) do |f| %> -
-
-

<%= t(".title", setting: config_var) %>

-
-
- <%= render partial: "form_#{config_var}", locals: { form: f, errors: defined?(errors) ? errors : nil } %> -
+
+

+ <%= t(".title", setting: config_var) %> +

+
+
+
+ <%= decidim_form_for(@form, method: :patch, url: decidim_admin_decidim_awesome.config_path(config_var), html: { class: "form-defaults awesome-edit-config" }, data: { "safe-path" => decidim_admin_decidim_awesome.config_path(config_var) }) do |f| %> +
+
+ <%= render partial: "form_#{config_var}", locals: { form: f, errors: defined?(errors) ? errors : nil } %> +
+
+ +
+
+ <%= f.submit t(".update"), class: "button button__sm button__secondary" %> +
+
+ <% end %>
-
- <%= f.submit t(".update") %> -
-<% end %> -<%= render partial: "modal" %> +
diff --git a/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb b/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb index 471d723b5..d9e2740c2 100644 --- a/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb +++ b/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb @@ -1,4 +1,4 @@ -
+
<%= form.select :participatory_space_manifest, participatory_space_manifests.invert, include_blank: true %> <%= form.select :participatory_space_slug, participatory_spaces_list(@form.participatory_space_manifest).invert, include_blank: true %> @@ -6,51 +6,3 @@ <%= form.select :component_id, components_list(@form.participatory_space_manifest, @form.participatory_space_slug).invert, include_blank: true %>
- - diff --git a/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb b/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb index 0ad4db4f2..c3e1d7eba 100644 --- a/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb +++ b/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb @@ -1,14 +1,19 @@ -<%= decidim_form_for(@form, url: constraints_path(key: params[:key]), remote: true) do |f| %> -
-
-

<%= t ".constraint" %>

-
-
+<%= decidim_form_for(@form, url: constraints_path(key: params[:key]), remote: true, html: { class: "form-defaults" }) do |f| %> +
+ <%= icon "lock-line" %> +

<%= t ".constraint" %>

+ +
<%= render partial: "form", object: f %>
-
- - + +
+ + + <%= f.submit t(".save"), class: "button button__sm md:button__lg button__secondary", data: { "dialog-close": "new-modal-#{params[:key]}" } %>
<% end %> diff --git a/app/views/decidim/decidim_awesome/admin/constraints/show.html.erb b/app/views/decidim/decidim_awesome/admin/constraints/show.html.erb index 13c49abae..aace17b3e 100644 --- a/app/views/decidim/decidim_awesome/admin/constraints/show.html.erb +++ b/app/views/decidim/decidim_awesome/admin/constraints/show.html.erb @@ -1,14 +1,19 @@ -<%= decidim_form_for(@form, url: constraint_path, method: :patch, remote: true) do |f| %> -
-
-

<%= t ".constraint" %>

-
-
+<%= decidim_form_for(@form, url: constraint_path, method: :patch, remote: true, html: { class: "form-defaults" }) do |f| %> +
+ <%= icon "lock-line" %> +

<%= t ".constraint" %>

+ +
<%= render partial: "form", object: f %>
-
- <%= f.submit t(".save") %> - + +
+ + + <%= f.submit t(".save"), class: "button button__sm md:button__lg button__secondary", data: { "dialog-close": "edit-modal-#{params[:key]}" } %>
<% end %> diff --git a/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb b/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb index bf8aca2d1..6b82ab873 100644 --- a/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb +++ b/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb @@ -26,8 +26,8 @@ <%= item["destination"] %> - <%= icon_link_to "pencil", decidim_admin_decidim_awesome.edit_custom_redirect_path(md5(origin)), t(".edit"), class: "action-icon--edit" %> - <%= icon_link_to "circle-x", decidim_admin_decidim_awesome.custom_redirect_path(md5(origin)), t(".remove"), method: :delete, class: "action-icon--remove", data: { confirm: t(".confirm_destroy") } %> + <%= icon_link_to "pencil-line", decidim_admin_decidim_awesome.edit_custom_redirect_path(md5(origin)), t(".edit"), class: "action-icon--edit" %> + <%= icon_link_to "close-circle-line", decidim_admin_decidim_awesome.custom_redirect_path(md5(origin)), t(".remove"), method: :delete, class: "action-icon--remove", data: { confirm: t(".confirm_destroy") } %> <% end %> diff --git a/app/views/decidim/decidim_awesome/admin/menu_hacks/_form.html.erb b/app/views/decidim/decidim_awesome/admin/menu_hacks/_form.html.erb index e32f14c1c..b79b7dac5 100644 --- a/app/views/decidim/decidim_awesome/admin/menu_hacks/_form.html.erb +++ b/app/views/decidim/decidim_awesome/admin/menu_hacks/_form.html.erb @@ -1,4 +1,4 @@ -
+
<%= form.translated :text_field, :raw_label, help_text: t(".label_help") %> <%= form.text_field :url , readonly: form.object.url.present? %> <%= form.text_field :position %> diff --git a/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb b/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb index 4e6cdeef2..c62cbd5b7 100644 --- a/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb +++ b/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb @@ -1,13 +1,22 @@ -<%= decidim_form_for(@form, url: menu_hack_path, method: :patch, html: { class: :form }) do |f| %> -
-
-

<%= t ".title" %>

-
-
- <%= render partial: "form", object: f %> -
+
+

+ <%= t(".title") %> +

+
+
+
+ <%= decidim_form_for(@form, url: menu_hack_path(params[:menu_id]), method: :patch, html: { class: "form form-defaults" }) do |f| %> +
+
+ <%= render partial: "form", object: f %> +
+
+ +
+
+ <%= f.submit t(".save"), class: "button button__sm button__secondary" %> +
+
+ <% end %>
-
- <%= f.submit t(".save") %> -
-<% end %> +
diff --git a/app/views/decidim/decidim_awesome/admin/menu_hacks/index.html.erb b/app/views/decidim/decidim_awesome/admin/menu_hacks/index.html.erb index 779766831..ca507b552 100644 --- a/app/views/decidim/decidim_awesome/admin/menu_hacks/index.html.erb +++ b/app/views/decidim/decidim_awesome/admin/menu_hacks/index.html.erb @@ -1,44 +1,41 @@ -
-
-

- <%= t(".title") %> - <%= link_to t(".new"), decidim_admin_decidim_awesome.new_menu_hack_path, class: "button tiny button--title" %> -

-
-
-
- - - - - - - - - +
+

+ <%= t(".#{params[:menu_id]}.title") %> + <%= link_to t(".new"), decidim_admin_decidim_awesome.new_menu_hack_path, class: "button button__sm button__secondary ml-auto" %> +

+
+
+
<%= t("menu.raw_label", scope: "activemodel.attributes") %><%= t("menu.url", scope: "activemodel.attributes") %><%= t("menu.position", scope: "activemodel.attributes") %><%= t("menu.target", scope: "activemodel.attributes") %><%= t("menu.visibility", scope: "activemodel.attributes") %>
+ + + + + + + + + + + + <% current_items.each do |item| %> + > + + + + + + - - - <% current_items.each do |item| %> - > - - - - - - - - <% end %> - -
<%= t("menu.raw_label", scope: "activemodel.attributes") %><%= t("menu.url", scope: "activemodel.attributes") %><%= t("menu.position", scope: "activemodel.attributes") %><%= t("menu.target", scope: "activemodel.attributes") %><%= t("menu.visibility", scope: "activemodel.attributes") %>
<%= item.label %><%= item.url %><%= item.position %><%= target_options.invert[item.try(:target)||""] %><%= visibility_options.invert[item.try(:visibility)] %> + <%= icon_link_to "pencil-line", decidim_admin_decidim_awesome.edit_menu_hack_path(params[:menu_id], md5(item.url)), t(".edit"), class: "action-icon--edit" %> + <% if item.respond_to?(:overrided?) %> + <%= icon_link_to "close-circle-line", decidim_admin_decidim_awesome.menu_hack_path(params[:menu_id], md5(item.url)), t(".remove#{'_hack' if item.overrided?}"), method: :delete, class: "action-icon--remove", data: { confirm: t(".confirm_destroy") } %> + <% else %> + + <%= icon "close-circle-line", class: "action-icon action-icon--disabled", role: "img" %> + + <% end %> +
<%= item.label %><%= item.url %><%= item.position %><%= target_options.invert[item.try(:target)||""] %><%= visibility_options.invert[item.try(:visibility)] %> - <%= icon_link_to "pencil", decidim_admin_decidim_awesome.edit_menu_hack_path(md5(item.url)), t(".edit"), class: "action-icon--edit" %> - <% if item.respond_to?(:overrided?) %> - <%= icon_link_to "circle-x", decidim_admin_decidim_awesome.menu_hack_path(md5(item.url)), t(".remove#{'_hack' if item.overrided?}"), method: :delete, class: "action-icon--remove", data: { confirm: t(".confirm_destroy") } %> - <% else %> - - <%= icon "circle-x", class: "action-icon action-icon--disabled", role: "img" %> - - <% end %> -
-
+ <% end %> + +
diff --git a/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb b/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb index b487c5555..6b503cf48 100644 --- a/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb +++ b/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb @@ -1,13 +1,22 @@ -<%= decidim_form_for(@form, url: menu_hacks_path, html: { class: :form }) do |f| %> -
-
-

<%= t ".title" %>

-
-
- <%= render partial: "form", object: f %> -
+
+

+ <%= t(".title") %> +

+
+
+
+ <%= decidim_form_for(@form, url: menu_hacks_path(params[:menu_id]), html: { class: "form form-defaults" }) do |f| %> +
+
+ <%= render partial: "form", object: f %> +
+
+ +
+
+ <%= f.submit t(".save"), class: "button button__sm button__secondary" %> +
+
+ <% end %>
-
- <%= f.submit t(".save") %> -
-<% end %> +
diff --git a/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb b/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb index 00d699287..acef05593 100644 --- a/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +++ b/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb @@ -1,6 +1,10 @@ -<%= admin_editor_for_proposal_body(form) %> -<% unless awesome_proposal_custom_fields.blank? %> -
-
-
+<% if Decidim::DecidimAwesome.enabled?(:proposal_custom_fields) %> + <%= admin_editor_for_proposal_body(form) %> + <% unless awesome_proposal_custom_fields.blank? %> +
+
+
+ <% end %> +<% else %> + <%= form.translated(:editor, :body, hashtaggable: true) %> <% end %> diff --git a/app/views/decidim/decidim_awesome/admin/shared/_filters_with_date.html.erb b/app/views/decidim/decidim_awesome/admin/shared/_filters_with_date.html.erb index 34060ce9a..993b805c9 100644 --- a/app/views/decidim/decidim_awesome/admin/shared/_filters_with_date.html.erb +++ b/app/views/decidim/decidim_awesome/admin/shared/_filters_with_date.html.erb @@ -23,7 +23,7 @@ ) %>
diff --git a/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb b/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb index 53af92832..d472368bf 100644 --- a/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb +++ b/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb @@ -1,14 +1,9 @@ -<%= announcement = render(partial: "decidim/shared/component_announcement") %> +
+ <%= announcement = render(partial: "decidim/shared/component_announcement") %> -<%= stylesheet_pack_tag "decidim_decidim_awesome_iframe" %> + <%= append_stylesheet_pack_tag "decidim_decidim_awesome_iframe" %> - - -
"> - <%= iframe %> -
+
" class="awesome-iframe layout-main__section"> + <%= iframe %> +
+
diff --git a/app/views/decidim/decidim_awesome/map_component/map/show.html.erb b/app/views/decidim/decidim_awesome/map_component/map/show.html.erb index 80a03e1e9..8a3b92e18 100644 --- a/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +++ b/app/views/decidim/decidim_awesome/map_component/map/show.html.erb @@ -1,7 +1,11 @@ -<%= render partial: "decidim/shared/component_announcement" %> +
+ <%= render partial: "decidim/shared/component_announcement" %> -<%= render partial: "api_ready" %> + <%= render partial: "api_ready" %> -<%= awesome_map_for map_components do %> - <%= render partial: "map_template", locals: { categories: current_participatory_space.categories, map_height: current_component.settings.map_height } %> -<% end %> +
+ <%= awesome_map_for map_components do %> + <%= render partial: "map_template", locals: { categories: current_participatory_space.categories, map_height: current_component.settings.map_height } %> + <% end %> +
+
diff --git a/app/views/layouts/decidim/decidim_awesome/admin/application.html.erb b/app/views/layouts/decidim/decidim_awesome/admin/application.html.erb index 0c6a31e69..81882fdcb 100644 --- a/app/views/layouts/decidim/decidim_awesome/admin/application.html.erb +++ b/app/views/layouts/decidim/decidim_awesome/admin/application.html.erb @@ -1,75 +1,12 @@ -<% def icon_aria_selected_link_to(text, link, icon_name, options = {}) - aria_selected_link_to(safe_join([icon(icon_name), text]), link, options) -end %> +<% add_secondary_root_menu(:awesome_admin_menu) %> -<% content_for :secondary_nav do %> -
-
- <%= t "layouts.decidim.admin.decidim_awesome.title" %> -
- -
    - <% if menus[:editors] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.editors", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:editors), "text" %> -
  • - <% end %> - <% if menus[:proposals] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.proposals", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:proposals), "document" %> -
  • - <% end %> - <% if menus[:surveys] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.surveys", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:surveys), "spreadsheet" %> -
  • - <% end %> - <% if menus[:styles] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.styles", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:styles), "brush" %> -
  • - <% end %> - <% if menus[:proposal_custom_fields] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.proposal_custom_fields", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:proposal_custom_fields), "layers" %> -
  • - <% end %> - <% if menus[:admins] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.admins", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:admins), "people" %> -
  • - <% end %> - <% if menus[:menu_hacks] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.menu_hacks", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.menu_hacks_path, "menu" %> -
  • - <% end %> - <% if menus[:custom_redirects] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.custom_redirects", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.custom_redirects_path, "share-boxed" %> -
  • - <% end %> - <% if menus[:livechat] %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.livechat", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.config_path(:livechat), "chat" %> -
  • - <% end %> -
  • class="is-active" <% end %>> - <%= icon_aria_selected_link_to I18n.t("menu.checks", scope: "decidim.decidim_awesome.admin"), decidim_admin_decidim_awesome.checks_path, "pulse" %> -
  • -
-
-<% end %> +<%= append_stylesheet_pack_tag "decidim_admin_decidim_awesome", media: "all" %> +<%= append_javascript_pack_tag "decidim_admin_decidim_awesome", defer: true %> <%= render "layouts/decidim/admin/application" do %> -
-
- <%= link_to t("decidim.admin.menu.decidim_awesome"), decidim_admin_decidim_awesome.config_path(:editors), target: "_blank" %> -
-
- <%= yield %> -
<%= t("credits", scope: "decidim.decidim_awesome", version: link_to(awesome_version, "https://github.com/decidim-ice/decidim-module-decidim_awesome/"), company: link_to("PokeCode", "https://pokecode.net")).html_safe %>
- +
<%= t("credits", scope: "decidim.decidim_awesome", version: link_to(awesome_version, "https://github.com/decidim-ice/decidim-module-decidim_awesome/"), company: link_to("PokeCode", "https://pokecode.net")).html_safe %>
<% end %> + +<%= render partial: "layouts/decidim/decidim_awesome/awesome_config" %> diff --git a/babel.config.json b/babel.config.json index a66039fb3..b586903b4 100644 --- a/babel.config.json +++ b/babel.config.json @@ -20,9 +20,6 @@ "corejs": false } ], - [ "@babel/plugin-transform-regenerator", { "async": false }], - [ "@babel/plugin-proposal-private-property-in-object", { "loose": true }], - ["@babel/plugin-proposal-private-methods", { "loose": true }], - ["@babel/plugin-proposal-class-properties", { "loose": true }] + ["@babel/plugin-transform-regenerator", { "async": false }] ] } \ No newline at end of file diff --git a/bin/bundle b/bin/bundle new file mode 100755 index 000000000..34ff8a3ed --- /dev/null +++ b/bin/bundle @@ -0,0 +1,62 @@ +#!/usr/bin/env ruby +# frozen_string_literal: true + +require "rubygems" + +m = Module.new do + extend self + + def invoked_as_script? + File.expand_path($PROGRAM_NAME) == File.expand_path(__FILE__) + end + + def cli_arg_version + return unless invoked_as_script? # do not want to hijack other binstubs + return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update` + + bundler_version = nil + update_index = nil + ARGV.each_with_index do |a, i| + bundler_version = a if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN + next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/ + + bundler_version = Regexp.last_match(1) || ">= 0.a" + update_index = i + end + bundler_version + end + + def gemfile + File.expand_path("../Gemfile", __dir__) + end + + def lockfile + "#{gemfile}.lock" + end + + def lockfile_version + return unless File.file?(lockfile) + + lockfile_contents = File.read(lockfile) + + regexp = /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/ + + regexp.match(lockfile_contents)[1] + end + + def bundler_version + @bundler_version ||= cli_arg_version || lockfile_version + end + + def load_bundler! + activate_bundler(bundler_version) + end + + def activate_bundler(bundler_version) + gem "bundler", bundler_version + end +end + +m.load_bundler! + +load Gem.bin_path("bundler", "bundle") if m.invoked_as_script? diff --git a/bin/rspec b/bin/rspec index db1a4c4e8..a6e61fc54 100755 --- a/bin/rspec +++ b/bin/rspec @@ -1,40 +1,26 @@ -#!/usr/bin/env bash - -version="last" -prefix= -if [ "$BUNDLE_GEMFILE" == "Gemfile.legacy" ]; then - version="legacy" - prefix="BUNDLE_GEMFILE=$BUNDLE_GEMFILE RBENV_VERSION=$RBENV_VERSION" - echo "Using legacy version (gemfile: $BUNDLE_GEMFILE, ruby: $RBENV_VERSION)" -else - echo "Using latest version" -fi - -cd spec -# check if directory exists -if [ ! -d "decidim_dummy_app_$version" ]; then - echo "Please generate the test app first:" - echo -n "$prefix " - echo "bundle exec rake test_app && mv spec/decidim_dummy_app spec/decidim_dummy_app_$version" - exit 1 -fi -# check if directory is a symlink pointing where it should -if [ ! "decidim_dummy_app_$version" -ef "decidim_dummy_app" ]; then - # if it is a symlink, delete it - echo "creating symlink to decidim_dummy_app_$version" - rm decidim_dummy_app - ln -s decidim_dummy_app_$version decidim_dummy_app -fi - -if [ "$1" == "--reset" ]; then - echo "Reseting the database" - cd decidim_dummy_app - if [ "$BUNDLE_GEMFILE" == "Gemfile.legacy" ]; then - BUNDLE_GEMFILE="../../Gemfile.legacy" RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load - else - RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load - fi -else - cd .. - bundle exec rspec $@ -fi +#!/usr/bin/env ruby +# frozen_string_literal: true + +load File.expand_path("bundle", __dir__) + +require "rubygems" +require "bundler/setup" + +if ARGV[0] + cleaned_file_path = ARGV[0].split("./").last + argument_parts = cleaned_file_path.split("/") + + first_part = argument_parts[0] + + if first_part =~ /decidim-/ && File.directory?(first_part) + Dir.chdir(first_part) + + other_parts = argument_parts[1..-1] + + new_args = [other_parts.empty? ? nil : other_parts.join("/"), *ARGV[1..-1]].compact + + ARGV.replace(new_args) + end +end + +load Gem.bin_path("rspec-core", "rspec") diff --git a/bin/rspec-legacy b/bin/rspec-legacy deleted file mode 100755 index 990f8ad8a..000000000 --- a/bin/rspec-legacy +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -RBENV_VERSION=2.7.7 BUNDLE_GEMFILE=Gemfile.legacy bin/rspec $@ \ No newline at end of file diff --git a/bin/test b/bin/test new file mode 100755 index 000000000..9043b6920 --- /dev/null +++ b/bin/test @@ -0,0 +1,47 @@ +#!/usr/bin/env bash + +version="last" +prefix= +if [ "$BUNDLE_GEMFILE" == "Gemfile.legacy" ]; then + version="legacy" + prefix="BUNDLE_GEMFILE=$BUNDLE_GEMFILE RBENV_VERSION=$RBENV_VERSION" + echo "Using legacy version (gemfile: $BUNDLE_GEMFILE, ruby: $RBENV_VERSION)" +else + BUNDLE_GEMFILE="Gemfile" + echo "Using latest version" +fi + +cd spec +# check if directory exists +if [ ! -d "decidim_dummy_app_$version" ]; then + echo "Please generate the test app first:" + echo -n "$prefix " + echo "bundle exec rake test_app && mv spec/decidim_dummy_app spec/decidim_dummy_app_$version" + exit 1 +fi +# check if directory is a symlink pointing where it should +if [ ! "decidim_dummy_app_$version" -ef "decidim_dummy_app" ]; then + # if it is a symlink, delete it + echo "creating symlink to decidim_dummy_app_$version" + rm decidim_dummy_app + ln -s decidim_dummy_app_$version decidim_dummy_app +fi + +if [ "$1" == "--reset" ]; then + echo "Reseting the database" + cd decidim_dummy_app + if [ "$BUNDLE_GEMFILE" == "Gemfile.legacy" ]; then + BUNDLE_GEMFILE="../../Gemfile.legacy" RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load + else + RAILS_ENV=test bundle exec rake db:drop db:create db:schema:load + fi +else + echo "Precompiling test assets" + cd decidim_dummy_app + if [ -z "$SKIP_PRECOMPILE" ]; then + BUNDLE_GEMFILE="../../$BUNDLE_GEMFILE" RAILS_ENV=test bundle exec rails assets:precompile + fi + cd ../.. + echo bundle exec rspec $@ + bundle exec rspec $@ +fi diff --git a/bin/test-legacy b/bin/test-legacy new file mode 100755 index 000000000..49bf89eaf --- /dev/null +++ b/bin/test-legacy @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +RBENV_VERSION=2.7.7 BUNDLE_GEMFILE=Gemfile.legacy bin/test $@ \ No newline at end of file diff --git a/config/assets.rb b/config/assets.rb index a5c14e625..0df450707 100644 --- a/config/assets.rb +++ b/config/assets.rb @@ -23,8 +23,6 @@ decidim_admin_decidim_awesome: "#{base_path}/app/packs/entrypoints/decidim_admin_decidim_awesome.js", decidim_decidim_awesome_map: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome_map.js", decidim_decidim_awesome_custom_fields: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome_custom_fields.js", - decidim_admin_decidim_awesome_custom_fields: "#{base_path}/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js", - decidim_decidim_awesome_admin_form_exit_warn: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js", decidim_decidim_awesome_iframe: "#{base_path}/app/packs/entrypoints/decidim_decidim_awesome_iframe.scss" ) diff --git a/config/locales/ca.yml b/config/locales/ca.yml index b536c081d..49f0b616d 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -77,7 +77,6 @@ ca: announcement: Anunci iframe: Codi Iframe iframe_help: 'Posa el teu codi com a HTML: . S''eliminarà qualsevol altre element HTML que no sigui l''Iframe. Assegureu-vos de fer servir 100% a l''amplada (width="100%") per tal d''omplir la pantalla.' - no_margins: Sense marges entre l'Iframe i la resta de la pàgina viewport_width: Limita l'amplada màxima com a la resta de l'aplicació step: announcement: Anunci diff --git a/config/locales/cs.yml b/config/locales/cs.yml index beb7087ae..9dcd94d10 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -77,7 +77,6 @@ cs: announcement: Oznámení iframe: Kód Iframe iframe_help: 'Zadejte kód jako html: . Obsah bude vylepšen z jiných HTML tagů. Pro vyplnění obrazovky použijte 100% šířku.' - no_margins: Mezi iframe a zbytkem stránky nejsou žádné okraje viewport_width: Omezit maximální šířku na zobrazení aplikace step: announcement: Oznámení diff --git a/config/locales/de.yml b/config/locales/de.yml index 88890c749..43ef1c853 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -77,7 +77,6 @@ de: announcement: Ankündigung iframe: iFrame-Code iframe_help: 'Geben Sie Ihren Code als html: ein. Andere HTML-Tags werden vom Inhalt entfernt. Stellen Sie sicher, dass Sie 100% als Breite/width verwenden, um gesamten Platz zu füllen.' - no_margins: Keine Ränder zwischen iFrame und der restlichen Seite viewport_width: Maximale Breite auf den App-Viewport beschränken step: announcement: Ankündigung diff --git a/config/locales/en.yml b/config/locales/en.yml index 2c27dc0cd..e12f903fa 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -89,7 +89,6 @@ en: frameBorder="0" allowFullscreen src="...">. Content will be sanitized from other HTML tags. Ensure to use 100% as width to fill the screen.' - no_margins: No margins between the iframe and the rest of the page viewport_width: Limit maximum width to the application viewport step: announcement: Announcement @@ -216,7 +215,7 @@ en: Since version 0.25, Decidim uses a new technology to upload files.
It looks that this installation needs to migrate %{total} of the old images to the new system.
You can start the process now and it will be performed in the background. - start_image_migrations: "\U0001F449 Start the migration process now" + start_image_migrations: "👉 Start the migration process now" title: System compatibility checks config: caution: 'NOTE: This feature heavily modifies some default behaviours that @@ -445,10 +444,13 @@ en: index: confirm_destroy: Are you sure to remove this customization? edit: Edit + home_content_block_menu: + title: Home content block menu + menu: + title: Main menu new: New item remove: Remove addition remove_hack: Remove customization - title: Main menu new: save: Save title: New menu item @@ -545,6 +547,9 @@ en: weight_2_short: 'Y:' weight_3: Green weight_3_short: 'G:' + meetings: + meetings_map: + view_meeting: View meeting proposals: proposals: orders: @@ -552,11 +557,10 @@ en: supported_first: Supported first supported_last: Supported last za: Z-A (Reverse alphabetical) + proposal: + view_proposal: View proposal layouts: decidim: - admin: - decidim_awesome: - title: Decidim Tweaks decidim_awesome: awesome_config: amendments: Amendments diff --git a/config/locales/es.yml b/config/locales/es.yml index 10ae73503..d74bb469a 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -77,7 +77,6 @@ es: announcement: Anuncio iframe: Código iframe iframe_help: 'Pon tu código como html: . El contenido se limpiará de otras etiquetas HTML. Asegúrate de usar 100% como ancho de pantalla.' - no_margins: Sin márgenes entre el iframe y el resto de la página viewport_width: Limitar el ancho máximo a la vista de la aplicación step: announcement: Anuncio diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 2603ff89c..fb1305e5c 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -77,7 +77,6 @@ fr: announcement: Annonce iframe: Code iframe iframe_help: 'Mettez votre code en html: . Le contenu sera nettoyé à partir d''autres balises HTML. Assurez-vous d''utiliser 100% comme largeur pour remplir l''écran.' - no_margins: Aucune marge entre l'iframe et le reste de la page viewport_width: Limiter la largeur maximale à la fenêtre de l'application step: announcement: Annonce diff --git a/config/locales/hu.yml b/config/locales/hu.yml index bb9a5b827..71e09f1b9 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -74,7 +74,6 @@ hu: global: announcement: Közlemény iframe_help: 'Rakja a kódot a következő html formátumban: . A tartalom szanálásra kerül a többi HTML-címkétől. Ügyeljen arra, hogy 100%-os szélességet használjon a képernyő kitöltéséhez.' - no_margins: Nincsenek margók az iframe és az oldal többi része között step: announcement: Közlemény awesome_map: diff --git a/config/locales/it.yml b/config/locales/it.yml index 28599068b..88defbb31 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -76,7 +76,6 @@ it: announcement: Annuncio iframe: Codice iframe iframe_help: 'Metti il tuo codice come html: . Il contenuto sarà sanificato da altri tag HTML. Assicurati di utilizzare il 100% come larghezza per riempire lo schermo.' - no_margins: Nessun margine tra l'iframe e il resto della pagina viewport_width: Limita la larghezza massima alla vista dell'applicazione step: announcement: Annuncio diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 360f69ed8..c9b0d6dc1 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -77,7 +77,6 @@ ja: announcement: アナウンス iframe: Iframeコード iframe_help: 'あなたのコードを というHTMLとして入れてください。コンテンツは他のHTMLタグからサニタイズされます。 画面幅を埋めるためにwidthを100%にして使用するようにしてください。' - no_margins: Iframeと残りのページの間に余白はありません viewport_width: アプリケーションのビューポートを最大幅として制限する step: announcement: アナウンス diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 50f7c0572..634e0b3c1 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -41,7 +41,6 @@ nl: announcement: Aankondiging iframe: Iframe code iframe_help: 'Zet je code als html: . Inhoud wordt verwijderd uit andere HTML-tags. Zorg ervoor dat je 100% als breedte gebruikt om het scherm te vullen.' - no_margins: Geen marges tussen het iframe en de rest van de pagina viewport_width: Maximale breedte beperken tot applicatie viewport step: announcement: Aankondiging diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index 86c476ac3..131e79b62 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -52,7 +52,6 @@ pt-BR: announcement: Anúncio iframe: Código do iframe iframe_help: 'Coloque seu código como html: . O conteúdo será sanitizado de outras tags HTML. Certifique-se de usar 100% como largura para preencher a tela.' - no_margins: Nenhuma margem entre o iframe e o resto da página viewport_width: Limitar a largura máxima à viewport da aplicação step: announcement: Anúncio diff --git a/config/rubocop/disabled.yml b/config/rubocop/disabled.yml new file mode 100644 index 000000000..de7949f88 --- /dev/null +++ b/config/rubocop/disabled.yml @@ -0,0 +1,11 @@ +Style/OpenStructUse: + Enabled: false + +Gemspec/RequireMFA: + Enabled: false + +Naming/MemoizedInstanceVariableName: + Enabled: false + +RSpec/VerifiedDoubleReference: + Enabled: false diff --git a/config/rubocop/faker.yml b/config/rubocop/faker.yml new file mode 100644 index 000000000..fdadf974c --- /dev/null +++ b/config/rubocop/faker.yml @@ -0,0 +1,480 @@ +require: rubocop-faker + +Faker/DeprecatedArguments: + Description: 'Checks that Faker arguments style is based on Faker 2.' + Enabled: true + VersionAdded: '0.1' + Reference: 'https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md#v20-2019-31-07' + ArgumentKeywords: + # + # FakerClassName: + # method_name: + # - keyword_name_for_first_argument + # - keyword_name_for_second_argument + # - keyword_name_for_third_argument + # + Faker::Dune: + quote: + - character + saying: + - source + Faker::Books::Lovecraft: + fhtagn: + - number + sentence: + - word_count + - random_words_to_add + words: + - number + - spaces_allowed + sentences: + - number + paragraph: + - sentence_count + - random_sentences_to_add + paragraphs: + - number + paragraph_by_chars: + - characters + Faker::Address: + city: + - options + street_address: + - include_secondary + zip_code: + - state_abbreviation + country_by_code: + - code + country_name_to_code: + - name + Faker::Alphanumeric: + alpha: + - number + alphanumeric: + - number + Faker::App: + semantic_version: + - major + - minor + - patch + Faker::Avatar: + image: + - slug + - size + - format + - set + - bgset + Faker::Bank: + account_number: + - digits + iban: + - country_code + Faker::Boolean: + boolean: + - true_ratio + Faker::ChileRut: + rut: + - min_rut + - fixed + full_rut: + - min_rut + - fixed + Faker::Code: + isbn: + - base + ean: + - base + nric: + - min_age + - max_age + Faker::Commerce: + promotion_code: + - digits + department: + - max + - fixed_amount + price: + - range + - as_string + Faker::Company: + polish_register_of_national_economy: + - length + brazilian_company_number: + - formatted + Faker::CryptoCoin: + coin_name: + - coin + acronym: + - coin + url_logo: + - coin + Faker::Date: + between: + - from + - to + between_except: + - from + - to + - excepted + forward: + - days + backward: + - days + birthday: + - min_age + - max_age + Faker::Demographic: + height: + - unit + Faker::DrivingLicence: + british_driving_licence: + - last_name + - initials + - gender + - date_of_birth + Faker::File: + dir: + - segment_count + - root + - directory_separator + file_name: + - dir + - name + - ext + - directory_separator + Faker::Fillmurray: + image: + - grayscale + - width + - height + Faker::Finance: + vat_number: + - country + Faker::Hipster: + words: + - number + - supplemental + - spaces_allowed + sentence: + - word_count + - supplemental + - random_words_to_add + sentences: + - number + - supplemental + paragraph: + - sentence_count + - supplemental + - random_sentences_to_add + paragraphs: + - number + - supplemental + paragraph_by_chars: + - characters + - supplemental + Faker::IDNumber: + brazilian_citizen_number: + - formatted + brazilian_id: + - formatted + Faker::Internet: + email: + - name + - separators + free_email: + - name + safe_email: + - name + username: + - specifier + - separators + password: + - min_length + - max_length + - mix_case + - special_characters + domain_name: + - subdomain + fix_umlauts: + - string + mac_address: + - prefix + url: + - host + - path + - scheme + slug: + - words + - glue + user_agent: + - vendor + Faker::Invoice: + amount_between: + - from + - to + creditor_reference: + - ref + reference: + - ref + Faker::Json: + shallow_json: + - width + - options + add_depth_to_json: + - json + - width + - options + Faker::Lorem: + words: + - number + - supplemental + characters: + - number + sentence: + - word_count + - supplemental + - random_words_to_add + sentences: + - number + - supplemental + paragraph: + - sentence_count + - supplemental + - random_sentences_to_add + paragraphs: + - number + - supplemental + paragraph_by_chars: + - number + - supplemental + question: + - word_count + - supplemental + - random_words_to_add + questions: + - number + - supplemental + Faker::LoremFlickr: + image: + - size + - search_terms + - match_all + grayscale_image: + - size + - search_terms + - match_all + pixelated_image: + - size + - search_terms + - match_all + colorized_image: + - size + - color + - search_terms + - match_all + Faker::LoremPixel: + image: + - size + - is_gray + - category + - number + - text + - secure + Faker::Markdown: + sandwich: + - sentences + - repeat + Faker::Measurement: + height: + - amount + length: + - amount + volume: + - amount + weight: + - amount + metric_height: + - amount + metric_length: + - amount + metric_volume: + - amount + metric_weight: + - amount + Faker::Name: + initials: + - number + Faker::NationalHealthService: + check_digit: + - number + Faker::Number: + number: + - digits + leading_zero_number: + - digits + decimal_part: + - digits + decimal: + - l_digits + - r_digits + hexadecimal: + - digits + normal: + - mean + - standard_deviation + between: + - from + - to + within: + - range + positive: + - from + - to + negative: + - from + - to + Faker::Omniauth: + google: + - name + - email + - uid + facebook: + - name + - email + - username + - uid + twitter: + - name + - nickname + - uid + linkedin: + - name + - email + - uid + github: + - name + - email + - uid + Faker::PhoneNumber: + subscriber_number: + - length + Faker::Placeholdit: + image: + - size + - format + - background_color + - text_color + - text + Faker::Relationship: + familial: + - connection + Faker::Source: + hello_world: + - lang + print: + - str + - lang + print_1_to_10: + - lang + Faker::String: + random: + - length + Faker::Stripe: + valid_card: + - card_type + valid_token: + - card_type + invalid_card: + - card_error + ccv: + - card_type + Faker::Time: + between: + - from + - to + - format + between_dates: + - from + - to + - period + - format + forward: + - days + - period + - format + backward: + - days + - period + - format + Faker::Twitter: + user: + - include_status + - include_email + status: + - include_user + - include_photo + status_entities: + - include_photo + Faker::Types: + rb_string: + - words + rb_integer: + - from + - to + rb_hash: + - number + - type + complex_rb_hash: + - number + rb_array: + - len + Faker::Vehicle: + model: + - make_of_model + mileage: + - min + - max + license_plate: + - state_abbreviation + Faker::WorldCup: + group: + - group + roster: + - country + - type + Faker::Dota: + quote: + - hero + Faker::Movies::StarWars: + quote: + - character + Decidim::Faker::Localized: + words: + - number + - supplemental + characters: + - number + sentence: + - word_count + - supplemental + - random_words_to_add + sentences: + - number + - supplemental + paragraph: + - sentence_count + - supplemental + - random_sentences_to_add + paragraphs: + - number + - supplemental + paragraph_by_chars: + - number + - supplemental + question: + - word_count + - supplemental + - random_words_to_add + questions: + - number + - supplemental diff --git a/.rubocop_rails.yml b/config/rubocop/rails.yml similarity index 99% rename from .rubocop_rails.yml rename to config/rubocop/rails.yml index 0cf3b441c..7346f50b3 100644 --- a/.rubocop_rails.yml +++ b/config/rubocop/rails.yml @@ -59,6 +59,7 @@ Rails/Output: - lib/**/*.rb Exclude: - db/seeds.rb + Rails/OutputSafety: Enabled: false diff --git a/config/rubocop/rspec.yml b/config/rubocop/rspec.yml new file mode 100644 index 000000000..ef9fbe3fa --- /dev/null +++ b/config/rubocop/rspec.yml @@ -0,0 +1,65 @@ +require: rubocop-rspec + +# RSpec: +# Patterns: +# - "(?:^|/)spec/" +# - "(?:^|/)test/" + +RSpec/BeforeAfterAll: + Enabled: true + +RSpec/ContextWording: + Enabled: true + Prefixes: + - when + - with + - without + - and + +RSpec/DescribeClass: + Exclude: + - spec/i18n_spec.rb + - "**/tasks/**/*" + - "spec/system/**/*" + +RSpec/ExampleLength: + Max: 49 + +RSpec/ExpectInHook: + Enabled: false + +RSpec/IteratedExpectation: + Enabled: true + +RSpec/LetSetup: + Enabled: false + +RSpec/MessageSpies: + Enabled: false + +RSpec/MultipleExpectations: + Enabled: false + +RSpec/MultipleMemoizedHelpers: + Max: 35 + +RSpec/NestedGroups: + Max: 7 + +RSpec/NamedSubject: + Enabled: false + +RSpec/RepeatedExampleGroupDescription: + Enabled: true + +RSpec/RepeatedExampleGroupBody: + Enabled: true + +RSpec/VerifiedDoubles: + Enabled: false + +RSpec/LeakyConstantDeclaration: + Enabled: false + +RSpec/DescribedClass: + Enabled: false diff --git a/.rubocop_ruby.yml b/config/rubocop/ruby.yml similarity index 75% rename from .rubocop_ruby.yml rename to config/rubocop/ruby.yml index ecce08618..c6283d1c8 100644 --- a/.rubocop_ruby.yml +++ b/config/rubocop/ruby.yml @@ -1,7 +1,3 @@ -require: - - rubocop-rspec - - rubocop-faker - # Common configuration. AllCops: Include: @@ -10,12 +6,14 @@ AllCops: - "**/*.rake" - "**/*.gemspec" - "**/*.ru" + - "**/Capfile" - "**/Gemfile" - "**/Rakefile" Exclude: + - db/schema.rb - "**/vendor/**/*" - - "development_app/**/*" - - "spec/decidim_dummy_app*/**/*" + - "development_app*/**/*" + - "spec/decidim_dummy_app/**/*" - "node_modules/**/*" # Default formatter will be used if no -f/--format option is given. DefaultFormatter: progress @@ -41,7 +39,7 @@ AllCops: # true, all cops in the default configuration are disabled, and and only cops # in user configuration are enabled. This makes cops opt-in instead of # opt-out. Note that when DisabledByDefault is true, cops in user - # configuration will be enabled even if they don't set the Enabled parameter. + # configuration will be enabled even if they do not set the Enabled parameter. DisabledByDefault: false # Enables the result cache if true. Can be overridden by the --cache command # line option. @@ -67,12 +65,7 @@ AllCops: # If a value is specified for TargetRubyVersion then it is used. # Else if .ruby-version exists and it contains an MRI version it is used. # Otherwise we fallback to the oldest officially supported Ruby version (2.0). - TargetRubyVersion: 3.0 - -# RSpec: -# Patterns: -# - "(?:^|/)spec/" -# - "(?:^|/)test/" + TargetRubyVersion: 3.1 # Indent private/protected/public as deep as method definitions Layout/AccessModifierIndentation: @@ -179,7 +172,7 @@ Layout/ParameterAlignment: Style/ArrayCoercion: Description: >- Use Array() instead of explicit Array check or [*var], when dealing - with a variable you want to treat as an Array, but you're not certain it's an array. + with a variable you want to treat as an Array, but you are not certain it is an array. StyleGuide: '#array-coercion' Safe: false Enabled: false @@ -217,7 +210,7 @@ Style/BlockDelimiters: # This looks at the usage of a block's method to determine its type (e.g. is # the result of a `map` assigned to a variable or passed to another # method) but exceptions are permitted in the `ProceduralMethods`, - # `FunctionalMethods` and `IgnoredMethods` sections below. + # `FunctionalMethods` and `AllowedMethods` sections below. - semantic # The `braces_for_chaining` style enforces braces around single line blocks # and do..end around multi-line blocks, except for multi-line blocks whose @@ -251,12 +244,12 @@ Style/BlockDelimiters: # let(:foo) { Foo.new } # # Here, the return value of `Foo.new` is used to define a `foo` helper but - # doesn't appear to be used from the return value of `let`. + # does not appear to be used from the return value of `let`. - let - let! - subject - watch - IgnoredMethods: + AllowedMethods: # Methods that can be either procedural or functional and cannot be # categorised from their usage alone, e.g. # @@ -419,10 +412,14 @@ Style/EmptyElse: # Use empty lines between defs. Layout/EmptyLineBetweenDefs: - # If true, this parameter means that single line method definitions don't + # If true, this parameter means that single line method definitions do not # need an empty line between them. AllowAdjacentOneLineDefs: false +Layout/EmptyLineAfterMagicComment: + Exclude: + - db/migrate/*.rb + Layout/EmptyLinesAroundBlockBody: EnforcedStyle: no_empty_lines SupportedStyles: @@ -483,7 +480,7 @@ Layout/FirstArgumentIndentation: # preceding line. - consistent # The first parameter should normally be indented one step more than the - # preceding line, but if it's a parameter for a method call that is itself + # preceding line, but if it is a parameter for a method call that is itself # a parameter in a method call, then the inner parameter should be indented # relative to the inner method. - special_for_inner_method_call @@ -976,8 +973,8 @@ Style/SymbolArray: Style/SymbolProc: # A list of method names to be ignored by the check. - # The names should be fairly unique, otherwise you'll end up ignoring lots of code. - IgnoredMethods: + # The names should be fairly unique, otherwise you will end up ignoring lots of code. + AllowedMethods: - respond_to - define_method @@ -1015,7 +1012,7 @@ Style/TrailingCommaInHashLiteral: # non-empty array and hash literals. EnforcedStyleForMultiline: no_comma -# TrivialAccessors requires exact name matches and doesn't allow +# TrivialAccessors requires exact name matches and does not allow # predicated methods by default. Style/TrivialAccessors: # When set to false the cop will suggest the use of accessor methods @@ -1028,7 +1025,7 @@ Style/TrivialAccessors: # This way you can uncover "hidden" attributes in your code. ExactNameMatch: true AllowPredicates: true - # Allows trivial writers that don't end in an equal sign. e.g. + # Allows trivial writers that do not end in an equal sign. e.g. # # def on_exception(action) # @on_exception=action @@ -1093,6 +1090,9 @@ Metrics/AbcSize: Max: 15 Enabled: false +Metrics/BlockLength: + Enabled: false + Metrics/BlockNesting: Max: 3 @@ -1208,558 +1208,3 @@ Lint/UnusedBlockArgument: Lint/UnusedMethodArgument: AllowUnusedKeywordArguments: false IgnoreEmptyMethods: true - -##################### Performance ############################ - -Metrics/BlockLength: - Enabled: false - -RSpec/BeforeAfterAll: - Enabled: true - -RSpec/ContextWording: - Enabled: true - Prefixes: - - when - - with - - without - - and - -RSpec/DescribeClass: - Exclude: - - spec/gemfiles_spec.rb - - spec/webpacker_spec.rb - - spec/i18n_spec.rb - - "**/*/spec/**/*_badge_spec.rb" - - decidim-core/spec/lib/global_engines_spec.rb - - "**/tasks/**/*" - -RSpec/EmptyExampleGroup: - Exclude: - - decidim-core/spec/lib/participatory_space_manifest_spec.rb - -RSpec/ExampleLength: - Max: 49 - -RSpec/ExpectInHook: - Enabled: false - -RSpec/IteratedExpectation: - Enabled: true - -RSpec/LetSetup: - Enabled: false - -RSpec/MessageSpies: - Enabled: false - -RSpec/MultipleExpectations: - Enabled: false - -RSpec/MultipleMemoizedHelpers: - Max: 35 - Exclude: - - decidim-assemblies/spec/forms/assembly_form_spec.rb - -RSpec/NestedGroups: - Max: 7 - -RSpec/NamedSubject: - Enabled: false - -RSpec/RepeatedExampleGroupDescription: - Enabled: true - -RSpec/RepeatedExampleGroupBody: - Enabled: true - -RSpec/VerifiedDoubles: - Enabled: false - -RSpec/LeakyConstantDeclaration: - Enabled: false - -RSpec/DescribedClass: - Enabled: false - -# This is the default configuration file. - -Faker/DeprecatedArguments: - Description: 'Checks that Faker arguments style is based on Faker 2.' - Enabled: true - VersionAdded: '0.1' - Reference: 'https://github.com/faker-ruby/faker/blob/master/CHANGELOG.md#v20-2019-31-07' - ArgumentKeywords: - # - # FakerClassName: - # method_name: - # - keyword_name_for_first_argument - # - keyword_name_for_second_argument - # - keyword_name_for_third_argument - # - Faker::Dune: - quote: - - character - saying: - - source - Faker::Books::Lovecraft: - fhtagn: - - number - sentence: - - word_count - - random_words_to_add - words: - - number - - spaces_allowed - sentences: - - number - paragraph: - - sentence_count - - random_sentences_to_add - paragraphs: - - number - paragraph_by_chars: - - characters - Faker::Address: - city: - - options - street_address: - - include_secondary - zip_code: - - state_abbreviation - country_by_code: - - code - country_name_to_code: - - name - Faker::Alphanumeric: - alpha: - - number - alphanumeric: - - number - Faker::App: - semantic_version: - - major - - minor - - patch - Faker::Avatar: - image: - - slug - - size - - format - - set - - bgset - Faker::Bank: - account_number: - - digits - iban: - - country_code - Faker::Boolean: - boolean: - - true_ratio - Faker::ChileRut: - rut: - - min_rut - - fixed - full_rut: - - min_rut - - fixed - Faker::Code: - isbn: - - base - ean: - - base - nric: - - min_age - - max_age - Faker::Commerce: - promotion_code: - - digits - department: - - max - - fixed_amount - price: - - range - - as_string - Faker::Company: - polish_register_of_national_economy: - - length - brazilian_company_number: - - formatted - Faker::CryptoCoin: - coin_name: - - coin - acronym: - - coin - url_logo: - - coin - Faker::Date: - between: - - from - - to - between_except: - - from - - to - - excepted - forward: - - days - backward: - - days - birthday: - - min_age - - max_age - Faker::Demographic: - height: - - unit - Faker::DrivingLicence: - british_driving_licence: - - last_name - - initials - - gender - - date_of_birth - Faker::File: - dir: - - segment_count - - root - - directory_separator - file_name: - - dir - - name - - ext - - directory_separator - Faker::Fillmurray: - image: - - grayscale - - width - - height - Faker::Finance: - vat_number: - - country - Faker::Hipster: - words: - - number - - supplemental - - spaces_allowed - sentence: - - word_count - - supplemental - - random_words_to_add - sentences: - - number - - supplemental - paragraph: - - sentence_count - - supplemental - - random_sentences_to_add - paragraphs: - - number - - supplemental - paragraph_by_chars: - - characters - - supplemental - Faker::IDNumber: - brazilian_citizen_number: - - formatted - brazilian_id: - - formatted - Faker::Internet: - email: - - name - - separators - free_email: - - name - safe_email: - - name - username: - - specifier - - separators - password: - - min_length - - max_length - - mix_case - - special_characters - domain_name: - - subdomain - fix_umlauts: - - string - mac_address: - - prefix - url: - - host - - path - - scheme - slug: - - words - - glue - user_agent: - - vendor - Faker::Invoice: - amount_between: - - from - - to - creditor_reference: - - ref - reference: - - ref - Faker::Json: - shallow_json: - - width - - options - add_depth_to_json: - - json - - width - - options - Faker::Lorem: - words: - - number - - supplemental - characters: - - number - sentence: - - word_count - - supplemental - - random_words_to_add - sentences: - - number - - supplemental - paragraph: - - sentence_count - - supplemental - - random_sentences_to_add - paragraphs: - - number - - supplemental - paragraph_by_chars: - - number - - supplemental - question: - - word_count - - supplemental - - random_words_to_add - questions: - - number - - supplemental - Faker::LoremFlickr: - image: - - size - - search_terms - - match_all - grayscale_image: - - size - - search_terms - - match_all - pixelated_image: - - size - - search_terms - - match_all - colorized_image: - - size - - color - - search_terms - - match_all - Faker::LoremPixel: - image: - - size - - is_gray - - category - - number - - text - - secure - Faker::Markdown: - sandwich: - - sentences - - repeat - Faker::Measurement: - height: - - amount - length: - - amount - volume: - - amount - weight: - - amount - metric_height: - - amount - metric_length: - - amount - metric_volume: - - amount - metric_weight: - - amount - Faker::Name: - initials: - - number - Faker::NationalHealthService: - check_digit: - - number - Faker::Number: - number: - - digits - leading_zero_number: - - digits - decimal_part: - - digits - decimal: - - l_digits - - r_digits - hexadecimal: - - digits - normal: - - mean - - standard_deviation - between: - - from - - to - within: - - range - positive: - - from - - to - negative: - - from - - to - Faker::Omniauth: - google: - - name - - email - - uid - facebook: - - name - - email - - username - - uid - twitter: - - name - - nickname - - uid - linkedin: - - name - - email - - uid - github: - - name - - email - - uid - Faker::PhoneNumber: - subscriber_number: - - length - Faker::Placeholdit: - image: - - size - - format - - background_color - - text_color - - text - Faker::Relationship: - familial: - - connection - Faker::Source: - hello_world: - - lang - print: - - str - - lang - print_1_to_10: - - lang - Faker::String: - random: - - length - Faker::Stripe: - valid_card: - - card_type - valid_token: - - card_type - invalid_card: - - card_error - ccv: - - card_type - Faker::Time: - between: - - from - - to - - format - between_dates: - - from - - to - - period - - format - forward: - - days - - period - - format - backward: - - days - - period - - format - Faker::Twitter: - user: - - include_status - - include_email - status: - - include_user - - include_photo - status_entities: - - include_photo - Faker::Types: - rb_string: - - words - rb_integer: - - from - - to - rb_hash: - - number - - type - complex_rb_hash: - - number - rb_array: - - len - Faker::Vehicle: - model: - - make_of_model - mileage: - - min - - max - license_plate: - - state_abbreviation - Faker::WorldCup: - group: - - group - roster: - - country - - type - Faker::Dota: - quote: - - hero - Faker::Movies::StarWars: - quote: - - character - Decidim::Faker::Localized: - words: - - number - - supplemental - characters: - - number - sentence: - - word_count - - supplemental - - random_words_to_add - sentences: - - number - - supplemental - paragraph: - - sentence_count - - supplemental - - random_sentences_to_add - paragraphs: - - number - - supplemental - paragraph_by_chars: - - number - - supplemental - question: - - word_count - - supplemental - - random_words_to_add - questions: - - number - - supplemental - diff --git a/db/seeds.rb b/db/seeds.rb index d21bb4a2e..b3be2c433 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -7,7 +7,7 @@ # Set the htmleditor on to facilitate development admin_user = Decidim::User.find_by( - organization: organization, + organization:, email: "admin@example.org" ) @@ -18,10 +18,10 @@ ) # Enable images in general - setting = Decidim::DecidimAwesome::AwesomeConfig.find_or_initialize_by(var: :allow_images_in_full_editor, organization: organization) + setting = Decidim::DecidimAwesome::AwesomeConfig.find_or_initialize_by(var: :allow_images_in_full_editor, organization:) setting.value = true setting.save! - setting = Decidim::DecidimAwesome::AwesomeConfig.find_or_initialize_by(var: :allow_images_in_small_editor, organization: organization) + setting = Decidim::DecidimAwesome::AwesomeConfig.find_or_initialize_by(var: :allow_images_in_small_editor, organization:) setting.value = true setting.save! end diff --git a/decidim-decidim_awesome.gemspec b/decidim-decidim_awesome.gemspec index 4b2398649..2a567b9dc 100644 --- a/decidim-decidim_awesome.gemspec +++ b/decidim-decidim_awesome.gemspec @@ -10,10 +10,7 @@ Gem::Specification.new do |s| s.email = ["ivan@pokecode.net"] s.license = "AGPL-3.0" s.homepage = "https://github.com/decidim-ice/decidim-module-decidim_awesome" - # rubocop:disable Gemspec/RequiredRubyVersion - s.required_ruby_version = ">= 2.7" - # rubocop:enable Gemspec/RequiredRubyVersion - + s.required_ruby_version = ">= 3.1" s.name = "decidim-decidim_awesome" s.summary = "A decidim decidim_awesome module" s.description = "Some usability and UX tweaks for Decidim." @@ -25,6 +22,5 @@ Gem::Specification.new do |s| s.add_dependency "deface", ">= 1.5" s.add_dependency "sassc", "~> 2.3" # TODO: check if this can be removed - s.add_development_dependency "decidim-dev", Decidim::DecidimAwesome::COMPAT_DECIDIM_VERSION s.metadata["rubygems_mfa_required"] = "true" end diff --git a/lib/decidim/decidim_awesome.rb b/lib/decidim/decidim_awesome.rb index f6c9f66f0..aab5cd356 100644 --- a/lib/decidim/decidim_awesome.rb +++ b/lib/decidim/decidim_awesome.rb @@ -17,6 +17,6 @@ Decidim.register_global_engine( :decidim_decidim_awesome, # this is the name of the global method to access engine routes - ::Decidim::DecidimAwesome::Engine, + Decidim::DecidimAwesome::Engine, at: "/decidim_awesome" ) diff --git a/lib/decidim/decidim_awesome/admin_engine.rb b/lib/decidim/decidim_awesome/admin_engine.rb index 55b4c2f6b..fe4792035 100644 --- a/lib/decidim/decidim_awesome/admin_engine.rb +++ b/lib/decidim/decidim_awesome/admin_engine.rb @@ -16,7 +16,9 @@ class AdminEngine < ::Rails::Engine routes do # Add admin engine routes here resources :constraints - resources :menu_hacks, except: [:show] + resources :menus, only: [:show] do + resources :hacks, except: [:show], controller: "menu_hacks" + end resources :custom_redirects, except: [:show] resources :config, param: :var, only: [:show, :update] resources :scoped_styles, param: :var, only: [:create, :destroy] diff --git a/lib/decidim/decidim_awesome/awesome.rb b/lib/decidim/decidim_awesome/awesome.rb index 296e5ae89..fd7ebcbc9 100644 --- a/lib/decidim/decidim_awesome/awesome.rb +++ b/lib/decidim/decidim_awesome/awesome.rb @@ -33,74 +33,90 @@ module DecidimAwesome # false => default false, admins can turn it true # :disabled => false and non available, hidden from admins config_accessor :allow_images_in_full_editor do - false + # false + :disabled end config_accessor :allow_images_in_small_editor do - false + # false + :disabled end config_accessor :allow_images_in_proposals do - false + # false + :disabled end config_accessor :use_markdown_editor do - false + # false + :disabled end config_accessor :allow_images_in_markdown_editor do - false + # false + :disabled end # used to save forms in localstorage config_accessor :auto_save_forms do - false + # false + :disabled end # Live chat widget linked to Telegram account or group # In the admin side only config_accessor :intergram_for_admins do - false + # false + :disabled end # In the public side only config_accessor :intergram_for_public do - false + # false + :disabled end # Configuration options to handle different validations in proposals # (maybe in the future will apply to other places) # Set it to :disabled if you don't want to use this feature config_accessor :validate_title_min_length do - 15 + # 15 + :disabled end config_accessor :validate_title_max_caps_percent do - 25 + # 25 + :disabled end config_accessor :validate_title_max_marks_together do - 1 + # 1 + :disabled end config_accessor :validate_title_start_with_caps do - true + # true + :disabled end config_accessor :validate_body_min_length do - 15 + # 15 + :disabled end config_accessor :validate_body_max_caps_percent do - 25 + # 25 + :disabled end config_accessor :validate_body_max_marks_together do - 1 + # 1 + :disabled end config_accessor :validate_body_start_with_caps do - true + # true + :disabled end # This transforms the proposal voting into a weighted voting @@ -143,7 +159,8 @@ module DecidimAwesome # some_identifier: "{ ... some definition... }" # } config_accessor :proposal_custom_fields do - {} + # {} + :disabled end # allows to keep modifications for the main menu @@ -160,6 +177,10 @@ module DecidimAwesome [] end + config_accessor :home_content_block_menu do + [] + end + # Allows admins to assignate "fake" admins scoped to some admin zones using the # same scope editor as :scoped_styles, valid values uses the same convention: # :disabled => false and non available, hidden from admins @@ -190,7 +211,8 @@ module DecidimAwesome # config.consider_all_requests_local = false config_accessor :custom_redirects do - {} + # {} + :disabled end # these settings do not follow the :disabled convention but @@ -309,8 +331,10 @@ def self.register_component(manifest, &block) registered_components << [manifest, block] end + # version 0.11 is compatible only with decidim 0.28 def self.legacy_version? - Decidim.version[0..3] == "0.26" + # Decidim.version[0..3] == "0.28" + false end end end diff --git a/lib/decidim/decidim_awesome/awesome_helpers.rb b/lib/decidim/decidim_awesome/awesome_helpers.rb index adc3233db..fbac4e283 100644 --- a/lib/decidim/decidim_awesome/awesome_helpers.rb +++ b/lib/decidim/decidim_awesome/awesome_helpers.rb @@ -28,7 +28,7 @@ def javascript_config_vars end def show_public_intergram? - return unless awesome_config[:intergram_for_public] + return false unless awesome_config[:intergram_for_public] return true unless awesome_config[:intergram_for_public_settings][:require_login] user_signed_in? diff --git a/lib/decidim/decidim_awesome/config.rb b/lib/decidim/decidim_awesome/config.rb index a96aa5ce8..1a356ba30 100644 --- a/lib/decidim/decidim_awesome/config.rb +++ b/lib/decidim/decidim_awesome/config.rb @@ -71,7 +71,7 @@ def unfiltered_config def setting_for(var) @vars.find_or_initialize_by( organization: @organization, - var: var + var: ) end diff --git a/lib/decidim/decidim_awesome/custom_fields.rb b/lib/decidim/decidim_awesome/custom_fields.rb index ab4420847..3874a01dd 100644 --- a/lib/decidim/decidim_awesome/custom_fields.rb +++ b/lib/decidim/decidim_awesome/custom_fields.rb @@ -79,12 +79,12 @@ def translate_values! @fields end - def deep_transform_values!(object, &block) + def deep_transform_values!(object, &) case object when Hash - object.transform_values! { |value| deep_transform_values!(value, &block) } + object.transform_values! { |value| deep_transform_values!(value, &) } when Array - object.map! { |e| deep_transform_values!(e, &block) } + object.map! { |e| deep_transform_values!(e, &) } else yield(object) end diff --git a/lib/decidim/decidim_awesome/engine.rb b/lib/decidim/decidim_awesome/engine.rb index 8708dd0c7..225fb5738 100644 --- a/lib/decidim/decidim_awesome/engine.rb +++ b/lib/decidim/decidim_awesome/engine.rb @@ -4,6 +4,7 @@ require "deface" require "decidim/core" require "decidim/decidim_awesome/awesome_helpers" +require "decidim/decidim_awesome/menu" module Decidim module DecidimAwesome @@ -26,7 +27,7 @@ class Engine < ::Rails::Engine helper Decidim::LayoutHelper if respond_to?(:helper) end # Include additional helpers globally - ActionView::Base.include(Decidim::DecidimAwesome::AwesomeHelpers) + ActiveSupport.on_load(:action_view) { include Decidim::DecidimAwesome::AwesomeHelpers } # Also for cells Decidim::ViewModel.include(Decidim::DecidimAwesome::AwesomeHelpers) @@ -61,11 +62,13 @@ class Engine < ::Rails::Engine Decidim::Proposals::Proposal.include(Decidim::DecidimAwesome::HasProposalExtraFields) Decidim::Proposals::ProposalSerializer.include(Decidim::DecidimAwesome::ProposalSerializerOverride) Decidim::Proposals::ProposalType.include(Decidim::DecidimAwesome::ProposalTypeOverride) - Decidim::Proposals::ProposalMCell.include(Decidim::DecidimAwesome::ProposalMCellOverride) + Decidim::Proposals::ProposalLCell.include(Decidim::DecidimAwesome::ProposalLCellOverride) end + Decidim::BreadcrumbHelper.include(Decidim::DecidimAwesome::BreadcrumbHelperOverride) Decidim::MenuPresenter.include(Decidim::DecidimAwesome::MenuPresenterOverride) Decidim::MenuItemPresenter.include(Decidim::DecidimAwesome::MenuItemPresenterOverride) + Decidim::BreadcrumbRootMenuItemPresenter.include(Decidim::DecidimAwesome::BreadcrumbRootMenuItemPresenterOverride) # Late registering of components to take into account initializer values DecidimAwesome.registered_components.each do |manifest, block| @@ -166,6 +169,21 @@ class Engine < ::Rails::Engine Cell::ViewModel.view_paths << File.expand_path("#{Decidim::DecidimAwesome::Engine.root}/app/cells") Cell::ViewModel.view_paths << File.expand_path("#{Decidim::DecidimAwesome::Engine.root}/app/views") end + + initializer "decidim_decidim_awesome.register_icons" do + Decidim.icons.register(name: "editors-text", icon: "text", category: "system", description: "", engine: :decidim_awesome) + Decidim.icons.register(name: "surveys", icon: "survey-line", category: "system", description: "", engine: :decidim_awesome) + Decidim.icons.register(name: "brush", icon: "brush-line", category: "system", description: "", engine: :decidim_awesome) + Decidim.icons.register(name: "layers", icon: "stack-line", category: "system", description: "", engine: :decidim_awesome) + Decidim.icons.register(name: "pulse", icon: "pulse-line", category: "system", description: "", engine: :decidim_awesome) + Decidim.icons.register(name: "fire", icon: "fire-line", category: "system", description: "", engine: :decidim_awesome) + Decidim.icons.register(name: "line-chart-line", icon: "line-chart-line", category: "system", description: "", engine: :decidim_awesome) + end + + initializer "decidim_decidim_awesome.awesome_admin_menu" do + Decidim::DecidimAwesome::Menu.register_menu_hacks_submenu! + Decidim::DecidimAwesome::Menu.register_awesome_admin_menu! + end end end end diff --git a/lib/decidim/decidim_awesome/iframe_component/component.rb b/lib/decidim/decidim_awesome/iframe_component/component.rb index 82ef23df6..022706bc1 100644 --- a/lib/decidim/decidim_awesome/iframe_component/component.rb +++ b/lib/decidim/decidim_awesome/iframe_component/component.rb @@ -17,7 +17,6 @@ settings.attribute :announcement, type: :text, translated: true, editor: true settings.attribute :iframe, type: :text, default: "" settings.attribute :viewport_width, type: :boolean, default: false - settings.attribute :no_margins, type: :boolean, default: false end component.settings(:step) do |settings| @@ -41,7 +40,7 @@ name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :awesome_iframe).i18n_name, manifest_name: :awesome_iframe, published_at: Time.current, - participatory_space: participatory_space, + participatory_space:, settings: { announcement: { en: Faker::Lorem.paragraphs(number: 2).join("\n") }, iframe: '' diff --git a/lib/decidim/decidim_awesome/map_component/component.rb b/lib/decidim/decidim_awesome/map_component/component.rb index 250f37abb..c8f12504e 100644 --- a/lib/decidim/decidim_awesome/map_component/component.rb +++ b/lib/decidim/decidim_awesome/map_component/component.rb @@ -52,7 +52,7 @@ name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :awesome_map).i18n_name, manifest_name: :awesome_map, published_at: Time.current, - participatory_space: participatory_space, + participatory_space:, settings: { announcement: { en: Faker::Lorem.paragraphs(number: 2).join("\n") } } diff --git a/lib/decidim/decidim_awesome/menu.rb b/lib/decidim/decidim_awesome/menu.rb new file mode 100644 index 000000000..e3069f503 --- /dev/null +++ b/lib/decidim/decidim_awesome/menu.rb @@ -0,0 +1,126 @@ +# frozen_string_literal: true + +module Decidim + module DecidimAwesome + class Menu + def self.register_awesome_admin_menu! + Decidim.menu :awesome_admin_menu do |menu| + menu.add_item :editors, + I18n.t("menu.editors", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:editors), + position: 1, + icon_name: "editors-text", + if: menus[:editors] + + menu.add_item :proposals, + I18n.t("menu.proposals", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:proposals), + position: 2, + icon_name: "documents", + if: menus[:proposals] + + menu.add_item :surveys, + I18n.t("menu.surveys", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:surveys), + position: 3, + icon_name: "surveys", + if: menus[:surveys] + + menu.add_item :styles, + I18n.t("menu.styles", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:styles), + position: 4, + icon_name: "brush", + if: menus[:styles] + + menu.add_item :proposal_custom_fields, + I18n.t("menu.proposal_custom_fields", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:proposal_custom_fields), + position: 5, + icon_name: "layers", + if: menus[:proposal_custom_fields] + + menu.add_item :admins, + I18n.t("menu.admins", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:admins), + position: 6, + icon_name: "group-line", + if: menus[:admins] + + menu.add_item :menu_hacks, + I18n.t("menu.menu_hacks", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.menu_hacks_path(menus[:menu_hacks_menu] ? :menu : :home_content_block_menu), + position: 7, + icon_name: "menu-line", + if: menus[:menu_hacks], + submenu: { target_menu: :menu_hacks_submenu } + + menu.add_item :custom_redirects, + I18n.t("menu.custom_redirects", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.custom_redirects_path, + position: 8, + icon_name: "external-link-line", + if: menus[:custom_redirects] + + menu.add_item :livechat, + I18n.t("menu.livechat", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.config_path(:livechat), + position: 9, + icon_name: "chat-1-line", + if: menus[:livechat] + + menu.add_item :checks, + I18n.t("menu.checks", scope: "decidim.decidim_awesome.admin"), + decidim_admin_decidim_awesome.checks_path, + position: 10, + icon_name: "pulse" + end + end + + def self.register_menu_hacks_submenu! + Decidim.menu :menu_hacks_submenu do |menu| + menu.add_item :main_menu, + I18n.t("menu.title", scope: "decidim.decidim_awesome.admin.menu_hacks.index"), + decidim_admin_decidim_awesome.menu_hacks_path(:menu), + position: 7.1, + if: menus[:menu_hacks_menu] + + menu.add_item :main_menu, + I18n.t("home_content_block_menu.title", scope: "decidim.decidim_awesome.admin.menu_hacks.index"), + decidim_admin_decidim_awesome.menu_hacks_path(:home_content_block_menu), + position: 7.2, + if: menus[:menu_hacks_home_content_block_menu] + end + end + + def self.menus + @menus ||= { + editors: config_enabled?([:allow_images_in_full_editor, :allow_images_in_small_editor, :use_markdown_editor, :allow_images_in_markdown_editor]), + proposals: config_enabled?( + [ + :allow_images_in_proposals, + :validate_title_min_length, :validate_title_max_caps_percent, + :validate_title_max_marks_together, :validate_title_start_with_caps, + :validate_body_min_length, :validate_body_max_caps_percent, + :validate_body_max_marks_together, :validate_body_start_with_caps + ] + ), + surveys: config_enabled?(:auto_save_forms), + styles: config_enabled?(:scoped_styles), + proposal_custom_fields: config_enabled?(:proposal_custom_fields), + admins: config_enabled?(:scoped_admins), + menu_hacks: config_enabled?([:menu, :home_content_block_menu]), + menu_hacks_menu: config_enabled?(:menu), + menu_hacks_home_content_block_menu: config_enabled?(:home_content_block_menu), + custom_redirects: config_enabled?(:custom_redirects), + livechat: config_enabled?([:intergram_for_admins, :intergram_for_public]) + } + end + + # ensure boolean value + def self.config_enabled?(var) + DecidimAwesome.enabled?(var) + end + end + end +end diff --git a/lib/decidim/decidim_awesome/menu_hacker.rb b/lib/decidim/decidim_awesome/menu_hacker.rb index 7ab873bff..d056ea484 100644 --- a/lib/decidim/decidim_awesome/menu_hacker.rb +++ b/lib/decidim/decidim_awesome/menu_hacker.rb @@ -21,6 +21,7 @@ def items(include_invisible: false) default = default_items.find { |i| i.url.gsub(/\?.*/, "") == item.url } if default item.send("overrided?=", true) + item[:original_active] = default.active @items.reject! { |i| i.url.gsub(/\?.*/, "") == item.url } end @items << item @@ -36,10 +37,7 @@ def items(include_invisible: false) attr_reader :name, :view def default_items - @default_items ||= build_menu.items.map do |item| - item.instance_variable_set(:@active, method(:activate?)) unless item.active == :exact - item - end + @default_items ||= build_menu.items end def build_menu @@ -48,7 +46,6 @@ def build_menu menu end - # rubocop:disable Style/OpenStructUse def menu_overrides @menu_overrides ||= current_config.map do |item| OpenStruct.new( @@ -65,7 +62,6 @@ def menu_overrides ) end end - # rubocop:enable Style/OpenStructUse def activate?(url, view) urls = @items.map(&:url).sort_by(&:length).reverse @@ -83,14 +79,14 @@ def visible?(item) when "verified_user" # the cleaner version should be user.authorizations.any? # but there is not relationship between users and authorizations - Decidim::Authorization.where(user: user).any? { |auth| auth.granted? && !auth.expired? } + Decidim::Authorization.where(user:).any? { |auth| auth.granted? && !auth.expired? } else true end end def current_config - @current_config ||= (AwesomeConfig.find_by(var: name, organization: organization)&.value || []).filter { |i| i.is_a? Hash } + @current_config ||= (AwesomeConfig.find_by(var: name, organization:)&.value || []).filter { |i| i.is_a? Hash } end end end diff --git a/lib/decidim/decidim_awesome/system_checker.rb b/lib/decidim/decidim_awesome/system_checker.rb index 2f57a23b1..a6207e4c4 100644 --- a/lib/decidim/decidim_awesome/system_checker.rb +++ b/lib/decidim/decidim_awesome/system_checker.rb @@ -24,8 +24,8 @@ def overrides delegate :to_h, to: :overrides - def each(&block) - to_h.each(&block) + def each(&) + to_h.each(&) end def each_file @@ -58,11 +58,9 @@ def md5(file) Digest::MD5.hexdigest(File.read(file)) end - # rubocop:disable Style/OpenStructUse def to_struct(obj) OpenStruct.new obj end - # rubocop:enable Style/OpenStructUse end end end diff --git a/lib/decidim/decidim_awesome/test/factories.rb b/lib/decidim/decidim_awesome/test/factories.rb index 5a928cd6a..dc128e8e0 100644 --- a/lib/decidim/decidim_awesome/test/factories.rb +++ b/lib/decidim/decidim_awesome/test/factories.rb @@ -8,22 +8,22 @@ factory :awesome_config, class: "Decidim::DecidimAwesome::AwesomeConfig" do var { Faker::Hacker.noun } value { Decidim::DecidimAwesome.config.to_a.sample(1).to_h } - organization { create :organization } + organization end factory :config_constraint, class: "Decidim::DecidimAwesome::ConfigConstraint" do settings { { Faker::Hacker.noun => Faker::Hacker.noun } } - awesome_config { create :awesome_config } + awesome_config end factory :awesome_editor_image, class: "Decidim::DecidimAwesome::EditorImage" do file { Decidim::Dev.test_file("city.jpeg", "image/jpeg") } path { Faker::Internet.url(host: "", scheme: "") } - author { create :user } - organization { create :organization } + author { association :user } + organization end - factory :paper_trail_version, class: Decidim::DecidimAwesome::PaperTrailVersion do + factory :paper_trail_version, class: "Decidim::DecidimAwesome::PaperTrailVersion" do item_id { user.id } item_type { "Decidim::ParticipatoryProcessUserRole" } event { "create" } @@ -33,28 +33,28 @@ factory :map_component, parent: :component do name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :proposals).i18n_name } manifest_name { :awesome_map } - participatory_space { create(:participatory_process, :with_steps, organization: organization) } + participatory_space { association(:participatory_process, :with_steps, organization:) } end factory :iframe_component, parent: :component do name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :proposals).i18n_name } manifest_name { :awesome_iframe } - participatory_space { create(:participatory_process, :with_steps, organization: organization) } + participatory_space { association(:participatory_process, :with_steps, organization:) } end factory :awesome_vote_weight, class: "Decidim::DecidimAwesome::VoteWeight" do - vote { create :proposal_vote } + vote { association(:proposal_vote) } sequence(:weight) { |n| n } end factory :awesome_proposal_extra_fields, class: "Decidim::DecidimAwesome::ProposalExtraField" do - proposal { create :proposal } + proposal trait :with_votes do after :create do |weight| 5.times.collect do |n| vote = create(:proposal_vote, proposal: weight.proposal, author: create(:user, organization: weight.proposal.organization)) - create(:awesome_vote_weight, vote: vote, weight: n + 1) + create(:awesome_vote_weight, vote:, weight: n + 1) end end end diff --git a/lib/decidim/decidim_awesome/test/initializer.rb b/lib/decidim/decidim_awesome/test/initializer.rb index af2920883..a1448f8c5 100644 --- a/lib/decidim/decidim_awesome/test/initializer.rb +++ b/lib/decidim/decidim_awesome/test/initializer.rb @@ -33,10 +33,3 @@ config.disabled_components = [:awesome_map, :awesome_iframe] end end - -if Decidim::DecidimAwesome.legacy_version? - Rails.application.config.to_prepare do - Decidim::Api::Schema.max_complexity = 5000 - Decidim::Api::Schema.max_depth = 50 - end -end diff --git a/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb b/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb index 8e8cfda4f..578ec4c11 100644 --- a/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb +++ b/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb @@ -18,11 +18,11 @@ <%= favicon %> -<%= stylesheet_pack_tag "decidim_core", media: "all" %> +<%= append_stylesheet_pack_tag "decidim_core", media: "all" %> <%= invisible_captcha_styles %> <%= organization_colors %> -<%= javascript_pack_tag "decidim_core", defer: false %> +<%= append_javascript_pack_tag "decidim_core", defer: false %> <%= render partial: "layouts/decidim/head_extra" %> <%== current_organization.header_snippets if Decidim.enable_html_header_snippets %> diff --git a/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb b/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb index eb249eaec..fdf4b60ea 100644 --- a/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb +++ b/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb @@ -2,7 +2,7 @@ <%= csrf_meta_tags %> <%= organization_colors %> -<%= stylesheet_pack_tag "decidim_admin", media: "all" %> -<%= javascript_pack_tag "decidim_admin", defer: false %> +<%= append_stylesheet_pack_tag "decidim_admin", media: "all" %> +<%= append_javascript_pack_tag "decidim_admin", defer: false %> <%= snippets.display(:head) %> diff --git a/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb b/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb index 582222f20..fd95c9e20 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/box_label_editor.rb @@ -5,19 +5,19 @@ it "updates the label when no changes" do link = find("[data-key=#{key}] a.awesome-auto-edit", match: :first) - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") link.click - expect(page).to have_css("input.awesome-auto-edit") + expect(page).to have_field(class: "awesome-auto-edit") find("body").click - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") link.click input = find("[data-key=#{key}] input.awesome-auto-edit") input.fill_in with: "A new làbel\n" sleep 1 - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") - find("*[type=submit]").click + click_button "Update configuration" case test_case when :css expect(page).to have_content("body {background: red;}") @@ -48,19 +48,19 @@ end link = find("[data-key=#{key}] a.awesome-auto-edit", match: :first) - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") link.click - expect(page).to have_css("input.awesome-auto-edit") + expect(page).to have_field(class: "awesome-auto-edit") find("body").click - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") link.click input = find("[data-key=#{key}] input.awesome-auto-edit") input.fill_in with: "A new làbel\n" sleep 1 - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") - find("*[type=submit]").click + click_button "Update configuration" case test_case when :css expect(page).to have_admin_callout("updated successfully") @@ -78,34 +78,34 @@ it "updates the label with post changes" do link = find("[data-key=#{key}] a.awesome-auto-edit", match: :first) - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") link.click - expect(page).to have_css("input.awesome-auto-edit") + expect(page).to have_field(class: "awesome-auto-edit") find("body").click - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") link.click input = find("[data-key=#{key}] input.awesome-auto-edit") input.fill_in with: "A new làbel\n" sleep 1 - expect(page).not_to have_css("input.awesome-auto-edit") + expect(page).not_to have_field(class: "awesome-auto-edit") expect(page).to have_css("span.awesome-auto-edit[data-key=a_new_label]") case test_case when :css sleep 1 page.execute_script('document.querySelector("[data-key=a_new_label] .CodeMirror").CodeMirror.setValue("body {background: lilac;}");') - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_admin_callout("updated successfully") expect(page).to have_content("body {background: lilac;}") when :fields expect(page).to have_content("Full Name") sleep 2 page.execute_script("$('.proposal_custom_fields_container[data-key=a_new_label] .proposal_custom_fields_editor')[0].FormBuilder.actions.setData(#{data})") - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_content("Short Name") when :admins page.execute_script("$('.multiusers-select:first').append(new Option('#{user.name}', #{user.id}, true, true)).trigger('change');") - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_content(user.name.to_s) expect(page).to have_content(user2.name.to_s) expect(page).to have_content(user3.name.to_s) diff --git a/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb b/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb index 65f6afc07..ad2a07166 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb @@ -12,7 +12,7 @@ shared_examples "has menu link" do |item| let(:prefix) { "config/" } it "shows the feature link" do - within ".secondary-nav" do + within ".sidebar-menu" do expect(page).to have_link(href: "/admin/decidim_awesome/#{prefix}#{item}") end end @@ -21,7 +21,7 @@ shared_examples "do not have menu link" do |item| let(:prefix) { "config/" } it "do not show the feature link" do - within ".secondary-nav" do + within ".sidebar-menu" do expect(page).not_to have_link(href: "/admin/decidim_awesome/#{prefix}#{item}") end end diff --git a/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb b/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb index 076b5cf72..c97c42905 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb @@ -4,16 +4,16 @@ let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization } end let(:params) do { - origin: origin, - destination: destination, - active: active, - pass_query: pass_query + origin:, + destination:, + active:, + pass_query: } end let(:attributes) do diff --git a/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb b/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb index 69a1cf73a..58f3d6afa 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb @@ -24,11 +24,15 @@ shared_examples "has drag and drop" do |rte| it "has help text" do + skip "This feature is pending to be adapted to Decidim 0.28" + expect(page).to have_content("Add images by dragging & dropping or pasting them.") end if rte it "has image button" do + skip "This feature is pending to be adapted to Decidim 0.28" + expect(page).to have_xpath("//button[@class='ql-image']") end else @@ -46,6 +50,8 @@ shared_examples "has markdown editor" do |images| it "has CodeMirror class" do + skip "This feature is pending to be adapted to Decidim 0.28" + expect(page).to have_xpath("//div[@class='CodeMirror cm-s-paper CodeMirror-wrap']") end @@ -55,6 +61,8 @@ if images it "has help text" do + skip "This feature is pending to be adapted to Decidim 0.28" + expect(page).to have_content("Add images by dragging & dropping or pasting them.") end else diff --git a/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb b/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb index 58f9c2975..20e9fe228 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb @@ -4,19 +4,21 @@ let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization } end let(:params) do { + menu_id:, raw_label: label, - url: url, - position: position, - target: target, - visibility: visibility + url:, + position:, + target:, + visibility: } end + let(:menu_id) { menu_name.to_sym } let(:attributes) do { "label" => label, @@ -36,7 +38,6 @@ let(:position) { 2 } let(:target) { "_blank" } let(:visibility) { "hidden" } - let(:menu_name) { "menu" } let(:another_params) do { diff --git a/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb b/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb index 4fe3ae91a..0c0784f02 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true -welcome_text = "Welcome to the Admin Panel." -welcome_text = "Welcome to the Decidim Admin Panel." if legacy_version? +welcome_text = "Dashboard" shared_examples "redirects to index" do |_link| it "display index page" do @@ -88,7 +87,7 @@ it "shows participants access" do visit decidim_admin.users_path - expect(page).to have_content(legacy_version? ? "New user" : "New admin") + expect(page).to have_content("New admin") end it "shows pages access" do @@ -159,16 +158,16 @@ shared_examples "has admin link" do it "has menu link" do - within ".topbar__dropmenu.topbar__user__logged" do - expect(page).to have_selector("#user-menu li", text: "Admin dashboard", visible: :hidden) + within "header" do + expect(page).to have_css("#admin-bar", text: "Admin dashboard") end end end shared_examples "has no admin link" do - it "has menu link" do - within ".topbar__dropmenu.topbar__user__logged" do - expect(page).not_to have_selector("#user-menu li", text: "Admin dashboard", visible: :hidden) + it "has no menu link" do + within "header" do + expect(page).not_to have_css("#admin-bar", text: "Admin dashboard") end end end @@ -216,7 +215,7 @@ ca: "Assamblea editada", es: "Asamblea editada" ) - find("*[type=submit]").click + click_button "Update" expect(page).to have_admin_callout("successfully") end end @@ -274,7 +273,7 @@ ca: "Proposta editada", es: "Propuesta editada" ) - find("*[type=submit]").click + click_button "Update" expect(page).to have_admin_callout("successfully") end @@ -297,7 +296,7 @@ ca: "Body creat", es: "Body creat" ) - find("*[type=submit]").click + click_button "Create" expect(page).to have_admin_callout("successfully") end end @@ -365,8 +364,10 @@ end it "shows the list of processes" do - expect(page).to have_content("Participatory processes") - expect(page).to have_content(participatory_process.title["en"]) + within("[data-content]") do + expect(page).to have_content("Processes") + expect(page).to have_content(participatory_process.title["en"]) + end end describe "forbids editing processes" do @@ -383,8 +384,10 @@ end it "shows the list of groups" do - expect(page).to have_content("Participatory process groups") - expect(page).to have_content(process_group.title["en"]) + within("[data-content]") do + expect(page).to have_content("Process groups") + expect(page).to have_content(process_group.title["en"]) + end end end end @@ -403,7 +406,7 @@ ca: "Proces grup editat", es: "Grupo de procesos editado" ) - find("*[type=submit]").click + click_button "Update" expect(page).to have_admin_callout("successfully") end end diff --git a/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb b/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb index 0f042dbab..74335d10a 100644 --- a/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +++ b/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb @@ -99,6 +99,8 @@ end it "has DecidimAwesome javascript and CSS" do + skip "The insertion of awesome javascript and CSS is disabled pending of 0.28 integration" + expect(page).to have_xpath("//link[@rel='stylesheet'][contains(@href,'decidim_decidim_awesome')]", visible: :all) expect(page).to have_xpath("//script[contains(@src,'decidim_decidim_awesome')]", visible: :all) end @@ -170,13 +172,9 @@ expect(page).to have_content("Tweaks for editors") end - it "has custom fields javascript" do - expect(page).to have_xpath("//script[contains(@src,'decidim_admin_decidim_awesome_custom_fields')]", visible: :all) - end - it "has all admin menus" do menus.each do |menu| - within ".secondary-nav" do + within ".sidebar-menu" do expect(page).to have_link(href: "/admin/decidim_awesome/#{menu}") end end @@ -186,13 +184,9 @@ expect(page).to have_content("System compatibility checks") end - it "do not have custom fields javascript" do - expect(page).not_to have_xpath("//script[contains(@src,'decidim_admin_decidim_awesome_custom_fields')]", visible: :all) - end - it "has no admin menus" do menus.each do |menu| - within ".secondary-nav" do + within ".sidebar-menu" do expect(page).not_to have_link(href: "/admin/decidim_awesome/#{menu}") end end diff --git a/lib/decidim/decidim_awesome/version.rb b/lib/decidim/decidim_awesome/version.rb index 6c8a6d695..8ab6bc999 100644 --- a/lib/decidim/decidim_awesome/version.rb +++ b/lib/decidim/decidim_awesome/version.rb @@ -3,7 +3,7 @@ module Decidim # This holds the decidim-decidim_awesome version. module DecidimAwesome - VERSION = "0.10.2" - COMPAT_DECIDIM_VERSION = [">= 0.26.0", "< 0.28"].freeze + VERSION = "0.11.0" + COMPAT_DECIDIM_VERSION = [">= 0.28.0", "< 0.29"].freeze end end diff --git a/lib/decidim/decidim_awesome/voting_manifest.rb b/lib/decidim/decidim_awesome/voting_manifest.rb index d557b28ab..bdde24544 100644 --- a/lib/decidim/decidim_awesome/voting_manifest.rb +++ b/lib/decidim/decidim_awesome/voting_manifest.rb @@ -4,12 +4,7 @@ module Decidim module DecidimAwesome class VotingManifest include ActiveModel::Model - # From 0.27 onwards, Virtus is deprecated - if defined? Decidim::AttributeObject::Model - include Decidim::AttributeObject::Model - else - include Virtus.model - end + include Decidim::AttributeObject::Model attribute :name, Symbol diff --git a/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake b/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake index f05a6acaf..e33a214c6 100644 --- a/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake +++ b/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake @@ -28,7 +28,7 @@ namespace :decidim_awesome do cw_attribute: "image", cw_uploader: Decidim::Cw::DecidimAwesome::ImageUploader, as_attribute: "file", - logger: logger + logger: ) end end diff --git a/package-lock.json b/package-lock.json index 43151745e..f713c4ecd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "decidim-module-decidim_awesome", - "version": "0.10.2", + "version": "0.11.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "decidim-module-decidim_awesome", - "version": "0.10.2", + "version": "0.11.0", "license": "AGPL-3.0-or-later", "dependencies": { "@rails/actioncable": "^6.1.7-6", @@ -24,75 +24,159 @@ "select2": "^4.1.0-rc.0" }, "devDependencies": { - "@babel/eslint-parser": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "@babel/plugin-transform-classes": "^7.20.7", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-runtime": "^7.19.6", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@decidim/dev": "0.27.4", - "@decidim/eslint-config": "0.27.4", - "@decidim/stylelint-config": "0.27.4", - "eslint-config-prettier": "^8.2.0", - "eslint-config-standard": "^11.0.0", - "eslint-plugin-import": "^2.22.0", - "eslint-plugin-standard": "^3.1.0", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@decidim/dev": "0.28.0", + "@decidim/eslint-config": "0.28.0", + "@decidim/prettier-config": "0.28.0", + "@decidim/stylelint-config": "0.28.0", + "postcss-scss": "^4.0.9", "sass-embedded": "~1.57.1" } }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/@ampproject/remapping": { - "version": "2.1.1", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.12.11", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "@babel/highlight": "^7.10.4" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/@babel/compat-data": { - "version": "7.20.14", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.17.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@ampproject/remapping": "^2.0.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -102,59 +186,51 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.16.7", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/eslint-parser": { - "version": "7.19.1", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", + "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", "dev": true, - "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": "^10.13.0 || ^12.13.0 || >=14.0.0" }, "peerDependencies": { - "@babel/core": ">=7.11.0", + "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0" } }, "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, + "peer": true, "dependencies": { - "@babel/types": "^7.23.3", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -176,68 +252,69 @@ } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.20.7", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -259,12 +336,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -273,28 +352,29 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.3", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" + "resolve": "^1.14.2" }, "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/helper-environment-visitor": { @@ -306,17 +386,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-function-name": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", @@ -355,32 +424,34 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.18.6", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.20.11", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -396,22 +467,23 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.20.2", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.18.9", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -438,11 +510,12 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.20.2", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -473,9 +546,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" @@ -491,45 +564,47 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, - "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.20.5", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.17.2", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", @@ -542,8 +617,9 @@ }, "node_modules/@babel/highlight/node_modules/ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -553,8 +629,9 @@ }, "node_modules/@babel/highlight/node_modules/chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -566,37 +643,42 @@ }, "node_modules/@babel/highlight/node_modules/color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/highlight/node_modules/supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -605,9 +687,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -617,11 +699,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -631,13 +714,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -646,31 +730,27 @@ "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, "engines": { "node": ">=6.9.0" }, @@ -678,74 +758,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "@babel/core": "^7.12.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.12.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -754,46 +797,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.3" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -802,13 +836,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -817,48 +851,37 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "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.", + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -867,25 +890,23 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=4" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -893,35 +914,35 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@babel/helper-plugin-utils": "^7.10.4" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { + "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -929,23 +950,25 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { + "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -954,103 +977,62 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-jsx": { + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, - "license": "MIT", "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.22.5" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { "node": ">=6.9.0" @@ -1059,12 +1041,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1073,12 +1058,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1087,14 +1073,13 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1103,12 +1088,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1117,33 +1104,36 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.20.15", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.12.0" } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.20.7", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "engines": { @@ -1155,19 +1145,21 @@ }, "node_modules/@babel/plugin-transform-classes/node_modules/globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" }, "engines": { "node": ">=6.9.0" @@ -1177,11 +1169,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1191,12 +1184,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1206,11 +1200,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1219,13 +1214,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1234,12 +1230,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.18.8", + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1248,14 +1246,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.18.9", + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1264,12 +1262,78 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.18.9", + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { "node": ">=6.9.0" @@ -1279,11 +1343,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1293,12 +1358,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.20.11", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1308,13 +1374,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1324,14 +1391,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" @@ -1341,12 +1409,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1356,12 +1425,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1371,11 +1441,63 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1385,12 +1507,46 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { "node": ">=6.9.0" @@ -1400,11 +1556,46 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { "node": ">=6.9.0" @@ -1414,11 +1605,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1428,11 +1620,12 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1442,15 +1635,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.20.13", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" }, "engines": { "node": ">=6.9.0" @@ -1460,11 +1654,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/plugin-transform-react-jsx": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1474,12 +1669,13 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1489,12 +1685,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.20.5", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" }, "engines": { "node": ">=6.9.0" @@ -1504,11 +1701,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1518,16 +1716,17 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.19.6", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1537,19 +1736,21 @@ } }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1559,12 +1760,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1574,11 +1776,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1588,11 +1791,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.18.9", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1602,11 +1806,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1616,11 +1821,28 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1630,12 +1852,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1644,38 +1867,44 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env": { - "version": "7.20.2", + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -1685,45 +1914,61 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -1733,39 +1978,40 @@ } }, "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/preset-modules": { - "version": "0.1.5", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, "node_modules/@babel/preset-react": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { "node": ">=6.9.0" @@ -1776,367 +2022,582 @@ }, "node_modules/@babel/regjsgen": { "version": "0.8.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true }, "node_modules/@babel/runtime": { - "version": "7.20.13", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dev": true, - "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "node_modules/@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", "dev": true, + "peer": true, "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "peer": true, "engines": { "node": ">=4" } }, - "node_modules/@babel/template/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@babel/types": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/template/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/template/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.5.0.tgz", + "integrity": "sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" + "node": "^14 || ^16 || >=18" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.3" } }, - "node_modules/@babel/traverse": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.3.tgz", + "integrity": "sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, "engines": { - "node": ">=6.9.0" + "node": "^14 || ^16 || >=18" } }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.7.tgz", + "integrity": "sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ==", "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" + "node": "^14 || ^16 || >=18" }, - "engines": { - "node": ">=4" + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.5.0", + "@csstools/css-tokenizer": "^2.2.3" } }, - "node_modules/@babel/traverse/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "peer": true, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" } }, - "node_modules/@babel/traverse/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@decidim/dev": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/dev/-/dev-0.28.0.tgz", + "integrity": "sha512-F6sMVCYplCfcIcKstXRWetT/3TcpVYux3D0T0E/pFb+oy6va05k0wKRwUEE0qphq72WMXfMZMJKcp5z/U9KWFA==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@linthtml/linthtml": "^0.9.5", + "axe-core": "^4.7.2", + "markdownlint-cli": "^0.35.0" } }, - "node_modules/@babel/traverse/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/traverse/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/@decidim/eslint-config": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/eslint-config/-/eslint-config-0.28.0.tgz", + "integrity": "sha512-xmb6XI1I771Q2QgDoBZZunRjnsjWboluXce2XVG+IbmaYBGdxnmpBSQSceTF2TDjG1OPqqIO9vKunNaEWpEVOA==", "dev": true, - "engines": { - "node": ">=0.8.0" + "peerDependencies": { + "eslint": "^8.7.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^8.8.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.27.5", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.32.2" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", + "node_modules/@decidim/prettier-config": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/prettier-config/-/prettier-config-0.28.0.tgz", + "integrity": "sha512-4GMycHJJEEU2Z8DsYUMLTH2Ub7gm4RWzx9tExGO+VwrAn4GnKii4K3KofZe9DkdyROi1h46d8z5W97ONYsKhgw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "peerDependencies": { + "prettier": "^2.3.2" } }, - "node_modules/@babel/traverse/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@decidim/stylelint-config": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/stylelint-config/-/stylelint-config-0.28.0.tgz", + "integrity": "sha512-vYr6HOqbVI0jEZsNkDZy8rmWiu3TxT5YYdpp4AXoP/FIT3+Y9VxyHYItgQFwlwNbEfUkvFUolwxAlC2vwhHVfg==", "dev": true, - "engines": { - "node": ">=4" + "peerDependencies": { + "stylelint": "^15.3.0", + "stylelint-prettier": "^3.0.0" } }, - "node_modules/@babel/traverse/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, + "peer": true, "dependencies": { - "has-flag": "^3.0.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@decidim/dev": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@decidim/dev/-/dev-0.27.4.tgz", - "integrity": "sha512-85RoZQBsBs30emj9Ajo8lDOHKgcj9D7JtOYXoUFQmF5CfG6MSCDBSRVt9SV42ixcZV/ZkgBni4eod3JnkWy6RQ==", - "dev": true, - "dependencies": { - "axe-core": "^4.1.4" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@decidim/eslint-config": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@decidim/eslint-config/-/eslint-config-0.27.4.tgz", - "integrity": "sha512-ZRXqtfROkeEy4HLdlNqK22gWk71H5RPwlULNSeCNFpahk1yq/r7uF4VU3AHwbusk9J2CGULqn2m8lXAo5NGNpQ==", + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "peerDependencies": { - "eslint": "^7.25.0", - "eslint-config-prettier": "^8.2.0", - "eslint-config-standard": "^11.0.0", - "eslint-plugin-import": "^2.22.0", - "eslint-plugin-jsx-a11y": "^6.3.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^3.8.0", - "eslint-plugin-react": "^7.20.6", - "eslint-plugin-standard": "^3.1.0" + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@decidim/stylelint-config": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@decidim/stylelint-config/-/stylelint-config-0.27.4.tgz", - "integrity": "sha512-K2mlm2JWHkFKiIsosFi00h2sQ9dolb/zJmw0WvwAiJXr5BShDxmypfdydePHviMS6+MnvfNLi6Hxz94WK/HUxQ==", + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, - "peerDependencies": { - "stylelint": "13.11.0" + "peer": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "0.4.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true, - "license": "BSD-3-Clause", "peer": true }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "license": "MIT", "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@linthtml/cli": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/cli/-/cli-0.9.5.tgz", + "integrity": "sha512-QA61Fhb6T1ho8jPbbZBoqd5dfiuRtg/61dJgKt08NDrCAiwZeftX0nVjzXJq1BpQzLY7VzugGMnZxWq5IYy64g==", + "dev": true, + "dependencies": { + "chalk": "4.1.1", + "inquirer": "^8.1.1", + "js-yaml": "^3.14.0", + "kebabcase": "1.0.1", + "lodash.kebabcase": "^4.1.1", + "meow": "^9.0.0", + "ora": "^5.3.0", + "table-layout": "1.0.1" + } + }, + "node_modules/@linthtml/cli/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@linthtml/cli/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@linthtml/cli/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@linthtml/dom-utils": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/dom-utils/-/dom-utils-0.9.5.tgz", + "integrity": "sha512-q7riY+zNsTJeD0IoRV+0VdlFu2Y5jxxFCtlw97espB7+LiQalvJV/o3bn27DuQ8U6KPbFeFDjkfS8DX5tD+Ggg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0", + "domhandler": "^4.2.2" + } + }, + "node_modules/@linthtml/html-parser": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/html-parser/-/html-parser-0.9.5.tgz", + "integrity": "sha512-dvh7+jhGlAVOowlBA5Opy4PjIyT672CLyOVhiPVfkkcJkZSDKcM1GAEPhwtEAWJjdk8rpS7JaQjkZBjqHqWn5g==", "dev": true, - "license": "MIT", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@linthtml/dom-utils": "^0.9.5", + "domhandler": "^4.2.2", + "htmlparser2": "^7.1.2" + } + }, + "node_modules/@linthtml/linthtml": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/linthtml/-/linthtml-0.9.5.tgz", + "integrity": "sha512-8McouW2gCt3bg3GnK1k98KL5LiDVtY+wEyDjgfC6MdqbGrmVId0B6AKC1eR2wQ5fRvadFxNx5We/QW3K7Vim2w==", + "dev": true, + "dependencies": { + "@linthtml/cli": "^0.9.5", + "@linthtml/dom-utils": "^0.9.5", + "@linthtml/html-parser": "^0.9.5", + "bulk-require": "1.0.1", + "cosmiconfig": "7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.2", + "ignore": "^5.1.4", + "lodash.pull": "4.1.0", + "resolve-from": "^5.0.0", + "rewiremock": "^3.14.3" + }, + "bin": { + "linthtml": "bin/linthtml.js" + } + }, + "node_modules/@linthtml/linthtml/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } @@ -2145,7 +2606,6 @@ "version": "2.1.5", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2158,7 +2618,6 @@ "version": "2.0.5", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 8" } @@ -2167,7 +2626,6 @@ "version": "1.2.8", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2176,80 +2634,58 @@ "node": ">= 8" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@rails/actioncable": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/@rails/actioncable/-/actioncable-6.1.7.tgz", "integrity": "sha512-F6S74NGpxhbbDRFsQFGYqefRfZPgYvePNtz9hHKYOqLturrsqrDoG+UcrxEGHsvqDUorMYfx4Wl3K8smmk/u2g==" }, - "node_modules/@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/core": ">=7.9.0" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, - "node_modules/@stylelint/postcss-markdown": { - "version": "0.36.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - }, - "peerDependencies": { - "postcss": ">=7.0.0", - "postcss-syntax": ">=0.36.2" - } - }, "node_modules/@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/mdast": { - "version": "3.0.10", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "*" - } + "peer": true }, "node_modules/@types/minimist": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "peer": true + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "peer": true + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "peer": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true }, - "node_modules/@types/unist": { - "version": "2.0.6", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/acorn": { - "version": "7.4.1", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, - "license": "MIT", "peer": true, "bin": { "acorn": "bin/acorn" @@ -2260,8 +2696,9 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "license": "MIT", "peer": true, "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" @@ -2269,8 +2706,9 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -2283,20 +2721,37 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-colors": { - "version": "4.1.1", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", - "peer": true, + "dependencies": { + "type-fest": "^0.21.3" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/ansi-regex": { "version": "5.0.1", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -2305,7 +2760,6 @@ "version": "4.3.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2317,32 +2771,58 @@ } }, "node_modules/argparse": { - "version": "1.0.10", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "sprintf-js": "~1.0.2" + "dequal": "^2.0.3" } }, - "node_modules/aria-query": { - "version": "5.1.3", + "node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { - "deep-equal": "^2.0.5" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/array-includes": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -2354,21 +2834,25 @@ }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.2.5", + "node_modules/array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -2377,16 +2861,18 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", + "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2395,69 +2881,166 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "1.0.1", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, - "license": "MIT", "peer": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "peer": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" } }, "node_modules/ast-types-flow": { - "version": "0.0.7", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" } }, - "node_modules/autoprefixer": { - "version": "9.8.8", + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "has-symbols": "^1.0.3" } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -2466,81 +3049,130 @@ } }, "node_modules/axe-core": { - "version": "4.6.3", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.3.tgz", + "integrity": "sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==", "dev": true, - "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "3.1.1", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.3", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.6.0", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.4.1", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.5.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/bail": { - "version": "1.0.5", + "node_modules/babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, + "node_modules/babel-runtime/node_modules/regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, "node_modules/balanced-match": { "version": "1.0.2", "dev": true, "license": "MIT" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "node_modules/brace-expansion": { "version": "1.1.11", "dev": true, @@ -2552,9 +3184,9 @@ }, "node_modules/braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -2562,8 +3194,106 @@ "node": ">=8" } }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "dependencies": { + "pako": "~1.0.5" + } + }, "node_modules/browserslist": { - "version": "4.21.5", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "funding": [ { @@ -2573,14 +3303,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -2589,18 +3322,92 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-builder": { "version": "0.2.0", "dev": true, "license": "MIT/X11" }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "peer": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bulk-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz", + "integrity": "sha512-BLU9AMnm1FMr68fR0sYvOkMew4x2ZJ8YztshITlGArl6aLtfAazOWiFj/bwJJixRO8C0wXx9PnRNRWeoR03e8Q==", + "dev": true, + "dependencies": { + "glob": "^7.1.1" + } + }, "node_modules/call-bind": { - "version": "1.0.2", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", + "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2610,25 +3417,24 @@ "version": "3.1.0", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=6" } }, "node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=6" } }, "node_modules/camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -2642,7 +3448,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001456", + "version": "1.0.30001585", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", + "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", "dev": true, "funding": [ { @@ -2652,15 +3460,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } - ], - "license": "CC-BY-4.0" + ] }, "node_modules/chalk": { "version": "4.1.2", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2672,46 +3482,62 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/character-entities": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, - "node_modules/character-entities-legacy": { - "version": "1.1.4", + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/character-reference-invalid": { - "version": "1.1.4", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/clone-regexp": { - "version": "2.2.0", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-regexp": "^2.0.0" - }, "engines": { "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" } }, "node_modules/codemirror": { @@ -2729,7 +3555,6 @@ "version": "2.0.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2740,46 +3565,93 @@ "node_modules/color-name": { "version": "1.1.4", "dev": true, - "license": "MIT", + "license": "MIT" + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, "peer": true }, + "node_modules/commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/compare-module-exports": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/compare-module-exports/-/compare-module-exports-2.1.0.tgz", + "integrity": "sha512-3Lc0sTIuX1jmY2K2RrXRJOND6KsRTX2D4v3+eu1PDptsuJZVK4LZc852eZa9I+avj0NrUKlTNgqvccNOH6mbGg==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "dev": true, "license": "MIT" }, - "node_modules/convert-source-map": { - "version": "1.8.0", + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "peer": true }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "license": "MIT", "peer": true }, + "node_modules/core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "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.", + "dev": true, + "hasInstallScript": true + }, "node_modules/core-js-compat": { - "version": "3.28.0", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", + "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", "dev": true, - "license": "MIT", "dependencies": { - "browserslist": "^4.21.5" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" } }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "node_modules/cosmiconfig": { - "version": "7.0.1", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -2791,11 +3663,53 @@ "node": ">=10" } }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2805,10 +3719,57 @@ "node": ">= 8" } }, + "node_modules/crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/css-functions-list": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12 || >=16" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "peer": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "license": "MIT", "peer": true, "bin": { "cssesc": "bin/cssesc" @@ -2819,14 +3780,16 @@ }, "node_modules/damerau-levenshtein": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true, - "license": "BSD-2-Clause", "peer": true }, "node_modules/debug": { - "version": "4.3.3", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.1.2" }, @@ -2841,81 +3804,96 @@ }, "node_modules/decamelize": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/decamelize-keys": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "license": "MIT", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "engines": { "node": ">=0.10" } }, - "node_modules/deep-equal": { - "version": "2.2.0", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, - "license": "MIT", - "peer": true, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4.0.0" } }, "node_modules/deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "license": "MIT", "peer": true }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", + "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-properties": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, - "license": "MIT", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -2926,11 +3904,48 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "path-type": "^4.0.0" }, @@ -2951,141 +3966,189 @@ } }, "node_modules/dom-serializer": { - "version": "0.2.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause", - "peer": true - }, "node_modules/dom-serializer/node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, "node_modules/domelementtype": { - "version": "1.3.1", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "dev": true, - "license": "BSD-2-Clause", - "peer": true + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] }, "node_modules/domhandler": { - "version": "2.4.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, "dependencies": { - "domelementtype": "1" + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, "node_modules/domutils": { - "version": "1.7.0", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/electron-to-chromium": { - "version": "1.4.301", - "dev": true, - "license": "ISC" + "version": "1.4.659", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.659.tgz", + "integrity": "sha512-sRJ3nV3HowrYpBtPF9bASQV7OW49IgZC01Xiq43WfSE3RTCkK0/JidoCmR73Hyc1mN+l/H4Yqx0eNiomvExFZg==", + "dev": true }, "node_modules/element-matches-polyfill": { "version": "1.0.0", "license": "MIT" }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/enquirer": { - "version": "2.3.6", + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/entities": { - "version": "1.1.2", - "dev": true, - "license": "BSD-2-Clause", - "peer": true + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true }, - "node_modules/error-ex": { + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/entities": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.21.1", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -3094,52 +4157,76 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-get-iterator": { - "version": "1.1.3", + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true, + "peer": true + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { + "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "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" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -3153,9 +4240,10 @@ } }, "node_modules/escalade": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -3173,66 +4261,132 @@ } }, "node_modules/eslint": { - "version": "7.32.0", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "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.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "peer": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + }, + "engines": { + "node": "^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.28.0", + "eslint-plugin-react-hooks": "^4.3.0" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "peer": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-config-prettier": { - "version": "8.3.0", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, - "license": "MIT", + "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -3241,58 +4395,90 @@ } }, "node_modules/eslint-config-standard": { - "version": "11.0.0", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "peer": true, + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { - "eslint": ">=4.18.0", - "eslint-plugin-import": ">=2.8.0", - "eslint-plugin-node": ">=5.2.1", - "eslint-plugin-promise": ">=3.6.0", - "eslint-plugin-standard": ">=3.0.1" + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.7.3", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-es": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "eslint-utils": "^2.0.0", @@ -3308,24 +4494,51 @@ "eslint": ">=4.19.1" } }, + "node_modules/eslint-plugin-es-x": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", + "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", + "dev": true, + "peer": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8" + } + }, "node_modules/eslint-plugin-import": { - "version": "2.25.4", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -3335,17 +4548,20 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -3353,33 +4569,39 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "MIT" + "peer": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { "node": ">=4.0" @@ -3388,25 +4610,50 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", + "node_modules/eslint-plugin-jsx-a11y/node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, - "license": "MIT", - "peer": true + "peer": true, + "engines": { + "node": ">=4" + } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", + "node_modules/eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", "dev": true, - "license": "ISC", "peer": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-node": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "eslint-plugin-es": "^3.0.0", @@ -3423,26 +4670,18 @@ "eslint": ">=5.16.0" } }, - "node_modules/eslint-plugin-node/node_modules/ignore": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-promise": { - "version": "3.8.0", + "version": "6.1.1", "dev": true, "license": "ISC", "peer": true, @@ -3451,15 +4690,17 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.32.2", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -3469,7 +4710,7 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "engines": { @@ -3479,10 +4720,24 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" + } + }, "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "Apache-2.0", "peer": true, "dependencies": { "esutils": "^2.0.2" @@ -3493,20 +4748,22 @@ }, "node_modules/eslint-plugin-react/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -3518,26 +4775,20 @@ } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "peer": true, "bin": { "semver": "bin/semver.js" } }, - "node_modules/eslint-plugin-standard": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "eslint": ">=3.19.0" - } - }, "node_modules/eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3548,8 +4799,9 @@ }, "node_modules/eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "eslint-visitor-keys": "^1.1.0" @@ -3563,8 +4815,9 @@ }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "license": "Apache-2.0", "peer": true, "engines": { "node": ">=4" @@ -3572,40 +4825,167 @@ }, "node_modules/eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, - "node_modules/espree": { - "version": "7.3.1", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "license": "BSD-2-Clause", "peer": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "Apache-2.0", "peer": true, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/esprima": { - "version": "4.0.1", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "peer": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "peer": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "license": "BSD-2-Clause", "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -3615,9 +4995,10 @@ } }, "node_modules/esquery": { - "version": "1.4.0", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "estraverse": "^5.1.0" @@ -3628,8 +5009,9 @@ }, "node_modules/esquery/node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "license": "BSD-2-Clause", "peer": true, "engines": { "node": ">=4.0" @@ -3656,8 +5038,9 @@ }, "node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3674,35 +5057,57 @@ "version": "4.0.0", "license": "MIT" }, - "node_modules/execall": { - "version": "2.0.0", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "clone-regexp": "^2.1.0" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/extend": { - "version": "3.0.2", + "node_modules/fast-deep-equal": { + "version": "3.1.3", "dev": true, "license": "MIT", "peer": true }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/fast-glob": { - "version": "3.2.11", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3716,31 +5121,60 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/fastest-levenshtein": { - "version": "1.0.12", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "license": "MIT", - "peer": true + "peer": true, + "engines": { + "node": ">= 4.9.1" + } }, "node_modules/fastq": { "version": "1.13.0", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "dev": true, @@ -3755,9 +5189,9 @@ }, "node_modules/fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -3766,23 +5200,27 @@ } }, "node_modules/find-up": { - "version": "2.1.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/flat-cache": { - "version": "3.0.4", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -3790,19 +5228,50 @@ } }, "node_modules/flatted": { - "version": "3.2.5", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true, - "license": "ISC", "peer": true }, "node_modules/for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "is-callable": "^1.1.3" } }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/form-serialize": { "version": "0.7.2", "license": "MIT" @@ -3828,23 +5297,28 @@ "node_modules/fs.realpath": { "version": "1.0.0", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/function-bind": { - "version": "1.1.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "license": "MIT" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -3853,61 +5327,66 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/functions-have-names": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=6.9.0" } }, "node_modules/get-intrinsic": { - "version": "1.2.0", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-stdin": { - "version": "8.0.0", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true, - "license": "MIT", - "peer": true, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.1.tgz", + "integrity": "sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -3916,11 +5395,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { "version": "7.2.0", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -3938,9 +5429,9 @@ }, "node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", - "peer": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -3950,9 +5441,9 @@ }, "node_modules/global-modules": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "global-prefix": "^3.0.0" }, @@ -3962,9 +5453,9 @@ }, "node_modules/global-prefix": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -3976,9 +5467,9 @@ }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -3987,9 +5478,10 @@ } }, "node_modules/globals": { - "version": "13.12.1", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "type-fest": "^0.20.2" @@ -4003,8 +5495,10 @@ }, "node_modules/globalthis": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "define-properties": "^1.1.3" }, @@ -4017,9 +5511,9 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -4035,45 +5529,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/globjoin": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true, - "license": "MIT", "peer": true }, - "node_modules/gonzales-pe": { - "version": "4.3.0", + "node_modules/google-protobuf": { + "version": "3.21.2", + "dev": true, + "license": "(BSD-3-Clause AND Apache-2.0)" + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/google-protobuf": { - "version": "3.21.2", - "dev": true, - "license": "(BSD-3-Clause AND Apache-2.0)" - }, - "node_modules/gopd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -4081,30 +5553,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "peer": true + }, "node_modules/hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4118,11 +5588,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, - "license": "MIT", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4130,8 +5601,9 @@ }, "node_modules/has-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4151,11 +5623,13 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -4164,6 +5638,42 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/highlight.js": { "version": "11.4.0", "license": "BSD-3-Clause", @@ -4171,11 +5681,22 @@ "node": ">=12.0.0" } }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", - "peer": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -4184,33 +5705,80 @@ } }, "node_modules/html-tags": { - "version": "3.1.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/htmlparser2": { - "version": "3.10.1", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, - "license": "MIT", - "peer": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" + } + }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { - "version": "4.0.6", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">= 4" } @@ -4224,7 +5792,6 @@ "version": "3.3.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4238,8 +5805,9 @@ }, "node_modules/import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -4256,9 +5824,9 @@ }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -4267,7 +5835,6 @@ "version": "1.0.6", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4279,13 +5846,39 @@ }, "node_modules/ini": { "version": "1.3.8", - "dev": true, - "license": "ISC", - "peer": true + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/inline-attachment": { "version": "2.0.3" }, + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/inscrybmde": { "version": "1.11.6", "license": "MIT", @@ -4307,50 +5900,29 @@ } }, "node_modules/internal-slot": { - "version": "1.0.5", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" } }, - "node_modules/is-alphabetical": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -4359,29 +5931,34 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-array-buffer": { - "version": "3.0.1", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -4391,8 +5968,10 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4404,33 +5983,28 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-buffer": { - "version": "2.0.5", + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", "peer": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-callable": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -4439,11 +6013,12 @@ } }, "node_modules/is-core-module": { - "version": "2.11.0", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, - "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4451,8 +6026,10 @@ }, "node_modules/is-date-object": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4463,16 +6040,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-decimal": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "dev": true, @@ -4481,15 +6048,44 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "peer": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "dev": true, @@ -4501,20 +6097,20 @@ "node": ">=0.10.0" } }, - "node_modules/is-hexadecimal": { - "version": "1.0.4", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, "node_modules/is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, - "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4522,8 +6118,10 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "license": "MIT", + "peer": true, "engines": { "node": ">= 0.4" }, @@ -4533,17 +6131,19 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4554,10 +6154,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -4565,8 +6185,10 @@ }, "node_modules/is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -4578,19 +6200,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-regexp": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true, - "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4598,8 +6212,10 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -4611,6 +6227,7 @@ "version": "1.0.7", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -4623,8 +6240,10 @@ }, "node_modules/is-symbol": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -4636,15 +6255,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, - "license": "MIT", + "peer": true, "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" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -4653,17 +6270,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/is-unicode-supported": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=10" }, @@ -4673,8 +6284,9 @@ }, "node_modules/is-weakmap": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true, - "license": "MIT", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4682,8 +6294,10 @@ }, "node_modules/is-weakref": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -4693,8 +6307,9 @@ }, "node_modules/is-weakset": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.2", @@ -4706,23 +6321,56 @@ }, "node_modules/isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/isexe": { "version": "2.0.0", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } }, "node_modules/jquery": { "version": "3.6.0", "license": "MIT" }, "node_modules/jquery-ui": { - "version": "1.13.0", - "license": "MIT", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", + "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", "dependencies": { "jquery": ">=1.8.0 <4.0.0" } @@ -4733,17 +6381,17 @@ }, "node_modules/js-tokens": { "version": "4.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true }, "node_modules/js-yaml": { - "version": "3.14.1", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" @@ -4751,8 +6399,10 @@ }, "node_modules/jsesc": { "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true, - "license": "MIT", + "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -4760,16 +6410,24 @@ "node": ">=4" } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, - "license": "MIT", "peer": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/json-stable-stringify-without-jsonify": { @@ -4779,13 +6437,11 @@ "peer": true }, "node_modules/json5": { - "version": "2.2.0", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "license": "MIT", "peer": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "json5": "lib/cli.js" }, @@ -4793,6 +6449,12 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, "node_modules/jsrender": { "version": "v1.0.11", "license": "MIT", @@ -4801,46 +6463,71 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.3.3", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" } }, + "node_modules/kebabcase": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kebabcase/-/kebabcase-1.0.1.tgz", + "integrity": "sha512-YSP7DnNnodPG0nkHGEICNx5vUl/lOKkryQlILRqRFmcjWFNomEvPhJlpFvE7sop9t2EDfthZssx3nvwTx5ty0w==", + "dev": true + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "peer": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/known-css-properties": { - "version": "0.21.0", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/language-subtag-registry": { "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true, - "license": "CC0-1.0", "peer": true }, "node_modules/language-tags": { - "version": "1.0.5", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/leaflet.featuregroup.subgroup": { @@ -4849,8 +6536,9 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1", @@ -4862,32 +6550,54 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", "dev": true, - "license": "MIT", - "peer": true + "dependencies": { + "uc.micro": "^1.0.1" + } }, "node_modules/locate-path": { - "version": "2.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/lodash": { "version": "4.17.21", - "dev": true, - "license": "MIT", - "peer": true + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true }, "node_modules/lodash.debounce": { "version": "4.0.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -4895,17 +6605,49 @@ "license": "MIT", "peer": true }, + "node_modules/lodash.pull": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.pull/-/lodash.pull-4.1.0.tgz", + "integrity": "sha512-EM7CVTzXfkTyusQdN7mgGPh2ZfkKfQ5lA9U+X7NNDeEgKEaO65dB5Kh8+Ppap0X1wQOndPjKP/VVTis7hFvkzg==", + "dev": true + }, + "node_modules/lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "node_modules/lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "node_modules/lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "dependencies": { + "lodash._reinterpolate": "^3.0.0" + } + }, "node_modules/lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -4917,20 +6659,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/longest-streak": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" @@ -4943,7 +6676,6 @@ "version": "6.0.0", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "yallist": "^4.0.0" }, @@ -4953,9 +6685,9 @@ }, "node_modules/map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=8" }, @@ -4963,103 +6695,199 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/marked": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", - "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", + "node_modules/markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, "bin": { - "marked": "bin/marked.js" + "markdown-it": "bin/markdown-it.js" + } + }, + "node_modules/markdownlint": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.29.0.tgz", + "integrity": "sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA==", + "dev": true, + "dependencies": { + "markdown-it": "13.0.1", + "markdownlint-micromark": "0.1.5" }, "engines": { - "node": ">= 16" + "node": ">=16" } }, - "node_modules/mathml-tag-names": { - "version": "2.1.3", + "node_modules/markdownlint-cli": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.35.0.tgz", + "integrity": "sha512-lVIIIV1MrUtjoocgDqXLxUCxlRbn7Ve8rsWppfwciUNwLlNS28AhNiyQ3PU7jjj4Qvj+rWTTvwkqg7AcdG988g==", "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "commander": "~11.0.0", + "get-stdin": "~9.0.0", + "glob": "~10.2.7", + "ignore": "~5.2.4", + "js-yaml": "^4.1.0", + "jsonc-parser": "~3.2.0", + "markdownlint": "~0.29.0", + "minimatch": "~9.0.1", + "run-con": "~1.2.11" + }, + "bin": { + "markdownlint": "markdownlint.js" + }, + "engines": { + "node": ">=16" } }, - "node_modules/mdast-util-from-markdown": { - "version": "0.8.5", + "node_modules/markdownlint-cli/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "balanced-match": "^1.0.0" } }, - "node_modules/mdast-util-to-markdown": { - "version": "0.6.5", + "node_modules/markdownlint-cli/node_modules/glob": { + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", + "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mdast-util-to-string": { - "version": "2.0.0", + "node_modules/markdownlint-cli/node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 4" } }, - "node_modules/meow": { - "version": "9.0.0", + "node_modules/markdownlint-cli/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", + "node_modules/markdownlint-micromark": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.5.tgz", + "integrity": "sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/marked": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 16" + } + }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, - "license": "(MIT OR CC0-1.0)", "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "peer": true + }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "node_modules/meow": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize": "^1.2.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true, "engines": { "node": ">=10" }, @@ -5069,55 +6897,75 @@ }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">= 8" } }, - "node_modules/micromark": { - "version": "2.11.4", + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "peer": true, "dependencies": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/micromatch": { - "version": "4.0.4", + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { - "node": ">=8.6" + "node": ">=6" } }, "node_modules/min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=4" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, "node_modules/minimatch": { "version": "3.1.2", "dev": true, @@ -5130,15 +6978,19 @@ } }, "node_modules/minimist": { - "version": "1.2.5", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "license": "MIT" + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -5148,27 +7000,146 @@ "node": ">= 6" } }, + "node_modules/minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/ms": { "version": "2.1.2", "dev": true, "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/natural-compare": { "version": "1.4.0", "dev": true, "license": "MIT", "peer": true }, - "node_modules/node-releases": { - "version": "2.0.10", + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/node-libs-browser/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT" + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/node-libs-browser/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/node-libs-browser/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true }, "node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", - "peer": true, "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -5179,27 +7150,16 @@ "node": ">=10" } }, - "node_modules/normalize-range": { - "version": "0.1.2", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/normalize-selector": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "peer": true - }, - "node_modules/num2fraction": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/object-assign": { "version": "4.1.1", "license": "MIT", @@ -5208,25 +7168,10 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5257,28 +7202,30 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -5287,27 +7234,44 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", + "dev": true, + "peer": true, + "dependencies": { + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" + } + }, "node_modules/object.hasown": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.6", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -5320,63 +7284,127 @@ "version": "1.4.0", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "wrappy": "1" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/optionator": { - "version": "0.9.1", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/p-limit": { - "version": "1.3.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "2.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/p-try": { - "version": "1.0.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, "node_modules/parent-module": { "version": "1.0.1", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "callsites": "^3.0.0" }, @@ -5384,29 +7412,24 @@ "node": ">=6" } }, - "node_modules/parse-entities": { - "version": "2.0.0", + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "node_modules/parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5420,19 +7443,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, "node_modules/path-exists": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -5441,7 +7470,6 @@ "version": "3.1.1", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -5451,125 +7479,158 @@ "dev": true, "license": "MIT" }, - "node_modules/path-type": { - "version": "4.0.0", + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, - "license": "MIT", - "peer": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/picocolors": { - "version": "0.2.1", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, - "license": "ISC", - "peer": true + "engines": { + "node": "14 || >=16.14" + } }, - "node_modules/picomatch": { - "version": "2.3.1", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "license": "MIT", - "peer": true, "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "node": ">=8" } }, - "node_modules/postcss": { - "version": "7.0.39", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "node": ">=0.12" } }, - "node_modules/postcss-html": { - "version": "0.36.0", + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "htmlparser2": "^3.10.0" + "engines": { + "node": ">=8.6" }, - "peerDependencies": { - "postcss": ">=5.0.0", - "postcss-syntax": ">=0.36.0" + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/postcss-less": { - "version": "3.1.4", + "node_modules/postcss": { + "version": "8.4.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz", + "integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "peer": true, "dependencies": { - "postcss": "^7.0.14" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=6.14.4" + "node": "^10 || ^12 || >=14" } }, - "node_modules/postcss-media-query-parser": { - "version": "0.2.3", - "dev": true, - "license": "MIT", - "peer": true - }, "node_modules/postcss-resolve-nested-selector": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/postcss-safe-parser": { - "version": "4.0.2", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, - "license": "MIT", "peer": true, - "dependencies": { - "postcss": "^7.0.26" - }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/postcss-sass": { - "version": "0.4.4", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" } }, "node_modules/postcss-scss": { - "version": "2.1.1", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "postcss": "^7.0.6" - }, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "engines": { - "node": ">=6.0.0" + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" } }, "node_modules/postcss-selector-parser": { - "version": "6.0.9", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "cssesc": "^3.0.0", @@ -5579,52 +7640,72 @@ "node": ">=4" } }, - "node_modules/postcss-syntax": { - "version": "0.36.2", - "dev": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "postcss": ">=5.0.0" - } - }, "node_modules/postcss-value-parser": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true, - "license": "MIT", "peer": true }, - "node_modules/postcss/node_modules/source-map": { - "version": "0.6.1", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8.0" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "license": "MIT", "peer": true, + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/progress": { - "version": "2.0.3", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "license": "MIT", "peer": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">=6.0.0" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "node_modules/prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "loose-envify": "^1.4.0", @@ -5632,6 +7713,26 @@ "react-is": "^16.13.1" } }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, "node_modules/punycode": { "version": "2.1.1", "dev": true, @@ -5641,6 +7742,21 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/query-string": { "version": "5.1.1", "license": "MIT", @@ -5671,6 +7787,15 @@ "node": ">=4" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "dev": true, @@ -5688,29 +7813,48 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "node_modules/react-is": { "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -5723,9 +7867,9 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -5738,155 +7882,118 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", + "node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "p-locate": "^4.1.0" - }, + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, + "node_modules/readable-stream": { + "version": "3.6.0", "license": "MIT", - "peer": true, "dependencies": { - "p-try": "^2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", + "node_modules/redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "p-limit": "^2.2.0" + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "2.2.0", + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=6" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", + "node_modules/reflect.getprototypeof": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", + "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/regenerate": { "version": "1.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.0", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, - "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -5895,26 +8002,30 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "dev": true, - "license": "MIT" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true }, "node_modules/regenerator-transform": { - "version": "0.15.1", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -5925,8 +8036,9 @@ }, "node_modules/regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -5936,9 +8048,10 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.1", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", @@ -5953,8 +8066,9 @@ }, "node_modules/regjsparser": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "jsesc": "~0.5.0" }, @@ -5964,76 +8078,30 @@ }, "node_modules/regjsparser/node_modules/jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true, "bin": { "jsesc": "bin/jsesc" } }, - "node_modules/remark": { - "version": "13.0.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "9.0.0", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mdast-util-from-markdown": "^0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "9.0.1", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "mdast-util-to-markdown": "^0.6.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10" - } - }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" } }, "node_modules/resolve": { - "version": "1.22.0", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -6048,21 +8116,58 @@ "version": "4.0.0", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/reusify": { "version": "1.0.4", "dev": true, "license": "MIT", - "peer": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" } }, + "node_modules/rewiremock": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.5.tgz", + "integrity": "sha512-MdPutvaUd+kKVz/lcEz6N6337s4PxRUR5vhphIp2/TJRgfXIckomIkCsIAbwB53MjiSLwi7KBMdQ9lPWE5WpYA==", + "dev": true, + "dependencies": { + "babel-runtime": "^6.26.0", + "compare-module-exports": "^2.1.0", + "lodash.some": "^4.6.0", + "lodash.template": "^4.4.0", + "node-libs-browser": "^2.1.0", + "path-parse": "^1.0.5", + "wipe-node-cache": "^2.1.2", + "wipe-webpack-cache": "^2.1.0" + } + }, "node_modules/rimraf": { "version": "3.0.2", "dev": true, @@ -6078,6 +8183,49 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-con": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.12.tgz", + "integrity": "sha512-5257ILMYIF4RztL9uoZ7V9Q97zHtNHn5bN3NobeAnzB1P3ASLgg8qocM2u+R18ttp+VEM78N2LK8XcNVtnSRrg==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~3.0.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "bin": { + "run-con": "cli.js" + } + }, + "node_modules/run-con/node_modules/ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "dev": true, @@ -6096,7 +8244,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "queue-microtask": "^1.2.2" } @@ -6109,6 +8256,25 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "funding": [ @@ -6128,18 +8294,29 @@ "license": "MIT" }, "node_modules/safe-regex-test": { - "version": "1.0.0", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "node_modules/sass-embedded": { "version": "1.57.1", "dev": true, @@ -6180,385 +8357,888 @@ "node": ">=14.0.0" } }, - "node_modules/sass-embedded/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/sass-embedded/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/select2": { + "version": "4.1.0-rc.0", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "peer": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-browserify/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/stream-browserify/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-browserify/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stream-browserify/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/stream-http/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/stream-http/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/stream-http/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/stream-http/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/select2": { - "version": "4.1.0-rc.0", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.3.5", + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shebang-command": { - "version": "2.0.0", + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "shebang-regex": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", + "node_modules/strip-ansi": { + "version": "6.0.1", "dev": true, "license": "MIT", - "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/side-channel": { - "version": "1.0.4", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC", - "peer": true - }, - "node_modules/slash": { + "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "peer": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "min-indent": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/spdx-correct": { + "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true, - "license": "CC-BY-3.0", "peer": true }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", + "node_modules/stylelint": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "dev": true, + "peer": true, + "dependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.29.0", + "mathml-tag-names": "^2.1.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.28", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-prettier": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-3.0.0.tgz", + "integrity": "sha512-kIks1xw6np0zElokMT2kP6ar3S4MBoj6vUtPJuND1pFELMpZxVS/0uHPR4HDAVn0WAD3I5oF0IA3qBFxBpMkLg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "prettier": ">=2.0.0", + "stylelint": ">=14.0.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.11", + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", "dev": true, - "license": "CC0-1.0", "peer": true }, - "node_modules/specificity": { - "version": "0.4.1", + "node_modules/stylelint/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "license": "MIT", "peer": true, - "bin": { - "specificity": "bin/specificity" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", + "node_modules/stylelint/node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "internal-slot": "^1.0.4" + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "license": "MIT", + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "peer": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" + "node_modules/stylelint/node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width": { - "version": "4.2.3", + "node_modules/stylelint/node_modules/file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "flat-cache": "^3.2.0" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", + "node_modules/stylelint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", + "node_modules/stylelint/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "peer": true, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", + "node_modules/stylelint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", + "node_modules/stylelint/node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "ansi-regex": "^5.0.1" + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-bom": { - "version": "3.0.0", + "node_modules/stylelint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "license": "MIT", + "peer": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-indent": { - "version": "3.0.0", + "node_modules/stylelint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "min-indent": "^1.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", + "node_modules/stylelint/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, - "license": "MIT", "peer": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/style-search": { - "version": "0.1.0", + "node_modules/stylelint/node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", "dev": true, - "license": "ISC", - "peer": true + "peer": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/stylelint": { - "version": "13.11.0", + "node_modules/stylelint/node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", - "balanced-match": "^1.0.0", - "chalk": "^4.1.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.0", - "get-stdin": "^8.0.0", - "global-modules": "^2.0.0", - "globby": "^11.0.2", - "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", - "import-lazy": "^4.0.0", - "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.20", - "log-symbols": "^4.0.0", - "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.2", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", - "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.4", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", - "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "style-search": "^0.1.0", - "sugarss": "^2.0.0", - "svg-tags": "^1.0.0", - "table": "^6.0.7", - "v8-compile-cache": "^2.2.0", - "write-file-atomic": "^3.0.3" - }, - "bin": { - "stylelint": "bin/stylelint.js" + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" }, "engines": { - "node": ">=10.13.0" + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/stylelint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/ignore": { - "version": "5.2.0", + "node_modules/stylelint/node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", "dev": true, - "license": "MIT", "peer": true, + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "peer": true, "engines": { "node": ">=8" } }, - "node_modules/sugarss": { - "version": "2.0.0", + "node_modules/stylelint/node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { - "postcss": "^7.0.2" + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/supports-color": { "version": "7.2.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -6566,6 +9246,20 @@ "node": ">=8" } }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "peer": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "dev": true, @@ -6579,13 +9273,16 @@ }, "node_modules/svg-tags": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true, "peer": true }, "node_modules/table": { - "version": "6.8.0", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, - "license": "BSD-3-Clause", "peer": true, "dependencies": { "ajv": "^8.0.1", @@ -6598,10 +9295,26 @@ "node": ">=10.0.0" } }, + "node_modules/table-layout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", + "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/table/node_modules/ajv": { - "version": "8.10.0", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", @@ -6616,8 +9329,9 @@ }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, - "license": "MIT", "peer": true }, "node_modules/text-table": { @@ -6626,6 +9340,12 @@ "license": "MIT", "peer": true }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, "node_modules/through2": { "version": "3.0.2", "license": "MIT", @@ -6634,19 +9354,50 @@ "readable-stream": "2 || 3" } }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, "node_modules/to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { "is-number": "^7.0.0" }, @@ -6656,38 +9407,32 @@ }, "node_modules/trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT", - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/trough": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/tsconfig-paths": { - "version": "3.12.0", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", + "json5": "^1.0.2", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "minimist": "^1.2.0" }, @@ -6696,14 +9441,22 @@ } }, "node_modules/tslib": { - "version": "2.5.0", - "dev": true, - "license": "0BSD" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "prelude-ls": "^1.2.1" @@ -6714,8 +9467,9 @@ }, "node_modules/type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "license": "(MIT OR CC0-1.0)", "peer": true, "engines": { "node": ">=10" @@ -6724,10 +9478,66 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "peer": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -6737,23 +9547,31 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", + "node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "is-typedarray": "^1.0.0" + "engines": { + "node": ">=8" } }, "node_modules/typo-js": { "version": "1.2.1", "license": "BSD-3-Clause" }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, "node_modules/unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -6766,16 +9584,18 @@ }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, - "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -6786,85 +9606,26 @@ }, "node_modules/unicode-match-property-value-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unified": { - "version": "9.2.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unified/node_modules/is-plain-obj": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/unist-util-find-all-after": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "unist-util-is": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-is": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" } }, - "node_modules/unist-util-stringify-position": { - "version": "2.0.3", + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^2.0.2" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4" } }, "node_modules/update-browserslist-db": { - "version": "1.0.10", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, "funding": [ { @@ -6874,25 +9635,23 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "escalade": "^3.1.1", "picocolors": "^1.0.0" }, "bin": { - "browserslist-lint": "cli.js" + "update-browserslist-db": "cli.js" }, "peerDependencies": { "browserslist": ">= 4.21.0" } }, - "node_modules/update-browserslist-db/node_modules/picocolors": { - "version": "1.0.0", - "dev": true, - "license": "ISC" - }, "node_modules/uri-js": { "version": "4.4.1", "dev": true, @@ -6902,61 +9661,70 @@ "punycode": "^2.1.0" } }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "license": "MIT" }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "peer": true + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "node_modules/validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", - "peer": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "node_modules/vfile": { - "version": "4.2.1", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, - "node_modules/vfile-message": { - "version": "2.0.4", + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "license": "MIT", - "peer": true, "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "defaults": "^1.0.3" } }, "node_modules/which": { "version": "2.0.2", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^2.0.0" }, @@ -6969,8 +9737,10 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -6982,10 +9752,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "peer": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "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.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-collection": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, - "license": "MIT", "peer": true, "dependencies": { "is-map": "^2.0.1", @@ -6998,16 +9796,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dev": true, - "license": "MIT", + "peer": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -7016,148 +9815,297 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.3", + "node_modules/wipe-node-cache": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/wipe-node-cache/-/wipe-node-cache-2.1.2.tgz", + "integrity": "sha512-m7NXa8qSxBGMtdQilOu53ctMaIBXy93FOP04EC1Uf4bpsE+r+adfLKwIMIvGbABsznaSNxK/ErD4xXDyY5og9w==", + "dev": true + }, + "node_modules/wipe-webpack-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wipe-webpack-cache/-/wipe-webpack-cache-2.1.0.tgz", + "integrity": "sha512-OXzQMGpA7MnQQ8AG+uMl5mWR2ezy6fw1+DMHY+wzYP1qkF1jrek87psLBmhZEj+er4efO/GD4R8jXWFierobaA==", "dev": true, - "license": "MIT", - "peer": true, + "dependencies": { + "wipe-node-cache": "^2.1.0" + } + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "3.0.3", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, - "license": "ISC", "peer": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" } }, "node_modules/yallist": { "version": "4.0.0", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "license": "ISC", - "peer": true, "engines": { "node": ">= 6" } }, "node_modules/yargs-parser": { "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "license": "ISC", - "peer": true, "engines": { "node": ">=10" } }, - "node_modules/zwitch": { - "version": "1.0.5", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "license": "MIT", "peer": true, + "engines": { + "node": ">=10" + }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "url": "https://github.com/sponsors/sindresorhus" } } }, "dependencies": { + "@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "peer": true + }, "@ampproject/remapping": { - "version": "2.1.1", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dev": true, "peer": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.0" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, "@babel/code-frame": { - "version": "7.12.11", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dev": true, - "peer": true, "requires": { - "@babel/highlight": "^7.10.4" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { - "version": "7.20.14", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true }, "@babel/core": { - "version": "7.17.2", - "dev": true, - "peer": true, - "requires": { - "@ampproject/remapping": "^2.0.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.0", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helpers": "^7.17.2", - "@babel/parser": "^7.17.0", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0", - "convert-source-map": "^1.7.0", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "peer": true, + "requires": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "dependencies": { - "@babel/code-frame": { - "version": "7.16.7", - "dev": true, - "peer": true, - "requires": { - "@babel/highlight": "^7.16.7" - } - }, "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } } }, "@babel/eslint-parser": { - "version": "7.19.1", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.10.tgz", + "integrity": "sha512-3wSYDPZVnhseRnxRJH6ZVTNknBz76AEnyC+AYYhasjP3Yy23qz0ERR7Fcd2SHmYuSFJ2kY9gaaDd3vyqU09eSw==", "dev": true, "requires": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.3.tgz", - "integrity": "sha512-keeZWAV4LU3tW0qRi19HRpabC/ilM0HRBBzf9/k8FFiG4KVpiv0FIy4hHfLfFQZNhziCTPTmd59zoyv6DNISzg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dev": true, + "peer": true, "requires": { - "@babel/types": "^7.23.3", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -7173,53 +10121,62 @@ } }, "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.18.9", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dev": true, "requires": { - "@babel/helper-explode-assignable-expression": "^7.18.6", - "@babel/types": "^7.18.9" + "@babel/types": "^7.22.15" } }, "@babel/helper-compilation-targets": { - "version": "7.20.7", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "dependencies": { "lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "requires": { "yallist": "^3.0.2" } }, "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true } } }, "@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.10", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.10.tgz", + "integrity": "sha512-2XpP2XhkXzgxecPNEEK8Vz8Asj9aRxt08oKOqtiZoqV2UGZ5T+EkyP9sXQ9nwMxBIG34a7jmasVqoMop7VdPUw==", "dev": true, "requires": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -7234,29 +10191,35 @@ } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.20.5", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.2.1" + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } } }, "@babel/helper-define-polyfill-provider": { - "version": "0.3.3", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.17.7", - "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", "debug": "^4.1.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "dev": true - } + "resolve": "^1.14.2" } }, "@babel/helper-environment-visitor": { @@ -7265,13 +10228,6 @@ "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true }, - "@babel/helper-explode-assignable-expression": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, "@babel/helper-function-name": { "version": "7.23.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", @@ -7301,24 +10257,25 @@ } }, "@babel/helper-module-imports": { - "version": "7.18.6", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "requires": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.15" } }, "@babel/helper-module-transforms": { - "version": "7.20.11", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.20.2", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.20.10", - "@babel/types": "^7.20.7" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" } }, "@babel/helper-optimise-call-expression": { @@ -7331,17 +10288,20 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.20.2", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true }, "@babel/helper-remap-async-to-generator": { - "version": "7.18.9", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-wrap-function": "^7.18.9", - "@babel/types": "^7.18.9" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" } }, "@babel/helper-replace-supers": { @@ -7356,10 +10316,12 @@ } }, "@babel/helper-simple-access": { - "version": "7.20.2", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "requires": { - "@babel/types": "^7.20.2" + "@babel/types": "^7.22.5" } }, "@babel/helper-skip-transparent-expression-wrappers": { @@ -7381,9 +10343,9 @@ } }, "@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true }, "@babel/helper-validator-identifier": { @@ -7393,33 +10355,38 @@ "dev": true }, "@babel/helper-validator-option": { - "version": "7.18.6", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true }, "@babel/helper-wrap-function": { - "version": "7.20.5", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dev": true, "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" } }, "@babel/helpers": { - "version": "7.17.2", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.9.tgz", + "integrity": "sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==", "dev": true, "peer": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.0", - "@babel/types": "^7.17.0" + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9" } }, "@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.20", @@ -7429,6 +10396,8 @@ "dependencies": { "ansi-styles": { "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -7436,6 +10405,8 @@ }, "chalk": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", @@ -7445,6 +10416,8 @@ }, "color-convert": { "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" @@ -7452,18 +10425,26 @@ }, "color-name": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "escape-string-regexp": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "has-flag": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -7472,160 +10453,52 @@ } }, "@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz", + "integrity": "sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==", "dev": true }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-proposal-optional-chaining": "^7.20.7" - } - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-proposal-class-static-block": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.18.9", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" } }, - "@babel/plugin-proposal-private-methods": { - "version": "7.18.6", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz", + "integrity": "sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==", "dev": true, "requires": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", - "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.21.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.18.6", + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } + "requires": {} }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -7633,6 +10506,8 @@ }, "@babel/plugin-syntax-class-properties": { "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.12.13" @@ -7640,6 +10515,8 @@ }, "@babel/plugin-syntax-class-static-block": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -7647,6 +10524,8 @@ }, "@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -7654,34 +10533,62 @@ }, "@babel/plugin-syntax-export-namespace-from": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.3" } }, "@babel/plugin-syntax-import-assertions": { - "version": "7.20.0", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.19.0" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-json-strings": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } }, "@babel/plugin-syntax-jsx": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -7689,6 +10596,8 @@ }, "@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -7696,6 +10605,8 @@ }, "@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.10.4" @@ -7703,6 +10614,8 @@ }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -7710,6 +10623,8 @@ }, "@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -7717,6 +10632,8 @@ }, "@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" @@ -7724,6 +10641,8 @@ }, "@babel/plugin-syntax-private-property-in-object": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" @@ -7731,350 +10650,600 @@ }, "@babel/plugin-syntax-top-level-await": { "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.14.5" } }, + "@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, "@babel/plugin-transform-arrow-functions": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.20.15", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" } }, "@babel/plugin-transform-classes": { - "version": "7.20.7", + "version": "7.23.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.8.tgz", + "integrity": "sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.19.0", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-replace-supers": "^7.20.7", - "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, "dependencies": { "globals": { "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true } } }, - "@babel/plugin-transform-computed-properties": { - "version": "7.20.7", + "@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/template": "^7.20.7" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-destructuring": { - "version": "7.20.7", + "@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.18.6", + "@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.18.9", + "@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.18.6", + "@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dev": true, "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" } }, - "@babel/plugin-transform-for-of": { - "version": "7.18.8", + "@babel/plugin-transform-modules-systemjs": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz", + "integrity": "sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" } }, - "@babel/plugin-transform-function-name": { - "version": "7.18.9", + "@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dev": true, "requires": { - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-literals": { - "version": "7.18.9", + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.18.6", + "@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-modules-amd": { - "version": "7.20.11", + "@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" } }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.20.11", + "@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-simple-access": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.20.11", + "@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dev": true, "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.20.11", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-identifier": "^7.19.1" + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" } }, - "@babel/plugin-transform-modules-umd": { - "version": "7.18.6", + "@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dev": true, "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" } }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.20.5", + "@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.20.5", - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" } }, - "@babel/plugin-transform-new-target": { - "version": "7.18.6", + "@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" } }, - "@babel/plugin-transform-object-super": { - "version": "7.18.6", + "@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, - "@babel/plugin-transform-parameters": { - "version": "7.20.7", + "@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" } }, "@babel/plugin-transform-property-literals": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.20.13", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.18.6", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", "dev": true, "requires": { - "@babel/plugin-transform-react-jsx": "^7.18.6" + "@babel/plugin-transform-react-jsx": "^7.22.5" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-regenerator": { - "version": "7.20.5", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "regenerator-transform": "^0.15.1" + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-runtime": { - "version": "7.19.6", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.9.tgz", + "integrity": "sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==", "dev": true, "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.19.0", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "semver": "^6.3.0" + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-spread": { - "version": "7.20.7", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-template-literals": { - "version": "7.18.9", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.18.9", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.18.10", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.18.9" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.18.6", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dev": true, "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + } + }, + "@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" } }, "@babel/preset-env": { - "version": "7.20.2", - "dev": true, - "requires": { - "@babel/compat-data": "^7.20.1", - "@babel/helper-compilation-targets": "^7.20.0", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-async-generator-functions": "^7.20.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-class-static-block": "^7.18.6", - "@babel/plugin-proposal-dynamic-import": "^7.18.6", - "@babel/plugin-proposal-export-namespace-from": "^7.18.9", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", - "@babel/plugin-proposal-numeric-separator": "^7.18.6", - "@babel/plugin-proposal-object-rest-spread": "^7.20.2", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.9", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.18.6", - "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.9.tgz", + "integrity": "sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", @@ -8084,324 +11253,366 @@ "@babel/plugin-syntax-optional-chaining": "^7.8.3", "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.18.6", - "@babel/plugin-transform-async-to-generator": "^7.18.6", - "@babel/plugin-transform-block-scoped-functions": "^7.18.6", - "@babel/plugin-transform-block-scoping": "^7.20.2", - "@babel/plugin-transform-classes": "^7.20.2", - "@babel/plugin-transform-computed-properties": "^7.18.9", - "@babel/plugin-transform-destructuring": "^7.20.2", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.9", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.8", - "@babel/plugin-transform-function-name": "^7.18.9", - "@babel/plugin-transform-literals": "^7.18.9", - "@babel/plugin-transform-member-expression-literals": "^7.18.6", - "@babel/plugin-transform-modules-amd": "^7.19.6", - "@babel/plugin-transform-modules-commonjs": "^7.19.6", - "@babel/plugin-transform-modules-systemjs": "^7.19.6", - "@babel/plugin-transform-modules-umd": "^7.18.6", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", - "@babel/plugin-transform-new-target": "^7.18.6", - "@babel/plugin-transform-object-super": "^7.18.6", - "@babel/plugin-transform-parameters": "^7.20.1", - "@babel/plugin-transform-property-literals": "^7.18.6", - "@babel/plugin-transform-regenerator": "^7.18.6", - "@babel/plugin-transform-reserved-words": "^7.18.6", - "@babel/plugin-transform-shorthand-properties": "^7.18.6", - "@babel/plugin-transform-spread": "^7.19.0", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.9", - "@babel/plugin-transform-typeof-symbol": "^7.18.9", - "@babel/plugin-transform-unicode-escapes": "^7.18.10", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.20.2", - "babel-plugin-polyfill-corejs2": "^0.3.3", - "babel-plugin-polyfill-corejs3": "^0.6.0", - "babel-plugin-polyfill-regenerator": "^0.4.1", - "core-js-compat": "^3.25.1", - "semver": "^6.3.0" + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "@babel/preset-modules": { - "version": "0.1.5", + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", "@babel/types": "^7.4.4", "esutils": "^2.0.2" } }, "@babel/preset-react": { - "version": "7.18.6", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "@babel/plugin-transform-react-display-name": "^7.18.6", - "@babel/plugin-transform-react-jsx": "^7.18.6", - "@babel/plugin-transform-react-jsx-development": "^7.18.6", - "@babel/plugin-transform-react-pure-annotations": "^7.18.6" - } - }, - "@babel/regjsgen": { - "version": "0.8.0", - "dev": true - }, - "@babel/runtime": { - "version": "7.20.13", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.11" - } - }, - "@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "@babel/traverse": { "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.3.tgz", - "integrity": "sha512-+K0yF1/9yR0oHdE0StHuEj3uTPzwwbrLGfNOndVJVV2TqA5+j3oljJUb4nmB954FLGjNem976+B+eDuLIjesiQ==", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, - "requires": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.3", - "@babel/types": "^7.23.3", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "requires": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - } - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, + "requires": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" + } + }, + "@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "@babel/runtime": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@babel/template": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.23.9.tgz", + "integrity": "sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9" + } + }, + "@babel/traverse": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.9.tgz", + "integrity": "sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.9", + "@babel/types": "^7.23.9", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "dependencies": { "globals": { "version": "11.12.0", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "peer": true } } }, "@babel/types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.3.tgz", - "integrity": "sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz", + "integrity": "sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==", "dev": true, "requires": { - "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, + "@csstools/css-parser-algorithms": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.5.0.tgz", + "integrity": "sha512-abypo6m9re3clXA00eu5syw+oaPHbJTPapu9C4pzNsJ4hdZDzushT50Zhu+iIYXgEe1CxnRMn7ngsbV+MLrlpQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.3.tgz", + "integrity": "sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==", + "dev": true, + "peer": true + }, + "@csstools/media-query-list-parser": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.7.tgz", + "integrity": "sha512-lHPKJDkPUECsyAvD60joYfDmp8UERYxHGkFfyLJFTVK/ERJe0sVlIFLXU5XFxdjNDTerp5L4KeaKG+Z5S94qxQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", + "dev": true, + "peer": true, + "requires": {} + }, "@decidim/dev": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@decidim/dev/-/dev-0.27.4.tgz", - "integrity": "sha512-85RoZQBsBs30emj9Ajo8lDOHKgcj9D7JtOYXoUFQmF5CfG6MSCDBSRVt9SV42ixcZV/ZkgBni4eod3JnkWy6RQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/dev/-/dev-0.28.0.tgz", + "integrity": "sha512-F6sMVCYplCfcIcKstXRWetT/3TcpVYux3D0T0E/pFb+oy6va05k0wKRwUEE0qphq72WMXfMZMJKcp5z/U9KWFA==", "dev": true, "requires": { - "axe-core": "^4.1.4" + "@linthtml/linthtml": "^0.9.5", + "axe-core": "^4.7.2", + "markdownlint-cli": "^0.35.0" } }, "@decidim/eslint-config": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@decidim/eslint-config/-/eslint-config-0.27.4.tgz", - "integrity": "sha512-ZRXqtfROkeEy4HLdlNqK22gWk71H5RPwlULNSeCNFpahk1yq/r7uF4VU3AHwbusk9J2CGULqn2m8lXAo5NGNpQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/eslint-config/-/eslint-config-0.28.0.tgz", + "integrity": "sha512-xmb6XI1I771Q2QgDoBZZunRjnsjWboluXce2XVG+IbmaYBGdxnmpBSQSceTF2TDjG1OPqqIO9vKunNaEWpEVOA==", + "dev": true, + "requires": {} + }, + "@decidim/prettier-config": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/prettier-config/-/prettier-config-0.28.0.tgz", + "integrity": "sha512-4GMycHJJEEU2Z8DsYUMLTH2Ub7gm4RWzx9tExGO+VwrAn4GnKii4K3KofZe9DkdyROi1h46d8z5W97ONYsKhgw==", "dev": true, "requires": {} }, "@decidim/stylelint-config": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@decidim/stylelint-config/-/stylelint-config-0.27.4.tgz", - "integrity": "sha512-K2mlm2JWHkFKiIsosFi00h2sQ9dolb/zJmw0WvwAiJXr5BShDxmypfdydePHviMS6+MnvfNLi6Hxz94WK/HUxQ==", + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/@decidim/stylelint-config/-/stylelint-config-0.28.0.tgz", + "integrity": "sha512-vYr6HOqbVI0jEZsNkDZy8rmWiu3TxT5YYdpp4AXoP/FIT3+Y9VxyHYItgQFwlwNbEfUkvFUolwxAlC2vwhHVfg==", "dev": true, "requires": {} }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "peer": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true + } + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "peer": true + }, "@eslint/eslintrc": { - "version": "0.4.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "peer": true, "requires": { "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "peer": true + }, "@humanwhocodes/config-array": { - "version": "0.5.0", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "peer": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true + }, "@humanwhocodes/object-schema": { - "version": "1.2.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", + "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", "dev": true, "peer": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@jridgewell/gen-mapping": { - "version": "0.3.2", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, + "peer": true, "requires": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -8409,27 +11620,136 @@ } }, "@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "peer": true }, "@jridgewell/set-array": { "version": "1.1.2", - "dev": true + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "peer": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "dev": true + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true, + "peer": true }, "@jridgewell/trace-mapping": { - "version": "0.3.17", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "@linthtml/cli": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/cli/-/cli-0.9.5.tgz", + "integrity": "sha512-QA61Fhb6T1ho8jPbbZBoqd5dfiuRtg/61dJgKt08NDrCAiwZeftX0nVjzXJq1BpQzLY7VzugGMnZxWq5IYy64g==", + "dev": true, + "requires": { + "chalk": "4.1.1", + "inquirer": "^8.1.1", + "js-yaml": "^3.14.0", + "kebabcase": "1.0.1", + "lodash.kebabcase": "^4.1.1", + "meow": "^9.0.0", + "ora": "^5.3.0", + "table-layout": "1.0.1" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "@linthtml/dom-utils": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/dom-utils/-/dom-utils-0.9.5.tgz", + "integrity": "sha512-q7riY+zNsTJeD0IoRV+0VdlFu2Y5jxxFCtlw97espB7+LiQalvJV/o3bn27DuQ8U6KPbFeFDjkfS8DX5tD+Ggg==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0", + "domhandler": "^4.2.2" + } + }, + "@linthtml/html-parser": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/html-parser/-/html-parser-0.9.5.tgz", + "integrity": "sha512-dvh7+jhGlAVOowlBA5Opy4PjIyT672CLyOVhiPVfkkcJkZSDKcM1GAEPhwtEAWJjdk8rpS7JaQjkZBjqHqWn5g==", + "dev": true, + "requires": { + "@linthtml/dom-utils": "^0.9.5", + "domhandler": "^4.2.2", + "htmlparser2": "^7.1.2" + } + }, + "@linthtml/linthtml": { + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/@linthtml/linthtml/-/linthtml-0.9.5.tgz", + "integrity": "sha512-8McouW2gCt3bg3GnK1k98KL5LiDVtY+wEyDjgfC6MdqbGrmVId0B6AKC1eR2wQ5fRvadFxNx5We/QW3K7Vim2w==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@linthtml/cli": "^0.9.5", + "@linthtml/dom-utils": "^0.9.5", + "@linthtml/html-parser": "^0.9.5", + "bulk-require": "1.0.1", + "cosmiconfig": "7.0.0", + "global-modules": "^2.0.0", + "globby": "^11.0.2", + "ignore": "^5.1.4", + "lodash.pull": "4.1.0", + "resolve-from": "^5.0.0", + "rewiremock": "^3.14.3" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } } }, "@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, "requires": { "eslint-scope": "5.1.1" @@ -8438,7 +11758,6 @@ "@nodelib/fs.scandir": { "version": "2.1.5", "dev": true, - "peer": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -8446,85 +11765,79 @@ }, "@nodelib/fs.stat": { "version": "2.0.5", - "dev": true, - "peer": true + "dev": true }, "@nodelib/fs.walk": { "version": "1.2.8", "dev": true, - "peer": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true + }, "@rails/actioncable": { "version": "6.1.7", "resolved": "https://registry.npmjs.org/@rails/actioncable/-/actioncable-6.1.7.tgz", "integrity": "sha512-F6S74NGpxhbbDRFsQFGYqefRfZPgYvePNtz9hHKYOqLturrsqrDoG+UcrxEGHsvqDUorMYfx4Wl3K8smmk/u2g==" }, - "@stylelint/postcss-css-in-js": { - "version": "0.37.2", - "dev": true, - "peer": true, - "requires": { - "@babel/core": ">=7.9.0" - } - }, - "@stylelint/postcss-markdown": { - "version": "0.36.2", - "dev": true, - "peer": true, - "requires": { - "remark": "^13.0.0", - "unist-util-find-all-after": "^3.0.2" - } - }, "@types/json5": { "version": "0.0.29", - "dev": true - }, - "@types/mdast": { - "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, - "peer": true, - "requires": { - "@types/unist": "*" - } + "peer": true }, "@types/minimist": { - "version": "1.2.2", - "dev": true, - "peer": true + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true }, "@types/normalize-package-data": { - "version": "2.4.1", - "dev": true, - "peer": true + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true }, "@types/parse-json": { - "version": "4.0.0", - "dev": true, - "peer": true + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true }, - "@types/unist": { - "version": "2.0.6", + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", "dev": true, "peer": true }, "acorn": { - "version": "7.4.1", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "peer": true }, "acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "peer": true, "requires": {} }, "ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "peer": true, "requires": { @@ -8534,172 +11847,355 @@ "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "4.1.1", + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "peer": true + "requires": { + "type-fest": "^0.21.3" + }, + "dependencies": { + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + } + } }, "ansi-regex": { "version": "5.0.1", - "dev": true, - "peer": true + "dev": true }, "ansi-styles": { "version": "4.3.0", "dev": true, - "peer": true, "requires": { "color-convert": "^2.0.1" } }, "argparse": { - "version": "1.0.10", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "peer": true, "requires": { - "sprintf-js": "~1.0.2" + "dequal": "^2.0.3" } }, - "aria-query": { - "version": "5.1.3", + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "peer": true, "requires": { - "deep-equal": "^2.0.5" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" } }, "array-includes": { - "version": "3.1.6", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" } }, "array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array.prototype.filter": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array.prototype.filter/-/array.prototype.filter-1.0.3.tgz", + "integrity": "sha512-VizNcj/RGJiUyQBgzwxzE5oHdeuXY5hSbbmKMlphj1cy1Vl7Pn2asCGbSrru6hSQjmCzqTBPVWAF/whmEOVHbw==", "dev": true, - "peer": true + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.4.tgz", + "integrity": "sha512-hzvSHUshSpCflDR1QMUBLHGHP1VIEBegT4pix9H/Z92Xw3ySoy6c2qh7lJWTJnRJ8JCZ9bJNCgTyYaJGcJu6xQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + } }, "array.prototype.flat": { - "version": "1.2.5", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" } }, "array.prototype.flatmap": { - "version": "1.3.1", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, "array.prototype.tosorted": { - "version": "1.1.1", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "peer": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" } }, "arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", "dev": true, - "peer": true + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.1.tgz", + "integrity": "sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==", + "dev": true, + "requires": { + "object.assign": "^4.1.4", + "util": "^0.10.4" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } }, "ast-types-flow": { - "version": "0.0.7", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, "peer": true }, "astral-regex": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, "peer": true }, - "autoprefixer": { - "version": "9.8.8", + "asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, "peer": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "has-symbols": "^1.0.3" } }, "available-typed-arrays": { - "version": "1.0.5", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "dev": true, + "peer": true }, "axe-core": { - "version": "4.6.3", + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.8.3.tgz", + "integrity": "sha512-d5ZQHPSPkF9Tw+yfyDcRoUOc4g/8UloJJe5J8m4L5+c7AtDdjDLRxew/knnI4CxvtdxEUVgWz4x3OIQUIFiMfw==", "dev": true }, "axobject-query": { - "version": "3.1.1", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, "peer": true, "requires": { - "deep-equal": "^2.0.5" + "dequal": "^2.0.3" } }, "babel-plugin-polyfill-corejs2": { - "version": "0.3.3", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.8.tgz", + "integrity": "sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==", "dev": true, "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.3", - "semver": "^6.1.1" + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.5.0", + "semver": "^6.3.1" }, "dependencies": { "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "babel-plugin-polyfill-corejs3": { - "version": "0.6.0", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3", - "core-js-compat": "^3.25.1" + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" } }, "babel-plugin-polyfill-regenerator": { - "version": "0.4.1", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", "dev": true, "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.3" + "@babel/helper-define-polyfill-provider": "^0.5.0" } }, - "bail": { - "version": "1.0.5", + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", "dev": true, - "peer": true + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } }, "balanced-match": { "version": "1.0.2", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "dev": true, @@ -8710,48 +12206,196 @@ }, "braces": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "peer": true, "requires": { "fill-range": "^7.0.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", + "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.4", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.6", + "readable-stream": "^3.6.2", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, "browserslist": { - "version": "4.21.5", + "version": "4.22.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.3.tgz", + "integrity": "sha512-UAp55yfwNv0klWNapjs/ktHoguxuQNGnOzxYmfnXIS+8AsRDZkSDxg7R1AX3GKzn078SBI5dzwzj/Yx0Or0e3A==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001580", + "electron-to-chromium": "^1.4.648", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, "buffer-builder": { "version": "0.2.0", "dev": true }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "peer": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==", + "dev": true + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "peer": true, + "requires": { + "semver": "^7.0.0" + } + }, + "bulk-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz", + "integrity": "sha512-BLU9AMnm1FMr68fR0sYvOkMew4x2ZJ8YztshITlGArl6aLtfAazOWiFj/bwJJixRO8C0wXx9PnRNRWeoR03e8Q==", + "dev": true, + "requires": { + "glob": "^7.1.1" + } + }, "call-bind": { - "version": "1.0.2", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", + "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" } }, "callsites": { "version": "3.1.0", - "dev": true, - "peer": true + "dev": true }, "camelcase": { "version": "5.3.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true }, "camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "peer": true, "requires": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -8759,41 +12403,62 @@ } }, "caniuse-lite": { - "version": "1.0.30001456", + "version": "1.0.30001585", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", + "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", "dev": true }, "chalk": { "version": "4.1.2", "dev": true, - "peer": true, "requires": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, - "character-entities": { - "version": "1.2.4", - "dev": true, - "peer": true - }, - "character-entities-legacy": { - "version": "1.1.4", - "dev": true, - "peer": true + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true }, - "character-reference-invalid": { - "version": "1.1.4", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "peer": true + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } }, - "clone-regexp": { - "version": "2.2.0", + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, - "peer": true, "requires": { - "is-regexp": "^2.0.0" + "restore-cursor": "^3.1.0" } }, + "cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, "codemirror": { "version": "5.65.0" }, @@ -8806,46 +12471,89 @@ "color-convert": { "version": "2.0.1", "dev": true, - "peer": true, "requires": { "color-name": "~1.1.4" } }, "color-name": { "version": "1.1.4", + "dev": true + }, + "colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", "dev": true, "peer": true }, + "commander": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "dev": true + }, + "compare-module-exports": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/compare-module-exports/-/compare-module-exports-2.1.0.tgz", + "integrity": "sha512-3Lc0sTIuX1jmY2K2RrXRJOND6KsRTX2D4v3+eu1PDptsuJZVK4LZc852eZa9I+avj0NrUKlTNgqvccNOH6mbGg==", + "dev": true + }, "concat-map": { "version": "0.0.1", "dev": true }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true, + "peer": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==", + "dev": true + }, "convert-source-map": { - "version": "1.8.0", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, - "peer": true, - "requires": { - "safe-buffer": "~5.1.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "dev": true, - "peer": true - } - } + "peer": true + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true }, "core-js-compat": { - "version": "3.28.0", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.35.1.tgz", + "integrity": "sha512-sftHa5qUJY3rs9Zht1WEnmkvXputCyDBczPnr7QDgL8n3qrF3CMXY4VPSYtOLLiOUJcah2WNXREd48iOl6mQIw==", "dev": true, "requires": { - "browserslist": "^4.21.5" + "browserslist": "^4.22.2" } }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, "cosmiconfig": { - "version": "7.0.1", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", "dev": true, - "peer": true, "requires": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -8854,28 +12562,115 @@ "yaml": "^1.10.0" } }, - "cross-spawn": { - "version": "7.0.3", + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-functions-list": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.1.tgz", + "integrity": "sha512-Nj5YcaGgBtuUmn1D7oHqPW0c9iui7xsTsj5lIX8ZgevdfhmjFfKB3r8moHJtNJnctnYXJyYX5I1pp90HM4TPgQ==", + "dev": true, + "peer": true + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "peer": true, "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" } }, "cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, "peer": true }, "damerau-levenshtein": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true, "peer": true }, "debug": { - "version": "4.3.3", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "requires": { "ms": "2.1.2" @@ -8883,13 +12678,15 @@ }, "decamelize": { "version": "1.2.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true }, "decamelize-keys": { - "version": "1.1.0", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "peer": true, "requires": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -8897,55 +12694,103 @@ "dependencies": { "map-obj": { "version": "1.0.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true } } }, "decode-uri-component": { - "version": "0.2.0" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==" }, - "deep-equal": { - "version": "2.2.0", - "dev": true, - "peer": true, - "requires": { - "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" - } + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true }, "deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "peer": true }, + "defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-data-property": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", + "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, "define-properties": { - "version": "1.2.0", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "peer": true + }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "peer": true, "requires": { "path-type": "^4.0.0" } @@ -8959,156 +12804,227 @@ } }, "dom-serializer": { - "version": "0.2.2", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "peer": true, "requires": { "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", "entities": "^2.0.0" }, "dependencies": { - "domelementtype": { - "version": "2.2.0", - "dev": true, - "peer": true - }, "entities": { "version": "2.2.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true } } }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, "domelementtype": { - "version": "1.3.1", - "dev": true, - "peer": true + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true }, "domhandler": { - "version": "2.4.2", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "peer": true, "requires": { - "domelementtype": "1" + "domelementtype": "^2.2.0" } }, "domutils": { - "version": "1.7.0", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "peer": true, "requires": { - "dom-serializer": "0", - "domelementtype": "1" + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "electron-to-chromium": { - "version": "1.4.301", + "version": "1.4.659", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.659.tgz", + "integrity": "sha512-sRJ3nV3HowrYpBtPF9bASQV7OW49IgZC01Xiq43WfSE3RTCkK0/JidoCmR73Hyc1mN+l/H4Yqx0eNiomvExFZg==", "dev": true }, "element-matches-polyfill": { "version": "1.0.0" }, - "emoji-regex": { - "version": "8.0.0", - "dev": true, - "peer": true - }, - "enquirer": { - "version": "2.3.6", + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, - "peer": true, "requires": { - "ansi-colors": "^4.1.1" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, "entities": { - "version": "1.1.2", - "dev": true, - "peer": true + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-3.0.1.tgz", + "integrity": "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q==", + "dev": true }, "error-ex": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, - "peer": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { - "version": "1.21.1", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, + "peer": true, "requires": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" } }, - "es-get-iterator": { - "version": "1.1.3", + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true, + "peer": true + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", "dev": true, "peer": true, "requires": { + "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "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" + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" } }, "es-set-tostringtag": { - "version": "2.0.1", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, + "peer": true, "requires": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" } }, "es-shim-unscopables": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "peer": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "es-to-primitive": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "peer": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -9116,7 +13032,9 @@ } }, "escalade": { - "version": "3.1.1", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true }, "escape-string-regexp": { @@ -9125,73 +13043,206 @@ "peer": true }, "eslint": { - "version": "7.32.0", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "peer": true, "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", + "@humanwhocodes/config-array": "^0.11.13", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", - "debug": "^4.0.1", + "debug": "^4.3.2", "doctrine": "^3.0.0", - "enquirer": "^2.3.5", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", + "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.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "peer": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "peer": true + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "peer": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "peer": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "peer": true, + "requires": {} + }, + "eslint-config-airbnb": { + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", + "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", + "dev": true, + "peer": true, + "requires": { + "eslint-config-airbnb-base": "^15.0.0", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5" + } + }, + "eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "peer": true, + "requires": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true + } } }, "eslint-config-prettier": { - "version": "8.3.0", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "peer": true, "requires": {} }, "eslint-config-standard": { - "version": "11.0.0", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, + "peer": true, "requires": {} }, "eslint-import-resolver-node": { - "version": "0.3.6", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "peer": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "peer": true, "requires": { "ms": "^2.1.1" } @@ -9199,16 +13250,21 @@ } }, "eslint-module-utils": { - "version": "2.7.3", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", "dev": true, + "peer": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "peer": true, "requires": { "ms": "^2.1.1" } @@ -9217,6 +13273,8 @@ }, "eslint-plugin-es": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, "peer": true, "requires": { @@ -9224,82 +13282,129 @@ "regexpp": "^3.0.0" } }, + "eslint-plugin-es-x": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", + "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" + } + }, "eslint-plugin-import": { - "version": "2.25.4", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "peer": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.2", - "has": "^1.0.3", - "is-core-module": "^2.8.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.5", - "resolve": "^1.20.0", - "tsconfig-paths": "^3.12.0" + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "dependencies": { "debug": { - "version": "2.6.9", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "peer": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { "version": "2.1.0", "dev": true, + "peer": true, "requires": { "esutils": "^2.0.2" } }, - "ms": { - "version": "2.0.0", - "dev": true + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true } } }, "eslint-plugin-jsx-a11y": { - "version": "6.7.1", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "dev": true, "peer": true, "requires": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "dependencies": { - "emoji-regex": { - "version": "9.2.2", - "dev": true, - "peer": true - }, - "semver": { - "version": "6.3.0", + "axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, "peer": true } } }, + "eslint-plugin-n": { + "version": "16.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.6.2.tgz", + "integrity": "sha512-6TyDmZ1HXoFQXnhCTUjVFULReoBPOAjpuiKELMkeP40yffI/1ZRO+d9ug/VC6fqISo2WkuIBk3cvuRPALaWlOQ==", + "dev": true, + "peer": true, + "requires": { + "@eslint-community/eslint-utils": "^4.4.0", + "builtins": "^5.0.1", + "eslint-plugin-es-x": "^7.5.0", + "get-tsconfig": "^4.7.0", + "globals": "^13.24.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", + "minimatch": "^3.1.2", + "resolve": "^1.22.2", + "semver": "^7.5.3" + } + }, "eslint-plugin-node": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", "dev": true, "peer": true, "requires": { @@ -9311,25 +13416,24 @@ "semver": "^6.1.0" }, "dependencies": { - "ignore": { - "version": "5.2.0", - "dev": true, - "peer": true - }, "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } } }, "eslint-plugin-promise": { - "version": "3.8.0", + "version": "6.1.1", "dev": true, "peer": true }, "eslint-plugin-react": { - "version": "7.32.2", + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "peer": true, "requires": { @@ -9337,6 +13441,7 @@ "array.prototype.flatmap": "^1.3.1", "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", @@ -9346,12 +13451,14 @@ "object.values": "^1.1.6", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", + "semver": "^6.3.1", "string.prototype.matchall": "^4.0.8" }, "dependencies": { "doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "peer": true, "requires": { @@ -9360,33 +13467,44 @@ }, "estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "peer": true }, "resolve": { - "version": "2.0.0-next.4", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "peer": true, "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { - "version": "6.3.0", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "peer": true } } }, - "eslint-plugin-standard": { - "version": "3.1.0", + "eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, + "peer": true, "requires": {} }, "eslint-scope": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -9395,6 +13513,8 @@ }, "eslint-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "peer": true, "requires": { @@ -9403,6 +13523,8 @@ "dependencies": { "eslint-visitor-keys": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, "peer": true } @@ -9410,20 +13532,26 @@ }, "eslint-visitor-keys": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true }, "espree": { - "version": "7.3.1", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "peer": true, "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "dependencies": { "eslint-visitor-keys": { - "version": "1.3.0", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "peer": true } @@ -9431,11 +13559,14 @@ }, "esprima": { "version": "4.0.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true }, "esquery": { - "version": "1.4.0", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "peer": true, "requires": { @@ -9444,6 +13575,8 @@ "dependencies": { "estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "peer": true } @@ -9464,6 +13597,8 @@ }, "estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, "esutils": { @@ -9473,28 +13608,50 @@ "europa": { "version": "4.0.0" }, - "execall": { - "version": "2.0.0", + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, - "peer": true, "requires": { - "clone-regexp": "^2.1.0" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "extend": { - "version": "3.0.2", + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, - "peer": true + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } }, "fast-deep-equal": { "version": "3.1.3", "dev": true, "peer": true }, + "fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "peer": true + }, "fast-glob": { - "version": "3.2.11", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "peer": true, "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -9505,27 +13662,49 @@ }, "fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "peer": true }, "fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "peer": true }, "fastest-levenshtein": { - "version": "1.0.12", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, "peer": true }, "fastq": { "version": "1.13.0", "dev": true, - "peer": true, "requires": { "reusify": "^1.0.4" } }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + }, + "dependencies": { + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + } + } + }, "file-entry-cache": { "version": "6.0.1", "dev": true, @@ -9536,40 +13715,70 @@ }, "fill-range": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, - "peer": true, "requires": { "to-regex-range": "^5.0.1" } }, "find-up": { - "version": "2.1.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, "flat-cache": { - "version": "3.0.4", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "peer": true, "requires": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, "flatted": { - "version": "3.2.5", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true, "peer": true }, "for-each": { "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "peer": true, "requires": { "is-callable": "^1.1.3" } }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, "form-serialize": { "version": "0.7.2" }, @@ -9591,63 +13800,84 @@ }, "fs.realpath": { "version": "1.0.0", - "dev": true, - "peer": true + "dev": true }, "function-bind": { - "version": "1.1.1", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, "function.prototype.name": { - "version": "1.1.5", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, - "functional-red-black-tree": { - "version": "1.0.1", - "dev": true, - "peer": true - }, "functions-have-names": { "version": "1.2.3", - "dev": true + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "peer": true }, "gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "peer": true }, "get-intrinsic": { - "version": "1.2.0", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-stdin": { - "version": "8.0.0", - "dev": true, - "peer": true + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true }, "get-symbol-description": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.1.tgz", + "integrity": "sha512-KmuibvwbWaM4BHcBRYwJfZ1JxyJeBwB8ct9YYu67SvYdbEIlcQ2e56dHxfbobqW38GXo8/zDFqJeGtHiVbWyQw==", "dev": true, + "peer": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0" + } + }, + "get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "peer": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" } }, "glob": { "version": "7.2.0", "dev": true, - "peer": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9659,24 +13889,27 @@ }, "glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "peer": true, "requires": { "is-glob": "^4.0.1" } }, "global-modules": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, - "peer": true, "requires": { "global-prefix": "^3.0.0" } }, "global-prefix": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "peer": true, "requires": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -9685,8 +13918,9 @@ "dependencies": { "which": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "peer": true, "requires": { "isexe": "^2.0.0" } @@ -9694,7 +13928,9 @@ } }, "globals": { - "version": "13.12.1", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "peer": true, "requires": { @@ -9703,15 +13939,19 @@ }, "globalthis": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "peer": true, "requires": { "define-properties": "^1.1.3" } }, "globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "peer": true, "requires": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -9719,68 +13959,65 @@ "ignore": "^5.2.0", "merge2": "^1.4.1", "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.2.0", - "dev": true, - "peer": true - } } }, "globjoin": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", "dev": true, "peer": true }, - "gonzales-pe": { - "version": "4.3.0", - "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.5" - } - }, "google-protobuf": { "version": "3.21.2", "dev": true }, "gopd": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "requires": { "get-intrinsic": "^1.1.3" } }, - "hard-rejection": { - "version": "2.1.0", + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "peer": true }, - "has": { - "version": "1.0.3", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true }, "has-bigints": { "version": "1.0.2", - "dev": true + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "peer": true }, "has-flag": { "version": "4.0.0", "dev": true }, "has-property-descriptors": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "requires": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" } }, "has-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true }, "has-symbols": { @@ -9788,45 +14025,113 @@ "dev": true }, "has-tostringtag": { - "version": "1.0.0", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "peer": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" } }, "highlight.js": { "version": "11.4.0" }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "peer": true, "requires": { "lru-cache": "^6.0.0" } }, "html-tags": { - "version": "3.1.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, "peer": true }, "htmlparser2": { - "version": "3.10.1", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-7.2.0.tgz", + "integrity": "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog==", "dev": true, - "peer": true, "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" + "domelementtype": "^2.0.1", + "domhandler": "^4.2.2", + "domutils": "^2.8.0", + "entities": "^3.0.1" } }, - "ignore": { - "version": "4.0.6", + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, - "peer": true + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true }, "immutable": { "version": "4.2.4", @@ -9835,7 +14140,6 @@ "import-fresh": { "version": "3.3.0", "dev": true, - "peer": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9843,6 +14147,8 @@ }, "import-lazy": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, "peer": true }, @@ -9853,13 +14159,13 @@ }, "indent-string": { "version": "4.0.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true }, "inflight": { "version": "1.0.6", "dev": true, - "peer": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -9870,12 +14176,36 @@ }, "ini": { "version": "1.3.8", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "inline-attachment": { "version": "2.0.3" }, + "inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + } + }, "inscrybmde": { "version": "1.11.6", "requires": { @@ -9892,102 +14222,130 @@ } }, "internal-slot": { - "version": "1.0.5", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "peer": true, "requires": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, - "is-alphabetical": { - "version": "1.0.4", - "dev": true, - "peer": true - }, - "is-alphanumerical": { - "version": "1.0.4", + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "peer": true, "requires": { - "is-alphabetical": "^1.0.0", - "is-decimal": "^1.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" } }, - "is-arguments": { - "version": "1.1.1", + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, "peer": true, "requires": { - "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-array-buffer": { - "version": "3.0.1", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" - } - }, - "is-arrayish": { - "version": "0.2.1", - "dev": true, - "peer": true - }, "is-bigint": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, + "peer": true, "requires": { "has-bigints": "^1.0.1" } }, "is-boolean-object": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "2.0.5", + "is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, - "peer": true + "peer": true, + "requires": { + "builtin-modules": "^3.3.0" + } }, "is-callable": { "version": "1.2.7", - "dev": true + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "peer": true }, "is-core-module": { - "version": "2.11.0", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-date-object": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, + "peer": true, "requires": { "has-tostringtag": "^1.0.0" } }, - "is-decimal": { - "version": "1.0.4", - "dev": true, - "peer": true - }, "is-extglob": { "version": "2.1.1", "dev": true }, + "is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, - "peer": true + "peer": true, + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-glob": { "version": "4.0.3", @@ -9996,58 +14354,86 @@ "is-extglob": "^2.1.1" } }, - "is-hexadecimal": { - "version": "1.0.4", - "dev": true, - "peer": true + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true }, "is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, "peer": true }, "is-negative-zero": { "version": "2.0.2", - "dev": true + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "peer": true }, "is-number": { "version": "7.0.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-number-object": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, + "peer": true, "requires": { "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true + }, "is-plain-obj": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, "peer": true }, "is-regex": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" } }, - "is-regexp": { - "version": "2.1.0", - "dev": true, - "peer": true - }, "is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true, "peer": true }, "is-shared-array-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2" } @@ -10055,52 +14441,58 @@ "is-string": { "version": "1.0.7", "dev": true, + "peer": true, "requires": { "has-tostringtag": "^1.0.0" } }, "is-symbol": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, + "peer": true, "requires": { "has-symbols": "^1.0.2" } }, "is-typed-array": { - "version": "1.1.10", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "peer": true, "requires": { - "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" + "which-typed-array": "^1.1.14" } }, - "is-typedarray": { - "version": "1.0.0", - "dev": true, - "peer": true - }, "is-unicode-supported": { "version": "0.1.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true }, "is-weakmap": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true, "peer": true }, "is-weakref": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2" } }, "is-weakset": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, "peer": true, "requires": { @@ -10110,19 +14502,46 @@ }, "isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "peer": true }, "isexe": { "version": "2.0.0", + "dev": true + }, + "iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, - "peer": true + "peer": true, + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } }, "jquery": { "version": "3.6.0" }, "jquery-ui": { - "version": "1.13.0", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", + "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", "requires": { "jquery": ">=1.8.0 <4.0.0" } @@ -10132,28 +14551,43 @@ }, "js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { - "version": "3.14.1", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "peer": true, "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" } }, "jsesc": { "version": "2.5.2", - "dev": true + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "peer": true }, - "json-parse-even-better-errors": { - "version": "2.3.1", + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "peer": true }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "peer": true }, @@ -10163,12 +14597,17 @@ "peer": true }, "json5": { - "version": "2.2.0", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, - "peer": true, - "requires": { - "minimist": "^1.2.5" - } + "peer": true + }, + "jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true }, "jsrender": { "version": "v1.0.11", @@ -10177,35 +14616,62 @@ } }, "jsx-ast-utils": { - "version": "3.3.3", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "peer": true, + "requires": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + } + }, + "kebabcase": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/kebabcase/-/kebabcase-1.0.1.tgz", + "integrity": "sha512-YSP7DnNnodPG0nkHGEICNx5vUl/lOKkryQlILRqRFmcjWFNomEvPhJlpFvE7sop9t2EDfthZssx3nvwTx5ty0w==", + "dev": true + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "peer": true, "requires": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" + "json-buffer": "3.0.1" } }, "kind-of": { "version": "6.0.3", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true }, "known-css-properties": { - "version": "0.21.0", + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.29.0.tgz", + "integrity": "sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==", "dev": true, "peer": true }, "language-subtag-registry": { "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true, "peer": true }, "language-tags": { - "version": "1.0.5", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "peer": true, "requires": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" } }, "leaflet.featuregroup.subgroup": { @@ -10213,6 +14679,8 @@ }, "levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "peer": true, "requires": { @@ -10222,24 +14690,50 @@ }, "lines-and-columns": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "linkify-it": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", + "integrity": "sha512-C7bfi1UZmoj8+PQx22XyeXCuBlokoyWQL5pWSP+EI6nzRylyThouddufc2c1NDIcP9k5agmN9fLpA7VNJfIiqw==", "dev": true, - "peer": true + "requires": { + "uc.micro": "^1.0.1" + } }, "locate-path": { - "version": "2.0.0", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { "version": "4.17.21", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==", + "dev": true }, "lodash.debounce": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", "dev": true }, "lodash.merge": { @@ -10247,27 +14741,58 @@ "dev": true, "peer": true }, + "lodash.pull": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.pull/-/lodash.pull-4.1.0.tgz", + "integrity": "sha512-EM7CVTzXfkTyusQdN7mgGPh2ZfkKfQ5lA9U+X7NNDeEgKEaO65dB5Kh8+Ppap0X1wQOndPjKP/VVTis7hFvkzg==", + "dev": true + }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha512-j7MJE+TuT51q9ggt4fSgVqro163BEFjAt3u97IqU+JA2DkWl80nFTrowzLpZ/BnpN7rrl0JA/593NAdd8p/scQ==", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, "lodash.truncate": { "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, "peer": true }, "log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, - "peer": true, "requires": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" } }, - "longest-streak": { - "version": "2.0.4", - "dev": true, - "peer": true - }, "loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "peer": true, "requires": { @@ -10277,15 +14802,100 @@ "lru-cache": { "version": "6.0.0", "dev": true, - "peer": true, "requires": { "yallist": "^4.0.0" } }, "map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "dev": true + }, + "markdown-it": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-13.0.1.tgz", + "integrity": "sha512-lTlxriVoy2criHP0JKRhO2VDG9c2ypWCsT237eDiLqi09rmbKoUetyGHq2uOIRoRS//kfoJckS0eUzzkDR+k2Q==", "dev": true, - "peer": true + "requires": { + "argparse": "^2.0.1", + "entities": "~3.0.1", + "linkify-it": "^4.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, + "markdownlint": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.29.0.tgz", + "integrity": "sha512-ASAzqpODstu/Qsk0xW5BPgWnK/qjpBQ4e7IpsSvvFXcfYIjanLTdwFRJK1SIEEh0fGSMKXcJf/qhaZYHyME0wA==", + "dev": true, + "requires": { + "markdown-it": "13.0.1", + "markdownlint-micromark": "0.1.5" + } + }, + "markdownlint-cli": { + "version": "0.35.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.35.0.tgz", + "integrity": "sha512-lVIIIV1MrUtjoocgDqXLxUCxlRbn7Ve8rsWppfwciUNwLlNS28AhNiyQ3PU7jjj4Qvj+rWTTvwkqg7AcdG988g==", + "dev": true, + "requires": { + "commander": "~11.0.0", + "get-stdin": "~9.0.0", + "glob": "~10.2.7", + "ignore": "~5.2.4", + "js-yaml": "^4.1.0", + "jsonc-parser": "~3.2.0", + "markdownlint": "~0.29.0", + "minimatch": "~9.0.1", + "run-con": "~1.2.11" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "10.2.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", + "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "dev": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2", + "path-scurry": "^1.7.0" + } + }, + "ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "dev": true + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "markdownlint-micromark": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.5.tgz", + "integrity": "sha512-HvofNU4QCvfUCWnocQP1IAWaqop5wpWrB0mKB6SSh0fcpV0PdmQNS6tdUuFew1utpYlUvYYzz84oDkrD76GB9A==", + "dev": true }, "marked": { "version": "5.1.2", @@ -10294,43 +14904,40 @@ }, "mathml-tag-names": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, "peer": true }, - "mdast-util-from-markdown": { - "version": "0.8.5", - "dev": true, - "peer": true, - "requires": { - "@types/mdast": "^3.0.0", - "mdast-util-to-string": "^2.0.0", - "micromark": "~2.11.0", - "parse-entities": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" - } - }, - "mdast-util-to-markdown": { - "version": "0.6.5", + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, - "peer": true, "requires": { - "@types/unist": "^2.0.0", - "longest-streak": "^2.0.0", - "mdast-util-to-string": "^2.0.0", - "parse-entities": "^2.0.0", - "repeat-string": "^1.0.0", - "zwitch": "^1.0.0" + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "mdast-util-to-string": { - "version": "2.0.0", + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", "dev": true, "peer": true }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, "meow": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, - "peer": true, "requires": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -10348,38 +14955,69 @@ "dependencies": { "type-fest": { "version": "0.18.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "dev": true } } }, "merge2": { "version": "1.4.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true }, - "micromark": { - "version": "2.11.4", + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dev": true, - "peer": true, "requires": { - "debug": "^4.0.0", - "parse-entities": "^2.0.0" + "braces": "^3.0.2", + "picomatch": "^2.3.1" } }, - "micromatch": { - "version": "4.0.4", + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "dev": true, - "peer": true, "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "min-indent": { "version": "1.0.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true }, "minimatch": { "version": "3.1.2", @@ -10389,36 +15027,147 @@ } }, "minimist": { - "version": "1.2.5", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "peer": true, "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", "kind-of": "^6.0.3" } }, - "ms": { - "version": "2.1.2", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "dev": true, - "peer": true - }, + "minipass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", + "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "peer": true + }, + "natural-compare": { + "version": "1.4.0", + "dev": true, + "peer": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "node-releases": { - "version": "2.0.10", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "peer": true, "requires": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -10426,18 +15175,10 @@ "validate-npm-package-license": "^3.0.1" } }, - "normalize-range": { - "version": "0.1.2", - "dev": true, - "peer": true - }, - "normalize-selector": { - "version": "0.2.0", - "dev": true, - "peer": true - }, - "num2fraction": { - "version": "1.2.2", + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "peer": true }, @@ -10445,18 +15186,11 @@ "version": "4.1.1" }, "object-inspect": { - "version": "1.12.3", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, - "object-is": { - "version": "1.1.5", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, "object-keys": { "version": "1.1.1", "dev": true @@ -10472,107 +15206,181 @@ } }, "object.entries": { - "version": "1.1.6", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dev": true, "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.fromentries": { - "version": "2.0.6", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, + "object.groupby": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.2.tgz", + "integrity": "sha512-bzBq58S+x+uo0VjurFT0UktpKHOZmv4/xePiOA1nbB9pMqpGK7rUPNgf+1YC+7mE+0HzhTMqNUuCqvKhj6FnBw==", + "dev": true, + "peer": true, + "requires": { + "array.prototype.filter": "^1.0.3", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0" } }, "object.hasown": { - "version": "1.1.2", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, "peer": true, "requires": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "object.values": { - "version": "1.1.6", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "once": { "version": "1.4.0", "dev": true, - "peer": true, "requires": { "wrappy": "1" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optionator": { - "version": "0.9.1", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "peer": true, "requires": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" } }, + "ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, "p-limit": { - "version": "1.3.0", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.2.0" } }, "p-try": { - "version": "1.0.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parent-module": { "version": "1.0.1", "dev": true, - "peer": true, "requires": { "callsites": "^3.0.0" } }, - "parse-entities": { - "version": "2.0.0", + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", "dev": true, - "peer": true, "requires": { - "character-entities": "^1.0.0", - "character-entities-legacy": "^1.0.0", - "character-reference-invalid": "^1.0.0", - "is-alphanumerical": "^1.0.0", - "is-decimal": "^1.0.0", - "is-hexadecimal": "^1.0.0" + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-json": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, - "peer": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -10580,108 +15388,117 @@ "lines-and-columns": "^1.1.6" } }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, "path-exists": { - "version": "3.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, "path-is-absolute": { "version": "1.0.1", - "dev": true, - "peer": true + "dev": true }, "path-key": { "version": "3.1.1", - "dev": true, - "peer": true + "dev": true }, "path-parse": { "version": "1.0.7", "dev": true }, - "path-type": { - "version": "4.0.0", - "dev": true, - "peer": true - }, - "picocolors": { - "version": "0.2.1", - "dev": true, - "peer": true - }, - "picomatch": { - "version": "2.3.1", - "dev": true, - "peer": true - }, - "postcss": { - "version": "7.0.39", + "path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, - "peer": true, "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { - "source-map": { - "version": "0.6.1", - "dev": true, - "peer": true + "lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true } } }, - "postcss-html": { - "version": "0.36.0", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, - "peer": true, "requires": { - "htmlparser2": "^3.10.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "postcss-less": { - "version": "3.1.4", + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "postcss": { + "version": "8.4.34", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.34.tgz", + "integrity": "sha512-4eLTO36woPSocqZ1zIrFD2K1v6wH7pY1uBh0JIM2KKfrVtGvPFiAku6aNOP0W1Wr9qwnaCsF0Z+CrVnryB2A8Q==", "dev": true, "peer": true, "requires": { - "postcss": "^7.0.14" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" } }, - "postcss-media-query-parser": { - "version": "0.2.3", - "dev": true, - "peer": true - }, "postcss-resolve-nested-selector": { "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", "dev": true, "peer": true }, "postcss-safe-parser": { - "version": "4.0.2", - "dev": true, - "peer": true, - "requires": { - "postcss": "^7.0.26" - } - }, - "postcss-sass": { - "version": "0.4.4", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, "peer": true, - "requires": { - "gonzales-pe": "^4.3.0", - "postcss": "^7.0.21" - } + "requires": {} }, "postcss-scss": { - "version": "2.1.1", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.9.tgz", + "integrity": "sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==", "dev": true, - "peer": true, - "requires": { - "postcss": "^7.0.6" - } + "requires": {} }, "postcss-selector-parser": { - "version": "6.0.9", + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", "dev": true, "peer": true, "requires": { @@ -10689,29 +15506,53 @@ "util-deprecate": "^1.0.2" } }, - "postcss-syntax": { - "version": "0.36.2", - "dev": true, - "peer": true, - "requires": {} - }, "postcss-value-parser": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", "dev": true, "peer": true }, "prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "peer": true }, - "progress": { - "version": "2.0.3", + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "peer": true }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "peer": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, "prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "peer": true, "requires": { @@ -10720,11 +15561,42 @@ "react-is": "^16.13.1" } }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, "punycode": { "version": "2.1.1", "dev": true, "peer": true }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, "query-string": { "version": "5.1.1", "requires": { @@ -10745,25 +15617,53 @@ } } }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "dev": true + }, "queue-microtask": { "version": "1.2.3", - "dev": true, - "peer": true + "dev": true }, "quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "peer": true + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } }, "react-is": { "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, "peer": true }, "read-pkg": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, - "peer": true, "requires": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -10773,13 +15673,15 @@ "dependencies": { "hosted-git-info": { "version": "2.8.9", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "peer": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -10788,74 +15690,35 @@ } }, "semver": { - "version": "5.7.1", - "dev": true, - "peer": true + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true }, "type-fest": { "version": "0.6.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true } } }, "read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "peer": true, "requires": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", "type-fest": "^0.8.1" }, "dependencies": { - "find-up": { - "version": "4.1.0", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "dev": true, - "peer": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "dev": true, - "peer": true - }, - "path-exists": { - "version": "4.0.0", - "dev": true, - "peer": true - }, "type-fest": { "version": "0.8.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true } } }, @@ -10869,51 +15732,89 @@ }, "redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "peer": true, "requires": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" } }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true + }, + "reflect.getprototypeof": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.5.tgz", + "integrity": "sha512-62wgfC8dJWrmxv44CA36pLDnP6KKl3Vhxb7PL+8+qrrFMMoJij4vgiMP8zV4O8+CBMXY1mHxI5fITGHXFHVmQQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.0.0", + "get-intrinsic": "^1.2.3", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, "regenerate": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", "dev": true }, "regenerate-unicode-properties": { - "version": "10.1.0", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dev": true, "requires": { "regenerate": "^1.4.2" } }, "regenerator-runtime": { - "version": "0.13.11", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "regenerator-transform": { - "version": "0.15.1", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, "requires": { "@babel/runtime": "^7.8.4" } }, "regexp.prototype.flags": { - "version": "1.4.3", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, "regexpp": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "peer": true }, "regexpu-core": { - "version": "5.3.1", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", "dev": true, "requires": { "@babel/regjsgen": "^0.8.0", @@ -10926,6 +15827,8 @@ }, "regjsparser": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", "dev": true, "requires": { "jsesc": "~0.5.0" @@ -10933,64 +15836,70 @@ "dependencies": { "jsesc": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", "dev": true } } }, - "remark": { - "version": "13.0.0", - "dev": true, - "peer": true, - "requires": { - "remark-parse": "^9.0.0", - "remark-stringify": "^9.0.0", - "unified": "^9.1.0" - } - }, - "remark-parse": { - "version": "9.0.0", - "dev": true, - "peer": true, - "requires": { - "mdast-util-from-markdown": "^0.8.0" - } - }, - "remark-stringify": { - "version": "9.0.1", - "dev": true, - "peer": true, - "requires": { - "mdast-util-to-markdown": "^0.6.0" - } - }, - "repeat-string": { - "version": "1.6.1", - "dev": true, - "peer": true - }, "require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "peer": true }, "resolve": { - "version": "1.22.0", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, "resolve-from": { "version": "4.0.0", + "dev": true + }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "peer": true }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, "reusify": { "version": "1.0.4", + "dev": true + }, + "rewiremock": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.14.5.tgz", + "integrity": "sha512-MdPutvaUd+kKVz/lcEz6N6337s4PxRUR5vhphIp2/TJRgfXIckomIkCsIAbwB53MjiSLwi7KBMdQ9lPWE5WpYA==", "dev": true, - "peer": true + "requires": { + "babel-runtime": "^6.26.0", + "compare-module-exports": "^2.1.0", + "lodash.some": "^4.6.0", + "lodash.template": "^4.4.0", + "node-libs-browser": "^2.1.0", + "path-parse": "^1.0.5", + "wipe-node-cache": "^2.1.2", + "wipe-webpack-cache": "^2.1.0" + } }, "rimraf": { "version": "3.0.2", @@ -11000,10 +15909,45 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-con": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.2.12.tgz", + "integrity": "sha512-5257ILMYIF4RztL9uoZ7V9Q97zHtNHn5bN3NobeAnzB1P3ASLgg8qocM2u+R18ttp+VEM78N2LK8XcNVtnSRrg==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~3.0.0", + "minimist": "^1.2.8", + "strip-json-comments": "~3.1.1" + }, + "dependencies": { + "ini": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.1.tgz", + "integrity": "sha512-it4HyVAUTKBc6m8e1iXWvXSTdndF7HbdN713+kvLrymxTaU4AUBWrJ4vEooP+V7fexnVD3LKcBshjGGPefSMUQ==", + "dev": true + } + } + }, "run-parallel": { "version": "1.2.0", "dev": true, - "peer": true, "requires": { "queue-microtask": "^1.2.2" } @@ -11015,18 +15959,40 @@ "tslib": "^2.1.0" } }, + "safe-array-concat": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + } + }, "safe-buffer": { "version": "5.2.1" }, "safe-regex-test": { - "version": "1.0.0", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "peer": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "sass-embedded": { "version": "1.57.1", "dev": true, @@ -11064,47 +16030,95 @@ "version": "4.1.0-rc.0" }, "semver": { - "version": "7.3.5", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, - "peer": true, "requires": { "lru-cache": "^6.0.0" } }, + "set-function-length": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "dev": true, + "requires": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + } + }, + "set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "peer": true, + "requires": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "2.0.0", "dev": true, - "peer": true, "requires": { "shebang-regex": "^3.0.0" } }, "shebang-regex": { "version": "3.0.0", - "dev": true, - "peer": true + "dev": true }, "side-channel": { - "version": "1.0.4", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { "version": "3.0.7", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "slash": { "version": "3.0.0", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true }, "slice-ansi": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "peer": true, "requires": { @@ -11113,50 +16127,148 @@ "is-fullwidth-code-point": "^3.0.0" } }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "peer": true + }, "spdx-correct": { - "version": "3.1.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "peer": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "peer": true + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true }, "spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "peer": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { - "version": "3.0.11", - "dev": true, - "peer": true - }, - "specificity": { - "version": "0.4.1", - "dev": true, - "peer": true + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true }, "sprintf-js": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "dev": true, - "peer": true + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } }, - "stop-iteration-iterator": { - "version": "1.0.0", + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", "dev": true, - "peer": true, "requires": { - "internal-slot": "^1.0.4" + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "strict-uri-encode": { @@ -11170,171 +16282,435 @@ }, "string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } + } + }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "peer": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + } } }, "string.prototype.matchall": { - "version": "4.0.8", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", "side-channel": "^1.0.4" } }, + "string.prototype.trim": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + } + }, "string.prototype.trimend": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.6", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "strip-ansi": { "version": "6.0.1", "dev": true, - "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "requires": { "ansi-regex": "^5.0.1" } }, "strip-bom": { "version": "3.0.0", - "dev": true + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "peer": true }, "strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "peer": true, "requires": { "min-indent": "^1.0.0" } }, "strip-json-comments": { "version": "3.1.1", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, "style-search": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", "dev": true, "peer": true }, "stylelint": { - "version": "13.11.0", - "dev": true, - "peer": true, - "requires": { - "@stylelint/postcss-css-in-js": "^0.37.2", - "@stylelint/postcss-markdown": "^0.36.2", - "autoprefixer": "^9.8.6", - "balanced-match": "^1.0.0", - "chalk": "^4.1.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.3.1", - "execall": "^2.0.0", - "fast-glob": "^3.2.5", - "fastest-levenshtein": "^1.0.12", - "file-entry-cache": "^6.0.0", - "get-stdin": "^8.0.0", + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.11.0.tgz", + "integrity": "sha512-78O4c6IswZ9TzpcIiQJIN49K3qNoXTM8zEJzhaTE/xRTCZswaovSEVIa/uwbOltZrk16X4jAxjaOhzz/hTm1Kw==", + "dev": true, + "peer": true, + "requires": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.1", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^7.0.0", "global-modules": "^2.0.0", - "globby": "^11.0.2", + "globby": "^11.1.0", "globjoin": "^0.1.4", - "html-tags": "^3.1.0", - "ignore": "^5.1.8", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", "import-lazy": "^4.0.0", "imurmurhash": "^0.1.4", - "known-css-properties": "^0.21.0", - "lodash": "^4.17.20", - "log-symbols": "^4.0.0", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.29.0", "mathml-tag-names": "^2.1.3", - "meow": "^9.0.0", - "micromatch": "^4.0.2", - "normalize-selector": "^0.2.0", - "postcss": "^7.0.35", - "postcss-html": "^0.36.0", - "postcss-less": "^3.1.4", - "postcss-media-query-parser": "^0.2.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.28", "postcss-resolve-nested-selector": "^0.1.1", - "postcss-safe-parser": "^4.0.2", - "postcss-sass": "^0.4.4", - "postcss-scss": "^2.1.1", - "postcss-selector-parser": "^6.0.4", - "postcss-syntax": "^0.36.2", - "postcss-value-parser": "^4.1.0", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", - "slash": "^3.0.0", - "specificity": "^0.4.1", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", "style-search": "^0.1.0", - "sugarss": "^2.0.0", + "supports-hyperlinks": "^3.0.0", "svg-tags": "^1.0.0", - "table": "^6.0.7", - "v8-compile-cache": "^2.2.0", - "write-file-atomic": "^3.0.3" + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" }, "dependencies": { - "ignore": { - "version": "5.2.0", + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", + "dev": true, + "peer": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "peer": true + }, + "camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dev": true, + "peer": true, + "requires": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + } + }, + "cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "peer": true, + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "dev": true, + "peer": true + }, + "file-entry-cache": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-7.0.2.tgz", + "integrity": "sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==", + "dev": true, + "peer": true, + "requires": { + "flat-cache": "^3.2.0" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "peer": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "peer": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dev": true, + "peer": true, + "requires": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "peer": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "peer": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "peer": true }, + "read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dev": true, + "peer": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + } + }, + "read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dev": true, + "peer": true, + "requires": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + } + }, + "redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dev": true, + "peer": true, + "requires": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + } + }, "resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "peer": true + }, + "strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dev": true, + "peer": true, + "requires": { + "min-indent": "^1.0.1" + } + }, + "trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "dev": true, + "peer": true + }, + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "peer": true } } }, - "sugarss": { - "version": "2.0.0", + "stylelint-prettier": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/stylelint-prettier/-/stylelint-prettier-3.0.0.tgz", + "integrity": "sha512-kIks1xw6np0zElokMT2kP6ar3S4MBoj6vUtPJuND1pFELMpZxVS/0uHPR4HDAVn0WAD3I5oF0IA3qBFxBpMkLg==", "dev": true, "peer": true, "requires": { - "postcss": "^7.0.2" + "prettier-linter-helpers": "^1.0.0" } }, "supports-color": { "version": "7.2.0", "dev": true, - "peer": true, "requires": { "has-flag": "^4.0.0" } }, + "supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "dev": true }, "svg-tags": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==", "dev": true, "peer": true }, "table": { - "version": "6.8.0", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", "dev": true, "peer": true, "requires": { @@ -11346,7 +16722,9 @@ }, "dependencies": { "ajv": { - "version": "8.10.0", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "peer": true, "requires": { @@ -11358,16 +16736,36 @@ }, "json-schema-traverse": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "peer": true } } }, + "table-layout": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.1.tgz", + "integrity": "sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q==", + "dev": true, + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + } + }, "text-table": { "version": "0.2.0", "dev": true, "peer": true }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, "through2": { "version": "3.0.2", "requires": { @@ -11375,41 +16773,70 @@ "readable-stream": "2 || 3" } }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==", + "dev": true + }, "to-fast-properties": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", "dev": true }, "to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "peer": true, "requires": { "is-number": "^7.0.0" } }, "trim-newlines": { "version": "3.0.1", - "dev": true, - "peer": true - }, - "trough": { - "version": "1.0.5", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", + "dev": true }, "tsconfig-paths": { - "version": "3.12.0", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "peer": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", - "minimist": "^1.2.0", + "json5": "^1.0.2", + "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { "json5": { - "version": "1.0.1", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "peer": true, "requires": { "minimist": "^1.2.0" } @@ -11417,11 +16844,21 @@ } }, "tslib": { - "version": "2.5.0", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==", "dev": true }, "type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "peer": true, "requires": { @@ -11430,32 +16867,83 @@ }, "type-fest": { "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, "peer": true }, - "typed-array-length": { - "version": "1.0.4", + "typed-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "dev": true, + "peer": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + } + }, + "typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "peer": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" } }, - "typedarray-to-buffer": { - "version": "3.1.5", + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, "peer": true, "requires": { - "is-typedarray": "^1.0.0" + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" } }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + }, "typo-js": { "version": "1.2.1" }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, "unbox-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "peer": true, "requires": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -11465,10 +16953,14 @@ }, "unicode-canonical-property-names-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", "dev": true }, "unicode-match-property-ecmascript": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, "requires": { "unicode-canonical-property-names-ecmascript": "^2.0.0", @@ -11477,123 +16969,110 @@ }, "unicode-match-property-value-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", "dev": true }, "unicode-property-aliases-ecmascript": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true }, - "unified": { - "version": "9.2.2", - "dev": true, - "peer": true, - "requires": { - "bail": "^1.0.0", - "extend": "^3.0.0", - "is-buffer": "^2.0.0", - "is-plain-obj": "^2.0.0", - "trough": "^1.0.0", - "vfile": "^4.0.0" - }, - "dependencies": { - "is-plain-obj": { - "version": "2.1.0", - "dev": true, - "peer": true - } - } - }, - "unist-util-find-all-after": { - "version": "3.0.2", + "update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "dev": true, - "peer": true, "requires": { - "unist-util-is": "^4.0.0" + "escalade": "^3.1.1", + "picocolors": "^1.0.0" } }, - "unist-util-is": { - "version": "4.1.0", - "dev": true, - "peer": true - }, - "unist-util-stringify-position": { - "version": "2.0.3", + "uri-js": { + "version": "4.4.1", "dev": true, "peer": true, "requires": { - "@types/unist": "^2.0.2" + "punycode": "^2.1.0" } }, - "update-browserslist-db": { - "version": "1.0.10", + "url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "punycode": "^1.4.1", + "qs": "^6.11.2" }, "dependencies": { - "picocolors": { - "version": "1.0.0", + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true } } }, - "uri-js": { - "version": "4.4.1", + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "dev": true, - "peer": true, "requires": { - "punycode": "^2.1.0" + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + } } }, "util-deprecate": { "version": "1.0.2" }, - "v8-compile-cache": { - "version": "2.3.0", - "dev": true, - "peer": true - }, "validate-npm-package-license": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "peer": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, - "vfile": { - "version": "4.2.1", - "dev": true, - "peer": true, - "requires": { - "@types/unist": "^2.0.0", - "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" - } + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true }, - "vfile-message": { - "version": "2.0.4", + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dev": true, - "peer": true, "requires": { - "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "defaults": "^1.0.3" } }, "which": { "version": "2.0.2", "dev": true, - "peer": true, "requires": { "isexe": "^2.0.0" } }, "which-boxed-primitive": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, + "peer": true, "requires": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -11602,8 +17081,31 @@ "is-symbol": "^1.0.3" } }, + "which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "peer": true, + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "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.1", + "which-typed-array": "^1.1.9" + } + }, "which-collection": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, "peer": true, "requires": { @@ -11614,55 +17116,116 @@ } }, "which-typed-array": { - "version": "1.1.9", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dev": true, + "peer": true, "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.1" } }, - "word-wrap": { - "version": "1.2.3", + "wipe-node-cache": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/wipe-node-cache/-/wipe-node-cache-2.1.2.tgz", + "integrity": "sha512-m7NXa8qSxBGMtdQilOu53ctMaIBXy93FOP04EC1Uf4bpsE+r+adfLKwIMIvGbABsznaSNxK/ErD4xXDyY5og9w==", + "dev": true + }, + "wipe-webpack-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wipe-webpack-cache/-/wipe-webpack-cache-2.1.0.tgz", + "integrity": "sha512-OXzQMGpA7MnQQ8AG+uMl5mWR2ezy6fw1+DMHY+wzYP1qkF1jrek87psLBmhZEj+er4efO/GD4R8jXWFierobaA==", "dev": true, - "peer": true + "requires": { + "wipe-node-cache": "^2.1.0" + } + }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } }, "wrappy": { "version": "1.0.2", - "dev": true, - "peer": true + "dev": true }, "write-file-atomic": { - "version": "3.0.3", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", "dev": true, "peer": true, "requires": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "peer": true + } } }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "yallist": { "version": "4.0.0", - "dev": true, - "peer": true + "dev": true }, "yaml": { "version": "1.10.2", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true }, "yargs-parser": { "version": "20.2.9", - "dev": true, - "peer": true + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true }, - "zwitch": { - "version": "1.0.5", + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "peer": true } diff --git a/package.json b/package.json index 7214e7f4d..c48fb19b0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "decidim-module-decidim_awesome", - "version": "0.10.2", + "version": "0.11.0", "description": "Mods and tweaks for Decidim", "main": "index.js", "directories": { @@ -12,7 +12,9 @@ "lint": "eslint -c .eslintrc.json --ext .js app/packs/", "lint-fix": "eslint -c .eslintrc.json --ext .js app/packs/ --fix", "stylelint": "stylelint **/*.scss", - "stylelint-fix": "stylelint **/*.scss --fix" + "stylelint-fix": "stylelint **/*.scss --fix", + "prettier": "prettier --check '**/*.scss'", + "prettify": "prettier --write '**/*.scss'" }, "repository": { "type": "git", @@ -21,35 +23,28 @@ "keywords": [ "decidim" ], - "author": "ivan@platoniq.net", + "author": "ivan@pokecode.net", "license": "AGPL-3.0-or-later", "bugs": { "url": "https://github.com/decidim-ice/decidim-module-decidim_awesome/issues" }, "homepage": "https://github.com/decidim-ice/decidim-module-decidim_awesome#readme", "stylelint": { - "extends": "@decidim/stylelint-config", - "rules": { - "block-opening-brace-space-before": "always" - } - }, + "extends": "@decidim/stylelint-config" + }, + "prettier": "@decidim/prettier-config", "devDependencies": { - "@babel/eslint-parser": "^7.19.1", - "@babel/plugin-proposal-class-properties": "^7.18.6", - "@babel/plugin-proposal-private-methods": "^7.18.6", - "@babel/plugin-proposal-private-property-in-object": "^7.21.11", - "@babel/plugin-transform-classes": "^7.20.7", - "@babel/plugin-transform-regenerator": "^7.20.5", - "@babel/plugin-transform-runtime": "^7.19.6", - "@babel/preset-env": "^7.20.2", - "@babel/preset-react": "^7.18.6", - "@decidim/dev": "0.27.4", - "@decidim/eslint-config": "0.27.4", - "@decidim/stylelint-config": "0.27.4", - "eslint-config-prettier": "^8.2.0", - "eslint-config-standard": "^11.0.0", - "eslint-plugin-import": "^2.22.0", - "eslint-plugin-standard": "^3.1.0", + "@babel/eslint-parser": "^7.23.10", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@decidim/dev": "0.28.0", + "@decidim/eslint-config": "0.28.0", + "@decidim/stylelint-config": "0.28.0", + "@decidim/prettier-config": "0.28.0", + "postcss-scss": "^4.0.9", "sass-embedded": "~1.57.1" }, "dependencies": { diff --git a/spec/awesome_summary_spec.rb b/spec/awesome_summary_spec.rb index f1f4b4ba5..98deb218c 100644 --- a/spec/awesome_summary_spec.rb +++ b/spec/awesome_summary_spec.rb @@ -6,6 +6,10 @@ # This test is a quick summary of the features available in awesome and a test for them enabled or not shared_examples "with features enabled" do + before do + skip "Review this tests after adapting all features to 0.28" + end + it_behaves_like "registered components", true it_behaves_like "activated concerns", true it_behaves_like "basic rendering", true @@ -13,6 +17,10 @@ end shared_examples "with features disabled" do + before do + skip "Review this tests after adapting all features to 0.28" + end + it_behaves_like "registered components", false it_behaves_like "activated concerns", false it_behaves_like "basic rendering", false @@ -21,29 +29,29 @@ end describe Decidim::DecidimAwesome do - let(:organization) { create :organization } - let(:user) { create :user, :admin, :confirmed, organization: organization } - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: { bar: styles } } - let!(:allow_images_in_proposals) { create(:awesome_config, organization: organization, var: :allow_images_in_proposals, value: true) } - let!(:allow_images_in_small_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_small_editor, value: true) } - let!(:allow_images_in_full_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_full_editor, value: true) } - let!(:use_markdown_editor) { create(:awesome_config, organization: organization, var: :use_markdown_editor, value: true) } - let!(:allow_images_in_markdown_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_markdown_editor, value: true) } - let!(:auto_save_forms) { create(:awesome_config, organization: organization, var: :auto_save_forms, value: true) } - let!(:intergram_for_admins) { create(:awesome_config, organization: organization, var: :intergram_for_admins, value: true) } - let!(:intergram_for_public) { create(:awesome_config, organization: organization, var: :intergram_for_public, value: true) } - let!(:config_public_settings) { create(:awesome_config, organization: organization, var: :intergram_for_public_settings, value: intergram) } - let!(:config_admins_settings) { create(:awesome_config, organization: organization, var: :intergram_for_admins_settings, value: intergram) } - let!(:validate_title_min_length) { create(:awesome_config, organization: organization, var: :validate_title_min_length, value: 10) } - let!(:validate_title_max_caps_percent) { create(:awesome_config, organization: organization, var: :validate_title_max_caps_percent, value: 10) } - let!(:validate_title_max_marks_together) { create(:awesome_config, organization: organization, var: :validate_title_max_marks_together, value: 10) } - let!(:validate_title_start_with_caps) { create(:awesome_config, organization: organization, var: :validate_title_start_with_caps, value: true) } - let!(:validate_body_min_length) { create(:awesome_config, organization: organization, var: :validate_body_min_length, value: 10) } - let!(:validate_body_max_caps_percent) { create(:awesome_config, organization: organization, var: :validate_body_max_caps_percent, value: 10) } - let!(:validate_body_max_marks_together) { create(:awesome_config, organization: organization, var: :validate_body_max_marks_together, value: 10) } - let!(:validate_body_start_with_caps) { create(:awesome_config, organization: organization, var: :validate_body_start_with_caps, value: true) } - let!(:weighted_proposal_voting) { create(:awesome_config, organization: organization, var: :weighted_proposal_voting, value: []) } - let!(:additional_proposal_sortings) { create(:awesome_config, organization: organization, var: :additional_proposal_sortings, value: []) } + let(:organization) { create(:organization) } + let(:user) { create(:user, :admin, :confirmed, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: { bar: styles }) } + let!(:allow_images_in_proposals) { create(:awesome_config, organization:, var: :allow_images_in_proposals, value: true) } + let!(:allow_images_in_small_editor) { create(:awesome_config, organization:, var: :allow_images_in_small_editor, value: true) } + let!(:allow_images_in_full_editor) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: true) } + let!(:use_markdown_editor) { create(:awesome_config, organization:, var: :use_markdown_editor, value: true) } + let!(:allow_images_in_markdown_editor) { create(:awesome_config, organization:, var: :allow_images_in_markdown_editor, value: true) } + let!(:auto_save_forms) { create(:awesome_config, organization:, var: :auto_save_forms, value: true) } + let!(:intergram_for_admins) { create(:awesome_config, organization:, var: :intergram_for_admins, value: true) } + let!(:intergram_for_public) { create(:awesome_config, organization:, var: :intergram_for_public, value: true) } + let!(:config_public_settings) { create(:awesome_config, organization:, var: :intergram_for_public_settings, value: intergram) } + let!(:config_admins_settings) { create(:awesome_config, organization:, var: :intergram_for_admins_settings, value: intergram) } + let!(:validate_title_min_length) { create(:awesome_config, organization:, var: :validate_title_min_length, value: 10) } + let!(:validate_title_max_caps_percent) { create(:awesome_config, organization:, var: :validate_title_max_caps_percent, value: 10) } + let!(:validate_title_max_marks_together) { create(:awesome_config, organization:, var: :validate_title_max_marks_together, value: 10) } + let!(:validate_title_start_with_caps) { create(:awesome_config, organization:, var: :validate_title_start_with_caps, value: true) } + let!(:validate_body_min_length) { create(:awesome_config, organization:, var: :validate_body_min_length, value: 10) } + let!(:validate_body_max_caps_percent) { create(:awesome_config, organization:, var: :validate_body_max_caps_percent, value: 10) } + let!(:validate_body_max_marks_together) { create(:awesome_config, organization:, var: :validate_body_max_marks_together, value: 10) } + let!(:validate_body_start_with_caps) { create(:awesome_config, organization:, var: :validate_body_start_with_caps, value: true) } + let!(:weighted_proposal_voting) { create(:awesome_config, organization:, var: :weighted_proposal_voting, value: []) } + let!(:additional_proposal_sortings) { create(:awesome_config, organization:, var: :additional_proposal_sortings, value: []) } let(:styles) { "body {background: red;}" } let(:intergram) do diff --git a/spec/cells/content_blocks/map_cell_spec.rb b/spec/cells/content_blocks/map_cell_spec.rb index fb3d8d1a0..002e669cd 100644 --- a/spec/cells/content_blocks/map_cell_spec.rb +++ b/spec/cells/content_blocks/map_cell_spec.rb @@ -7,14 +7,14 @@ module Decidim::DecidimAwesome subject { cell(content_block.cell, content_block).call } let(:organization) { create(:organization) } - let(:content_block) { create :content_block, organization: organization, manifest_name: :awesome_map, scope_name: :homepage, settings: settings } + let(:content_block) { create(:content_block, organization:, manifest_name: :awesome_map, scope_name: :homepage, settings:) } let(:settings) { {} } - let!(:participatory_process) { create :participatory_process, organization: organization } - let!(:category) { create :category, participatory_space: participatory_process } - let!(:proposal_component) { create :proposal_component, :with_geocoding_enabled, participatory_space: participatory_process } - let!(:meeting_component) { create :meeting_component, participatory_space: participatory_process } - let!(:proposal) { create :proposal, component: proposal_component } - let!(:meeting) { create :meeting, component: meeting_component } + let!(:participatory_process) { create(:participatory_process, organization:) } + let!(:category) { create(:category, participatory_space: participatory_process) } + let!(:proposal_component) { create(:proposal_component, :with_geocoding_enabled, participatory_space: participatory_process) } + let!(:meeting_component) { create(:meeting_component, participatory_space: participatory_process) } + let!(:proposal) { create(:proposal, component: proposal_component) } + let!(:meeting) { create(:meeting, component: meeting_component) } controller Decidim::PagesController @@ -23,12 +23,12 @@ module Decidim::DecidimAwesome end it "shows the map" do - expect(subject).to have_selector("#awesome-map") + expect(subject).to have_css("#awesome-map") expect(subject).to have_content("window.AwesomeMap.categories") end it "do not show the title" do - expect(subject).not_to have_selector("h3.section-heading") + expect(subject).not_to have_css("h3.section-heading") end it "uses default height" do @@ -69,7 +69,7 @@ module Decidim::DecidimAwesome end it "shows the title" do - expect(subject).to have_selector("h3.section-heading") + expect(subject).to have_css("h3.section-heading") expect(subject).to have_content("Look this beautiful map!") end end @@ -121,9 +121,9 @@ module Decidim::DecidimAwesome subject { cell(another_content_block.cell, another_content_block).call } let(:another_organization) { create(:organization) } - let(:another_content_block) { create :content_block, organization: another_organization, manifest_name: :awesome_map, scope_name: :homepage, settings: settings } - let(:another_participatory_process) { create :participatory_process, organization: another_organization } - let!(:another_meeting_component) { create :meeting_component, participatory_space: another_participatory_process } + let(:another_content_block) { create(:content_block, organization: another_organization, manifest_name: :awesome_map, scope_name: :homepage, settings:) } + let(:another_participatory_process) { create(:participatory_process, organization: another_organization) } + let!(:another_meeting_component) { create(:meeting_component, participatory_space: another_participatory_process) } before do allow(controller).to receive(:current_organization).and_return(another_organization) diff --git a/spec/cells/voting/voting_cards_base_cell_spec.rb b/spec/cells/voting/voting_cards_base_cell_spec.rb index 1a917cea8..82399d8f1 100644 --- a/spec/cells/voting/voting_cards_base_cell_spec.rb +++ b/spec/cells/voting/voting_cards_base_cell_spec.rb @@ -9,16 +9,16 @@ module Voting subject { cell("decidim/decidim_awesome/voting/voting_cards_base", proposal, context: { current_user: user }) } let(:manifest) { :voting_cards } - let!(:organization) { create :organization } - let(:user) { create(:user, :confirmed, organization: organization) } - let!(:component) { create :proposal_component, :with_votes_enabled, organization: organization, settings: { awesome_voting_manifest: manifest } } - let(:proposal) { create(:proposal, component: component) } - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:organization) { create(:organization) } + let(:user) { create(:user, :confirmed, organization:) } + let!(:component) { create(:proposal_component, :with_votes_enabled, organization:, settings: { awesome_voting_manifest: manifest }) } + let(:proposal) { create(:proposal, component:) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } let!(:vote_weights) do [ - create_list(:awesome_vote_weight, 3, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create_list(:awesome_vote_weight, 2, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create_list(:awesome_vote_weight, 1, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create_list(:awesome_vote_weight, 3, vote: create(:proposal_vote, proposal:), weight: 1), + create_list(:awesome_vote_weight, 2, vote: create(:proposal_vote, proposal:), weight: 2), + create_list(:awesome_vote_weight, 1, vote: create(:proposal_vote, proposal:), weight: 3) ] end @@ -37,7 +37,7 @@ module Voting describe "#current_vote" do context "when user has voted" do before do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal, author: user), weight: 1) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:, author: user), weight: 1) end it "returns the current vote of the user for the proposal" do diff --git a/spec/cells/voting/voting_cards_counter_cell_spec.rb b/spec/cells/voting/voting_cards_counter_cell_spec.rb index ad2230fd0..315ebda4f 100644 --- a/spec/cells/voting/voting_cards_counter_cell_spec.rb +++ b/spec/cells/voting/voting_cards_counter_cell_spec.rb @@ -9,23 +9,23 @@ module Voting subject { cell("decidim/decidim_awesome/voting/voting_cards_counter", proposal, context: { current_user: user }) } let(:manifest) { :voting_cards } - let!(:organization) { create :organization } - let(:user) { create(:user, :confirmed, organization: organization) } - let!(:component) { create :proposal_component, :with_votes_enabled, organization: organization, settings: { awesome_voting_manifest: manifest } } - let(:proposal) { create(:proposal, component: component) } - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:organization) { create(:organization) } + let(:user) { create(:user, :confirmed, organization:) } + let!(:component) { create(:proposal_component, :with_votes_enabled, organization:, settings: { awesome_voting_manifest: manifest }) } + let(:proposal) { create(:proposal, component:) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } let!(:vote_weights) do [ - create_list(:awesome_vote_weight, 3, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create_list(:awesome_vote_weight, 2, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create_list(:awesome_vote_weight, 1, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create_list(:awesome_vote_weight, 3, vote: create(:proposal_vote, proposal:), weight: 1), + create_list(:awesome_vote_weight, 2, vote: create(:proposal_vote, proposal:), weight: 2), + create_list(:awesome_vote_weight, 1, vote: create(:proposal_vote, proposal:), weight: 3) ] end describe "#user_voted_weight" do context "when user has voted" do before do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal, author: user), weight: 1) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:, author: user), weight: 1) end it "returns the weight of the user's vote for the proposal" do @@ -44,7 +44,7 @@ module Voting context "when user has voted with weight" do [0, 1, 2, 3].each do |weight| it "returns 'weight_#{weight}'" do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal, author: user), weight: weight) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:, author: user), weight:) expect(subject.vote_btn_class).to eq("weight_#{weight}") end end diff --git a/spec/cells/voting/voting_cards_proposal_cell_spec.rb b/spec/cells/voting/voting_cards_proposal_cell_spec.rb index e20f0b309..4e9d28a38 100644 --- a/spec/cells/voting/voting_cards_proposal_cell_spec.rb +++ b/spec/cells/voting/voting_cards_proposal_cell_spec.rb @@ -9,16 +9,16 @@ module Voting subject { cell("decidim/decidim_awesome/voting/voting_cards_proposal", proposal, context: { current_user: user }) } let(:manifest) { :voting_cards } - let!(:organization) { create :organization } - let(:user) { create(:user, :confirmed, organization: organization) } - let!(:component) { create :proposal_component, :with_votes_enabled, organization: organization, settings: { awesome_voting_manifest: manifest } } - let(:proposal) { create(:proposal, component: component) } - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:organization) { create(:organization) } + let(:user) { create(:user, :confirmed, organization:) } + let!(:component) { create(:proposal_component, :with_votes_enabled, organization:, settings: { awesome_voting_manifest: manifest }) } + let(:proposal) { create(:proposal, component:) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } let!(:vote_weights) do [ - create_list(:awesome_vote_weight, 3, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create_list(:awesome_vote_weight, 2, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create_list(:awesome_vote_weight, 1, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create_list(:awesome_vote_weight, 3, vote: create(:proposal_vote, proposal:), weight: 1), + create_list(:awesome_vote_weight, 2, vote: create(:proposal_vote, proposal:), weight: 2), + create_list(:awesome_vote_weight, 1, vote: create(:proposal_vote, proposal:), weight: 3) ] end @@ -33,7 +33,7 @@ module Voting describe "#voted_for?" do context "when user has voted" do before do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal, author: user), weight: 1) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:, author: user), weight: 1) end it "returns true for the weight the user has voted for" do diff --git a/spec/commands/admin/create_constraint_spec.rb b/spec/commands/admin/create_constraint_spec.rb index 845218316..9b48ca779 100644 --- a/spec/commands/admin/create_constraint_spec.rb +++ b/spec/commands/admin/create_constraint_spec.rb @@ -10,12 +10,12 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization, setting: config } end - let(:config) { create :awesome_config, organization: organization } + let(:config) { create(:awesome_config, organization:) } let(:params) do { "participatory_space_manifest" => "some-manifest" @@ -33,7 +33,7 @@ module Admin it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: config.var).constraints.first.settings).to eq(params) + expect(AwesomeConfig.find_by(organization:, var: config.var).constraints.first.settings).to eq(params) end context "and adding a repeated config" do @@ -59,13 +59,13 @@ module Admin end let!(:config) do - create(:awesome_config, organization: organization) + create(:awesome_config, organization:) end it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: config.var).constraints).to eq([]) + expect(AwesomeConfig.find_by(organization:, var: config.var).constraints).to eq([]) end end end diff --git a/spec/commands/admin/create_custom_redirect_spec.rb b/spec/commands/admin/create_custom_redirect_spec.rb index 5dc6db042..e7709bebb 100644 --- a/spec/commands/admin/create_custom_redirect_spec.rb +++ b/spec/commands/admin/create_custom_redirect_spec.rb @@ -14,7 +14,7 @@ module Admin it "broadcasts :ok and creates a hash" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(1) expect(items.first).to eq(attributes) @@ -26,7 +26,7 @@ module Admin it "leaves only the path" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items.first[0]).to eq("/some-path") end end @@ -37,7 +37,7 @@ module Admin it "do not remove the host" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items.first[1]["destination"]).to eq(destination) end end @@ -48,7 +48,7 @@ module Admin it "is sanitized" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items.first[0]).to eq("/Some-path") end end @@ -59,24 +59,24 @@ module Admin it "is sanitized" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items.first[1]["destination"]).to eq("/sOme-path") end end context "and entries already exist" do let!(:config) do - create :awesome_config, - organization: organization, + create(:awesome_config, + organization:, var: :custom_redirects, - value: { "/another-redirection" => { destination: "/another-destination", active: true } } + value: { "/another-redirection" => { destination: "/another-destination", active: true } }) end shared_examples "has redirection content" do it "do not removes previous entries" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items.count).to eq(2) expect(items[attributes[0]]).to eq(attributes[1]) expect(items["/another-redirection"]).to eq("destination" => "/another-destination", "active" => true) @@ -91,23 +91,23 @@ module Admin end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has redirection content" end context "and another configuration is updated" do - let!(:existing_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: false } + let!(:existing_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: false) } before do another_config.call end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has redirection content" @@ -119,13 +119,13 @@ module Admin let(:previous_redirection) do { "/some-path" => { "destination" => "/another-path", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: previous_redirection } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: previous_redirection) } let(:origin) { "/some-path" } it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq(previous_redirection) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq(previous_redirection) end end end diff --git a/spec/commands/admin/create_menu_hack_spec.rb b/spec/commands/admin/create_menu_hack_spec.rb index 8b229bf0d..d5df10c10 100644 --- a/spec/commands/admin/create_menu_hack_spec.rb +++ b/spec/commands/admin/create_menu_hack_spec.rb @@ -10,11 +10,13 @@ module Admin include_context "with menu hacks params" + let(:menu_name) { :menu } + describe "when valid" do it "broadcasts :ok and creates an array" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value + items = AwesomeConfig.find_by(organization:, var: menu_name).value expect(items).to be_a(Array) expect(items.count).to eq(1) expect(items.first).to eq(attributes) @@ -26,19 +28,19 @@ module Admin it "leaves only the path" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value + items = AwesomeConfig.find_by(organization:, var: menu_name).value expect(items.first["url"]).to eq("/some-path") end end context "and entries already exist" do - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: [{ url: "/another-menu", position: 10 }] } + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: [{ url: "/another-menu", position: 10 }]) } shared_examples "has menu content" do it "do not removes previous entries" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value.sort_by { |i| i["position"] } + items = AwesomeConfig.find_by(organization:, var: menu_name).value.sort_by { |i| i["position"] } expect(items.count).to eq(2) expect(items.first).to eq(attributes) expect(items.second).to eq("url" => "/another-menu", "position" => 10) @@ -53,23 +55,23 @@ module Admin end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has menu content" end context "and another configuration is updated" do - let!(:existing_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: false } + let!(:existing_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: false) } before do another_config.call end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has menu content" @@ -81,13 +83,13 @@ module Admin let(:previous_menu) do [{ "url" => "/some-path", "position" => 10 }] end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } let(:url) { "/some-path?querystring" } it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq(previous_menu) + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq(previous_menu) end end end diff --git a/spec/commands/admin/create_proposal_custom_field_spec.rb b/spec/commands/admin/create_proposal_custom_field_spec.rb index 2f034fa95..57acae1ad 100644 --- a/spec/commands/admin/create_proposal_custom_field_spec.rb +++ b/spec/commands/admin/create_proposal_custom_field_spec.rb @@ -10,7 +10,7 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization } end @@ -29,19 +29,19 @@ module Admin it "broadcasts :ok and creates a Hash" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys.count).to eq(1) end context "and entries already exist" do - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: { test: '[{"type":"text","required":true,"label":"Age","name":"age"}]' } } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: { test: '[{"type":"text","required":true,"label":"Age","name":"age"}]' }) } shared_examples "has css boxes content" do it "do not removes previous entries" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys.count).to eq(2) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.values).to include('[{"type":"text","required":true,"label":"Age","name":"age"}]') + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys.count).to eq(2) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.values).to include('[{"type":"text","required":true,"label":"Age","name":"age"}]') end end @@ -53,23 +53,23 @@ module Admin end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has css boxes content" end context "and another configuration is updated" do - let!(:existing_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: false } + let!(:existing_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: false) } before do another_config.call end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has css boxes content" @@ -83,7 +83,7 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields)).to be_nil end end end diff --git a/spec/commands/admin/create_scoped_admin_spec.rb b/spec/commands/admin/create_scoped_admin_spec.rb index b00431973..09773b9df 100644 --- a/spec/commands/admin/create_scoped_admin_spec.rb +++ b/spec/commands/admin/create_scoped_admin_spec.rb @@ -10,7 +10,7 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization } end @@ -25,12 +25,12 @@ module Admin end let(:another_config) { UpdateConfig.new(form) } let(:scoped_admins) do - AwesomeConfig.find_by(organization: organization, var: :scoped_admins) + AwesomeConfig.find_by(organization:, var: :scoped_admins) end shared_examples "create default constraints" do let(:subconfig) do - AwesomeConfig.find_by(organization: organization, var: "scoped_admin_#{key}") + AwesomeConfig.find_by(organization:, var: "scoped_admin_#{key}") end it "creates a 'none' constraint by default" do @@ -53,7 +53,7 @@ module Admin end context "and entries already exist" do - let!(:config) { create :awesome_config, organization: organization, var: :scoped_admins, value: { test: [123, 456] } } + let!(:config) { create(:awesome_config, organization:, var: :scoped_admins, value: { test: [123, 456] }) } shared_examples "has scoped admin boxes content" do it "do not removes previous entries" do @@ -75,23 +75,23 @@ module Admin end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has scoped admin boxes content" end context "and another configuration is updated" do - let!(:existing_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: false } + let!(:existing_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: false) } before do another_config.call end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has scoped admin boxes content" diff --git a/spec/commands/admin/create_scoped_style_spec.rb b/spec/commands/admin/create_scoped_style_spec.rb index c394daada..3344a94b8 100644 --- a/spec/commands/admin/create_scoped_style_spec.rb +++ b/spec/commands/admin/create_scoped_style_spec.rb @@ -10,7 +10,7 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization } end @@ -29,19 +29,19 @@ module Admin it "broadcasts :ok and creates a Hash" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys.count).to eq(1) end context "and entries already exist" do - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: { test: ".body {background: red;}" } } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: { test: ".body {background: red;}" }) } shared_examples "has css boxes content" do it "do not removes previous entries" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys.count).to eq(2) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.values).to include(".body {background: red;}") + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys.count).to eq(2) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.values).to include(".body {background: red;}") end end @@ -53,23 +53,23 @@ module Admin end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has css boxes content" end context "and another configuration is updated" do - let!(:existing_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: false } + let!(:existing_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: false) } before do another_config.call end it "modifies the other config" do - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it_behaves_like "has css boxes content" @@ -83,7 +83,7 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles)).to be_nil end end end diff --git a/spec/commands/admin/destroy_constraint_spec.rb b/spec/commands/admin/destroy_constraint_spec.rb index 28bead4cc..9fdc893f8 100644 --- a/spec/commands/admin/destroy_constraint_spec.rb +++ b/spec/commands/admin/destroy_constraint_spec.rb @@ -16,14 +16,14 @@ module Admin # } # end let(:name) { :some_config_var } - let(:config) { create :awesome_config, organization: organization, var: name } + let(:config) { create(:awesome_config, organization:, var: name) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "test" => 1 }) } shared_examples "destroys the constraint" do it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: config.var).constraints).not_to include(constraint) + expect(AwesomeConfig.find_by(organization:, var: config.var).constraints).not_to include(constraint) end end @@ -31,7 +31,7 @@ module Admin it "broadcasts :invalid and does not modify the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: config.var).constraints).to include(constraint) + expect(AwesomeConfig.find_by(organization:, var: config.var).constraints).to include(constraint) end end diff --git a/spec/commands/admin/destroy_custom_redirect_spec.rb b/spec/commands/admin/destroy_custom_redirect_spec.rb index a73def790..3dfb9b77e 100644 --- a/spec/commands/admin/destroy_custom_redirect_spec.rb +++ b/spec/commands/admin/destroy_custom_redirect_spec.rb @@ -3,7 +3,6 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts" -# rubocop:disable Style/OpenStructUse module Decidim::DecidimAwesome module Admin describe DestroyCustomRedirect do @@ -15,13 +14,13 @@ module Admin let(:previous_value) do { "/previous-route" => { "destination" => "/another-place", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: [attributes].to_h.merge(previous_value) } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: [attributes].to_h.merge(previous_value)) } describe "when valid" do it "broadcasts :ok and removes the item" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(1) @@ -35,7 +34,7 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(2) end @@ -43,4 +42,3 @@ module Admin end end end -# rubocop:enable Style/OpenStructUse diff --git a/spec/commands/admin/destroy_menu_hack_spec.rb b/spec/commands/admin/destroy_menu_hack_spec.rb index d5ff92785..01ce86010 100644 --- a/spec/commands/admin/destroy_menu_hack_spec.rb +++ b/spec/commands/admin/destroy_menu_hack_spec.rb @@ -3,7 +3,6 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/menu_hack_contexts" -# rubocop:disable Style/OpenStructUse module Decidim::DecidimAwesome module Admin describe DestroyMenuHack do @@ -15,13 +14,14 @@ module Admin let(:previous_menu) do { "url" => "/another-link", "position" => 10 } end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: [attributes, previous_menu] } + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: [attributes, previous_menu]) } + let(:menu_name) { :menu } describe "when valid" do it "broadcasts :ok and removes the item" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value + items = AwesomeConfig.find_by(organization:, var: menu_name).value expect(items).to be_a(Array) expect(items.count).to eq(1) @@ -35,7 +35,7 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value + items = AwesomeConfig.find_by(organization:, var: menu_name).value expect(items).to be_a(Array) expect(items.count).to eq(2) end @@ -43,4 +43,3 @@ module Admin end end end -# rubocop:enable Style/OpenStructUse diff --git a/spec/commands/admin/destroy_proposal_custom_field_spec.rb b/spec/commands/admin/destroy_proposal_custom_field_spec.rb index bc96f1552..aa5105274 100644 --- a/spec/commands/admin/destroy_proposal_custom_field_spec.rb +++ b/spec/commands/admin/destroy_proposal_custom_field_spec.rb @@ -15,18 +15,18 @@ module Admin } end let(:key) { "foo" } - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: custom_fields } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: custom_fields) } describe "when valid" do it "broadcasts :ok and removes the item" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys.count).to eq(1) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys).to include("bar") - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys).not_to include("foo") - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.values).to include('[{"type":"textarea","required":true,"label":"Bio","name":"bio"}]') - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.values).not_to include('[{"type":"text","required":true,"label":"Age","name":"age"}]') + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys).to include("bar") + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys).not_to include("foo") + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.values).to include('[{"type":"textarea","required":true,"label":"Bio","name":"bio"}]') + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.values).not_to include('[{"type":"text","required":true,"label":"Age","name":"age"}]') end end @@ -36,21 +36,21 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys.count).to eq(2) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys.count).to eq(2) end end describe "when has a constraint" do - let(:config_helper) { create :awesome_config, organization: organization, var: :proposal_custom_field_foo } + let(:config_helper) { create(:awesome_config, organization:, var: :proposal_custom_field_foo) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "test" => 1 }) } it "removes the config helper and the constraint" do - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_foo).constraints.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_field_foo).constraints.count).to eq(1) expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_fields).value.keys).not_to include("foo") - expect(AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_foo)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_fields).value.keys).not_to include("foo") + expect(AwesomeConfig.find_by(organization:, var: :proposal_custom_field_foo)).to be_nil end end end diff --git a/spec/commands/admin/destroy_scoped_admin_spec.rb b/spec/commands/admin/destroy_scoped_admin_spec.rb index ef6c349f1..9319bdf52 100644 --- a/spec/commands/admin/destroy_scoped_admin_spec.rb +++ b/spec/commands/admin/destroy_scoped_admin_spec.rb @@ -15,18 +15,18 @@ module Admin } end let(:key) { "foo" } - let!(:config) { create :awesome_config, organization: organization, var: :scoped_admins, value: admins } + let!(:config) { create(:awesome_config, organization:, var: :scoped_admins, value: admins) } describe "when valid" do it "broadcasts :ok and removes the item" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.keys.count).to eq(1) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.keys).to include("bar") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.keys).not_to include("foo") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.values).to include([789, 901]) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.values).not_to include([123, 456]) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.keys.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.keys).to include("bar") + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.keys).not_to include("foo") + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.values).to include([789, 901]) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.values).not_to include([123, 456]) end end @@ -36,21 +36,21 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.keys.count).to eq(2) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.keys.count).to eq(2) end end describe "when has a constraint" do - let(:config_helper) { create :awesome_config, organization: organization, var: :scoped_admin_foo } + let(:config_helper) { create(:awesome_config, organization:, var: :scoped_admin_foo) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "test" => 1 }) } it "removes the config helper and the constraint" do - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admin_foo).constraints.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :scoped_admin_foo).constraints.count).to eq(1) expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admins).value.keys).not_to include("foo") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_admin_foo)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: :scoped_admins).value.keys).not_to include("foo") + expect(AwesomeConfig.find_by(organization:, var: :scoped_admin_foo)).to be_nil end end end diff --git a/spec/commands/admin/destroy_scoped_style_spec.rb b/spec/commands/admin/destroy_scoped_style_spec.rb index caf8b587e..13325cd6f 100644 --- a/spec/commands/admin/destroy_scoped_style_spec.rb +++ b/spec/commands/admin/destroy_scoped_style_spec.rb @@ -15,18 +15,18 @@ module Admin } end let(:key) { "foo" } - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: styles } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: styles) } describe "when valid" do it "broadcasts :ok and removes the item" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys.count).to eq(1) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys).to include("bar") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys).not_to include("foo") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.values).to include(".body {background: blue;}") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.values).not_to include(".body {background: red;}") + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys).to include("bar") + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys).not_to include("foo") + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.values).to include(".body {background: blue;}") + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.values).not_to include(".body {background: red;}") end end @@ -36,21 +36,21 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to be_a(Hash) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys.count).to eq(2) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys.count).to eq(2) end end describe "when has a constraint" do - let(:config_helper) { create :awesome_config, organization: organization, var: :scoped_style_foo } + let(:config_helper) { create(:awesome_config, organization:, var: :scoped_style_foo) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "test" => 1 }) } it "removes the config helper and the constraint" do - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_style_foo).constraints.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :scoped_style_foo).constraints.count).to eq(1) expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value.keys).not_to include("foo") - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_style_foo)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value.keys).not_to include("foo") + expect(AwesomeConfig.find_by(organization:, var: :scoped_style_foo)).to be_nil end end end diff --git a/spec/commands/admin/rename_scope_label_spec.rb b/spec/commands/admin/rename_scope_label_spec.rb index 5a2f24eb2..b0f799d53 100644 --- a/spec/commands/admin/rename_scope_label_spec.rb +++ b/spec/commands/admin/rename_scope_label_spec.rb @@ -10,16 +10,16 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization, setting: config } end - let(:config) { create :awesome_config, organization: organization, var: attribute, value: value } - let!(:another_config) { create :awesome_config, var: attribute, value: value } + let(:config) { create(:awesome_config, organization:, var: attribute, value:) } + let!(:another_config) { create(:awesome_config, var: attribute, value:) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "test" => 1 }) } - let!(:scoped_config) { create :awesome_config, organization: organization, var: scope } - let!(:another_scoped_config) { create :awesome_config, var: scope } + let!(:scoped_config) { create(:awesome_config, organization:, var: scope) } + let!(:another_scoped_config) { create(:awesome_config, var: scope) } let(:value) do { key => "something" @@ -32,10 +32,10 @@ module Admin end let(:params) do { - text: text, - key: key, - attribute: attribute, - scope: scope + text:, + key:, + attribute:, + scope: } end let(:text) { "bar" } @@ -47,9 +47,9 @@ module Admin it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: attribute).value).to eq(after_value) - expect(AwesomeConfig.find_by(organization: organization, var: after_scope).id).to eq(scoped_config.id) - expect(AwesomeConfig.find_by(organization: organization, var: scope)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: attribute).value).to eq(after_value) + expect(AwesomeConfig.find_by(organization:, var: after_scope).id).to eq(scoped_config.id) + expect(AwesomeConfig.find_by(organization:, var: scope)).to be_nil expect(AwesomeConfig.find(another_config.id).value).to eq(value) expect(AwesomeConfig.find(another_scoped_config.id).var).to eq(scope) end @@ -60,9 +60,9 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: attribute).value).to eq(value) - expect(AwesomeConfig.find_by(organization: organization, var: scope).id).to eq(scoped_config.id) - expect(AwesomeConfig.find_by(organization: organization, var: after_scope)).to be_nil + expect(AwesomeConfig.find_by(organization:, var: attribute).value).to eq(value) + expect(AwesomeConfig.find_by(organization:, var: scope).id).to eq(scoped_config.id) + expect(AwesomeConfig.find_by(organization:, var: after_scope)).to be_nil end end @@ -72,8 +72,8 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: attribute).value).to eq(value) - expect(AwesomeConfig.find_by(organization: organization, var: scope).id).to eq(scoped_config.id) + expect(AwesomeConfig.find_by(organization:, var: attribute).value).to eq(value) + expect(AwesomeConfig.find_by(organization:, var: scope).id).to eq(scoped_config.id) end end diff --git a/spec/commands/admin/update_config_spec.rb b/spec/commands/admin/update_config_spec.rb index 15dbfb239..28aee7d71 100644 --- a/spec/commands/admin/update_config_spec.rb +++ b/spec/commands/admin/update_config_spec.rb @@ -10,7 +10,7 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization } end @@ -32,8 +32,8 @@ module Admin it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end end @@ -43,21 +43,21 @@ module Admin end let!(:config) do - create(:awesome_config, organization: organization, var: :allow_images_in_full_editor, value: false) + create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: false) end it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(false) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(false) end end describe "when updating CSS" do - let!(:config) { create :awesome_config, organization: organization, var: "scoped_styles", value: { test: ".body {background: red;}" } } + let!(:config) { create(:awesome_config, organization:, var: "scoped_styles", value: { test: ".body {background: red;}" }) } it "saves the content in the hash" do - expect(AwesomeConfig.find_by(organization: organization, var: "scoped_styles").value).to be_a(Hash) + expect(AwesomeConfig.find_by(organization:, var: "scoped_styles").value).to be_a(Hash) end # context "and has a constraint" do diff --git a/spec/commands/admin/update_constraint_spec.rb b/spec/commands/admin/update_constraint_spec.rb index fab5c321e..2cb09ce8d 100644 --- a/spec/commands/admin/update_constraint_spec.rb +++ b/spec/commands/admin/update_constraint_spec.rb @@ -10,12 +10,12 @@ module Admin let(:organization) { create(:organization) } let(:context) do { - current_user: create(:user, organization: organization), + current_user: create(:user, organization:), current_organization: organization, setting: config } end - let(:config) { create :awesome_config, organization: organization } + let(:config) { create(:awesome_config, organization:) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "test" => 1 }) } let(:params) do settings.merge("id" => constraint.id) @@ -37,7 +37,7 @@ module Admin it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: config.var).constraints.first.settings).to eq(settings) + expect(AwesomeConfig.find_by(organization:, var: config.var).constraints.first.settings).to eq(settings) end end @@ -49,7 +49,7 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: config.var).constraints.first.settings).to eq("test" => 1) + expect(AwesomeConfig.find_by(organization:, var: config.var).constraints.first.settings).to eq("test" => 1) end end end diff --git a/spec/commands/admin/update_custom_redirect_spec.rb b/spec/commands/admin/update_custom_redirect_spec.rb index 3230b341f..627563769 100644 --- a/spec/commands/admin/update_custom_redirect_spec.rb +++ b/spec/commands/admin/update_custom_redirect_spec.rb @@ -14,13 +14,13 @@ module Admin let(:previous_value) do { origin => { "destination" => "/previous-redirection", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: previous_value } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: previous_value) } describe "when valid" do it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(1) expect(items.first).to eq(attributes) @@ -35,23 +35,23 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq(previous_value) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq(previous_value) end end context "when other config are created" do - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: attributes } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: attributes) } it "modifies the other config" do expect { another_config.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it "do not modifiy current config" do - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq(attributes) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq(attributes) expect { another_config.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq(attributes) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq(attributes) end end @@ -63,7 +63,7 @@ module Admin it "do not modifiy current config" do expect { subject.call }.to broadcast(:invalid) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(1) expect(items).to eq(previous_value) @@ -81,7 +81,7 @@ module Admin it "modifies the intended item" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(2) expect(items).not_to eq(previous_value) @@ -92,25 +92,25 @@ module Admin context "when changing the origin" do let(:item) do double( - origin: origin, - destination: destination, - active: active, - pass_query: pass_query + origin:, + destination:, + active:, + pass_query: ) end let(:params) do { origin: "/a-new-origin", destination: "/a-new-destination", - active: active, - pass_query: pass_query + active:, + pass_query: } end it "removes the old, puts the new" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(2) expect(items).not_to eq(previous_value) diff --git a/spec/commands/admin/update_menu_hack_spec.rb b/spec/commands/admin/update_menu_hack_spec.rb index 1f6c1b787..ae347ddf9 100644 --- a/spec/commands/admin/update_menu_hack_spec.rb +++ b/spec/commands/admin/update_menu_hack_spec.rb @@ -13,13 +13,14 @@ module Admin let(:previous_menu) do [{ "url" => url, "position" => 10 }] end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } + let(:menu_name) { :menu } describe "when valid" do it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value + items = AwesomeConfig.find_by(organization:, var: menu_name).value expect(items).to be_a(Array) expect(items.count).to eq(1) expect(items.first).to eq(attributes) @@ -35,23 +36,23 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq(previous_menu) + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq(previous_menu) end end context "when other config are created" do - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: attributes } + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: attributes) } it "modifies the other config" do expect { another_config.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it "do not modifiy current config" do - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq(attributes) + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq(attributes) expect { another_config.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq(attributes) + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq(attributes) end end @@ -63,7 +64,7 @@ module Admin it "adds a new menu entry" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value.sort_by { |i| i["position"] } + items = AwesomeConfig.find_by(organization:, var: menu_name).value.sort_by { |i| i["position"] } expect(items).to be_a(Array) expect(items.count).to eq(2) expect(items.first).to eq(attributes) @@ -80,10 +81,10 @@ module Admin let(:params) do { raw_label: label, - url: url, - position: position, - target: target, - visibility: visibility, + url:, + position:, + target:, + visibility:, native?: true } end @@ -91,7 +92,7 @@ module Admin it "adds a new menu entry" do expect { subject.call }.to broadcast(:ok) - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value.sort_by { |i| i["position"] } + items = AwesomeConfig.find_by(organization:, var: menu_name).value.sort_by { |i| i["position"] } expect(items).to be_a(Array) expect(items.count).to eq(2) expect(items.first["url"]).to eq(url) diff --git a/spec/commands/admin/update_scoped_styles.rb b/spec/commands/admin/update_scoped_styles.rb index c01bcae57..c8a093c7a 100644 --- a/spec/commands/admin/update_scoped_styles.rb +++ b/spec/commands/admin/update_scoped_styles.rb @@ -33,7 +33,7 @@ module Admin let(:form) do ConfigForm.from_params(params).with_context(context) end - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: oldstyles } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: oldstyles) } let(:params2) do { allow_images_in_full_editor: true, @@ -53,7 +53,7 @@ module Admin it "broadcasts :ok and modifies the config options" do expect { subject.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to eq(styles) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to eq(styles) end end @@ -65,23 +65,23 @@ module Admin it "broadcasts :invalid and does not modifiy the config options" do expect { subject.call }.to broadcast(:invalid) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to eq(oldstyles) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to eq(oldstyles) end end context "when other config are created" do - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: styles } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: styles) } it "modifies the other config" do expect { another_config.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_full_editor).value).to be(true) - expect(AwesomeConfig.find_by(organization: organization, var: :allow_images_in_small_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_full_editor).value).to be(true) + expect(AwesomeConfig.find_by(organization:, var: :allow_images_in_small_editor).value).to be(true) end it "do not modifiy current config" do - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to eq(styles) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to eq(styles) expect { another_config.call }.to broadcast(:ok) - expect(AwesomeConfig.find_by(organization: organization, var: :scoped_styles).value).to eq(styles) + expect(AwesomeConfig.find_by(organization:, var: :scoped_styles).value).to eq(styles) end end end diff --git a/spec/controllers/admin/admin_accountability_controller_spec.rb b/spec/controllers/admin/admin_accountability_controller_spec.rb index b9a417bac..b6b422d6b 100644 --- a/spec/controllers/admin/admin_accountability_controller_spec.rb +++ b/spec/controllers/admin/admin_accountability_controller_spec.rb @@ -4,10 +4,10 @@ module Decidim::DecidimAwesome module Admin - describe AdminAccountabilityController, type: :controller do + describe AdminAccountabilityController do routes { Decidim::DecidimAwesome::AdminEngine.routes } - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } let(:admin_accountability) { [:participatory_space_roles, :admin_roles] } diff --git a/spec/controllers/admin/checks_controller_spec.rb b/spec/controllers/admin/checks_controller_spec.rb index f8c8cc26e..e14781d75 100644 --- a/spec/controllers/admin/checks_controller_spec.rb +++ b/spec/controllers/admin/checks_controller_spec.rb @@ -4,10 +4,10 @@ module Decidim::DecidimAwesome module Admin - describe ChecksController, type: :controller do + describe ChecksController do routes { Decidim::DecidimAwesome::AdminEngine.routes } - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } before do @@ -25,6 +25,8 @@ module Admin end it "all overrides are valid" do + skip "Fix this example after reenabling all overrides" + controller.helpers.overrides.each do |_group, props| props.files.each do |file, _md5| expect(controller.helpers.valid?(props.spec, file)).not_to be_nil @@ -63,7 +65,7 @@ module Admin end context "and is higher than supported" do - let(:version) { "0.28" } + let(:version) { "0.29" } it_behaves_like "invalid decidim version" end diff --git a/spec/controllers/admin/components_controller_spec.rb b/spec/controllers/admin/components_controller_spec.rb index 6ffb70447..16e1e3a96 100644 --- a/spec/controllers/admin/components_controller_spec.rb +++ b/spec/controllers/admin/components_controller_spec.rb @@ -4,16 +4,16 @@ module Decidim::Assemblies module Admin - describe ComponentsController, type: :controller do + describe ComponentsController do routes { Decidim::Assemblies::AdminEngine.routes } let(:organization) { create(:organization) } - let(:current_user) { create(:user, :confirmed, :admin, organization: organization) } + let(:current_user) { create(:user, :confirmed, :admin, organization:) } let!(:assembly) do create( :assembly, :published, - organization: organization + organization: ) end let(:component) do @@ -48,8 +48,8 @@ module Admin end context "when votes exist" do - let!(:vote) { create :proposal_vote, proposal: proposal } - let(:proposal) { create :proposal, component: component } + let!(:vote) { create(:proposal_vote, proposal:) } + let(:proposal) { create(:proposal, component:) } it "does not change the voting manifest" do patch :update, params: { assembly_slug: assembly.slug, id: component.id, component: component_params } diff --git a/spec/controllers/admin/config_controller_spec.rb b/spec/controllers/admin/config_controller_spec.rb index 1dc0f70cc..ac9345fc6 100644 --- a/spec/controllers/admin/config_controller_spec.rb +++ b/spec/controllers/admin/config_controller_spec.rb @@ -5,11 +5,11 @@ module Decidim::DecidimAwesome module Admin - describe ConfigController, type: :controller do + describe ConfigController do include Decidim::TranslationsHelper routes { Decidim::DecidimAwesome::AdminEngine.routes } - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } let(:config) do { @@ -30,13 +30,13 @@ module Admin describe "GET #show" do it "returns http success" do - get :show, params: params + get(:show, params:) expect(response).to have_http_status(:success) end it_behaves_like "forbids disabled feature" do let(:features) { Decidim::DecidimAwesome.config.keys } - let(:action) { get :show, params: params } + let(:action) { get :show, params: } end context "when params var is empty" do @@ -45,6 +45,8 @@ module Admin let(:disabled) { [] } before do + skip "Unskip this examples after enabling all features" + disabled.each do |feat| allow(Decidim::DecidimAwesome.config).to receive(feat).and_return(:disabled) end @@ -87,7 +89,7 @@ module Admin { participatory_space_manifest: manifest, participatory_space_slug: slug, - component_manifest: component_manifest, + component_manifest:, component_id: id } end @@ -95,10 +97,10 @@ module Admin let(:slug) { process.slug } let(:component_manifest) { component.manifest.name } let(:id) { component.id } - let!(:config) { create(:awesome_config, organization: organization, var: key) } - let!(:constraint) { create(:config_constraint, awesome_config: config, settings: settings) } - let!(:process) { create :participatory_process, organization: organization } - let!(:component) { create :component, participatory_space: process } + let!(:config) { create(:awesome_config, organization:, var: key) } + let!(:constraint) { create(:config_constraint, awesome_config: config, settings:) } + let!(:process) { create(:participatory_process, organization:) } + let!(:component) { create(:component, participatory_space: process) } it "sumarizes the scope for process manifest" do expect(controller.helpers.translate_constraint_value(constraint, "participatory_space_manifest")).to eq("Processes") @@ -138,13 +140,13 @@ module Admin end it "redirects as success success" do - get :update, params: params + get(:update, params:) expect(response).to have_http_status(:redirect) end it_behaves_like "forbids disabled feature" do let(:features) { config.keys } - let(:action) { get :show, params: params } + let(:action) { get :show, params: } end end @@ -155,13 +157,13 @@ module Admin it "raises unkown format" do expect do - get :users, params: params + get :users, params: end.to raise_exception(ActionController::UnknownFormat) end context "when format is json" do it "retuns a list of users" do - get :users, params: params, format: :json + get :users, params:, format: :json expect(response).to have_http_status(:ok) end end @@ -173,7 +175,7 @@ module Admin end it "returns invalid" do - post :rename_scope_label, params: params + post(:rename_scope_label, params:) expect(response).to have_http_status(:unprocessable_entity) end @@ -188,23 +190,23 @@ module Admin end it "returns invalid" do - post :rename_scope_label, params: params + post(:rename_scope_label, params:) expect(response).to have_http_status(:unprocessable_entity) end context "and config exists" do - let!(:config) { create :awesome_config, organization: organization, var: "scoped_something", value: { "foo" => "something" } } + let!(:config) { create(:awesome_config, organization:, var: "scoped_something", value: { "foo" => "something" }) } it "retuns ok" do - post :rename_scope_label, params: params + post(:rename_scope_label, params:) expect(response).to have_http_status(:ok) end context "and is in another organization" do - let!(:config) { create :awesome_config, var: "scoped_something", value: { "foo" => "something" } } + let!(:config) { create(:awesome_config, var: "scoped_something", value: { "foo" => "something" }) } it "returns invalid" do - post :rename_scope_label, params: params + post(:rename_scope_label, params:) expect(response).to have_http_status(:unprocessable_entity) end end diff --git a/spec/controllers/admin/constraints_controller_spec.rb b/spec/controllers/admin/constraints_controller_spec.rb index 8781df381..bded4dafc 100644 --- a/spec/controllers/admin/constraints_controller_spec.rb +++ b/spec/controllers/admin/constraints_controller_spec.rb @@ -5,20 +5,20 @@ module Decidim::DecidimAwesome module Admin - describe ConstraintsController, type: :controller do + describe ConstraintsController do include Decidim::TranslationsHelper routes { Decidim::DecidimAwesome::AdminEngine.routes } - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } - let(:config) { create(:awesome_config, organization: organization, var: key) } + let(:config) { create(:awesome_config, organization:, var: key) } let(:constraint) { create(:config_constraint, awesome_config: config) } let(:key) { :allow_images_in_full_editor } let(:id) { nil } let(:params) do { - key: key, - id: id, + key:, + id:, participatory_space_manifest: "assemblies" } end @@ -36,17 +36,19 @@ module Admin before do request.env["decidim.current_organization"] = user.organization sign_in user, scope: :user + + allow(Decidim::DecidimAwesome.config).to receive(key).and_return(true) end describe "GET #new" do it "returns http success" do - get :new, params: params + get(:new, params:) expect(response).to have_http_status(:success) end it_behaves_like "forbids disabled feature" do let(:feature) { key } - let(:action) { get :new, params: params } + let(:action) { get :new, params: } end it "has helper with participatory space manifests" do @@ -62,8 +64,8 @@ module Admin end context "when participatory process exists" do - let!(:process) { create :participatory_process, organization: organization } - let!(:component) { create :component, participatory_space: process } + let!(:process) { create(:participatory_process, organization:) } + let!(:component) { create(:component, participatory_space: process) } it "has helper with existing participatory spaces" do expect(controller.helpers.participatory_spaces_list(:participatory_processes)).to eq(spaces) @@ -75,7 +77,7 @@ module Admin end context "when process is in another organization" do - let!(:process) { create :participatory_process } + let!(:process) { create(:participatory_process) } it "has empty helpers" do expect(controller.helpers.participatory_spaces_list(:participatory_processes)).to eq({}) @@ -86,8 +88,12 @@ module Admin context "when key is scoped_style" do let(:key) { :scoped_style_test } + before do + allow(Decidim::DecidimAwesome.config).to receive(:scoped_styles).and_return(true) + end + it "returns http success" do - get :new, params: params + get(:new, params:) expect(response).to have_http_status(:success) end end @@ -95,13 +101,13 @@ module Admin describe "POST #create" do it "returns a success response" do - post :create, params: params + post(:create, params:) expect(response).to have_http_status(:success) end it_behaves_like "forbids disabled feature" do let(:feature) { key } - let(:action) { post :create, params: params } + let(:action) { post :create, params: } end context "when wrong params" do @@ -110,7 +116,7 @@ module Admin end it "returns error" do - get :create, params: params + get(:create, params:) expect(response).to have_http_status(:unprocessable_entity) end end @@ -120,13 +126,13 @@ module Admin let(:id) { constraint.id } it "returns http success" do - get :show, params: params + get(:show, params:) expect(response).to have_http_status(:success) end it_behaves_like "forbids disabled feature" do let(:feature) { key } - let(:action) { get :show, params: params } + let(:action) { get :show, params: } end end @@ -134,20 +140,20 @@ module Admin let(:id) { constraint.id } it "redirects as success success" do - patch :update, params: params + patch(:update, params:) expect(response).to have_http_status(:success) end it_behaves_like "forbids disabled feature" do let(:feature) { key } - let(:action) { patch :update, params: params } + let(:action) { patch :update, params: } end context "when wrong params" do - let!(:prev_constraint) { create :config_constraint, awesome_config: config, settings: { participatory_space_manifest: "assemblies" } } + let!(:prev_constraint) { create(:config_constraint, awesome_config: config, settings: { participatory_space_manifest: "assemblies" }) } it "returns error" do - get :update, params: params + get(:update, params:) expect(response).to have_http_status(:unprocessable_entity) end end @@ -157,13 +163,13 @@ module Admin let(:id) { constraint.id } it "redirects as success success" do - delete :destroy, params: params + delete(:destroy, params:) expect(response).to have_http_status(:success) end it_behaves_like "forbids disabled feature" do let(:feature) { key } - let(:action) { delete :destroy, params: params } + let(:action) { delete :destroy, params: } end end end diff --git a/spec/controllers/admin/custom_redirects_controller_spec.rb b/spec/controllers/admin/custom_redirects_controller_spec.rb index 87b776078..30a48d6be 100644 --- a/spec/controllers/admin/custom_redirects_controller_spec.rb +++ b/spec/controllers/admin/custom_redirects_controller_spec.rb @@ -6,12 +6,12 @@ module Decidim::DecidimAwesome module Admin - describe CustomRedirectsController, type: :controller do + describe CustomRedirectsController do routes { Decidim::DecidimAwesome::AdminEngine.routes } include_context "with custom redirects params" - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } before do @@ -31,7 +31,7 @@ module Admin end describe "POST #create" do - let(:action) { post :create, params: params } + let(:action) { post :create, params: } it "returns http success" do action @@ -44,7 +44,7 @@ module Admin it "creates the new redirection entry" do action - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(1) expect(items.first).to eq(attributes) @@ -62,7 +62,7 @@ module Admin it "do not create the new redirection entry" do action - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects)).not_to be_present + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects)).not_to be_present end end @@ -70,7 +70,7 @@ module Admin let(:previous_value) do { "/some-path" => { "destination" => "/assemblies", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: previous_value } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: previous_value) } let(:origin) { "/some-path" } it "returns error" do @@ -82,17 +82,17 @@ module Admin it "do not create the new redirection entry" do action - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value.count).to eq(1) end end end describe "GET #edit" do - let(:action) { get :edit, params: params } + let(:action) { get :edit, params: } let(:previous_value) do { origin => { "destination" => "/assemblies", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: previous_value } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: previous_value) } let(:params) do { id: Digest::MD5.hexdigest(origin) @@ -124,7 +124,7 @@ module Admin let(:previous_value) do { origin => { "destination" => "/assemblies", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: previous_value } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: previous_value) } let(:id) do { id: Digest::MD5.hexdigest(origin) @@ -142,7 +142,7 @@ module Admin it "updates the redirection entry" do action - items = AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value + items = AwesomeConfig.find_by(organization:, var: :custom_redirects).value expect(items).to be_a(Hash) expect(items.count).to eq(1) expect(items.first).to eq(attributes) @@ -170,17 +170,17 @@ module Admin it "do not create the new redirection entry" do action - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq(previous_value) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq(previous_value) end end end describe "DELETE #destroy" do - let(:action) { delete :destroy, params: params } + let(:action) { delete :destroy, params: } let(:previous_value) do { origin => { "destination" => "/assemblies", "active" => true } } end - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: previous_value } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: previous_value) } let(:params) do { id: Digest::MD5.hexdigest(origin) @@ -197,7 +197,7 @@ module Admin it "destroy the task" do action - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq({}) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq({}) end context "when invalid parameters" do @@ -209,7 +209,7 @@ module Admin it "returns error" do expect { action }.to raise_error(ActiveRecord::RecordNotFound) - expect(AwesomeConfig.find_by(organization: organization, var: :custom_redirects).value).to eq(previous_value) + expect(AwesomeConfig.find_by(organization:, var: :custom_redirects).value).to eq(previous_value) end end end diff --git a/spec/controllers/admin/menu_hacks_controller_spec.rb b/spec/controllers/admin/menu_hacks_controller_spec.rb index 08bad0739..1d8ee9af9 100644 --- a/spec/controllers/admin/menu_hacks_controller_spec.rb +++ b/spec/controllers/admin/menu_hacks_controller_spec.rb @@ -6,244 +6,269 @@ module Decidim::DecidimAwesome module Admin - describe MenuHacksController, type: :controller do + describe MenuHacksController do include Decidim::TranslationsHelper routes { Decidim::DecidimAwesome::AdminEngine.routes } include_context "with menu hacks params" - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } - before do - Decidim::MenuRegistry.register :menu do |menu| - menu.add_item :native_menu, - "Native", - "/processes?locale=ca", - position: 1 - end - request.env["decidim.current_organization"] = user.organization - sign_in user, scope: :user - end - - after do - Decidim::MenuRegistry.find(:menu).configurations.pop - end - - describe "GET #new" do - it "returns http success" do - get :new - expect(response).to have_http_status(:success) - end - - it_behaves_like "forbids disabled feature" do - let(:action) { get :new } + shared_examples "menu hacks controller" do + before do + Decidim::MenuRegistry.register menu_id do |menu| + menu.add_item :native_menu, + "Native", + "/processes?locale=ca", + position: 1 + end + request.env["decidim.current_organization"] = user.organization + sign_in user, scope: :user end - end - - describe "POST #create" do - let(:action) { post :create, params: params } - it "returns http success" do - action - expect(flash[:notice]).not_to be_empty - expect(response).to have_http_status(:redirect) + after do + Decidim::MenuRegistry.find(:menu).configurations.pop end - it_behaves_like "forbids disabled feature" + describe "GET #new" do + let(:params) do + { + menu_id: + } + end - it "creates the new menu entry" do - action + it "returns http success" do + get(:new, params:) + expect(response).to have_http_status(:success) + end - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value - expect(items).to be_a(Array) - expect(items.count).to eq(1) - expect(items.first).to eq(attributes) + it_behaves_like "forbids disabled feature" do + let(:action) { get :new, params: } + end end - context "when invalid parameters" do - let(:label) { { en: "" } } + describe "POST #create" do + let(:action) { post :create, params: } - it "returns error" do + it "returns http success" do action - expect(flash[:alert]).not_to be_empty - expect(response).to have_http_status(:ok) + expect(flash[:notice]).not_to be_empty + expect(response).to have_http_status(:redirect) end - it "do not create the new menu entry" do + it_behaves_like "forbids disabled feature" + + it "creates the new menu entry" do action - expect(AwesomeConfig.find_by(organization: organization, var: menu_name)).not_to be_present + items = AwesomeConfig.find_by(organization:, var: menu_name).value + expect(items).to be_a(Array) + expect(items.count).to eq(1) + expect(items.first).to eq(attributes) end - end - context "when same url exists" do - let(:previous_menu) do - [{ "url" => "/some-path", "position" => 10 }] - end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } - let(:url) { "/some-path?querystring" } + context "when invalid parameters" do + let(:label) { { en: "" } } - it "returns error" do - action - expect(flash[:alert]).not_to be_empty - expect(response).to have_http_status(:ok) - end + it "returns error" do + action + expect(flash[:alert]).not_to be_empty + expect(response).to have_http_status(:ok) + end - it "do not create the new menu entry" do - action + it "do not create the new menu entry" do + action - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value.count).to eq(1) + expect(AwesomeConfig.find_by(organization:, var: menu_name)).not_to be_present + end end - end - end - - describe "GET #edit" do - let(:action) { get :edit, params: params } - let(:previous_menu) do - [{ "url" => url, "position" => 10 }] - end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } - let(:params) do - { - id: Digest::MD5.hexdigest(previous_menu.first["url"]) - } - end - it "returns http success" do - action - expect(response).to have_http_status(:success) - end + context "when same url exists" do + let(:previous_menu) do + [{ "url" => "/some-path", "position" => 10 }] + end + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } + let(:url) { "/some-path?querystring" } - it_behaves_like "forbids disabled feature" + it "returns error" do + action + expect(flash[:alert]).not_to be_empty + expect(response).to have_http_status(:ok) + end - context "when editing a non existing menu" do - let(:params) do - { - id: "nonsense" - } - end + it "do not create the new menu entry" do + action - it "returns error" do - expect { action }.to raise_error(ActiveRecord::RecordNotFound) + expect(AwesomeConfig.find_by(organization:, var: menu_name).value.count).to eq(1) + end end end - context "when editing a native menu" do - let(:url) { "/processes?locale=ca" } + describe "GET #edit" do + let(:action) { get :edit, params: } + let(:previous_menu) do + [{ "url" => url, "position" => 10 }] + end + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } let(:params) do { - id: Digest::MD5.hexdigest(url) + menu_id:, + id: Digest::MD5.hexdigest(previous_menu.first["url"]) } end - it "removes the querystring" do + it "returns http success" do action - - expect(controller.instance_variable_get(:@form).url).to eq("/processes") expect(response).to have_http_status(:success) end - end - end - describe "PATCH #update" do - let(:action) { patch :update, params: params.merge(id) } - let(:previous_menu) do - [{ "url" => url, "position" => 10 }] - end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } - let(:id) do - { - id: Digest::MD5.hexdigest(previous_menu.first["url"]) - } - end + it_behaves_like "forbids disabled feature" - it_behaves_like "forbids disabled feature" + context "when editing a non existing menu" do + let(:params) do + { + menu_id:, + id: "nonsense" + } + end - it "returns http success" do - action - expect(flash[:notice]).not_to be_empty - expect(response).to have_http_status(:redirect) - end - - it "updates the menu entry" do - action + it "returns error" do + expect { action }.to raise_error(ActiveRecord::RecordNotFound) + end + end - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value - expect(items).to be_a(Array) - expect(items.count).to eq(1) - expect(items.first).to eq(attributes) + context "when editing a native menu" do + let(:url) { "/processes?locale=ca" } + let(:params) do + { + menu_id:, + id: Digest::MD5.hexdigest(url) + } + end + + it "removes the querystring" do + action + + expect(controller.instance_variable_get(:@form).url).to eq("/processes") + expect(response).to have_http_status(:success) + end + end end - context "when updating a non existing menu" do + describe "PATCH #update" do + let(:action) { patch :update, params: params.merge(id) } let(:previous_menu) do - [{ "url" => "/another-menu", "position" => 10 }] + [{ "url" => url, "position" => 10 }] end - - it "creates a new item" do - action - items = AwesomeConfig.find_by(organization: organization, var: menu_name).value - - expect(items).to be_a(Array) - expect(items.count).to eq(2) + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } + let(:id) do + { + id: Digest::MD5.hexdigest(previous_menu.first["url"]) + } end - end - context "when invalid parameters" do - let(:label) { { en: "" } } + it_behaves_like "forbids disabled feature" - it "returns error" do + it "returns http success" do action - expect(flash[:alert]).not_to be_empty - expect(response).to have_http_status(:ok) + expect(flash[:notice]).not_to be_empty + expect(response).to have_http_status(:redirect) end - it "do not create the new menu entry" do + it "updates the menu entry" do action - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq(previous_menu) + items = AwesomeConfig.find_by(organization:, var: menu_name).value + expect(items).to be_a(Array) + expect(items.count).to eq(1) + expect(items.first).to eq(attributes) end - end - end - describe "DELETE #destroys" do - let(:action) { delete :destroy, params: params } - let(:previous_menu) do - [{ "url" => url, "position" => 10 }] - end - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } - let(:params) do - { - id: Digest::MD5.hexdigest(previous_menu.first["url"]) - } - end + context "when updating a non existing menu" do + let(:previous_menu) do + [{ "url" => "/another-menu", "position" => 10 }] + end - it "returns ok" do - action - expect(flash[:notice]).not_to be_empty - expect(response).to have_http_status(:redirect) - end + it "creates a new item" do + action + items = AwesomeConfig.find_by(organization:, var: menu_name).value - it_behaves_like "forbids disabled feature" + expect(items).to be_a(Array) + expect(items.count).to eq(2) + end + end - it "destroy the task" do - action - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq([]) + context "when invalid parameters" do + let(:label) { { en: "" } } + + it "returns error" do + action + expect(flash[:alert]).not_to be_empty + expect(response).to have_http_status(:ok) + end + + it "do not create the new menu entry" do + action + + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq(previous_menu) + end + end end - context "when invalid parameters" do + describe "DELETE #destroys" do + let(:action) { delete :destroy, params: } + let(:previous_menu) do + [{ "url" => url, "position" => 10 }] + end + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } let(:params) do { - id: "nonsense" + menu_id:, + id: Digest::MD5.hexdigest(previous_menu.first["url"]) } end - it "returns error" do - expect { action }.to raise_error(ActiveRecord::RecordNotFound) - expect(AwesomeConfig.find_by(organization: organization, var: menu_name).value).to eq(previous_menu) + it "returns ok" do + action + expect(flash[:notice]).not_to be_empty + expect(response).to have_http_status(:redirect) + end + + it_behaves_like "forbids disabled feature" + + it "destroy the task" do + action + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq([]) + end + + context "when invalid parameters" do + let(:params) do + { + menu_id:, + id: "nonsense" + } + end + + it "returns error" do + expect { action }.to raise_error(ActiveRecord::RecordNotFound) + expect(AwesomeConfig.find_by(organization:, var: menu_name).value).to eq(previous_menu) + end end end end + + context "with main menu" do + let!(:menu_name) { "menu" } + + it_behaves_like "menu hacks controller" + end + + context "with home content block menu" do + let!(:menu_name) { "home_content_block_menu" } + + it_behaves_like "menu hacks controller" + end end end end diff --git a/spec/controllers/editor_images_controller_spec.rb b/spec/controllers/editor_images_controller_spec.rb index fb0c82826..418fa2a2a 100644 --- a/spec/controllers/editor_images_controller_spec.rb +++ b/spec/controllers/editor_images_controller_spec.rb @@ -3,10 +3,10 @@ require "spec_helper" module Decidim::DecidimAwesome - describe EditorImagesController, type: :controller do + describe EditorImagesController do routes { Decidim::DecidimAwesome::Engine.routes } - let(:user) { create(:user, :confirmed, :admin, organization: organization) } + let(:user) { create(:user, :confirmed, :admin, organization:) } let(:organization) { create(:organization) } let(:config) do { @@ -22,7 +22,7 @@ module Decidim::DecidimAwesome let(:in_markdown) { true } let(:params) do { - image: image, + image:, path: "/somepath" } end @@ -42,17 +42,16 @@ module Decidim::DecidimAwesome shared_examples "uploads image" do context "when everything is ok" do it "redirects as success success" do - post :create, params: params + post(:create, params:) expect(response).to have_http_status(:success) end end context "when there's no file" do - # TODO: remove nil when diching 0.26 support - let(:image) { legacy_version? ? nil : upload_test_file(Decidim::Dev.test_file("invalid.jpeg", "image/jpeg")) } + let(:image) { upload_test_file(Decidim::Dev.test_file("invalid.jpeg", "image/jpeg")) } it "returns failure" do - post :create, params: params + post(:create, params:) expect(response).to have_http_status(:unprocessable_entity) end end @@ -68,14 +67,14 @@ module Decidim::DecidimAwesome let(:in_markdown) { false } it "returns no permissions" do - post :create, params: params + post(:create, params:) expect(response).to have_http_status(:success) end end end context "when user is not admin" do - let(:user) { create(:user, :confirmed, organization: organization) } + let(:user) { create(:user, :confirmed, organization:) } include_examples "uploads image" @@ -86,7 +85,7 @@ module Decidim::DecidimAwesome let(:in_markdown) { false } it "returns no permissions" do - post :create, params: params + post(:create, params:) expect(response).to have_http_status(:unprocessable_entity) end end diff --git a/spec/controllers/iframe_controller_spec.rb b/spec/controllers/iframe_controller_spec.rb index 95644b3c2..e82b0f621 100644 --- a/spec/controllers/iframe_controller_spec.rb +++ b/spec/controllers/iframe_controller_spec.rb @@ -5,7 +5,7 @@ module Decidim::DecidimAwesome module IframeComponent - describe IframeController, type: :controller do + describe IframeController do routes { Decidim::DecidimAwesome::IframeComponent::Engine.routes } let(:user) { create(:user, :confirmed, organization: component.organization) } diff --git a/spec/controllers/map_controller_spec.rb b/spec/controllers/map_controller_spec.rb index f59bdea59..c67336b2a 100644 --- a/spec/controllers/map_controller_spec.rb +++ b/spec/controllers/map_controller_spec.rb @@ -5,7 +5,7 @@ module Decidim::DecidimAwesome module MapComponent - describe MapController, type: :controller do + describe MapController do routes { Decidim::DecidimAwesome::MapComponent::Engine.routes } let(:user) { create(:user, :confirmed, organization: component.organization) } @@ -30,9 +30,8 @@ module MapComponent context "when no geocoder is available" do before do - allow(Decidim).to receive(:maps).and_return(nil) # TODO: remove when 0.22 is diched - allow(Decidim).to receive(:geocoder).and_return(nil) + allow(Decidim).to receive_messages(maps: nil, geocoder: nil) end it "renders error page" do @@ -46,7 +45,7 @@ module MapComponent describe "map_components" do let(:geocoding_enabled) { true } let!(:meetings) { create(:component, participatory_space: component.participatory_space, manifest_name: :meetings) } - let!(:proposals) { create(:component, participatory_space: component.participatory_space, manifest_name: :proposals, settings: { geocoding_enabled: geocoding_enabled }) } + let!(:proposals) { create(:component, participatory_space: component.participatory_space, manifest_name: :proposals, settings: { geocoding_enabled: }) } let!(:other) { create(:component, participatory_space: component.participatory_space, manifest_name: :dummy) } let(:components) do diff --git a/spec/controllers/proposals_controller_spec.rb b/spec/controllers/proposals_controller_spec.rb index af57bf22f..1ed9042fa 100644 --- a/spec/controllers/proposals_controller_spec.rb +++ b/spec/controllers/proposals_controller_spec.rb @@ -3,15 +3,15 @@ require "spec_helper" module Decidim::Proposals - describe ProposalsController, type: :controller do + describe ProposalsController do routes { Decidim::Proposals::Engine.routes } let(:organization) { participatory_space.organization } let(:participatory_space) { component.participatory_space } - let(:component) { create(:proposal_component, :with_votes_enabled, settings: settings) } - let!(:proposal1) { create(:proposal, title: { en: "m middle", ca: "à 3", "machine_translations" => { es: "a primero" } }, component: component) } - let!(:proposal2) { create(:proposal, title: { en: "z last", ca: "A 2", "machine_translations" => { es: "z último" } }, component: component) } - let!(:proposal3) { create(:proposal, title: { en: "a first", ca: "a 1", "machine_translations" => { es: "m medio" } }, component: component) } + let(:component) { create(:proposal_component, :with_votes_enabled, settings:) } + let!(:proposal1) { create(:proposal, title: { en: "m middle", ca: "à 3", "machine_translations" => { es: "a primero" } }, component:) } + let!(:proposal2) { create(:proposal, title: { en: "z last", ca: "A 2", "machine_translations" => { es: "z último" } }, component:) } + let!(:proposal3) { create(:proposal, title: { en: "a first", ca: "a 1", "machine_translations" => { es: "m medio" } }, component:) } let(:user) { create(:user, :confirmed, organization: component.organization) } let!(:vote1) { create(:proposal_vote, proposal: proposal2, author: user) } let!(:vote2) { create(:proposal_vote, proposal: proposal3, author: user) } @@ -55,7 +55,7 @@ module Decidim::Proposals describe "GET index" do it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent supported_first supported_last az za most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -66,7 +66,7 @@ module Decidim::Proposals let(:skip_collation_for) { :en } it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent supported_first supported_last az za most_voted most_endorsed most_commented most_followed with_more_authors)) expect(controller.send(:collation)).to be_blank @@ -77,7 +77,7 @@ module Decidim::Proposals let(:additional_sortings) { :disabled } it "has standard order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -88,7 +88,7 @@ module Decidim::Proposals let(:additional_sortings) { [:az, :supported_last] } it "has standard order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent az supported_last most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -99,7 +99,7 @@ module Decidim::Proposals let(:additional_sortings) { [:baz, :az] } it "has standard order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent az most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -107,10 +107,10 @@ module Decidim::Proposals end context "when awesome config exists" do - let!(:awesome_config) { create :awesome_config, organization: organization, var: :additional_proposal_sortings, value: additional_sortings } + let!(:awesome_config) { create(:awesome_config, organization:, var: :additional_proposal_sortings, value: additional_sortings) } it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent supported_first supported_last az za most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -120,17 +120,17 @@ module Decidim::Proposals let(:additional_sortings) { [:az, :za] } it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent az za most_voted most_endorsed most_commented most_followed with_more_authors)) end context "when constrained" do - let!(:awesome_constraint) { create(:config_constraint, awesome_config: awesome_config, settings: { "participatory_space_manifest" => "participatory_processes" }) } + let!(:awesome_constraint) { create(:config_constraint, awesome_config:, settings: { "participatory_space_manifest" => "participatory_processes" }) } it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent az za most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -148,7 +148,7 @@ module Decidim::Proposals end it "orders by az" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal3, proposal1, proposal2]) @@ -164,7 +164,7 @@ module Decidim::Proposals end it "orders by az" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal3, proposal2, proposal1]) @@ -181,19 +181,19 @@ module Decidim::Proposals end it "orders by az" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal1, proposal3, proposal2]) end context "and machine_translations are missing" do - let!(:proposal1) { create(:proposal, title: { en: "m middle", ca: "z últim" }, component: component) } - let!(:proposal2) { create(:proposal, title: { en: "z last", ca: "m mig" }, component: component) } - let!(:proposal3) { create(:proposal, title: { en: "a first", ca: "a primer" }, component: component) } + let!(:proposal1) { create(:proposal, title: { en: "m middle", ca: "z últim" }, component:) } + let!(:proposal2) { create(:proposal, title: { en: "z last", ca: "m mig" }, component:) } + let!(:proposal3) { create(:proposal, title: { en: "a first", ca: "a primer" }, component:) } it "orders by az as per default locale" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal3, proposal1, proposal2]) @@ -211,7 +211,7 @@ module Decidim::Proposals end it "orders by za" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal2, proposal1, proposal3]) @@ -227,7 +227,7 @@ module Decidim::Proposals end it "orders by za" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal1, proposal2, proposal3]) @@ -244,19 +244,19 @@ module Decidim::Proposals end it "orders by za" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal2, proposal3, proposal1]) end context "and machine_translations are missing" do - let!(:proposal1) { create(:proposal, title: { en: "m middle", ca: "z últim" }, component: component) } - let!(:proposal2) { create(:proposal, title: { en: "z last", ca: "m mig" }, component: component) } - let!(:proposal3) { create(:proposal, title: { en: "a first", ca: "a primer" }, component: component) } + let!(:proposal1) { create(:proposal, title: { en: "m middle", ca: "z últim" }, component:) } + let!(:proposal2) { create(:proposal, title: { en: "z last", ca: "m mig" }, component:) } + let!(:proposal3) { create(:proposal, title: { en: "a first", ca: "a primer" }, component:) } it "orders by za as per default locale" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal2, proposal1, proposal3]) @@ -274,7 +274,7 @@ module Decidim::Proposals end it "orders by supported_first" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal2, proposal3, proposal1]) @@ -290,7 +290,7 @@ module Decidim::Proposals end it "orders by supported_last" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal1, proposal2, proposal3]) @@ -301,7 +301,7 @@ module Decidim::Proposals let(:component) { create(:proposal_component, :with_votes_disabled) } it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent az za most_endorsed most_commented most_followed with_more_authors)) @@ -314,7 +314,7 @@ module Decidim::Proposals end it "has order filters" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(controller.helpers.available_orders).to eq(%w(random recent az za most_voted most_endorsed most_commented most_followed with_more_authors)) @@ -327,7 +327,7 @@ module Decidim::Proposals end it "orders by supported_first" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal2, proposal3, proposal1]) @@ -341,7 +341,7 @@ module Decidim::Proposals end it "orders by default" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal3, proposal1, proposal2]) @@ -358,7 +358,7 @@ module Decidim::Proposals end it "orders by supported_last" do - get :index, params: params + get(:index, params:) expect(response).to have_http_status(:ok) expect(assigns(:proposals).to_a).to eq([proposal1, proposal2, proposal3]) diff --git a/spec/controllers/proposals_votes_controller_spec.rb b/spec/controllers/proposals_votes_controller_spec.rb index b80331582..0f37fde3b 100644 --- a/spec/controllers/proposals_votes_controller_spec.rb +++ b/spec/controllers/proposals_votes_controller_spec.rb @@ -3,10 +3,10 @@ require "spec_helper" module Decidim::Proposals - describe ProposalVotesController, type: :controller do + describe ProposalVotesController do routes { Decidim::Proposals::Engine.routes } - let(:proposal) { create(:proposal, component: component) } + let(:proposal) { create(:proposal, component:) } let(:user) { create(:user, :confirmed, organization: component.organization) } let(:params) do @@ -30,7 +30,7 @@ module Decidim::Proposals shared_examples "can vote" do it "allows voting" do expect do - post :create, format: :js, params: params + post :create, format: :js, params: end.to change(ProposalVote, :count).by(1) expect(ProposalVote.last.author).to eq(user) @@ -41,7 +41,7 @@ module Decidim::Proposals shared_examples "no vote permissions" do it "doesn't allow voting" do expect do - post :create, format: :js, params: params + post :create, format: :js, params: end.not_to change(ProposalVote, :count) expect(flash[:alert]).not_to be_empty @@ -52,7 +52,7 @@ module Decidim::Proposals shared_examples "invalid weight" do it "doesn't allow voting" do expect do - post :create, format: :js, params: params + post :create, format: :js, params: end.not_to change(ProposalVote, :count) expect(response).to have_http_status(:unprocessable_entity) @@ -62,7 +62,7 @@ module Decidim::Proposals shared_examples "destroy vote" do it "deletes the vote" do expect do - delete :destroy, format: :js, params: params + delete :destroy, format: :js, params: end.to change(ProposalVote, :count).by(-1) expect(ProposalVote.count).to eq(0) @@ -72,7 +72,7 @@ module Decidim::Proposals describe "POST create" do context "with votes enabled" do let(:component) do - create(:proposal_component, :with_votes_enabled, settings: settings) + create(:proposal_component, :with_votes_enabled, settings:) end let(:settings) do { @@ -94,7 +94,7 @@ module Decidim::Proposals { proposal_id: proposal.id, component_id: component.id, - weight: weight + weight: } end @@ -140,7 +140,7 @@ module Decidim::Proposals describe "DELETE destroy" do before do - create(:proposal_vote, proposal: proposal, author: user) + create(:proposal_vote, proposal:, author: user) end context "with vote limit enabled" do diff --git a/spec/forms/admin/config_form_spec.rb b/spec/forms/admin/config_form_spec.rb index 06aea9a42..a71aed0f8 100644 --- a/spec/forms/admin/config_form_spec.rb +++ b/spec/forms/admin/config_form_spec.rb @@ -58,7 +58,7 @@ module Admin } end - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end @@ -78,7 +78,7 @@ module Admin } end - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and sending labels with html" do @@ -94,14 +94,14 @@ module Admin describe "validators" do let(:attributes) do { - validate_title_min_length: validate_title_min_length, - validate_title_max_caps_percent: validate_title_max_caps_percent, - validate_title_max_marks_together: validate_title_max_marks_together, - validate_title_start_with_caps: validate_title_start_with_caps, - validate_body_min_length: validate_body_min_length, - validate_body_max_caps_percent: validate_body_max_caps_percent, - validate_body_max_marks_together: validate_body_max_marks_together, - validate_body_start_with_caps: validate_body_start_with_caps + validate_title_min_length:, + validate_title_max_caps_percent:, + validate_title_max_marks_together:, + validate_title_start_with_caps:, + validate_body_min_length:, + validate_body_max_caps_percent:, + validate_body_max_marks_together:, + validate_body_start_with_caps: } end @@ -116,25 +116,25 @@ module Admin context "and title min length is empty" do let(:validate_title_min_length) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and title min length is zero" do let(:validate_title_min_length) { 0 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and title min length greater than 100" do let(:validate_title_min_length) { 101 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body min length is empty" do let(:validate_body_min_length) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body min length is zero" do @@ -146,7 +146,7 @@ module Admin context "and title max caps percent empty" do let(:validate_title_max_caps_percent) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and title max caps percent is zero" do @@ -158,7 +158,7 @@ module Admin context "and title max caps percent is bigger than 100" do let(:validate_title_max_caps_percent) { 101 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body start with caps is false" do @@ -170,7 +170,7 @@ module Admin context "and body max caps percent empty" do let(:validate_body_max_caps_percent) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body max caps percent is zero" do @@ -182,31 +182,31 @@ module Admin context "and body max caps percent is bigger than 100" do let(:validate_body_max_caps_percent) { 101 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and title max marks together is empty" do let(:validate_title_max_marks_together) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and title max marks together is zero" do let(:validate_title_max_marks_together) { 0 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body max marks together is empty" do let(:validate_body_max_marks_together) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body max marks together is zero" do let(:validate_body_max_marks_together) { 0 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end end diff --git a/spec/forms/admin/constraint_form_spec.rb b/spec/forms/admin/constraint_form_spec.rb index d81efcb45..56c53078f 100644 --- a/spec/forms/admin/constraint_form_spec.rb +++ b/spec/forms/admin/constraint_form_spec.rb @@ -34,7 +34,7 @@ module Admin } end - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and space manifest is not a participatory space" do @@ -45,7 +45,7 @@ module Admin } end - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end @@ -66,7 +66,7 @@ module Admin } end - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end end diff --git a/spec/forms/admin/custom_redirect_form_spec.rb b/spec/forms/admin/custom_redirect_form_spec.rb index aee39b770..d2c9fdacb 100644 --- a/spec/forms/admin/custom_redirect_form_spec.rb +++ b/spec/forms/admin/custom_redirect_form_spec.rb @@ -7,13 +7,13 @@ module Admin describe CustomRedirectForm do subject { described_class.from_params(attributes).with_context(current_organization: organization) } - let(:organization) { create :organization } + let(:organization) { create(:organization) } let(:attributes) do { - origin: origin, - destination: destination, - active: active, - pass_query: pass_query + origin:, + destination:, + active:, + pass_query: } end @@ -26,31 +26,31 @@ module Admin it { is_expected.to be_valid } it "returns normalized values" do - expect(subject.to_params).to eq([origin, { destination: destination, active: active, pass_query: pass_query }]) + expect(subject.to_params).to eq([origin, { destination:, active:, pass_query: }]) end end context "when origin is empty" do let(:origin) { "" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "and is only spaces" do let(:origin) { " " } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end context "when destination empty" do let(:destination) { "" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "and is only spaces" do let(:destination) { " " } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end @@ -93,7 +93,7 @@ module Admin context "when origin and destination are the same" do let(:destination) { "http://#{organization.host}#{origin} " } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when origin and destination are case sensitive" do diff --git a/spec/forms/admin/menu_form_spec.rb b/spec/forms/admin/menu_form_spec.rb index 47fb6b6ae..931f3a1ef 100644 --- a/spec/forms/admin/menu_form_spec.rb +++ b/spec/forms/admin/menu_form_spec.rb @@ -7,7 +7,7 @@ module Admin describe MenuForm do subject { described_class.from_params(attributes).with_context(current_organization: organization) } - let(:organization) { create :organization } + let(:organization) { create(:organization) } let(:url) { "/some-path" } let(:position) { 2 } let(:target) { "_blank" } @@ -15,65 +15,56 @@ module Admin let(:attributes) do { raw_label: label, - url: url, - position: position, - target: target, - visibility: visibility + url:, + position:, + target:, + visibility: } end - if legacy_version? - let(:label) do - { - en: "Menu english", - ca: "Menu catalan" - } - end - else - let(:label) do - { - "en" => "Menu english", - "ca" => "Menu catalan" - } - end + let(:label) do + { + "en" => "Menu english", + "ca" => "Menu catalan" + } end context "when everything is OK" do it { is_expected.to be_valid } it "returns normalized values" do - expect(subject.to_params).to eq(label: label, url: url, position: position, target: target, visibility: visibility) + expect(subject.to_params).to eq(label:, url:, position:, target:, visibility:) end end context "when label is not a hash" do let(:label) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when url is empty" do let(:url) { "" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when position is not numeric" do let(:position) { "hacker!" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when target is not included in options" do let(:target) { "hacker!" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when visibility is not included in options" do let(:visibility) { "hacker!" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end end diff --git a/spec/forms/editor_image_form_spec.rb b/spec/forms/editor_image_form_spec.rb index bdd82df64..59a229cd4 100644 --- a/spec/forms/editor_image_form_spec.rb +++ b/spec/forms/editor_image_form_spec.rb @@ -6,12 +6,12 @@ module Decidim::DecidimAwesome describe EditorImageForm do subject { described_class.from_params(attributes).with_context(context) } - let(:user) { create :user } + let(:user) { create(:user) } let(:organization) { user.organization } let(:attributes) do { - file: file, + file:, path: "/somepath", author_id: user.id } diff --git a/spec/forms/proposal_wizard_create_step_form_spec.rb b/spec/forms/proposal_wizard_create_step_form_spec.rb index ca8e29b87..78a908ce9 100644 --- a/spec/forms/proposal_wizard_create_step_form_spec.rb +++ b/spec/forms/proposal_wizard_create_step_form_spec.rb @@ -8,19 +8,19 @@ module Decidim::Proposals let(:params) do { - title: title, - body: body, - body_template: body_template + title:, + body:, + body_template: } end let(:organization) { create(:organization, available_locales: [:en]) } - let(:participatory_space) { create(:participatory_process, :with_steps, organization: organization) } - let(:component) { create(:proposal_component, participatory_space: participatory_space) } + let(:participatory_space) { create(:participatory_process, :with_steps, organization:) } + let(:component) { create(:proposal_component, participatory_space:) } let(:title) { "More sidewalks and less roads" } let(:body) { nil } let(:body_template) { nil } - let(:author) { create(:user, organization: organization) } + let(:author) { create(:user, organization:) } let(:form) do described_class.from_params(params).with_context( @@ -36,11 +36,15 @@ module Decidim::Proposals "foo" => "[#{data}]" } end - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: custom_fields } - let(:config_helper) { create :awesome_config, organization: organization, var: :proposal_custom_field_foo } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: custom_fields) } + let(:config_helper) { create(:awesome_config, organization:, var: :proposal_custom_field_foo) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:slug) { participatory_space.slug } + before do + skip "Proposals hacks feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + end + context "when is scoped under custom fields" do it { is_expected.to be_valid } end @@ -49,13 +53,13 @@ module Decidim::Proposals let(:slug) { "another-slug" } context "and body is not present" do - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "and body is invalid" do let(:body) { "aa" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end @@ -75,31 +79,31 @@ module Decidim::Proposals context "when not scoped under custom fields" do let(:slug) { "another-slug" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "when the template and the body are the same" do let(:body) { body_template } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end end context "when is a participatory text" do - let(:component) { create(:proposal_component, :with_participatory_texts_enabled, participatory_space: participatory_space) } + let(:component) { create(:proposal_component, :with_participatory_texts_enabled, participatory_space:) } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when the body exceeds the permited length" do - let(:component) { create(:proposal_component, :with_proposal_length, participatory_space: participatory_space, proposal_length: allowed_length) } + let(:component) { create(:proposal_component, :with_proposal_length, participatory_space:, proposal_length: allowed_length) } let(:allowed_length) { 15 } let(:body) { "A body longer than the permitted" } context "when not scoped under custom fields" do let(:slug) { "another-slug" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when is scoped under custom fields" do @@ -108,7 +112,7 @@ module Decidim::Proposals end shared_examples "starts with caps" do |prop| - let!(:config) { create :awesome_config, organization: organization, var: "validate_#{prop}_start_with_caps", value: enabled } + let!(:config) { create(:awesome_config, organization:, var: "validate_#{prop}_start_with_caps", value: enabled) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:enabled) { false } @@ -119,7 +123,7 @@ module Decidim::Proposals context "when scoped under different context" do let(:slug) { "another-slug" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "when starts with caps" do let(prop.to_sym) { "Í start with caps" } @@ -131,7 +135,7 @@ module Decidim::Proposals context "when enabled" do let(:enabled) { true } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "when starts with caps" do let(prop.to_sym) { "Í start with caps" } @@ -142,7 +146,7 @@ module Decidim::Proposals end shared_examples "minimum length" do |prop| - let!(:config) { create :awesome_config, organization: organization, var: "validate_#{prop}_min_length", value: min_length } + let!(:config) { create(:awesome_config, organization:, var: "validate_#{prop}_min_length", value: min_length) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:min_length) { 10 } @@ -153,7 +157,7 @@ module Decidim::Proposals context "when scoped under different context" do let(:slug) { "another-slug" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "when has more than 15 chars" do let(prop.to_sym) { "I am 17 years old" } @@ -165,7 +169,7 @@ module Decidim::Proposals context "when less than allowed" do let(:min_length) { 11 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end context "when min_length is zero" do @@ -175,13 +179,13 @@ module Decidim::Proposals if prop == :body it { is_expected.to be_valid } else - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end end shared_examples "max caps percent" do |prop| - let!(:config) { create :awesome_config, organization: organization, var: "validate_#{prop}_max_caps_percent", value: percent } + let!(:config) { create(:awesome_config, organization:, var: "validate_#{prop}_max_caps_percent", value: percent) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:percent) { 90 } @@ -191,7 +195,7 @@ module Decidim::Proposals shared_examples "invalid percentage" do |per| it "error message returns percentage" do - expect(form).to be_invalid + expect(form).not_to be_valid expect(form.errors.messages.values.flatten.first).to include("over #{per}% of the text") end end @@ -216,7 +220,7 @@ module Decidim::Proposals end shared_examples "max marks together" do |prop| - let!(:config) { create :awesome_config, organization: organization, var: "validate_#{prop}_max_marks_together", value: max_marks } + let!(:config) { create(:awesome_config, organization:, var: "validate_#{prop}_max_marks_together", value: max_marks) } let!(:constraint) { create(:config_constraint, awesome_config: config, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:max_marks) { 5 } @@ -227,7 +231,7 @@ module Decidim::Proposals context "when scoped under different context" do let(:slug) { "another-slug" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } context "when has only 1 mark" do let(prop.to_sym) { "I am not noisy!" } @@ -238,14 +242,14 @@ module Decidim::Proposals context "when has 2 marks" do let(prop.to_sym) { "I am not noisy!?" } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end context "when less than allowed" do let(:max_marks) { 4 } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end end diff --git a/spec/helpers/awesome_helpers_spec.rb b/spec/helpers/awesome_helpers_spec.rb index a77b59563..07ae832f4 100644 --- a/spec/helpers/awesome_helpers_spec.rb +++ b/spec/helpers/awesome_helpers_spec.rb @@ -3,13 +3,13 @@ require "spec_helper" module Decidim::DecidimAwesome - describe AwesomeHelpers, type: :helper do - let!(:organization) { create :organization } - let!(:another_organization) { create :organization } - let(:component) { create :proposal_component, organization: organization, settings: { awesome_voting_manifest: manifest } } - let(:another_component) { create :proposal_component, manifest_name: :another_component, organization: organization, settings: { awesome_voting_manifest: manifest } } + describe AwesomeHelpers do + let!(:organization) { create(:organization) } + let!(:another_organization) { create(:organization) } + let(:component) { create(:proposal_component, organization:, settings: { awesome_voting_manifest: manifest }) } + let(:another_component) { create(:proposal_component, manifest_name: :another_component, organization:, settings: { awesome_voting_manifest: manifest }) } let(:manifest) { :voting_cards } - let(:request) { double(env: env, url: "/") } + let(:request) { double(env:, url: "/") } let(:env) do { "decidim.current_organization" => organization diff --git a/spec/helpers/map_helper_spec.rb b/spec/helpers/map_helper_spec.rb index cc4b6bb6f..9be7943f6 100644 --- a/spec/helpers/map_helper_spec.rb +++ b/spec/helpers/map_helper_spec.rb @@ -3,7 +3,7 @@ require "spec_helper" module Decidim::DecidimAwesome - describe MapHelper, type: :helper do + describe MapHelper do let(:snippets) { defined?(Decidim::Snippets) ? Decidim::Snippets.new : nil } let(:current_participatory_space) { create(:participatory_process) } let(:current_component) do @@ -32,10 +32,7 @@ module Decidim::DecidimAwesome end before do - allow(helper).to receive(:current_participatory_space).and_return(current_participatory_space) - allow(helper).to receive(:current_organization).and_return(current_participatory_space.organization) - allow(helper).to receive(:current_component).and_return(current_component) - allow(helper).to receive(:snippets).and_return(snippets) + allow(helper).to receive_messages(current_participatory_space:, current_organization: current_participatory_space.organization, current_component:, snippets:) allow(helper).to receive(:translated_attribute) do |string| string["en"] end diff --git a/spec/jobs/export_admin_actions_job_spec.rb b/spec/jobs/export_admin_actions_job_spec.rb index 7cb4dfa37..46d375547 100644 --- a/spec/jobs/export_admin_actions_job_spec.rb +++ b/spec/jobs/export_admin_actions_job_spec.rb @@ -5,14 +5,14 @@ module Decidim::DecidimAwesome describe ExportAdminActionsJob do subject { described_class } - let(:organization) { create :organization } - let(:external_organization) { create :organization } - let!(:user) { create :user, :admin, :confirmed, organization: organization } - let!(:manager) { create(:user, :user_manager, organization: organization, last_sign_in_at: 6.days.ago, created_at: 7.days.ago) } - let(:administrator) { create(:user, organization: organization, last_sign_in_at: 6.days.ago, created_at: 7.days.ago) } - let(:valuator) { create(:user, name: "Lorry", email: "test@example.org", organization: organization, created_at: 7.days.ago) } - let(:collaborator) { create(:user, organization: organization, created_at: 7.days.ago) } - let(:moderator) { create(:user, organization: organization, created_at: 7.days.ago) } + let(:organization) { create(:organization) } + let(:external_organization) { create(:organization) } + let!(:user) { create(:user, :admin, :confirmed, organization:) } + let!(:manager) { create(:user, :user_manager, organization:, last_sign_in_at: 6.days.ago, created_at: 7.days.ago) } + let(:administrator) { create(:user, organization:, last_sign_in_at: 6.days.ago, created_at: 7.days.ago) } + let(:valuator) { create(:user, name: "Lorry", email: "test@example.org", organization:, created_at: 7.days.ago) } + let(:collaborator) { create(:user, organization:, created_at: 7.days.ago) } + let(:moderator) { create(:user, organization:, created_at: 7.days.ago) } let!(:participatory_process_user_role1) { create(:participatory_process_user_role, user: administrator, role: "admin", created_at: 4.days.ago) } let!(:participatory_process_user_role2) { create(:participatory_process_user_role, user: valuator, role: "valuator", created_at: 3.days.ago) } let!(:participatory_process_user_role3) { create(:participatory_process_user_role, user: collaborator, role: "collaborator", created_at: 2.days.ago) } @@ -35,7 +35,7 @@ module Decidim::DecidimAwesome end shared_examples "an export job" do - it "sends an email with the result of the export", versioning: true do + it "sends an email with the result of the export", :versioning do perform_enqueued_jobs do subject.perform_now(user, format, collection_ids) end @@ -58,17 +58,17 @@ module Decidim::DecidimAwesome let(:ext) { "xlsx" } end - it "serializes the data", versioning: true do + it "serializes the data", :versioning do expect(subject.new.send(:serialized_collection, collection_ids).count).to eq(8) - expect(subject.new.send(:serialized_collection, collection_ids).pluck(:user_email).uniq).to match_array([administrator.email, valuator.email, collaborator.email, moderator.email]) + expect(subject.new.send(:serialized_collection, collection_ids).pluck(:user_email).uniq).to contain_exactly(administrator.email, valuator.email, collaborator.email, moderator.email) end context "when external organization" do let(:collection_ids) { Decidim::DecidimAwesome::PaperTrailVersion.space_role_actions(external_organization).pluck(:id) } - it "serializes the data", versioning: true do + it "serializes the data", :versioning do expect(subject.new.send(:serialized_collection, collection_ids).count).to eq(1) - expect(subject.new.send(:serialized_collection, collection_ids).pluck(:user_email).uniq).to match_array([external_administrator.email]) + expect(subject.new.send(:serialized_collection, collection_ids).pluck(:user_email).uniq).to contain_exactly(external_administrator.email) end end @@ -101,7 +101,7 @@ module Decidim::DecidimAwesome ] end - it "serializes the data", versioning: true do + it "serializes the data", :versioning do expect(subject.new.send(:serialized_collection, collection_ids)).to eq(result) end end @@ -150,7 +150,7 @@ module Decidim::DecidimAwesome ] end - it "serializes the data", versioning: true do + it "serializes the data", :versioning do expect(subject.new.send(:serialized_collection, collection_ids)).to eq(result) end end diff --git a/spec/jobs/migrate_legacy_images_job_spec.rb b/spec/jobs/migrate_legacy_images_job_spec.rb index 40487212f..b356cda2e 100644 --- a/spec/jobs/migrate_legacy_images_job_spec.rb +++ b/spec/jobs/migrate_legacy_images_job_spec.rb @@ -6,11 +6,11 @@ module Decidim::DecidimAwesome describe MigrateLegacyImagesJob do subject { described_class } - let!(:organization) { create :organization } - let!(:another_organization) { create :organization } - let!(:user) { create :user, organization: organization } - let!(:new_image) { create :awesome_editor_image, organization: organization } - let!(:old_image) { create :awesome_editor_image, organization: organization, file: nil, image: "city.jpeg" } + let!(:organization) { create(:organization) } + let!(:another_organization) { create(:organization) } + let!(:user) { create(:user, organization:) } + let!(:new_image) { create(:awesome_editor_image, organization:) } + let!(:old_image) { create(:awesome_editor_image, organization:, file: nil, image: "city.jpeg") } let(:path) { "/uploads/decidim/decidim_awesome/editor_image/image/#{old_image.id}" } let(:text) do { "en" => body } diff --git a/spec/lib/config_spec.rb b/spec/lib/config_spec.rb index 2c9dd9287..7c6fc1ef2 100644 --- a/spec/lib/config_spec.rb +++ b/spec/lib/config_spec.rb @@ -6,8 +6,8 @@ module Decidim::DecidimAwesome describe Config do subject { described_class.new organization } - let(:organization) { create :organization } - let(:participatory_process) { create :participatory_process, organization: organization } + let(:organization) { create(:organization) } + let(:participatory_process) { create(:participatory_process, organization:) } let(:component) { create(:dummy_component, participatory_space: participatory_process) } let(:config) do Decidim::DecidimAwesome.config @@ -16,6 +16,8 @@ module Decidim::DecidimAwesome let(:request) { double(url: "/processes/some-slug/f/12") } it "has a basic config" do + skip "Recover this test after reenabling features in lib/decidim/decidim_awesome/awesome.rb" + expect(subject.config).to eq(config) end @@ -91,13 +93,15 @@ module Decidim::DecidimAwesome let(:custom_config) do config.merge(allow_images_in_full_editor: true) end - let!(:awesome_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: true } + let!(:awesome_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: true) } it "differs from the basic config" do expect(subject.config).not_to eq(config) end it "matches personalized config" do + skip "Recover this test after reenabling features in lib/decidim/decidim_awesome/awesome.rb" + expect(subject.config).to eq(custom_config) end @@ -109,7 +113,7 @@ module Decidim::DecidimAwesome use_floating_button: true } end - let!(:awesome_config) { create :awesome_config, organization: organization, var: :intergram_for_public_settings, value: settings } + let!(:awesome_config) { create(:awesome_config, organization:, var: :intergram_for_public_settings, value: settings) } it "returns the config normalized" do expect(subject.config[:intergram_for_public_settings][:chat_id]).to eq("-1234") @@ -127,7 +131,7 @@ module Decidim::DecidimAwesome subject.instance_variable_set :@config, nil end - let!(:awesome_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: true } + let!(:awesome_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: true) } it "always defaults to false" do expect(subject.config[:allow_images_in_full_editor]).to be(false) @@ -135,9 +139,9 @@ module Decidim::DecidimAwesome end context "when there are constraints" do - let!(:awesome_config) { create :awesome_config, organization: organization, var: :allow_images_in_full_editor, value: true } - let!(:constraint1) { create :config_constraint, awesome_config: awesome_config, settings: settings1 } - let!(:constraint2) { create :config_constraint, awesome_config: awesome_config, settings: settings2 } + let!(:awesome_config) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: true) } + let!(:constraint1) { create(:config_constraint, awesome_config:, settings: settings1) } + let!(:constraint2) { create(:config_constraint, awesome_config:, settings: settings2) } let(:settings1) do { participatory_space_manifest: "assemblies" @@ -169,6 +173,8 @@ module Decidim::DecidimAwesome end it "matches personalized config" do + skip "Recover this test after reenabling features in lib/decidim/decidim_awesome/awesome.rb" + expect(subject.config).to eq(custom_config) end @@ -176,6 +182,8 @@ module Decidim::DecidimAwesome let(:slug) { "another-slug" } it "matches basic config" do + skip "Recover this test after reenabling features in lib/decidim/decidim_awesome/awesome.rb" + expect(subject.config).to eq(config) end @@ -186,9 +194,9 @@ module Decidim::DecidimAwesome end context "when there are subconfigs" do - let!(:awesome_config) { create :awesome_config, organization: organization, var: :scoped_styles, value: values } - let(:config_helper_foo) { create :awesome_config, organization: organization, var: :scoped_style_foo, value: nil } - let(:config_helper_bar) { create :awesome_config, organization: organization, var: :scoped_style_bar, value: nil } + let!(:awesome_config) { create(:awesome_config, organization:, var: :scoped_styles, value: values) } + let(:config_helper_foo) { create(:awesome_config, organization:, var: :scoped_style_foo, value: nil) } + let(:config_helper_bar) { create(:awesome_config, organization:, var: :scoped_style_bar, value: nil) } let!(:constraint_foo) { create(:config_constraint, awesome_config: config_helper_foo, settings: settings_foo) } let!(:constraint_bar) { create(:config_constraint, awesome_config: config_helper_bar, settings: settings_bar) } let(:values) do diff --git a/spec/lib/context_analyzers/component_analyzer_spec.rb b/spec/lib/context_analyzers/component_analyzer_spec.rb index 5e654a798..eab05c901 100644 --- a/spec/lib/context_analyzers/component_analyzer_spec.rb +++ b/spec/lib/context_analyzers/component_analyzer_spec.rb @@ -7,7 +7,7 @@ module ContextAnalyzers describe ComponentAnalyzer do subject { described_class.context_for component } - let!(:participatory_process) { create :participatory_process } + let!(:participatory_process) { create(:participatory_process) } let(:component) { double(participatory_space: participatory_process) } let(:context) do { @@ -37,8 +37,8 @@ module ContextAnalyzers end context "when analyzing a named component" do - let(:proposal_component) { create :component, manifest_name: :proposals, participatory_space: participatory_process } - let!(:component) { create :proposal, component: proposal_component } + let(:proposal_component) { create(:component, manifest_name: :proposals, participatory_space: participatory_process) } + let!(:component) { create(:proposal, component: proposal_component) } let(:context) do { participatory_space_manifest: participatory_process.manifest.name.to_s, diff --git a/spec/lib/context_analyzers/participatory_space_analyzer_spec.rb b/spec/lib/context_analyzers/participatory_space_analyzer_spec.rb index 8d8caf55d..41da494c7 100644 --- a/spec/lib/context_analyzers/participatory_space_analyzer_spec.rb +++ b/spec/lib/context_analyzers/participatory_space_analyzer_spec.rb @@ -15,7 +15,7 @@ module ContextAnalyzers end context "when participatory_space exists" do - let!(:space) { create :participatory_process } + let!(:space) { create(:participatory_process) } let(:context) do { participatory_space_manifest: space.manifest.name.to_s, diff --git a/spec/lib/context_analyzers/request_analyzer_spec.rb b/spec/lib/context_analyzers/request_analyzer_spec.rb index 704ccfdb3..ac1c6cb59 100644 --- a/spec/lib/context_analyzers/request_analyzer_spec.rb +++ b/spec/lib/context_analyzers/request_analyzer_spec.rb @@ -7,7 +7,7 @@ module ContextAnalyzers describe RequestAnalyzer do subject { described_class.context_for request } - let(:request) { double(url: url) } + let(:request) { double(url:) } let(:url) { "" } let(:context) { {} } @@ -82,7 +82,7 @@ module ContextAnalyzers end context "when component is found" do - let!(:participatory_process) { create :participatory_process } + let!(:participatory_process) { create(:participatory_process) } let!(:component) { create(:dummy_component, participatory_space: participatory_process) } let(:context) do { diff --git a/spec/lib/system_checker_spec.rb b/spec/lib/system_checker_spec.rb index 956c150e8..56e6be2d7 100644 --- a/spec/lib/system_checker_spec.rb +++ b/spec/lib/system_checker_spec.rb @@ -8,6 +8,10 @@ module Decidim::DecidimAwesome describe SystemChecker do subject { described_class } + before do + skip "Review this tests after adapting all features to 0.28" + end + it "has overrides" do expect(subject.overrides.to_h.length).to eq(3) end diff --git a/spec/lib/voting_manifest_spec.rb b/spec/lib/voting_manifest_spec.rb index e6475dca2..a1c999f8c 100644 --- a/spec/lib/voting_manifest_spec.rb +++ b/spec/lib/voting_manifest_spec.rb @@ -4,7 +4,7 @@ module Decidim::DecidimAwesome describe VotingManifest do - subject { described_class.new(name: name) } + subject { described_class.new(name:) } let(:name) { :test } it { is_expected.to be_valid } @@ -12,7 +12,7 @@ module Decidim::DecidimAwesome context "when no name" do let(:name) { nil } - it { is_expected.to be_invalid } + it { is_expected.not_to be_valid } end it "any weight is valid" do diff --git a/spec/middleware/current_config_spec.rb b/spec/middleware/current_config_spec.rb index 3642f3181..4f8cc655c 100644 --- a/spec/middleware/current_config_spec.rb +++ b/spec/middleware/current_config_spec.rb @@ -6,17 +6,17 @@ module Decidim::DecidimAwesome describe CurrentConfig do let(:app) { ->(env) { [200, env, "app"] } } - let(:env) { Rack::MockRequest.env_for("https://#{host}/#{path}?foo=bar", "decidim.current_organization" => organization, method: method) } + let(:env) { Rack::MockRequest.env_for("https://#{host}/#{path}?foo=bar", "decidim.current_organization" => organization, method:) } let(:host) { "city.domain.org" } let(:method) { "GET" } let(:middleware) { described_class.new(app) } let(:path) { "" } - let!(:organization) { create(:organization, host: host) } + let!(:organization) { create(:organization, host:) } let!(:organization2) { create(:organization, host: "another.host.org") } - let!(:assembly) { create(:assembly, organization: organization) } - let!(:another_assembly) { create(:assembly, organization: organization) } - let!(:user) { create(:user, :confirmed, name: "Bob Marley", organization: organization) } - let!(:admin) { create(:user, :confirmed, :admin, name: "Peter Green", organization: organization) } + let!(:assembly) { create(:assembly, organization:) } + let!(:another_assembly) { create(:assembly, organization:) } + let!(:user) { create(:user, :confirmed, name: "Bob Marley", organization:) } + let!(:admin) { create(:user, :confirmed, :admin, name: "Peter Green", organization:) } # clean the tampered User model after do @@ -30,9 +30,9 @@ module Decidim::DecidimAwesome end context "when scoped admins" do - let!(:config) { create :awesome_config, organization: organization, var: :scoped_admins, value: admins } - let(:config_helper_bar) { create :awesome_config, organization: organization, var: :scoped_admin_bar } - let(:config_helper_foo) { create :awesome_config, organization: organization, var: :scoped_admin_foo } + let!(:config) { create(:awesome_config, organization:, var: :scoped_admins, value: admins) } + let(:config_helper_bar) { create(:awesome_config, organization:, var: :scoped_admin_bar) } + let(:config_helper_foo) { create(:awesome_config, organization:, var: :scoped_admin_foo) } let!(:constraint_bar) { create(:config_constraint, awesome_config: config_helper_bar, settings: settings_bar) } let!(:constraint_foo) { create(:config_constraint, awesome_config: config_helper_foo, settings: settings_foo) } let(:admins) do diff --git a/spec/models/awesome_config_spec.rb b/spec/models/awesome_config_spec.rb index 1ec878bff..e7b399baa 100644 --- a/spec/models/awesome_config_spec.rb +++ b/spec/models/awesome_config_spec.rb @@ -7,7 +7,7 @@ module Decidim::DecidimAwesome subject { awesome_config } let(:organization) { create(:organization) } - let(:awesome_config) { create(:awesome_config, organization: organization) } + let(:awesome_config) { create(:awesome_config, organization:) } it { is_expected.to be_valid } diff --git a/spec/models/editor_image_spec.rb b/spec/models/editor_image_spec.rb index f1ae1ea72..5cf022d74 100644 --- a/spec/models/editor_image_spec.rb +++ b/spec/models/editor_image_spec.rb @@ -8,7 +8,7 @@ module Decidim::DecidimAwesome let(:organization) { create(:organization) } let(:user) { create(:user) } - let(:editor_image) { create(:awesome_editor_image, organization: organization, author: user) } + let(:editor_image) { create(:awesome_editor_image, organization:, author: user) } it { is_expected.to be_valid } diff --git a/spec/models/paper_trail_version_spec.rb b/spec/models/paper_trail_version_spec.rb index 00ac2aa5a..78b8df789 100644 --- a/spec/models/paper_trail_version_spec.rb +++ b/spec/models/paper_trail_version_spec.rb @@ -2,19 +2,19 @@ require "spec_helper" module Decidim::DecidimAwesome - describe PaperTrailVersion, type: :model do + describe PaperTrailVersion do subject { paper_trail_version } let(:organization) { create(:organization) } - let(:user) { create(:user, organization: organization) } + let(:user) { create(:user, organization:) } let(:external_organization) { create(:organization) } let(:external_user) { create(:user, organization: external_organization) } context "when user roles" do - let(:participatory_process_user_role) { create(:participatory_process_user_role, participatory_process: participatory_process, user: administrator, role: "admin", created_at: 1.day.ago) } - let(:administrator) { create(:user, organization: organization, last_sign_in_at: 1.day.ago) } - let(:participatory_process) { create(:participatory_process, organization: organization) } + let(:participatory_process_user_role) { create(:participatory_process_user_role, participatory_process:, user: administrator, role: "admin", created_at: 1.day.ago) } + let(:administrator) { create(:user, organization:, last_sign_in_at: 1.day.ago) } + let(:participatory_process) { create(:participatory_process, organization:) } let!(:paper_trail_version) { create(:paper_trail_version, item_type: "Decidim::ParticipatoryProcessUserRole", item_id: participatory_process_user_role.id, whodunnit: user.id, event: "create") } let(:external_participatory_process_user_role) { create(:participatory_process_user_role, participatory_process: external_participatory_process, user: external_valuator, role: "valuator", created_at: 1.day.ago) } @@ -85,7 +85,7 @@ module Decidim::DecidimAwesome it "returns default_scope ordered by created_at" do expect(PaperTrailVersion.all).to eq([external_paper_trail_version, paper_trail_version]) - expect(PaperTrailVersion.admin_role_actions).to match_array([external_paper_trail_version, paper_trail_version]) + expect(PaperTrailVersion.admin_role_actions).to contain_exactly(external_paper_trail_version, paper_trail_version) end it "present method returns a UserEntityPresenter object" do diff --git a/spec/models/proposal_extra_field_spec.rb b/spec/models/proposal_extra_field_spec.rb index 8c2227557..c83bac650 100644 --- a/spec/models/proposal_extra_field_spec.rb +++ b/spec/models/proposal_extra_field_spec.rb @@ -20,12 +20,12 @@ module Decidim::DecidimAwesome end describe "weight_count" do - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) ] end @@ -37,8 +37,8 @@ module Decidim::DecidimAwesome context "when a vote is added" do before do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 5) - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 5) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) end it "returns the weight count for a weight" do @@ -63,8 +63,8 @@ module Decidim::DecidimAwesome context "when a vote is added" do before do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 5) - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 5) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) end it "returns the weight count for a weight" do @@ -79,7 +79,7 @@ module Decidim::DecidimAwesome end context "when proposal is destroyed" do - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } it "destroys the proposal weight" do expect { proposal.destroy }.to change(Decidim::DecidimAwesome::ProposalExtraField, :count).by(-1) @@ -87,7 +87,7 @@ module Decidim::DecidimAwesome end context "when proposal weight is destroyed" do - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } it "does not destroy the proposal" do expect { extra_fields.destroy }.not_to change(Decidim::Proposals::ProposalVote, :count) @@ -97,15 +97,15 @@ module Decidim::DecidimAwesome context "when vote weight is" do describe "created" do it "increments the weight cache" do - expect { create(:proposal_vote, proposal: proposal) }.to change { proposal.votes.count }.by(1) + expect { create(:proposal_vote, proposal:) }.to change { proposal.votes.count }.by(1) expect { create(:awesome_vote_weight, vote: proposal.votes.first, weight: 3) }.to change(Decidim::DecidimAwesome::ProposalExtraField, :count).by(1) expect(proposal.extra_fields.vote_weight_totals).to eq({ "3" => 1 }) expect(proposal.extra_fields.weight_total).to eq(3) end context "when cache already exists" do - let(:another_proposal) { create :proposal, component: proposal.component } - let!(:extra_fields) { create(:awesome_proposal_extra_fields, :with_votes, proposal: proposal) } + let(:another_proposal) { create(:proposal, component: proposal.component) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, :with_votes, proposal:) } let!(:another_extra_fields) { create(:awesome_proposal_extra_fields, :with_votes, proposal: another_proposal) } it "has weights and votes" do @@ -114,9 +114,9 @@ module Decidim::DecidimAwesome end it "increments the weight cache" do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1) - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) expect(extra_fields.reload.vote_weight_totals).to eq({ "1" => 2, "2" => 1, "3" => 3, "4" => 1, "5" => 1 }) expect(extra_fields.weight_total).to eq(22) end @@ -130,9 +130,9 @@ module Decidim::DecidimAwesome end it "increments the weight cache" do - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1) - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) expect(extra_fields.vote_weight_totals).to eq({ "1" => 1, "3" => 2 }) expect(extra_fields.weight_total).to eq(7) end @@ -141,8 +141,8 @@ module Decidim::DecidimAwesome # this is an unlikely scenario where voting removes and creates new vote weights, just in case... describe "updated" do - let!(:vote_weight1) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1) } - let!(:vote_weight2) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2) } + let!(:vote_weight1) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1) } + let!(:vote_weight2) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2) } let(:extra_fields) { proposal.reload.extra_fields } it "increments the weight cache" do @@ -161,8 +161,8 @@ module Decidim::DecidimAwesome end describe "destroyed" do - let!(:vote_weight1) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1) } - let!(:vote_weight2) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2) } + let!(:vote_weight1) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1) } + let!(:vote_weight2) { create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2) } let(:extra_fields) { proposal.reload.extra_fields } it "decreases the weight cache" do @@ -174,22 +174,22 @@ module Decidim::DecidimAwesome end describe "all_vote_weights" do - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } let!(:another_extra_fields) { create(:awesome_proposal_extra_fields, proposal: another_proposal) } let!(:unrelated_another_extra_fields) { create(:awesome_proposal_extra_fields, :with_votes) } let(:another_proposal) { create(:proposal, component: proposal.component) } let!(:votes) do - vote = create(:proposal_vote, proposal: proposal, author: create(:user, organization: proposal.organization)) - create(:awesome_vote_weight, vote: vote, weight: 1) + vote = create(:proposal_vote, proposal:, author: create(:user, organization: proposal.organization)) + create(:awesome_vote_weight, vote:, weight: 1) end let!(:other_votes) do vote = create(:proposal_vote, proposal: another_proposal, author: create(:user, organization: proposal.organization)) - create(:awesome_vote_weight, vote: vote, weight: 2) + create(:awesome_vote_weight, vote:, weight: 2) end it "returns all vote weights for a component" do - expect(proposal.all_vote_weights).to match_array([1, 2]) - expect(another_proposal.all_vote_weights).to match_array([1, 2]) + expect(proposal.all_vote_weights).to contain_exactly(1, 2) + expect(another_proposal.all_vote_weights).to contain_exactly(1, 2) expect(proposal.vote_weights).to eq({ "1" => 1, "2" => 0 }) expect(another_proposal.vote_weights).to eq({ "1" => 0, "2" => 1 }) end diff --git a/spec/models/vote_weight_spec.rb b/spec/models/vote_weight_spec.rb index 2d486c7ea..13c3ac515 100644 --- a/spec/models/vote_weight_spec.rb +++ b/spec/models/vote_weight_spec.rb @@ -20,7 +20,7 @@ module Decidim::DecidimAwesome context "when vote is destroyed" do let(:vote) { create(:proposal_vote) } - let!(:vote_weight) { create(:awesome_vote_weight, vote: vote) } + let!(:vote_weight) { create(:awesome_vote_weight, vote:) } it "destroys the vote weight" do expect { vote.destroy }.to change(Decidim::DecidimAwesome::VoteWeight, :count).by(-1) @@ -29,7 +29,7 @@ module Decidim::DecidimAwesome context "when vote weight is destroyed" do let(:vote) { create(:proposal_vote) } - let!(:vote_weight) { create(:awesome_vote_weight, vote: vote) } + let!(:vote_weight) { create(:awesome_vote_weight, vote:) } it "does not destroy the vote" do expect { vote_weight.destroy }.not_to change(Decidim::Proposals::ProposalVote, :count) @@ -40,7 +40,7 @@ module Decidim::DecidimAwesome let(:vote) { create(:proposal_vote) } context "when vote_weight already exists" do - let!(:vote_weight) { create(:awesome_vote_weight, vote: vote, weight: 1) } + let!(:vote_weight) { create(:awesome_vote_weight, vote:, weight: 1) } it "can be changed" do expect(vote.weight).to eq(1) diff --git a/spec/permissions/admin/permissions_spec.rb b/spec/permissions/admin/permissions_spec.rb index 4efa5f666..cbeca6c17 100644 --- a/spec/permissions/admin/permissions_spec.rb +++ b/spec/permissions/admin/permissions_spec.rb @@ -6,8 +6,8 @@ module Decidim::DecidimAwesome::Admin describe Permissions do subject { described_class.new(user, permission_action, context).permissions.allowed? } - let(:organization) { create :organization } - let(:user) { create :user, :admin, :confirmed, organization: organization } + let(:organization) { create(:organization) } + let(:user) { create(:user, :admin, :confirmed, organization:) } let(:context) do { current_organization: organization @@ -19,6 +19,10 @@ module Decidim::DecidimAwesome::Admin end let(:permission_action) { Decidim::PermissionAction.new(**action) } + before do + allow(Decidim::DecidimAwesome.config).to receive(feature).and_return(true) + end + context "when scope is not admin" do let(:action) do { scope: :foo, action: :edit_config, subject: :some_feature } @@ -54,11 +58,10 @@ module Decidim::DecidimAwesome::Admin end context "when is scoped admin accessing" do - let(:user) { create :user, organization: organization } + let(:user) { create(:user, organization:) } before do - allow(user).to receive(:admin).and_return(true) - allow(user).to receive(:admin?).and_return(true) + allow(user).to receive_messages(admin: true, admin?: true) end it_behaves_like "permission is not set" diff --git a/spec/permissions/permissions_spec.rb b/spec/permissions/permissions_spec.rb index e4178d980..1c8054d3c 100644 --- a/spec/permissions/permissions_spec.rb +++ b/spec/permissions/permissions_spec.rb @@ -6,8 +6,8 @@ module Decidim::DecidimAwesome describe Permissions do subject { described_class.new(user, permission_action, context).permissions.allowed? } - let(:organization) { create :organization } - let(:user) { create :user, organization: organization } + let(:organization) { create(:organization) } + let(:user) { create(:user, organization:) } let(:context) do { current_organization: organization, @@ -67,7 +67,7 @@ module Decidim::DecidimAwesome end context "when user is an admin" do - let(:user) { create :user, :admin, :confirmed, organization: organization } + let(:user) { create(:user, :admin, :confirmed, organization:) } context "and images in proposals are allowed" do it { is_expected.to be true } diff --git a/spec/presenters/menu_presenter_spec.rb b/spec/presenters/menu_presenter_spec.rb index a256c6849..39523700c 100644 --- a/spec/presenters/menu_presenter_spec.rb +++ b/spec/presenters/menu_presenter_spec.rb @@ -22,13 +22,12 @@ module Decidim position: 3 }] end - let(:user) { create :user, organization: organization } - let(:organization) { create :organization } - let!(:config) { create :awesome_config, organization: organization, var: :custom_menu, value: override } + let(:user) { create(:user, organization:) } + let(:organization) { create(:organization) } + let!(:config) { create(:awesome_config, organization:, var: :custom_menu, value: override) } before do - allow(view).to receive(:current_organization).and_return(organization) - allow(view).to receive(:current_user).and_return(user) + allow(view).to receive_messages(current_organization: organization, current_user: user) MenuRegistry.register :custom_menu do |menu| menu.add_item :native_foo, "Foo", "/foo", position: 1 menu.add_item :native_bar, "Bar", "/bar", position: 2 @@ -53,17 +52,17 @@ module Decidim shared_examples "has default items" do it "renders the menu as a navigation list and skips non visible" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li", count: 2) & + have_css("ul") & + have_css("li", count: 2) & have_link("Foo", href: "/foo") & have_link("Bar", href: "/bar") end it "renders the menu in the right order" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li:first-child", text: "Foo") & - have_selector("li:last-child", text: "Bar") + have_css("ul") & + have_css("li:first-child", text: "Foo") & + have_css("li:last-child", text: "Bar") end it "returns instance of Decidim:Menu" do @@ -74,8 +73,8 @@ module Decidim shared_examples "has overridden items" do it "renders the menu as a navigation list" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li", count: 3) & + have_css("ul") & + have_css("li", count: 3) & have_link("Bar", href: "/bar") & have_link("Fumanchu", href: "/foo") & have_link("Baz", href: "/baz") @@ -83,9 +82,9 @@ module Decidim it "renders the menu in the right order" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li:first-child", text: "Bar") & - have_selector("li:last-child", text: "Fumanchu") + have_css("ul") & + have_css("li:first-child", text: "Bar") & + have_css("li:last-child", text: "Fumanchu") end it "returns instance of Decidim:Menu" do @@ -98,16 +97,16 @@ module Decidim it "renders the menu as a navigation list" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li", count: 1) & + have_css("ul") & + have_css("li", count: 1) & have_link("Foo", href: "/foo") end it "renders the menu in the right order" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li:first-child", text: "Foo") & - have_selector("li:last-child", text: "Foo") + have_css("ul") & + have_css("li:first-child", text: "Foo") & + have_css("li:last-child", text: "Foo") end it "returns instance of Decidim:Menu" do @@ -120,17 +119,17 @@ module Decidim it "renders the menu as a navigation list" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li", count: 2) & + have_css("ul") & + have_css("li", count: 2) & have_link("Baz", href: "/baz") & have_link("Fumanchu", href: "/foo") end it "renders the menu in the right order" do expect(subject.render).to \ - have_selector("ul") & - have_selector("li:first-child", text: "Baz") & - have_selector("li:last-child", text: "Fumanchu") + have_css("ul") & + have_css("li:first-child", text: "Baz") & + have_css("li:last-child", text: "Fumanchu") end it "returns instance of Decidim:Menu" do diff --git a/spec/presenters/participatory_space_role_presenter_spec.rb b/spec/presenters/participatory_space_role_presenter_spec.rb index 844ed2755..4a37fef1c 100644 --- a/spec/presenters/participatory_space_role_presenter_spec.rb +++ b/spec/presenters/participatory_space_role_presenter_spec.rb @@ -5,18 +5,18 @@ module Decidim::DecidimAwesome describe ParticipatorySpaceRolePresenter, type: :helper do - let(:user) { create :user, organization: organization, last_sign_in_at: last_sign_in_at } + let(:user) { create(:user, organization:, last_sign_in_at:) } let(:last_sign_in_at) { nil } let(:entry) { Decidim::DecidimAwesome::PaperTrailVersion.space_role_actions(organization).first } - let!(:organization) { create :organization } - let(:participatory_space) { create(:participatory_process, organization: organization) } + let!(:organization) { create(:organization) } + let(:participatory_space) { create(:participatory_process, organization:) } let(:role) { "admin" } - let!(:participatory_process_user_role) { create(:participatory_process_user_role, role: role, participatory_process: participatory_space, user: user) } + let!(:participatory_process_user_role) { create(:participatory_process_user_role, role:, participatory_process: participatory_space, user:) } let(:destroyed_at) { 2.days.ago } let(:html) { true } - subject { described_class.new(entry, html: html) } + subject { described_class.new(entry, html:) } shared_context "with role destroyed" do before do diff --git a/spec/presenters/role_base_presenter_spec.rb b/spec/presenters/role_base_presenter_spec.rb index b27915081..cc079acb2 100644 --- a/spec/presenters/role_base_presenter_spec.rb +++ b/spec/presenters/role_base_presenter_spec.rb @@ -4,11 +4,11 @@ module Decidim::DecidimAwesome describe RoleBasePresenter, type: :helper do - let(:user) { create :user, organization: organization } - let(:organization) { create :organization } - let(:participatory_space) { create(:participatory_process, organization: organization) } + let(:user) { create(:user, organization:) } + let(:organization) { create(:organization) } + let(:participatory_space) { create(:participatory_process, organization:) } let(:role) { "admin" } - let(:participatory_process_user_role) { create(:participatory_process_user_role, role: role, participatory_process: participatory_space, user: user) } + let(:participatory_process_user_role) { create(:participatory_process_user_role, role:, participatory_process: participatory_space, user:) } let(:changes_create) do { "decidim_user_id" => [nil, user.id], @@ -24,7 +24,7 @@ module Decidim::DecidimAwesome let(:html) { true } - subject { described_class.new(entry, html: html) } + subject { described_class.new(entry, html:) } before do allow(entry).to receive(:changeset).and_return(changes_create) diff --git a/spec/presenters/user_entity_presenter_spec.rb b/spec/presenters/user_entity_presenter_spec.rb index e7183c6d3..2c5202bd7 100644 --- a/spec/presenters/user_entity_presenter_spec.rb +++ b/spec/presenters/user_entity_presenter_spec.rb @@ -5,15 +5,15 @@ module Decidim::DecidimAwesome describe UserEntityPresenter, type: :helper do - let!(:user) { create :user, :admin, organization: organization, last_sign_in_at: last_sign_in_at } + let!(:user) { create(:user, :admin, organization:, last_sign_in_at:) } let(:entry) { Decidim::DecidimAwesome::PaperTrailVersion.admin_role_actions.first } let(:last_sign_in_at) { nil } - let(:organization) { create :organization } + let(:organization) { create(:organization) } let(:destroyed_at) { 2.days.ago } let(:html) { true } - subject { described_class.new(entry, html: html) } + subject { described_class.new(entry, html:) } shared_context "with role destroyed" do before do @@ -46,7 +46,7 @@ module Decidim::DecidimAwesome it_behaves_like "a user presenter" context "when the role is a participant manager" do - let!(:user) { create :user, :user_manager, organization: organization, last_sign_in_at: last_sign_in_at } + let!(:user) { create(:user, :user_manager, organization:, last_sign_in_at:) } let(:entry) { Decidim::DecidimAwesome::PaperTrailVersion.admin_role_actions.first } describe "#roles" do diff --git a/spec/serializers/proposal_serializer_spec.rb b/spec/serializers/proposal_serializer_spec.rb index bfd99c0e9..bc8d8af70 100644 --- a/spec/serializers/proposal_serializer_spec.rb +++ b/spec/serializers/proposal_serializer_spec.rb @@ -8,9 +8,9 @@ module Decidim::Proposals described_class.new(proposal) end - let!(:proposal) { create(:proposal, :accepted, component: component) } - let!(:another_proposal) { create(:proposal, :accepted, component: component) } - let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal: proposal) } + let!(:proposal) { create(:proposal, :accepted, component:) } + let!(:another_proposal) { create(:proposal, :accepted, component:) } + let!(:extra_fields) { create(:awesome_proposal_extra_fields, proposal:) } let(:weights) do { "0" => 1, @@ -20,14 +20,14 @@ module Decidim::Proposals let!(:votes) do weights.each do |weight, count| count.times do - vote = create(:proposal_vote, proposal: proposal, author: create(:user, organization: proposal.organization)) - create(:awesome_vote_weight, vote: vote, weight: weight) + vote = create(:proposal_vote, proposal:, author: create(:user, organization: proposal.organization)) + create(:awesome_vote_weight, vote:, weight:) end end end let!(:another_extra_fields) { create(:awesome_proposal_extra_fields, :with_votes, proposal: another_proposal) } let(:participatory_process) { component.participatory_space } - let(:component) { create :proposal_component, settings: settings } + let(:component) { create(:proposal_component, settings:) } let(:settings) do { awesome_voting_manifest: manifest diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 37e83c393..d8c0270e0 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -3,6 +3,7 @@ require "decidim/dev" ENV["ENGINE_ROOT"] = File.dirname(__dir__) +ENV["NODE_ENV"] ||= "test" Decidim::Dev.dummy_app_path = File.expand_path(File.join(__dir__, "decidim_dummy_app")) diff --git a/spec/system/admin/admin_accountability_admin_filtering_spec.rb b/spec/system/admin/admin_accountability_admin_filtering_spec.rb index 02c4a39b4..f78953ceb 100644 --- a/spec/system/admin/admin_accountability_admin_filtering_spec.rb +++ b/spec/system/admin/admin_accountability_admin_filtering_spec.rb @@ -2,14 +2,14 @@ require "spec_helper" -describe "Filter Admin actions", type: :system do +describe "Filter Admin actions" do let(:login_date) { 3.days.ago } - let(:organization) { create :organization } - let!(:user) { create :user, :confirmed, organization: organization } - let!(:admin) { create :user, :admin, :confirmed, organization: organization } - let!(:admin2) { create(:user, :admin, :confirmed, name: "Lorry 1", email: "test@test.com", organization: organization, created_at: 6.days.ago) } - let!(:manager) { create(:user, :user_manager, :confirmed, organization: organization, created_at: 5.days.ago, last_sign_in_at: login_date) } - let!(:manager2) { create(:user, :user_manager, :confirmed, name: "Lorry 2", email: "test2@test.com", organization: organization, created_at: 4.days.ago) } + let(:organization) { create(:organization) } + let!(:user) { create(:user, :confirmed, organization:) } + let!(:admin) { create(:user, :admin, :confirmed, organization:) } + let!(:admin2) { create(:user, :admin, :confirmed, name: "Lorry 1", email: "test@test.com", organization:, created_at: 6.days.ago) } + let!(:manager) { create(:user, :user_manager, :confirmed, organization:, created_at: 5.days.ago, last_sign_in_at: login_date) } + let!(:manager2) { create(:user, :user_manager, :confirmed, name: "Lorry 2", email: "test2@test.com", organization:, created_at: 4.days.ago) } let(:resource_controller) { Decidim::DecidimAwesome::Admin::AdminAccountabilityController } @@ -174,7 +174,7 @@ def search_by_date(start_date, end_date) find(".exports.dropdown").click perform_enqueued_jobs { click_link "Export as CSV" } - within ".callout.success" do + within ".flash.success" do expect(page).to have_content("Export job has been enqueued. You will receive an email when it's ready.") end diff --git a/spec/system/admin/admin_accountability_ps_filtering_spec.rb b/spec/system/admin/admin_accountability_ps_filtering_spec.rb index b78a935e6..b3ba9ad10 100644 --- a/spec/system/admin/admin_accountability_ps_filtering_spec.rb +++ b/spec/system/admin/admin_accountability_ps_filtering_spec.rb @@ -2,15 +2,15 @@ require "spec_helper" -describe "Filter Admin actions", type: :system do +describe "Filter Admin actions" do let(:user_creation_date) { 7.days.ago } let(:login_date) { 6.days.ago } - let!(:organization) { create :organization } - let!(:admin) { create :user, :admin, :confirmed, organization: organization } - let(:administrator) { create(:user, organization: organization, last_sign_in_at: login_date, created_at: user_creation_date) } - let(:valuator) { create(:user, name: "Lorry", email: "test@example.org", organization: organization, created_at: user_creation_date) } - let(:collaborator) { create(:user, organization: organization, created_at: user_creation_date) } - let(:moderator) { create(:user, organization: organization, created_at: user_creation_date) } + let!(:organization) { create(:organization) } + let!(:admin) { create(:user, :admin, :confirmed, organization:) } + let(:administrator) { create(:user, organization:, last_sign_in_at: login_date, created_at: user_creation_date) } + let(:valuator) { create(:user, name: "Lorry", email: "test@example.org", organization:, created_at: user_creation_date) } + let(:collaborator) { create(:user, organization:, created_at: user_creation_date) } + let(:moderator) { create(:user, organization:, created_at: user_creation_date) } let(:resource_controller) { Decidim::DecidimAwesome::Admin::AdminAccountabilityController } @@ -47,6 +47,8 @@ end it "displays the filter labels" do + skip "Adapt the accountability feature to 0.28" + find("a.dropdown").hover expect(page).to have_content("Participatory space type") expect(page).to have_content("Role type") @@ -64,6 +66,8 @@ context "when filtering admin_actions by PARTICIPATORY SPACE" do it "Assemblies space type" do + skip "Adapt the accountability feature to 0.28" + apply_filter("Participatory space type", "Assemblies") within "tbody" do @@ -72,6 +76,8 @@ end it "Processes space type" do + skip "Adapt the accountability feature to 0.28" + apply_filter("Participatory space type", "Participatory processes") within "tbody" do @@ -80,12 +86,14 @@ end it "exports the result" do + skip "Adapt the accountability feature to 0.28" + apply_filter("Participatory space type", "Participatory processes") find(".exports.dropdown").click perform_enqueued_jobs { click_link "Export as CSV" } - within ".callout.success" do + within ".flash.success" do expect(page).to have_content("Export job has been enqueued. You will receive an email when it's ready.") end diff --git a/spec/system/admin/admin_accountability_spec.rb b/spec/system/admin/admin_accountability_spec.rb index c55d8fe51..624df48bf 100644 --- a/spec/system/admin/admin_accountability_spec.rb +++ b/spec/system/admin/admin_accountability_spec.rb @@ -2,19 +2,19 @@ require "spec_helper" -describe "Admin accountability", type: :system do +describe "Admin accountability" do let(:user_creation_date) { 7.days.ago } let(:login_date) { 6.days.ago } - let(:organization) { create :organization } - let(:external_organization) { create :organization } - let!(:admin) { create :user, :admin, :confirmed, organization: organization, created_at: 9.days.ago } - let!(:external_admin) { create :user, :admin, :confirmed, organization: external_organization } + let(:organization) { create(:organization) } + let(:external_organization) { create(:organization) } + let!(:admin) { create(:user, :admin, :confirmed, organization:, created_at: 9.days.ago) } + let!(:external_admin) { create(:user, :admin, :confirmed, organization: external_organization) } - let(:administrator) { create(:user, organization: organization, last_sign_in_at: login_date, created_at: user_creation_date) } - let(:valuator) { create(:user, organization: organization, created_at: user_creation_date) } - let(:collaborator) { create(:user, organization: organization, created_at: user_creation_date) } - let(:moderator) { create(:user, organization: organization, created_at: user_creation_date) } - let(:participatory_process) { create(:participatory_process, organization: organization) } + let(:administrator) { create(:user, organization:, last_sign_in_at: login_date, created_at: user_creation_date) } + let(:valuator) { create(:user, organization:, created_at: user_creation_date) } + let(:collaborator) { create(:user, organization:, created_at: user_creation_date) } + let(:moderator) { create(:user, organization:, created_at: user_creation_date) } + let(:participatory_process) { create(:participatory_process, organization:) } let(:external_administrator) { create(:user, organization: external_organization, last_sign_in_at: login_date, created_at: user_creation_date) } let(:external_valuator) { create(:user, organization: external_organization, created_at: user_creation_date) } @@ -55,17 +55,17 @@ context "when there are admin role actions" do before do - create(:participatory_process_user_role, user: administrator, participatory_process: participatory_process, role: "admin", created_at: 4.days.ago) - create(:participatory_process_user_role, user: valuator, participatory_process: participatory_process, role: "valuator", created_at: 3.days.ago) - create(:participatory_process_user_role, user: collaborator, participatory_process: participatory_process, role: "collaborator", created_at: 2.days.ago) - create(:participatory_process_user_role, user: moderator, participatory_process: participatory_process, role: "moderator", created_at: 1.day.ago) + create(:participatory_process_user_role, user: administrator, participatory_process:, role: "admin", created_at: 4.days.ago) + create(:participatory_process_user_role, user: valuator, participatory_process:, role: "valuator", created_at: 3.days.ago) + create(:participatory_process_user_role, user: collaborator, participatory_process:, role: "collaborator", created_at: 2.days.ago) + create(:participatory_process_user_role, user: moderator, participatory_process:, role: "moderator", created_at: 1.day.ago) Decidim::ParticipatoryProcessUserRole.find_by(user: collaborator).destroy click_link "Participants" end - it "shows the correct information for each user", versioning: true do + it "shows the correct information for each user", :versioning do click_link "Admin accountability" expect(page).not_to have_content("NOTE: This list might not include users created/removed before") @@ -126,7 +126,7 @@ create(:participatory_process_user_role, user: external_moderator, participatory_process: external_participatory_process, role: "moderator", created_at: 1.day.ago) end - it "does not include the other organization", versioning: true do + it "does not include the other organization", :versioning do click_link "Admin accountability" expect(page).to have_link("Processes > #{participatory_process.title["en"]}", @@ -156,7 +156,7 @@ click_link "Admin accountability" end - it "shows data only for external_organization", versioning: true do + it "shows data only for external_organization", :versioning do expect(page).not_to have_link("Processes > #{participatory_process.title["en"]}", href: "/admin/participatory_processes/#{participatory_process.slug}/user_roles") expect(page).to have_link("Processes > #{external_participatory_process.title["en"]}", @@ -176,21 +176,21 @@ context "when there are multiple assignations for the same user" do before do - create(:participatory_process_user_role, user: collaborator, participatory_process: participatory_process, role: "collaborator", created_at: 3.days.ago) + create(:participatory_process_user_role, user: collaborator, participatory_process:, role: "collaborator", created_at: 3.days.ago) Decidim::ParticipatoryProcessUserRole.find_by(user: collaborator).destroy - create(:participatory_process_user_role, user: collaborator, participatory_process: participatory_process, role: "valuator", created_at: 2.days.ago) + create(:participatory_process_user_role, user: collaborator, participatory_process:, role: "valuator", created_at: 2.days.ago) Decidim::ParticipatoryProcessUserRole.find_by(user: collaborator).destroy - create(:participatory_process_user_role, user: collaborator, participatory_process: participatory_process, role: "collaborator", created_at: 1.day.ago) + create(:participatory_process_user_role, user: collaborator, participatory_process:, role: "collaborator", created_at: 1.day.ago) click_link "Participants" click_link "Admin accountability" end - it "shows currently active", versioning: true do + it "shows currently active", :versioning do within all("table tr")[1] do expect(page).to have_content("Collaborator") expect(page).to have_content(collaborator.name) @@ -221,18 +221,18 @@ end context "when user listed has been removed" do - let(:valuator) { create(:user, :deleted, organization: organization, created_at: user_creation_date) } + let(:valuator) { create(:user, :deleted, organization:, created_at: user_creation_date) } before do - create(:participatory_process_user_role, user: collaborator, participatory_process: participatory_process, role: "collaborator", created_at: 3.days.ago) + create(:participatory_process_user_role, user: collaborator, participatory_process:, role: "collaborator", created_at: 3.days.ago) collaborator.destroy - create(:participatory_process_user_role, user: valuator, participatory_process: participatory_process, role: "valuator", created_at: 2.days.ago) + create(:participatory_process_user_role, user: valuator, participatory_process:, role: "valuator", created_at: 2.days.ago) click_link "Participants" click_link "Admin accountability" end - it "shows the user as removed", versioning: true do + it "shows the user as removed", :versioning do within all("table tr")[1] do expect(page).to have_content("Valuator") expect(page).to have_content("Deleted user") @@ -252,14 +252,14 @@ end context "when global admins" do - let!(:second_admin) { create(:user, :admin, organization: organization, created_at: 3.days.ago) } + let!(:second_admin) { create(:user, :admin, organization:, created_at: 3.days.ago) } before do click_link "Participants" click_link "Admin accountability" end - it "shows the current admins", versioning: true do + it "shows the current admins", :versioning do click_link "List global admins" expect(page).not_to have_content("NOTE: This list might not include users created/removed before") @@ -295,7 +295,7 @@ # rubocop:enable Rails/SkipsModelValidations: end - it "shows a warning message", versioning: true do + it "shows a warning message", :versioning do click_link "List global admins" expect(page).to have_content("NOTE: This list might not include users created/removed before #{missing_date.strftime("%d/%m/%Y %H:%M")}") end diff --git a/spec/system/admin/admin_edits_proposal_spec.rb b/spec/system/admin/admin_edits_proposal_spec.rb index 0d92f8213..697bfb07b 100644 --- a/spec/system/admin/admin_edits_proposal_spec.rb +++ b/spec/system/admin/admin_edits_proposal_spec.rb @@ -3,15 +3,15 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/editor_examples" -describe "Admin edits proposals", type: :system do +describe "Admin edits proposals" do let(:manifest_name) { "proposals" } let(:organization) { participatory_process.organization } - let!(:user) { create :user, :admin, :confirmed, organization: organization } - let!(:proposal) { create :proposal, :official, component: component } - let!(:allow_images_in_proposals) { create(:awesome_config, organization: organization, var: :allow_images_in_proposals, value: images_in_proposals) } - let!(:allow_images_in_small_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_full_editor, value: images_editor) } - let!(:use_markdown_editor) { create(:awesome_config, organization: organization, var: :use_markdown_editor, value: markdown_enabled) } - let!(:allow_images_in_markdown_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_markdown_editor, value: markdown_images) } + let!(:user) { create(:user, :admin, :confirmed, organization:) } + let!(:proposal) { create(:proposal, :official, component:) } + let!(:allow_images_in_proposals) { create(:awesome_config, organization:, var: :allow_images_in_proposals, value: images_in_proposals) } + let!(:allow_images_in_small_editor) { create(:awesome_config, organization:, var: :allow_images_in_full_editor, value: images_editor) } + let!(:use_markdown_editor) { create(:awesome_config, organization:, var: :use_markdown_editor, value: markdown_enabled) } + let!(:allow_images_in_markdown_editor) { create(:awesome_config, organization:, var: :allow_images_in_markdown_editor, value: markdown_images) } let(:images_in_proposals) { false } let(:images_editor) { false } let(:markdown_enabled) { false } @@ -81,6 +81,8 @@ let(:html) { "

title

Paragraph
line 2

" } it "converts markdown to html before saving" do + skip "This feature is pending to be adapted to Decidim 0.28" + sleep 1 page.execute_script("$('[name=\"faker-inscrybmde\"]:first')[0].InscrybMDE.value('#{text}')") diff --git a/spec/system/admin/admin_edits_proposals_custom_fields_spec.rb b/spec/system/admin/admin_edits_proposals_custom_fields_spec.rb index 464c18fa0..ba7ed0c1a 100644 --- a/spec/system/admin/admin_edits_proposals_custom_fields_spec.rb +++ b/spec/system/admin/admin_edits_proposals_custom_fields_spec.rb @@ -2,12 +2,12 @@ require "spec_helper" -describe "Admin edits proposals", type: :system do +describe "Admin edits proposals" do let(:manifest_name) { "proposals" } let(:organization) { participatory_process.organization } - let!(:user) { create :user, :admin, :confirmed, organization: organization } - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: custom_fields } - let(:config_helper) { create :awesome_config, organization: organization, var: :proposal_custom_field_bar } + let!(:user) { create(:user, :admin, :confirmed, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: custom_fields) } + let(:config_helper) { create(:awesome_config, organization:, var: :proposal_custom_field_bar) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:slug) { participatory_process.slug } @@ -25,7 +25,7 @@ let!(:proposal) do create(:proposal, :official, - component: component, + component:, body: { en: '
Bio
I shot the sheriff
', ca: '
Bio
Jo disparo al sheriff
' @@ -35,6 +35,8 @@ include_context "when managing a component as an admin" before do + skip "Proposals custom fields feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + visit_component_admin find("a.action-icon--edit-proposal").click diff --git a/spec/system/admin/admin_manages_menu_overrides_spec.rb b/spec/system/admin/admin_manages_menu_overrides_spec.rb index 614ae741d..c778b0cb3 100644 --- a/spec/system/admin/admin_manages_menu_overrides_spec.rb +++ b/spec/system/admin/admin_manages_menu_overrides_spec.rb @@ -3,175 +3,194 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/menu_hack_contexts" -describe "Admin manages hacked menus", type: :system do - let(:organization) { create :organization } - let!(:config) { create :awesome_config, organization: organization, var: menu_name, value: previous_menu } - let!(:user) { create(:user, :admin, :confirmed, organization: organization) } - let!(:participatory_process) { create :participatory_process, organization: organization } +describe "Admin manages hacked menus" do + let(:organization) { create(:organization) } + let!(:config) { create(:awesome_config, organization:, var: menu_name, value: previous_menu) } + let!(:user) { create(:user, :admin, :confirmed, organization:) } + let!(:participatory_process) { create(:participatory_process, organization:) } let(:previous_menu) do [] end include_context "with menu hacks params" - before do - Decidim::MenuRegistry.register :menu do |menu| - menu.add_item :native_menu, - "Native", - "/some-path?locale=ca", - position: 5 - end - switch_to_host(organization.host) - login_as user, scope: :user - visit decidim_admin_decidim_awesome.menu_hacks_path - end - - after do - Decidim::MenuRegistry.find(:menu).configurations.pop - end - - context "when visiting the index" do - it "shows default menu items" do - within "table tbody" do - expect(page).to have_content("Home") - expect(page).to have_content("Processes") - expect(page).to have_content("Help") + shared_examples "admin manages menu overrides" do + before do + Decidim::MenuRegistry.register menu_id do |menu| + menu.add_item :native_menu, + "Native", + "/some-path?locale=ca", + position: 5 end + switch_to_host(organization.host) + login_as user, scope: :user + visit decidim_admin_decidim_awesome.menu_hacks_path(menu_id:) end - it "allows to edit a default item" do - within find("tr", text: "Home") do - click_link "Edit" - end - - fill_in "menu_raw_label_en", with: "A new beggining" - find("*[type=submit]").click - - within "table tbody" do - expect(page).to have_content("A new beggining") - expect(page).not_to have_content("Home") - end + after do + Decidim::MenuRegistry.find(menu_id).configurations.pop end - it "allows to create a new item" do - click_link "New item" - - fill_in "menu_raw_label_en", with: "Blog" - fill_in "menu_url", with: "http://external.blog" - fill_in "menu_position", with: "1.5" - - find("*[type=submit]").click - - within "table tbody" do - expect(page).to have_content("Home") - expect(page).to have_content("Blog") - expect(page).to have_content("http://external.blog") - expect(page).to have_content("Processes") - expect(page).to have_content("Help") + context "when visiting the index" do + it "shows default menu items" do + within "table tbody" do + default_menu_labels.each do |label| + expect(page).to have_content(label) + end + end end - end - context "when native menu has query strings" do - it "allows to edit it" do - within find("tr", text: "Native") do + it "allows to edit a default item" do + within find("tr", text: default_menu_item[:label]) do click_link "Edit" end - fill_in "menu_raw_label_en", with: "Native edited" - find("*[type=submit]").click + fill_in "menu_raw_label_en", with: "A new beggining" + click_button "Save" within "table tbody" do - expect(page).to have_content("Native edited") - expect(page).to have_content("/some-path") - expect(page).not_to have_content("/some-path?locale=ca") + expect(page).to have_content("A new beggining") + expect(page).not_to have_content("Home") end end - end - context "when menu has overrides" do - include_context "with menu hacks params" + it "allows to create a new item" do + click_link "New item" - let(:url) { "/" } - let(:previous_menu) do - [{ "url" => url, "label" => { "en" => "A new beggining" }, "position" => 10 }] - end + fill_in "menu_raw_label_en", with: "Blog" + fill_in "menu_url", with: "http://external.blog" + fill_in "menu_position", with: "1.5" + + click_button "Save" - it "shows default and overrides menu items" do within "table tbody" do - expect(page).to have_content("A new beggining") - expect(page).not_to have_content("Home") - expect(page).to have_content("Processes") - expect(page).to have_content("Help") + default_menu_labels.each do |label| + expect(page).to have_content(label) + end + expect(page).to have_content("Blog") + expect(page).to have_content("http://external.blog") end end - it "can be edited" do - within find("tr", text: "A new beggining") do - click_link "Edit" - end + context "when native menu has query strings" do + it "allows to edit it" do + within find("tr", text: "Native") do + click_link "Edit" + end - fill_in "menu_raw_label_en", with: "Another thing" - find("*[type=submit]").click + fill_in "menu_raw_label_en", with: "Native edited" + click_button "Save" - within "table tbody" do - expect(page).to have_content("Another thing") - expect(page).not_to have_content("A new beggining") - expect(page).not_to have_content("Home") + within "table tbody" do + expect(page).to have_content("Native edited") + expect(page).to have_content("/some-path") + expect(page).not_to have_content("/some-path?locale=ca") + end end end - it "can be deleted" do - within find("tr", text: "A new beggining") do - accept_confirm { click_link "Remove customization" } + context "when menu has overrides" do + include_context "with menu hacks params" + + let(:url) { default_menu_item[:path] } + let(:previous_menu) do + [{ "url" => url, "label" => { "en" => "A new beggining" }, "position" => 10 }] end - within "table tbody" do - expect(page).to have_content("Home") - expect(page).not_to have_content("A new beggining") + it "shows default and overrides menu items" do + within "table tbody" do + expect(page).to have_content("A new beggining") + expect(page).not_to have_content(default_menu_item[:label]) + (default_menu_labels - [default_menu_item[:label]]).each do |label| + expect(page).to have_content(label) + end + end end - end - end - context "when menu has new items" do - include_context "with menu hacks params" + it "can be edited" do + within find("tr", text: "A new beggining") do + click_link "Edit" + end - let(:url) { "/a-new-link" } - let(:previous_menu) do - [{ "url" => url, "label" => { "en" => "A new link" }, "position" => 10 }] - end + fill_in "menu_raw_label_en", with: "Another thing" + click_button "Save" - it "shows default and overrides menu items" do - within "table tbody" do - expect(page).to have_content("Home") - expect(page).to have_content("Processes") - expect(page).to have_content("Help") - expect(page).to have_content("A new link") + within "table tbody" do + expect(page).to have_content("Another thing") + expect(page).not_to have_content("A new beggining") + expect(page).not_to have_content("Home") + end end - end - it "can be edited" do - within find("tr", text: "A new link") do - click_link "Edit" + it "can be deleted" do + within find("tr", text: "A new beggining") do + accept_confirm { click_link "Remove customization" } + end + + within "table tbody" do + expect(page).to have_content(default_menu_item[:label]) + expect(page).not_to have_content("A new beggining") + end end + end - fill_in "menu_raw_label_en", with: "Another thing" - find("*[type=submit]").click + context "when menu has new items" do + include_context "with menu hacks params" - within "table tbody" do - expect(page).to have_content("Another thing") - expect(page).not_to have_content("A new link") + let(:url) { "/a-new-link" } + let(:previous_menu) do + [{ "url" => url, "label" => { "en" => "A new link" }, "position" => 10 }] end - end - it "can be deleted" do - within find("tr", text: "A new link") do - accept_confirm { click_link "Remove addition" } + it "shows default and overrides menu items" do + within "table tbody" do + default_menu_labels.each do |label| + expect(page).to have_content(label) + end + expect(page).to have_content("A new link") + end end - within "table tbody" do - expect(page).not_to have_content("A new link") + it "can be edited" do + within find("tr", text: "A new link") do + click_link "Edit" + end + + fill_in "menu_raw_label_en", with: "Another thing" + click_button "Save" + + within "table tbody" do + expect(page).to have_content("Another thing") + expect(page).not_to have_content("A new link") + end + end + + it "can be deleted" do + within find("tr", text: "A new link") do + accept_confirm { click_link "Remove addition" } + end + + within "table tbody" do + expect(page).not_to have_content("A new link") + end end end end end + + context "with main menu" do + let!(:menu_name) { "menu" } + let(:default_menu_labels) { %w(Home Processes Help) } + let(:default_menu_item) { { label: "Home", path: "/" } } + + it_behaves_like "admin manages menu overrides" + end + + context "with home content block menu" do + let!(:menu_name) { "home_content_block_menu" } + let(:default_menu_labels) { %w(Processes) } + let(:default_menu_item) { { label: "Processes", path: "/processes" } } + + it_behaves_like "admin manages menu overrides" + end end diff --git a/spec/system/admin/admin_manages_proposal_custom_fields_spec.rb b/spec/system/admin/admin_manages_proposal_custom_fields_spec.rb index 96b9221a0..54ca24c4b 100644 --- a/spec/system/admin/admin_manages_proposal_custom_fields_spec.rb +++ b/spec/system/admin/admin_manages_proposal_custom_fields_spec.rb @@ -3,14 +3,14 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/box_label_editor" -describe "Admin manages custom proposal fields", type: :system do - let(:organization) { create :organization } - let!(:admin) { create(:user, :admin, :confirmed, organization: organization) } +describe "Admin manages custom proposal fields" do + let(:organization) { create(:organization) } + let!(:admin) { create(:user, :admin, :confirmed, organization:) } let(:custom_fields) do {} end - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: custom_fields } - let(:config_helper) { create :awesome_config, organization: organization, var: :proposal_custom_field_bar } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: custom_fields) } + let(:config_helper) { create(:awesome_config, organization:, var: :proposal_custom_field_bar) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes", component_manifest: "proposals" }) } let!(:another_constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes" }) } @@ -20,6 +20,8 @@ let(:data3) { '{"type":"textarea","label":"Short Bio","rows":"5","className":"form-control","name":"textarea-1476748007461"}' } before do + skip "Custom fields feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + switch_to_host(organization.host) login_as admin, scope: :user visit decidim_admin_decidim_awesome.config_path(:proposal_custom_fields) @@ -101,8 +103,8 @@ expect(page).to have_content("Street Sweeper") expect(page).not_to have_content("Short Bio") - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_foo)).not_to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_foo)).not_to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar)).to be_present end end @@ -130,8 +132,8 @@ expect(page).to have_content("Processes") end - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar)).to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar).constraints.first.settings).to eq(constraint.settings) + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar).constraints.first.settings).to eq(constraint.settings) end context "when removing a constraint" do @@ -164,9 +166,9 @@ expect(page).not_to have_content("Proposals") end - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar)).to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar).constraints.count).to eq(1) - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar).constraints.first).to eq(another_constraint) + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar).constraints.count).to eq(1) + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar).constraints.first).to eq(another_constraint) end context "and there is only one constraint" do @@ -182,8 +184,8 @@ end expect(page).to have_content("Sorry, this cannot be deleted") - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar).constraints.count).to eq(1) - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :proposal_custom_field_bar).constraints.first).to eq(constraint) + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar).constraints.count).to eq(1) + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :proposal_custom_field_bar).constraints.first).to eq(constraint) end end end diff --git a/spec/system/admin/admin_manages_scoped_admins_spec.rb b/spec/system/admin/admin_manages_scoped_admins_spec.rb index c8dff6c73..15bb220cb 100644 --- a/spec/system/admin/admin_manages_scoped_admins_spec.rb +++ b/spec/system/admin/admin_manages_scoped_admins_spec.rb @@ -3,17 +3,17 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/box_label_editor" -describe "Admin manages scoped admins", type: :system do - let(:organization) { create :organization } - let!(:admin) { create(:user, :admin, :confirmed, organization: organization) } - let!(:user) { create(:user, :confirmed, organization: organization) } - let!(:user2) { create(:user, :confirmed, organization: organization) } - let!(:user3) { create(:user, :confirmed, organization: organization) } +describe "Admin manages scoped admins" do + let(:organization) { create(:organization) } + let!(:admin) { create(:user, :admin, :confirmed, organization:) } + let!(:user) { create(:user, :confirmed, organization:) } + let!(:user2) { create(:user, :confirmed, organization:) } + let!(:user3) { create(:user, :confirmed, organization:) } let(:admins) do {} end - let!(:config) { create :awesome_config, organization: organization, var: :scoped_admins, value: admins } - let(:config_helper) { create :awesome_config, organization: organization, var: :scoped_admin_bar } + let!(:config) { create(:awesome_config, organization:, var: :scoped_admins, value: admins) } + let(:config_helper) { create(:awesome_config, organization:, var: :scoped_admin_bar) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes" }) } before do @@ -32,7 +32,7 @@ sleep 1 page.execute_script("$('.multiusers-select:first').append(new Option('#{user.name}', #{user.id}, true, true)).trigger('change');") - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_admin_callout("updated successfully") expect(page).to have_content(user.name.to_s) @@ -47,7 +47,7 @@ sleep 1 page.execute_script("$('.multiusers-select:first').append(new Option('#{user.name}', #{user.id}, true, true)).trigger('change');") - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_admin_callout("updated successfully") expect(page).to have_content(user.name.to_s) @@ -77,6 +77,8 @@ end it "updates the content" do + skip "Adapt the accountability feature to 0.28" + expect(page).to have_content(user2.name.to_s) expect(page).to have_content(user3.name.to_s) @@ -87,8 +89,8 @@ expect(page).to have_admin_callout("removed successfully") expect(page).to have_content(user3.name.to_s) expect(page).not_to have_content(user2.name.to_s) - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_admin_foo)).not_to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_admin_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_admin_foo)).not_to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_admin_bar)).to be_present end end @@ -101,12 +103,14 @@ end it "adds a new config helper var" do + skip "Adapt the accountability feature to 0.28" + within ".scoped_admins_container[data-key=\"foo\"]" do - click_link "Add case" + click_button "Add case" end select "Processes", from: "constraint_participatory_space_manifest" - within ".modal-content" do + within "#new-modal-scoped_admin_foo-content" do find("*[type=submit]").click end @@ -116,8 +120,8 @@ expect(page).to have_content("Processes") end - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_admin_bar)).to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_admin_bar).constraints.first.settings).to eq("participatory_space_manifest" => "participatory_processes") + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_admin_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_admin_bar).constraints.first.settings).to eq("participatory_space_manifest" => "participatory_processes") end context "when removing a constraint" do @@ -129,6 +133,8 @@ end it "removes the helper config var" do + skip "Adapt the accountability feature to 0.28" + within ".scoped_admins_container[data-key=\"bar\"] .constraints-editor" do expect(page).to have_content("Processes") end @@ -147,8 +153,8 @@ expect(page).not_to have_content("Processes") end - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_admin_bar)).to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_admin_bar).constraints).not_to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_admin_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_admin_bar).constraints).not_to be_present end end end diff --git a/spec/system/admin/admin_manages_scoped_styles_spec.rb b/spec/system/admin/admin_manages_scoped_styles_spec.rb index 92895cbbd..7d15e5e71 100644 --- a/spec/system/admin/admin_manages_scoped_styles_spec.rb +++ b/spec/system/admin/admin_manages_scoped_styles_spec.rb @@ -3,14 +3,14 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/box_label_editor" -describe "Admin manages scoped styles", type: :system do - let(:organization) { create :organization } - let!(:admin) { create(:user, :admin, :confirmed, organization: organization) } +describe "Admin manages scoped styles" do + let(:organization) { create(:organization) } + let!(:admin) { create(:user, :admin, :confirmed, organization:) } let(:styles) do {} end - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: styles } - let(:config_helper) { create :awesome_config, organization: organization, var: :scoped_style_bar } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: styles) } + let(:config_helper) { create(:awesome_config, organization:, var: :scoped_style_bar) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes" }) } before do @@ -28,7 +28,7 @@ sleep 1 page.execute_script('document.querySelector(".CodeMirror").CodeMirror.setValue("body {background: red;}");') - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_admin_callout("updated successfully") expect(page).to have_content("body {background: red;}") @@ -42,7 +42,7 @@ sleep 1 page.execute_script("document.querySelector(\"[data-key=#{key}] .CodeMirror\").CodeMirror.setValue(\"body {background: green;}\");") - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_admin_callout("updated successfully") expect(page).not_to have_content("body {background: red;}") @@ -53,7 +53,7 @@ it "shows error message if invalid" do sleep 1 page.execute_script("document.querySelector(\"[data-key=#{key}] .CodeMirror\").CodeMirror.setValue(\"I am invalid CSS\");") - find("*[type=submit]").click + click_button "Update configuration" expect(page).to have_admin_callout("Error updating configuration! CSS in box ##{key} is invalid") expect(page).not_to have_content("body {background: red;}") @@ -96,8 +96,8 @@ expect(page).to have_admin_callout("removed successfully") expect(page).to have_content("body {background: blue;}") expect(page).not_to have_content("body {background: red;}") - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_style_foo)).not_to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_style_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_style_foo)).not_to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_style_bar)).to be_present end end @@ -110,12 +110,14 @@ end it "adds a new config helper var" do + skip "Adapt the accountability feature to 0.28" + within ".scoped_styles_container[data-key=\"foo\"]" do - click_link "Add case" + click_button "Add case" end select "Processes", from: "constraint_participatory_space_manifest" - within ".modal-content" do + within "#new-modal-scoped_style_foo-content" do find("*[type=submit]").click end @@ -125,8 +127,8 @@ expect(page).to have_content("Processes") end - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_style_bar)).to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_style_bar).constraints.first.settings).to eq("participatory_space_manifest" => "participatory_processes") + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_style_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_style_bar).constraints.first.settings).to eq("participatory_space_manifest" => "participatory_processes") end context "when removing a constraint" do @@ -138,6 +140,8 @@ end it "removes the helper config var" do + skip "Adapt the accountability feature to 0.28" + within ".scoped_styles_container[data-key=\"bar\"] .constraints-editor" do expect(page).to have_content("Processes") end @@ -156,8 +160,8 @@ expect(page).not_to have_content("Processes") end - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_style_bar)).to be_present - expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization: organization, var: :scoped_style_bar).constraints).not_to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_style_bar)).to be_present + expect(Decidim::DecidimAwesome::AwesomeConfig.find_by(organization:, var: :scoped_style_bar).constraints).not_to be_present end end end diff --git a/spec/system/admin/admin_spec.rb b/spec/system/admin/admin_spec.rb index 6f100c13e..35249de77 100644 --- a/spec/system/admin/admin_spec.rb +++ b/spec/system/admin/admin_spec.rb @@ -3,9 +3,9 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/config_examples" -describe "Visit the admin page", type: :system do - let(:organization) { create :organization, rich_text_editor_in_public_views: rte_enabled } - let!(:admin) { create(:user, :admin, :confirmed, organization: organization) } +describe "Visit the admin page" do + let(:organization) { create(:organization, rich_text_editor_in_public_views: rte_enabled) } + let!(:admin) { create(:user, :admin, :confirmed, organization:) } let(:rte_enabled) { true } let(:disabled_features) { [] } let(:version_original) { Decidim.version } @@ -37,6 +37,8 @@ end it "renders the page" do + skip "This feature is pending to be adapted to Decidim 0.28" + expect(page).to have_content(/System Compatibility Checks/i) expect(page).not_to have_xpath("//span[@class='text-alert']") expect(page).to have_xpath("//span[@class='text-success']") @@ -46,6 +48,8 @@ let(:version) { "0.11" } it "detects missing css" do + skip "This feature is pending to be adapted to Decidim 0.28" + expect(page).to have_xpath("//span[@class='text-alert']", count: 1) end end @@ -54,6 +58,8 @@ context "when visiting editor hacks" do context "when editor hacks are enabled" do before do + skip "Custom redirects feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + click_link "Editor Hacks" end @@ -77,6 +83,8 @@ context "when visiting surveys hacks" do context "when survey hacks are enabled" do before do + skip "auto_save_forms feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + click_link "Surveys & Forms" end @@ -97,6 +105,8 @@ context "when visiting proposal hacks" do context "when proposal hacks are enabled" do before do + skip "Proposals hacks feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + click_link "Proposals Hacks" end @@ -150,6 +160,10 @@ [:allow_images_in_proposals, :validate_title_min_length, :validate_title_max_caps_percent, :validate_title_max_marks_together, :validate_title_start_with_caps, :validate_body_min_length, :validate_body_max_caps_percent, :validate_body_max_marks_together, :validate_body_start_with_caps].each do |var| let(:disabled_features) { [var] } + before do + skip "Proposals hacks feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + end + it_behaves_like "has menu link", "proposals" end end @@ -157,6 +171,10 @@ context "when all proposals hacks are disabled" do let(:disabled_features) { [:allow_images_in_proposals, :validate_title_min_length, :validate_title_max_caps_percent, :validate_title_max_marks_together, :validate_title_start_with_caps, :validate_body_min_length, :validate_body_max_caps_percent, :validate_body_max_marks_together, :validate_body_start_with_caps] } + before do + skip "Proposals hacks feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + end + it_behaves_like "do not have menu link", "proposals" end end @@ -164,6 +182,8 @@ context "when visiting live chat" do context "when livechat hacks are enabled" do before do + skip "Live chat feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + click_link "Live Chat" end @@ -184,6 +204,8 @@ context "when visiting CSS tweaks" do context "when scoped styles are enabled" do before do + skip "Recover this tests after adapting and enabling all features" + click_link "Custom Styles" end @@ -197,21 +219,31 @@ context "when scoped styles are disabled" do let(:disabled_features) { [:scoped_styles] } + before do + skip "Recover this tests after adapting and enabling all features" + end + it_behaves_like "do not have menu link", "styles" end end context "when visiting Menu hacks" do context "when menu_hacks are enabled" do + let(:disabled_features) { [] } + before do click_link "Menu Tweaks" end - it_behaves_like "has menu link", "menu_hacks" do + it_behaves_like "has menu link", "menus/home_content_block_menu/hacks" do let(:prefix) { "" } end - it "renders the page" do + it_behaves_like "has menu link", "menus/menu/hacks" do + let(:prefix) { "" } + end + + it "renders the main menu page" do expect(page).to have_content(/Main menu/i) end end @@ -219,6 +251,10 @@ context "when menu_hacks are disabled" do let(:disabled_features) { [:menu] } + before do + skip "Recover this tests after adapting and enabling all features" + end + it_behaves_like "do not have menu link", "menu_hacks" do let(:prefix) { "" } end @@ -228,6 +264,8 @@ context "when visiting custom redirections" do context "when custom_redirections are enabled" do before do + skip "Custom redirects feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + click_link "Custom Redirections" end @@ -263,6 +301,10 @@ context "when scoped admins are disabled" do let(:disabled_features) { [:scoped_admins] } + before do + skip "Recover this tests after adapting and enabling all features" + end + it_behaves_like "do not have menu link", "admins" end end @@ -270,6 +312,8 @@ context "when visiting proposal custom fields" do context "when custom fields are enabled" do before do + skip "Proposal custom fields feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + click_link "Proposals Custom Fields" end diff --git a/spec/system/admin/scoped_admins_spec.rb b/spec/system/admin/scoped_admins_spec.rb index 5c713c9b6..0c8981be3 100644 --- a/spec/system/admin/scoped_admins_spec.rb +++ b/spec/system/admin/scoped_admins_spec.rb @@ -3,22 +3,22 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/scoped_admins_examples" -describe "Scoped admin journeys", type: :system do - let(:organization) { create :organization } - let!(:assembly) { create(:assembly, organization: organization) } +describe "Scoped admin journeys" do + let(:organization) { create(:organization) } + let!(:assembly) { create(:assembly, organization:) } let!(:component) { create(:proposal_component, participatory_space: assembly) } - let!(:proposal) { create(:proposal, :official, component: component) } + let!(:proposal) { create(:proposal, :official, component:) } let!(:another_component) { create(:meeting_component, participatory_space: assembly) } - let!(:another_assembly) { create(:assembly, organization: organization) } - let!(:participatory_process) { create(:participatory_process, organization: organization) } - let!(:process_group) { create(:participatory_process_group, organization: organization) } - let!(:another_process_group) { create(:participatory_process_group, organization: organization) } - let!(:user) { create(:user, :confirmed, organization: organization) } - let!(:user_accepted) { create(:user, :confirmed, :admin_terms_accepted, organization: organization) } - let!(:admin) { create(:user, :confirmed, :admin, organization: organization) } - let!(:config) { create :awesome_config, organization: organization, var: :scoped_admins, value: admins } - let(:config_helper) { create :awesome_config, organization: organization, var: :scoped_admin_bar, value: nil } - let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: settings) } + let!(:another_assembly) { create(:assembly, organization:) } + let!(:participatory_process) { create(:participatory_process, organization:) } + let!(:process_group) { create(:participatory_process_group, organization:) } + let!(:another_process_group) { create(:participatory_process_group, organization:) } + let!(:user) { create(:user, :confirmed, organization:) } + let!(:user_accepted) { create(:user, :confirmed, :admin_terms_accepted, organization:) } + let!(:admin) { create(:user, :confirmed, :admin, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :scoped_admins, value: admins) } + let(:config_helper) { create(:awesome_config, organization:, var: :scoped_admin_bar, value: nil) } + let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings:) } let(:admins) do { "bar" => [] @@ -73,16 +73,15 @@ context "and admin terms not accepted" do it "allows admin terms to be accepted" do - welcome_text = "Welcome to the Admin Panel." - welcome_text = "Welcome to the Decidim Admin Panel." if legacy_version? + welcome_text = "Dashboard" visit decidim_admin.root_path - expect(page).to have_content("Agree to the terms and conditions of use") + expect(page).to have_content("Please take a moment to review the admin terms of service.") click_button "I agree with the terms" expect(page).to have_content(welcome_text) - expect(page).not_to have_content("Review them now") + expect(page).not_to have_content("Please take a moment to review the admin terms of service.") end end diff --git a/spec/system/awesome_iframe_spec.rb b/spec/system/awesome_iframe_spec.rb deleted file mode 100644 index bb0961b65..000000000 --- a/spec/system/awesome_iframe_spec.rb +++ /dev/null @@ -1,108 +0,0 @@ -# frozen_string_literal: true - -require "spec_helper" - -describe "Show awesome iframe", type: :system do - include_context "with a component" - let(:manifest_name) { "awesome_iframe" } - - let!(:user) { create :user, :confirmed, organization: organization } - let(:settings) do - { - announcement: announcement, - iframe: iframe, - no_margins: no_margins, - viewport_width: viewport_width - } - end - - let(:iframe) { '' } - let(:no_margins) { false } - let(:viewport_width) { false } - let(:announcement) { {} } - - before do - component.update!(settings: settings) - visit_component - unless legacy_version? - click_link "Change cookie settings" - click_button "Accept all" - end - end - - it "shows the iframe wrapper" do - within ".wrapper" do - expect(page).to have_selector(".awesome-iframe") - end - end - - it "shows the iframe" do - within ".awesome-iframe" do - expect(page).to have_selector("iframe") - end - end - - context "when announcement is present" do - let(:announcement) do - { - en: "I'm awesome!" - } - end - - it "shows the announcement" do - within ".wrapper" do - expect(page).to have_content("I'm awesome!") - end - end - end - - context "when no_margins is enabled" do - let(:no_margins) { true } - - it "removes the css margin" do - expect(page).to have_selector(".wrapper") - expect(page.execute_script("return $('.wrapper').css('padding-left')")).to eq("0px") - expect(page.execute_script("return $('.wrapper').css('padding-right')")).to eq("0px") - expect(page.execute_script("return $('.wrapper').css('padding-bottom')")).to eq("0px") - expect(page.execute_script("return $('.wrapper').css('padding-top')")).to eq("0px") - end - - context "and announcement is present" do - let(:announcement) do - { - en: "I'm awesome!" - } - end - - it "has margin on top" do - expect(page.execute_script("return $('.wrapper').css('padding-left')")).to eq("0px") - expect(page.execute_script("return $('.wrapper').css('padding-right')")).to eq("0px") - expect(page.execute_script("return $('.wrapper').css('padding-bottom')")).to eq("0px") - expect(page.execute_script("return $('.wrapper').css('padding-top')")).not_to eq("0px") - end - end - end - - context "when viewport_width is enabled" do - let(:viewport_width) { true } - - it "adds the .row class" do - within ".wrapper" do - expect(page).to have_selector(".awesome-iframe.row") - end - end - end - - context "when iframe code contains a script in srcdoc" do - let(:iframe) { '' } - - it "removes the script" do - within ".awesome-iframe" do - expect(page).not_to have_selector("script") - expect(page).to have_selector("iframe") - expect(page).not_to have_text("XSS") - expect { page.driver.browser.switch_to.alert }.to raise_error(Selenium::WebDriver::Error::NoSuchAlertError) - end - end - end -end diff --git a/spec/system/awesome_map/awesome_map_spec.rb b/spec/system/awesome_map/awesome_map_spec.rb index cea574def..62ff70bec 100644 --- a/spec/system/awesome_map/awesome_map_spec.rb +++ b/spec/system/awesome_map/awesome_map_spec.rb @@ -2,23 +2,22 @@ require "spec_helper" -describe "Show awesome map", type: :system do +describe "Show awesome map" do include_context "with a component" let(:manifest_name) { "awesome_map" } let!(:proposal_component) { create(:proposal_component, :with_amendments_enabled, :with_geocoding_enabled, participatory_space: participatory_process) } let!(:proposal) { create(:proposal, component: proposal_component, latitude: 40, longitude: 2) } let(:emendation) { build(:proposal, component: proposal_component, latitude: 42, longitude: 4) } - let!(:proposal_amendment) { create(:proposal_amendment, amendable: proposal, emendation: emendation) } + let!(:proposal_amendment) { create(:proposal_amendment, amendable: proposal, emendation:) } let!(:accepted_proposal) { create(:proposal, :accepted, title: { en: "Accepted proposal" }, component: proposal_component, latitude: 40, longitude: -50) } let!(:evaluating_proposal) { create(:proposal, :evaluating, title: { en: "Evaluating proposal" }, component: proposal_component, latitude: 30, longitude: 45) } let!(:not_answered_proposal) { create(:proposal, :not_answered, title: { en: "Not answered proposal" }, component: proposal_component, latitude: 70, longitude: 6) } - let!(:null_state_proposal) { create(:proposal, state: nil, title: { en: "Null state proposal" }, component: proposal_component, latitude: 50, longitude: 10) } let!(:withdrawn_proposal) { create(:proposal, :withdrawn, title: { en: "Withdrawn proposal" }, component: proposal_component, latitude: 60, longitude: -30) } let!(:rejected_proposal) { create(:proposal, :rejected, title: { en: "Rejected proposal" }, component: proposal_component, latitude: 10, longitude: 80) } let!(:category) { create(:category, participatory_space: participatory_process) } let!(:subcategory) { create(:subcategory, parent: category, participatory_space: participatory_process) } - let!(:user) { create :user, :confirmed, organization: organization } + let!(:user) { create(:user, :confirmed, organization:) } let(:active_step_id) { component.participatory_space.active_step.id } let(:settings) do { @@ -29,11 +28,11 @@ let(:step_settings) do { - show_accepted: show_accepted, - show_evaluating: show_evaluating, - show_rejected: show_rejected, - show_withdrawn: show_withdrawn, - show_not_answered: show_not_answered + show_accepted:, + show_evaluating:, + show_rejected:, + show_withdrawn:, + show_not_answered: } end let(:show_accepted) { true } @@ -64,15 +63,11 @@ end it "shows the map" do - within ".wrapper" do + within "[data-content]" do expect(page).not_to have_content("maximum complexity") - expect(page).to have_selector(".awesome-map") - expect(page).to have_selector("#awesome-map") - errors = if legacy_version? - page.driver.browser.manage.logs.get(:browser) - else - page.driver.browser.logs.get(:browser) - end + expect(page).to have_css(".awesome-map") + expect(page).to have_css("#awesome-map") + errors = page.driver.browser.logs.get(:browser) errors.each do |error| expect(error.message).not_to include("map.js"), error.message if error.level == "SEVERE" @@ -85,7 +80,7 @@ expect(page).to have_xpath("//link[@rel='stylesheet'][contains(@href,'decidim_decidim_awesome_map')]", visible: :all) expect(page).to have_xpath("//link[@rel='stylesheet'][contains(@href,'decidim_map')]", visible: :all) end - within(legacy_version? ? "head" : ".wrapper", visible: :all) do + within("[data-content]", visible: :all) do expect(page).to have_xpath("//script[contains(@src,'decidim_decidim_awesome_map')]", visible: :all) expect(page).to have_xpath("//script[contains(@src,'decidim_map')]", visible: :all) end @@ -105,7 +100,6 @@ expect(page.body).to have_selector("div[title='#{evaluating_proposal.title["en"]}']") expect(page.body).to have_selector("div[title='#{rejected_proposal.title["en"]}']") expect(page.body).to have_selector("div[title='#{withdrawn_proposal.title["en"]}']") - expect(page.body).to have_selector("div[title='#{null_state_proposal.title["en"]}']") end end @@ -122,7 +116,6 @@ expect(page.body).not_to have_selector("div[title='#{evaluating_proposal.title["en"]}']") expect(page.body).not_to have_selector("div[title='#{rejected_proposal.title["en"]}']") expect(page.body).not_to have_selector("div[title='#{withdrawn_proposal.title["en"]}']") - expect(page.body).not_to have_selector("div[title='#{null_state_proposal.title["en"]}']") end end @@ -139,7 +132,6 @@ expect(page.body).not_to have_selector("div[title='#{evaluating_proposal.title["en"]}']") expect(page.body).not_to have_selector("div[title='#{rejected_proposal.title["en"]}']") expect(page.body).not_to have_selector("div[title='#{withdrawn_proposal.title["en"]}']") - expect(page.body).to have_selector("div[title='#{null_state_proposal.title["en"]}']") end end diff --git a/spec/system/public/awesome_iframe_spec.rb b/spec/system/public/awesome_iframe_spec.rb new file mode 100644 index 000000000..432beeb17 --- /dev/null +++ b/spec/system/public/awesome_iframe_spec.rb @@ -0,0 +1,83 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe "Show awesome iframe" do + include_context "with a component" + let(:manifest_name) { "awesome_iframe" } + + let!(:user) { create(:user, :confirmed, organization:) } + let(:settings) do + { + announcement:, + iframe:, + viewport_width: + } + end + + let(:iframe) { '' } + let(:viewport_width) { false } + let(:announcement) { {} } + + before do + component.update!(settings:) + visit_component + click_link "Change cookie settings" + click_button "Accept all" + end + + it "shows the iframe wrapper" do + within "[data-content]" do + expect(page).to have_css(".awesome-iframe") + end + end + + it "shows the iframe" do + within ".awesome-iframe" do + expect(page).to have_css("iframe") + end + end + + it "adds the #html-block-html id" do + within "[data-content]" do + expect(page).to have_css("#html-block-html.awesome-iframe") + end + end + + context "when announcement is present" do + let(:announcement) do + { + en: "I'm awesome!" + } + end + + it "shows the announcement" do + within "[data-content]" do + expect(page).to have_content("I'm awesome!") + end + end + end + + context "when viewport_width is enabled" do + let(:viewport_width) { true } + + it "adds the #iframe-block id" do + within "[data-content]" do + expect(page).to have_css("#iframe-block.awesome-iframe") + end + end + end + + context "when iframe code contains a script in srcdoc" do + let(:iframe) { '' } + + it "removes the script" do + within ".awesome-iframe" do + expect(page).not_to have_css("script") + expect(page).to have_css("iframe") + expect(page).not_to have_text("XSS") + expect { page.driver.browser.switch_to.alert }.to raise_error(Selenium::WebDriver::Error::NoSuchAlertError) + end + end + end +end diff --git a/spec/system/awesome_intergram_spec.rb b/spec/system/public/awesome_intergram_spec.rb similarity index 79% rename from spec/system/awesome_intergram_spec.rb rename to spec/system/public/awesome_intergram_spec.rb index 41e5aa683..233ff8c80 100644 --- a/spec/system/awesome_intergram_spec.rb +++ b/spec/system/public/awesome_intergram_spec.rb @@ -2,22 +2,22 @@ require "spec_helper" -describe "Show intergram chat", type: :system do - let!(:user) { create :user, :confirmed, organization: organization } - let(:organization) { create :organization, available_locales: [:en] } +describe "Show intergram chat" do + let!(:user) { create(:user, :confirmed, organization:) } + let(:organization) { create(:organization, available_locales: [:en]) } let(:intergram_url) { "http://example.com/widget.js" } let(:intergram_for_admins) { true } let(:intergram_for_public) { true } let(:require_login) { false } - let!(:config_public) { create(:awesome_config, organization: organization, var: :intergram_for_public, value: intergram_for_public) } - let!(:config_admins) { create(:awesome_config, organization: organization, var: :intergram_for_admins, value: intergram_for_admins) } - let!(:config_public_settings) { create(:awesome_config, organization: organization, var: :intergram_for_public_settings, value: settings) } - let!(:config_admins_settings) { create(:awesome_config, organization: organization, var: :intergram_for_admins_settings, value: settings) } + let!(:config_public) { create(:awesome_config, organization:, var: :intergram_for_public, value: intergram_for_public) } + let!(:config_admins) { create(:awesome_config, organization:, var: :intergram_for_admins, value: intergram_for_admins) } + let!(:config_public_settings) { create(:awesome_config, organization:, var: :intergram_for_public_settings, value: settings) } + let!(:config_admins_settings) { create(:awesome_config, organization:, var: :intergram_for_admins_settings, value: settings) } let(:settings) do { chat_id: "some-id", - require_login: require_login, + require_login:, color: "some-color", use_floating_button: true, title_closed: "title-closed", @@ -29,6 +29,8 @@ end before do + skip "Awesome chat feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + stub_request(:get, /example\.com/).to_return(status: 200, body: "") Decidim::DecidimAwesome.config.intergram_url = intergram_url @@ -79,14 +81,8 @@ it_behaves_like "shows the chat", false - if legacy_version? - it "has the script tag in the head" do - expect(page).to have_xpath("//head/script[@src='#{intergram_url}']", visible: :all) - end - else - it "has the script tag in the body" do - expect(page).to have_xpath("//body/script[@src='#{intergram_url}']", visible: :all) - end + it "has the script tag in the body" do + expect(page).to have_xpath("//body/script[@src='#{intergram_url}']", visible: :all) end context "when login is required" do @@ -120,7 +116,7 @@ end context "when is and admin" do - let!(:user) { create(:user, :admin, :confirmed, organization: organization) } + let!(:user) { create(:user, :admin, :confirmed, organization:) } before do login_as user, scope: :user diff --git a/spec/system/create_proposal_custom_fields_spec.rb b/spec/system/public/create_proposal_custom_fields_spec.rb similarity index 90% rename from spec/system/create_proposal_custom_fields_spec.rb rename to spec/system/public/create_proposal_custom_fields_spec.rb index ed0fef65c..a5d9ae708 100644 --- a/spec/system/create_proposal_custom_fields_spec.rb +++ b/spec/system/public/create_proposal_custom_fields_spec.rb @@ -2,17 +2,17 @@ require "spec_helper" -describe "Custom proposals fields", type: :system do +describe "Custom proposals fields" do include_context "with a component" let(:manifest_name) { "proposals" } let!(:component) do create(:proposal_component, :with_creation_enabled, - manifest: manifest, + manifest:, participatory_space: participatory_process) end - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: custom_fields } - let(:config_helper) { create :awesome_config, organization: organization, var: :proposal_custom_field_bar } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: custom_fields) } + let(:config_helper) { create(:awesome_config, organization:, var: :proposal_custom_field_bar) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:slug) { participatory_process.slug } @@ -29,6 +29,8 @@ end before do + skip "Proposals custom fields feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + login_as user, scope: :user visit_component diff --git a/spec/system/custom_redirects_spec.rb b/spec/system/public/custom_redirects_spec.rb similarity index 86% rename from spec/system/custom_redirects_spec.rb rename to spec/system/public/custom_redirects_spec.rb index 6775c6e06..b14411f8a 100644 --- a/spec/system/custom_redirects_spec.rb +++ b/spec/system/public/custom_redirects_spec.rb @@ -2,21 +2,23 @@ require "spec_helper" -describe "Custom Redirections", type: :system do - let(:organization) { create :organization } +describe "Custom Redirections" do + let(:organization) { create(:organization) } let(:origin) { "/send-me-somewhere" } let(:destination) { "/canary-islands" } let(:active) { true } let(:pass_query) { true } - let!(:config) { create :awesome_config, organization: organization, var: :custom_redirects, value: redirections } + let!(:config) { create(:awesome_config, organization:, var: :custom_redirects, value: redirections) } let(:redirections) do { - origin => { destination: destination, active: active, pass_query: pass_query }, + origin => { destination:, active:, pass_query: }, "/a-cheaper-place" => { destination: "/lloret", active: true, pass_query: false } } end before do + skip "Custom redirects feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + # ErrorController is only called when in production mode unless ENV["SHOW_EXCEPTIONS"] allow(Rails.application).to \ diff --git a/spec/system/custom_styles_spec.rb b/spec/system/public/custom_styles_spec.rb similarity index 84% rename from spec/system/custom_styles_spec.rb rename to spec/system/public/custom_styles_spec.rb index a06b497e3..89e5a9003 100644 --- a/spec/system/custom_styles_spec.rb +++ b/spec/system/public/custom_styles_spec.rb @@ -2,11 +2,11 @@ require "spec_helper" -describe "Custom styles", type: :system do - let(:organization) { create :organization } - let!(:participatory_process) { create :participatory_process, organization: organization } - let!(:config) { create :awesome_config, organization: organization, var: :scoped_styles, value: styles } - let(:config_helper) { create :awesome_config, organization: organization, var: :scoped_style_bar } +describe "Custom styles" do + let(:organization) { create(:organization) } + let!(:participatory_process) { create(:participatory_process, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :scoped_styles, value: styles) } + let(:config_helper) { create(:awesome_config, organization:, var: :scoped_style_bar) } let(:styles) do { "bar" => "body {background: red;}" @@ -34,7 +34,7 @@ end it "css is not applyied" do - expect(page.execute_script("return window.getComputedStyle($('body')[0]).backgroundColor")).to eq("rgb(250, 250, 250)") + expect(page.execute_script("return window.getComputedStyle($('body')[0]).backgroundColor")).to eq("rgba(0, 0, 0, 0)") end end @@ -51,7 +51,7 @@ end context "when constraints are present" do - let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: settings) } + let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings:) } let!(:other_constraint) { create(:config_constraint, awesome_config: config_helper, settings: other_settings) } let(:settings) do {} diff --git a/spec/system/edit_proposal_custom_fields_spec.rb b/spec/system/public/edit_proposal_custom_fields_spec.rb similarity index 89% rename from spec/system/edit_proposal_custom_fields_spec.rb rename to spec/system/public/edit_proposal_custom_fields_spec.rb index 814ecf524..b5d6b1d62 100644 --- a/spec/system/edit_proposal_custom_fields_spec.rb +++ b/spec/system/public/edit_proposal_custom_fields_spec.rb @@ -2,21 +2,21 @@ require "spec_helper" -describe "Custom proposals fields", type: :system do +describe "Custom proposals fields" do include_context "with a component" let(:manifest_name) { "proposals" } let(:component) do create(:proposal_component, :with_creation_enabled, :with_amendments_enabled, - manifest: manifest, + manifest:, participatory_space: participatory_process) end let(:rte_enabled) { false } - let!(:proposal) { create :proposal, :with_amendments, users: [author], body: body, component: component } - let(:author) { create :user, :confirmed, organization: organization } - let!(:config) { create :awesome_config, organization: organization, var: :proposal_custom_fields, value: custom_fields } - let(:config_helper) { create :awesome_config, organization: organization, var: :proposal_custom_field_foo } + let!(:proposal) { create(:proposal, :with_amendments, users: [author], body:, component:) } + let(:author) { create(:user, :confirmed, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :proposal_custom_fields, value: custom_fields) } + let(:config_helper) { create(:awesome_config, organization:, var: :proposal_custom_field_foo) } let!(:constraint) { create(:config_constraint, awesome_config: config_helper, settings: { "participatory_space_manifest" => "participatory_processes", "participatory_space_slug" => slug }) } let(:slug) { participatory_process.slug } let(:body) do @@ -35,6 +35,8 @@ end before do + skip "Proposals custom fields feature is pending to be adapted to Decidim 0.28 and currently is disabled at lib/decidim/decidim_awesome/awesome.rb" + organization.update(rich_text_editor_in_public_views: rte_enabled) login_as user, scope: :user visit_component @@ -67,8 +69,8 @@ expect(page).to have_xpath("//input[@class='form-control'][@id='text-1476748004559'][@user-data='Lucky Luke']") expect(page).to have_xpath("//textarea[@class='form-control'][@id='textarea-1476748007461'][@user-data='I shot everything']") else - expect(page).to have_selector("dd#text-1476748004559", text: "Lucky Luke") - expect(page).to have_selector("dd#textarea-1476748007461", text: "I shot everything") + expect(page).to have_css("dd#text-1476748004559", text: "Lucky Luke") + expect(page).to have_css("dd#textarea-1476748007461", text: "I shot everything") end expect(page).to have_content("Occupation") expect(page).to have_content("Moth Man") @@ -182,12 +184,12 @@ end context "when participatory texts" do - let!(:participatory_text) { create :participatory_text, component: component } + let!(:participatory_text) { create(:participatory_text, component:) } let(:component) do create(:proposal_component, :with_creation_enabled, :with_amendments_and_participatory_texts_enabled, - manifest: manifest, + manifest:, participatory_space: participatory_process) end @@ -208,10 +210,10 @@ create(:proposal_component, :with_creation_enabled, :with_collaborative_drafts_enabled, - manifest: manifest, + manifest:, participatory_space: participatory_process) end - let!(:collaborative_draft) { create :collaborative_draft, users: [author, user], body: answer, component: component } + let!(:collaborative_draft) { create(:collaborative_draft, users: [author, user], body: answer, component:) } before do click_link "Access collaborative drafts" diff --git a/spec/system/edit_proposals_spec.rb b/spec/system/public/edit_proposals_spec.rb similarity index 78% rename from spec/system/edit_proposals_spec.rb rename to spec/system/public/edit_proposals_spec.rb index 1216a6a04..dc7508968 100644 --- a/spec/system/edit_proposals_spec.rb +++ b/spec/system/public/edit_proposals_spec.rb @@ -3,24 +3,24 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/editor_examples" -describe "Show proposals editor", type: :system do +describe "Show proposals editor" do include_context "with a component" let(:manifest_name) { "proposals" } let!(:component) do create(:proposal_component, - manifest: manifest, + manifest:, participatory_space: participatory_process) end - let!(:proposal) { create(:proposal, users: [user], component: component) } + let!(:proposal) { create(:proposal, users: [user], component:) } let(:proposal_title) { translated(proposal.title) } - let!(:user) { create :user, :confirmed, organization: organization } + let!(:user) { create(:user, :confirmed, organization:) } let(:rte_enabled) { false } - let!(:allow_images_in_proposals) { create(:awesome_config, organization: organization, var: :allow_images_in_proposals, value: images_in_proposals) } - let!(:allow_images_in_small_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_small_editor, value: images_editor) } - let!(:use_markdown_editor) { create(:awesome_config, organization: organization, var: :use_markdown_editor, value: markdown_enabled) } - let!(:allow_images_in_markdown_editor) { create(:awesome_config, organization: organization, var: :allow_images_in_markdown_editor, value: markdown_images) } + let!(:allow_images_in_proposals) { create(:awesome_config, organization:, var: :allow_images_in_proposals, value: images_in_proposals) } + let!(:allow_images_in_small_editor) { create(:awesome_config, organization:, var: :allow_images_in_small_editor, value: images_editor) } + let!(:use_markdown_editor) { create(:awesome_config, organization:, var: :use_markdown_editor, value: markdown_enabled) } + let!(:allow_images_in_markdown_editor) { create(:awesome_config, organization:, var: :allow_images_in_markdown_editor, value: markdown_images) } let(:images_in_proposals) { false } let(:images_editor) { false } let(:markdown_enabled) { false } @@ -28,6 +28,8 @@ let(:editor_selector) { "#proposal_body" } before do + skip "Proposals hacks feature is pending to be adapted to Decidim 0.28 and currently is disabled" + organization.update(rich_text_editor_in_public_views: rte_enabled) login_as user, scope: :user visit_component @@ -89,8 +91,8 @@ click_button "Send" expect(page).not_to have_content("# title") - expect(page).to have_selector("h1", text: "title") - expect(page).to have_selector("p", text: "Paragraph\nline 2") + expect(page).to have_css("h1", text: "title") + expect(page).to have_css("p", text: "Paragraph\nline 2") expect(Decidim::Proposals::Proposal.last.body["en"].gsub(/[\n\r]/, "")).to eq(html) end end diff --git a/spec/system/public/home_content_block_menu_hacks_spec.rb b/spec/system/public/home_content_block_menu_hacks_spec.rb new file mode 100644 index 000000000..e7cad96d2 --- /dev/null +++ b/spec/system/public/home_content_block_menu_hacks_spec.rb @@ -0,0 +1,197 @@ +# frozen_string_literal: true + +require "spec_helper" + +describe "Hacked home content block menu" do + let(:organization) { create(:organization) } + let!(:participatory_process) { create(:participatory_process, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :home_content_block_menu, value: menu) } + let(:menu) { [overriden, added] } + let(:overriden) do + { + url: "/processes", + label: { + "en" => "Mastering projects" + }, + position: 10 + } + end + let(:added) do + { + url: "http://external.blog", + label: { + "en" => "Blog" + }, + position: 9 + } + end + let(:disabled_features) { [] } + let!(:menu_content_block) { create(:content_block, organization:, manifest_name: :global_menu, scope_name: :homepage) } + + before do + disabled_features.each do |feature| + allow(Decidim::DecidimAwesome.config).to receive(feature).and_return(:disabled) + end + + switch_to_host(organization.host) + visit decidim.root_path + end + + it "renders the hacked menu" do + within "#home__menu" do + expect(page).not_to have_content("Processes") + expect(page).to have_content("Mastering projects") + expect(page).to have_content("Blog") + end + end + + it "renders in the proper order" do + within "#home__menu div.home__menu-element:nth-child(1)" do + expect(page).to have_content("Blog") + end + within "#home__menu div.home__menu-element:last-child" do + expect(page).to have_content("Mastering projects") + end + end + + describe "visibility" do + let(:visibility) { "default" } + let(:overriden) do + { + url: "/processes", + label: { + "en" => "Mastering projects" + }, + position: 10, + visibility: + } + end + + it "renders the item" do + within "#home__menu" do + expect(page).to have_content("Mastering projects") + end + end + + context "when hidden" do + let(:visibility) { "hidden" } + + it "do not show the menu item" do + within "#home__menu" do + expect(page).not_to have_content("Mastering projects") + end + end + end + + context "when logged" do + let(:visibility) { "logged" } + + it "do not show the menu item" do + within "#home__menu" do + expect(page).not_to have_content("Mastering projects") + end + end + end + + context "when non logged" do + let(:visibility) { "non_logged" } + + it "do not show the menu item" do + within "#home__menu" do + expect(page).to have_content("Mastering projects") + end + end + end + + context "when user is logged" do + let!(:user) { create(:user, :confirmed, organization:) } + + before do + switch_to_host(organization.host) + login_as user, scope: :user + visit decidim.root_path + end + + context "when hidden" do + let(:visibility) { "hidden" } + + it "do not show the menu item" do + within "#home__menu" do + expect(page).not_to have_content("Mastering projects") + end + end + end + + context "when logged" do + let(:visibility) { "logged" } + + it "do not show the menu item" do + within "#home__menu" do + expect(page).to have_content("Mastering projects") + end + end + end + + context "when non logged" do + let(:visibility) { "non_logged" } + + it "do not show the menu item" do + within "#home__menu" do + expect(page).not_to have_content("Mastering projects") + end + end + end + + context "when only verified user", with_authorization_workflows: ["dummy_authorization_handler"] do + let!(:authorization) { create(:authorization, granted_at: Time.zone.now, user:, name: "dummy_authorization_handler") } + let(:visibility) { "verified_user" } + + before do + switch_to_host(organization.host) + login_as user, scope: :user + visit decidim.root_path + end + + context "when user is verified" do + it "shows the item" do + within "#home__menu" do + expect(page).to have_content("Mastering projects") + end + end + end + + context "when user is not verified" do + let(:authorization) { nil } + + it "shows the item" do + within "#home__menu" do + expect(page).not_to have_content("Mastering projects") + end + end + end + + context "when verification is expired" do + let!(:authorization) { create(:authorization, granted_at: 3.months.ago, user:, name: "dummy_authorization_handler") } + + it "shows the item" do + within "#home__menu" do + expect(page).not_to have_content("Mastering projects") + end + end + end + end + + context "when menu is :disabled" do + let(:disabled_features) { [:home_content_block_menu] } + + it "renders the normal menu" do + within "#home__menu" do + expect(page).to have_content("Processes") + expect(page).not_to have_content("Mastering projects") + expect(page).not_to have_content("Blog") + end + end + end + end + end +end diff --git a/spec/system/homepage_spec.rb b/spec/system/public/homepage_spec.rb similarity index 69% rename from spec/system/homepage_spec.rb rename to spec/system/public/homepage_spec.rb index 0160895ee..029806e83 100644 --- a/spec/system/homepage_spec.rb +++ b/spec/system/public/homepage_spec.rb @@ -3,8 +3,8 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/config_examples" -describe "Visit the home page", type: :system, perform_enqueued: true do - let(:organization) { create :organization, available_locales: [:en] } +describe "Visit the home page", :perform_enqueued do + let(:organization) { create(:organization, available_locales: [:en]) } before do switch_to_host(organization.host) diff --git a/spec/system/menu_hacks_spec.rb b/spec/system/public/menu_hacks_spec.rb similarity index 64% rename from spec/system/menu_hacks_spec.rb rename to spec/system/public/menu_hacks_spec.rb index f8be9df8d..3803fb9a3 100644 --- a/spec/system/menu_hacks_spec.rb +++ b/spec/system/public/menu_hacks_spec.rb @@ -2,10 +2,10 @@ require "spec_helper" -describe "Hacked menus", type: :system do - let(:organization) { create :organization } - let!(:participatory_process) { create :participatory_process, organization: organization } - let!(:config) { create :awesome_config, organization: organization, var: :menu, value: menu } +describe "Hacked menus" do + let(:organization) { create(:organization) } + let!(:participatory_process) { create(:participatory_process, organization:) } + let!(:config) { create(:awesome_config, organization:, var: :menu, value: menu) } let(:menu) { [overriden, added] } let(:overriden) do { @@ -33,25 +33,26 @@ end switch_to_host(organization.host) - visit decidim.root_path + visit decidim_participatory_processes.participatory_processes_path + find_by_id("main-dropdown-summary").hover end shared_examples "has active link" do |text| it "has only one active link" do - within ".main-nav" do - expect(page).to have_css(".main-nav__link--active", count: 1) + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do + expect(page).to have_css("li.active", count: 1) end end it "active link containts text" do - within ".main-nav .main-nav__link--active" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu .active" do expect(page).to have_content(text) end end end it "renders the hacked menu" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("Home") expect(page).to have_content("Processes") expect(page).to have_content("Help") @@ -61,16 +62,16 @@ end it "renders in the proper order" do - within ".main-nav li:nth-child(1)" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:nth-child(1)" do expect(page).to have_content("Processes") end - within ".main-nav li:nth-child(2)" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:nth-child(2)" do expect(page).to have_content("Help") end - within ".main-nav li:nth-child(3)" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:nth-child(3)" do expect(page).to have_content("Blog") end - within ".main-nav li:last-child" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:last-child" do expect(page).to have_content("A new beggining") end end @@ -88,9 +89,9 @@ end it "has target blank" do - expect(find(".main-nav li:nth-child(3) a")[:class]).to include("external-link-container") - expect(find(".main-nav li:nth-child(3) a")[:target]).to eq("_blank") - expect(find(".main-nav li:last-child a")[:class]).not_to include("external-link-container") + expect(find("#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:nth-child(3) a")["data-remote"]).to eq("true") + expect(find("#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:nth-child(3) a")[:target]).to eq("_blank") + expect(find("#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu li:last-child a")["data-remote"]).not_to eq("true") end end @@ -103,12 +104,12 @@ "en" => "A new beggining" }, position: 10, - visibility: visibility + visibility: } end it "renders the item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).to have_content("A new beggining") end end @@ -117,7 +118,7 @@ let(:visibility) { "hidden" } it "do not show the menu item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("A new beggining") end end @@ -127,7 +128,7 @@ let(:visibility) { "logged" } it "do not show the menu item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("A new beggining") end end @@ -137,26 +138,27 @@ let(:visibility) { "non_logged" } it "do not show the menu item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).to have_content("A new beggining") end end end context "when user is logged" do - let!(:user) { create(:user, :confirmed, organization: organization) } + let!(:user) { create(:user, :confirmed, organization:) } before do switch_to_host(organization.host) login_as user, scope: :user - visit decidim.root_path + visit decidim_participatory_processes.participatory_processes_path + find_by_id("main-dropdown-summary").hover end context "when hidden" do let(:visibility) { "hidden" } it "do not show the menu item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("A new beggining") end end @@ -166,7 +168,7 @@ let(:visibility) { "logged" } it "do not show the menu item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).to have_content("A new beggining") end end @@ -176,25 +178,26 @@ let(:visibility) { "non_logged" } it "do not show the menu item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("A new beggining") end end end context "when only verified user", with_authorization_workflows: ["dummy_authorization_handler"] do - let!(:authorization) { create(:authorization, granted_at: Time.zone.now, user: user, name: "dummy_authorization_handler") } + let!(:authorization) { create(:authorization, granted_at: Time.zone.now, user:, name: "dummy_authorization_handler") } let(:visibility) { "verified_user" } before do switch_to_host(organization.host) login_as user, scope: :user - visit decidim.root_path + visit decidim_participatory_processes.participatory_processes_path + find_by_id("main-dropdown-summary").hover end context "when user is verified" do it "shows the item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).to have_content("A new beggining") end end @@ -204,17 +207,17 @@ let(:authorization) { nil } it "shows the item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("A new beggining") end end end context "when verification is expired" do - let!(:authorization) { create(:authorization, granted_at: 3.months.ago, user: user, name: "dummy_authorization_handler") } + let!(:authorization) { create(:authorization, granted_at: 3.months.ago, user:, name: "dummy_authorization_handler") } it "shows the item" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).not_to have_content("A new beggining") end end @@ -223,12 +226,12 @@ describe "active" do let!(:component) { create(:proposal_component, participatory_space: participatory_process) } - let!(:participatory_process2) { create :participatory_process, organization: organization } + let!(:participatory_process2) { create(:participatory_process, organization:) } let!(:component2) { create(:proposal_component, participatory_space: participatory_process2) } let(:menu) do [ { - url: "/", + url: "/processes", label: { "en" => "A new beggining" }, @@ -249,14 +252,16 @@ context "when visiting all processes list" do before do visit decidim_participatory_processes.participatory_processes_path + find_by_id("main-dropdown-summary").hover end - it_behaves_like "has active link", "Processes" + it_behaves_like "has active link", "A new beggining" end context "when visiting a process in a custom link" do before do visit decidim_participatory_processes.participatory_process_path(participatory_process.slug) + find_by_id("main-dropdown-summary").hover end it_behaves_like "has active link", "A single process" @@ -265,6 +270,7 @@ context "when visiting a sublink of a process in a custom link" do before do visit main_component_path(component) + find_by_id("main-dropdown-summary").hover end it_behaves_like "has active link", "A single process" @@ -273,17 +279,19 @@ context "when visiting a process not in a custom link" do before do visit decidim_participatory_processes.participatory_process_path(participatory_process2.slug) + find_by_id("main-dropdown-summary").hover end - it_behaves_like "has active link", "Processes" + it_behaves_like "has active link", "A new beggining" end context "when visiting a sublink of a process not in a custom link" do before do visit main_component_path(component2) + find_by_id("main-dropdown-summary").hover end - it_behaves_like "has active link", "Processes" + it_behaves_like "has active link", "A new beggining" end end @@ -291,7 +299,7 @@ let(:disabled_features) { [:menu] } it "renders the normal menu" do - within ".main-nav" do + within "#breadcrumb-main-dropdown-desktop .menu-bar__main-dropdown__menu" do expect(page).to have_content("Home") expect(page).to have_content("Processes") expect(page).to have_content("Help") @@ -300,14 +308,15 @@ end end - it_behaves_like "has active link", "Home" + it_behaves_like "has active link", "Processes" context "when visiting another page" do before do - visit decidim_participatory_processes.participatory_processes_path + visit decidim.pages_path + find_by_id("main-dropdown-summary").hover end - it_behaves_like "has active link", "Processes" + it_behaves_like "has active link", "Help" end end end diff --git a/spec/system/questionnaires_spec.rb b/spec/system/public/questionnaires_spec.rb similarity index 79% rename from spec/system/questionnaires_spec.rb rename to spec/system/public/questionnaires_spec.rb index d957548c2..a8d59238b 100644 --- a/spec/system/questionnaires_spec.rb +++ b/spec/system/public/questionnaires_spec.rb @@ -3,17 +3,17 @@ require "spec_helper" require "decidim/decidim_awesome/test/shared_examples/config_examples" -describe "Questionnaires", type: :system do +describe "Questionnaires" do include_context "with a component" let(:manifest_name) { "meetings" } let(:user) do - create :user, + create(:user, :confirmed, - organization: organization + organization:) end - let(:meeting) { create :meeting, :published, :online, :live, component: component } + let(:meeting) { create(:meeting, :published, :online, :live, component:) } let(:meeting_live_event_path) do decidim_participatory_process_meetings.meeting_live_event_path( participatory_process_slug: participatory_process.slug, @@ -29,9 +29,9 @@ end context "when questionnaire exist" do - let!(:poll) { create(:poll, meeting: meeting) } + let!(:poll) { create(:poll, meeting:) } let!(:questionnaire) { create(:meetings_poll_questionnaire, questionnaire_for: poll) } - let!(:question_single_option) { create(:meetings_poll_question, :unpublished, questionnaire: questionnaire) } + let!(:question_single_option) { create(:meetings_poll_question, :unpublished, questionnaire:) } it "has current_questionnaire" do login_as user, scope: :user diff --git a/spec/system/voting_cards_spec.rb b/spec/system/public/voting_cards_spec.rb similarity index 71% rename from spec/system/voting_cards_spec.rb rename to spec/system/public/voting_cards_spec.rb index c862d5ba7..31f535f7f 100644 --- a/spec/system/voting_cards_spec.rb +++ b/spec/system/public/voting_cards_spec.rb @@ -2,16 +2,16 @@ require "spec_helper" -describe "Voting weights with cards", type: :system do +describe "Voting weights with cards" do include_context "with a component" let(:voting_manifest) { :voting_cards } - let!(:component) { create :proposal_component, :with_votes_enabled, participatory_space: participatory_space, settings: settings } + let!(:component) { create(:proposal_component, :with_votes_enabled, participatory_space:, settings:) } let(:settings) do { - vote_limit: vote_limit, - threshold_per_proposal: threshold_per_proposal, - can_accumulate_supports_beyond_threshold: can_accumulate_supports_beyond_threshold, - minimum_votes_per_user: minimum_votes_per_user, + vote_limit:, + threshold_per_proposal:, + can_accumulate_supports_beyond_threshold:, + minimum_votes_per_user:, awesome_voting_manifest: voting_manifest, voting_cards_show_abstain: abstain, voting_cards_box_title: { en: box_title }, @@ -19,10 +19,10 @@ voting_cards_show_modal_help: modal_help } end - let!(:proposals) { create_list(:proposal, 4, component: component) } + let!(:proposals) { create_list(:proposal, 4, component:) } let(:proposal) { proposals.first } let(:proposal_title) { translated(proposal.title) } - let(:user) { create :user, :confirmed, organization: organization } + let(:user) { create(:user, :confirmed, organization:) } let(:abstain) { true } let(:box_title) { nil } let(:instructions) { nil } @@ -33,6 +33,10 @@ let(:can_accumulate_supports_beyond_threshold) { false } let(:minimum_votes_per_user) { 0 } + before do + skip "Weighted voting feature is pending to be adapted to Decidim 0.28" + end + context "when the user is logged in" do before do login_as user, scope: :user @@ -49,9 +53,9 @@ expect(page).to have_content("Red") expect(page).to have_content("Yellow") expect(page).not_to have_content("Change my vote") - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "0") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "0") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") click_link "Abstain" within ".vote_proposal_modal" do @@ -142,27 +146,27 @@ let(:modal_help) { false } let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3) ] end it "shows existing votes" do - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "3") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "2") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "3") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "2") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "1") end it "updates vote counts when the user votes" do click_link "Green" - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "2") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "2") click_link "Change my vote" click_link "Abstain" - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "1") end end end @@ -175,16 +179,16 @@ let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0) ] end @@ -199,7 +203,7 @@ end context "when votes are blocked" do - let!(:component) { create :proposal_component, :with_votes_blocked, participatory_space: participatory_space, settings: settings } + let!(:component) { create(:proposal_component, :with_votes_blocked, participatory_space:, settings:) } it "shows the vote count and the vote button is disabled" do within "#proposal_#{proposal.id}" do @@ -207,13 +211,13 @@ expect(page).to have_content("SUPPORTS DISABLED") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "3") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "2") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "1") - expect(page).to have_selector(".vote-action.weight_1.disabled") - expect(page).to have_selector(".vote-action.weight_2.disabled") - expect(page).to have_selector(".vote-action.weight_3.disabled") - expect(page).to have_selector(".vote-action.weight_0.disabled") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "3") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "2") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "1") + expect(page).to have_css(".vote-action.weight_1.disabled") + expect(page).to have_css(".vote-action.weight_2.disabled") + expect(page).to have_css(".vote-action.weight_3.disabled") + expect(page).to have_css(".vote-action.weight_0.disabled") expect(page).not_to have_content("Change my vote") end end @@ -231,22 +235,22 @@ expect(page).not_to have_content("G: 1") click_link "Click to vote" end - expect(page).not_to have_selector(".vote-count[data-weight=\"1\"]") - expect(page).not_to have_selector(".vote-count[data-weight=\"2\"]") - expect(page).not_to have_selector(".vote-count[data-weight=\"3\"]") + expect(page).not_to have_css(".vote-count[data-weight=\"1\"]") + expect(page).not_to have_css(".vote-count[data-weight=\"2\"]") + expect(page).not_to have_css(".vote-count[data-weight=\"3\"]") expect(page).not_to have_content("Change my vote") click_link "Green" - expect(page).not_to have_selector(".vote-count[data-weight=\"3\"]") + expect(page).not_to have_css(".vote-count[data-weight=\"3\"]") click_link "Change my vote" click_link "Abstain" - expect(page).not_to have_selector(".vote-count[data-weight=\"3\"]") + expect(page).not_to have_css(".vote-count[data-weight=\"3\"]") end end context "when vote limit has been reached" do let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal, author: user), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:, author: user), weight: 1), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[1], author: user), weight: 2), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[2], author: user), weight: 3) ] @@ -262,20 +266,20 @@ expect(page).to have_content("VOTED") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "1") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "0") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") - expect(page).to have_selector(".vote-action.weight_1.disabled") - expect(page).to have_selector(".vote-action.weight_2.disabled") - expect(page).to have_selector(".vote-action.weight_3.disabled") - expect(page).to have_selector(".vote-action.weight_0.disabled") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-action.weight_1.disabled") + expect(page).to have_css(".vote-action.weight_2.disabled") + expect(page).to have_css(".vote-action.weight_3.disabled") + expect(page).to have_css(".vote-action.weight_0.disabled") expect(page).to have_content("Change my vote") end context "and has not voted on the proposal" do let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[1], author: user), weight: 2), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[2], author: user), weight: 3) ] @@ -291,13 +295,13 @@ expect(page).to have_content("NO SUPPORTS REMAINING") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "1") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "0") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") - expect(page).to have_selector(".vote-action.weight_1.disabled") - expect(page).to have_selector(".vote-action.weight_2.disabled") - expect(page).to have_selector(".vote-action.weight_3.disabled") - expect(page).to have_selector(".vote-action.weight_0.disabled") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-action.weight_1.disabled") + expect(page).to have_css(".vote-action.weight_2.disabled") + expect(page).to have_css(".vote-action.weight_3.disabled") + expect(page).to have_css(".vote-action.weight_0.disabled") expect(page).not_to have_content("Change my vote") expect(page).to have_content("No supports remaining") end @@ -307,7 +311,7 @@ context "when proposals have a voting limit" do let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1) ] end let(:threshold_per_proposal) { 1 } @@ -322,13 +326,13 @@ expect(page).to have_content("SUPPORT LIMIT REACHED") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "1") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "0") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") - expect(page).to have_selector(".vote-action.weight_1.disabled") - expect(page).to have_selector(".vote-action.weight_2.disabled") - expect(page).to have_selector(".vote-action.weight_3.disabled") - expect(page).to have_selector(".vote-action.weight_0.disabled") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-action.weight_1.disabled") + expect(page).to have_css(".vote-action.weight_2.disabled") + expect(page).to have_css(".vote-action.weight_3.disabled") + expect(page).to have_css(".vote-action.weight_0.disabled") expect(page).to have_content("Support limit reached") end @@ -344,15 +348,15 @@ expect(page).to have_content("CLICK TO VOTE") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "1") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "0") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") expect(page).not_to have_content("Change my vote") click_link "Green" - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "1") click_link "Change my vote" click_link "Abstain" - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") end end end @@ -368,9 +372,9 @@ expect(page).to have_content("G: 0") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") click_link "Green" - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "0") visit_component within "#proposal_#{proposal.id}" do expect(page).to have_content("G: 0") @@ -379,15 +383,15 @@ expect(page).to have_content("G: 0") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "0") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "0") click_link "Red" - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "1") visit_component within "#proposal_#{proposal.id}" do expect(page).to have_content("G: 1") click_link "Click to vote" end - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "1") visit_component within "#proposal_#{proposal.id}" do expect(page).to have_content("G: 1") @@ -399,11 +403,11 @@ end context "when proposal is rejected" do - let(:proposal) { create(:proposal, :rejected, component: component) } + let(:proposal) { create(:proposal, :rejected, component:) } let!(:vote_weights) { [] } it "shows the vote count" do - filter = legacy_version? ? ".state_check_boxes_tree_filter" : ".with_any_state_check_boxes_tree_filter" + filter = ".with_any_state_check_boxes_tree_filter" within ".filters #{filter}" do check "All" uncheck "All" @@ -437,12 +441,12 @@ context "when the user has voted" do let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal, author: user), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:, author: user), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[1], author: user), weight: 2), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[2], author: user), weight: 3), create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposals[3], author: user), weight: 0) @@ -485,19 +489,19 @@ end context "when votes are blocked" do - let!(:component) { create :proposal_component, :with_votes_blocked, participatory_space: participatory_space, settings: settings } + let!(:component) { create(:proposal_component, :with_votes_blocked, participatory_space:, settings:) } it "shows the vote count and the vote button is disabled" do within "#proposal_#{proposal.id}" do expect(page).to have_content("G: 3") click_link "Voted" end - expect(page).to have_selector(".vote-count[data-weight=\"1\"]", text: "1") - expect(page).to have_selector(".vote-count[data-weight=\"2\"]", text: "2") - expect(page).to have_selector(".vote-count[data-weight=\"3\"]", text: "3") - expect(page).to have_selector(".vote-action.weight_1.disabled") - expect(page).to have_selector(".vote-action.weight_2.disabled") - expect(page).to have_selector(".vote-action.weight_3.disabled") + expect(page).to have_css(".vote-count[data-weight=\"1\"]", text: "1") + expect(page).to have_css(".vote-count[data-weight=\"2\"]", text: "2") + expect(page).to have_css(".vote-count[data-weight=\"3\"]", text: "3") + expect(page).to have_css(".vote-action.weight_1.disabled") + expect(page).to have_css(".vote-action.weight_2.disabled") + expect(page).to have_css(".vote-action.weight_3.disabled") expect(page).not_to have_content("Change my vote") end end @@ -511,16 +515,16 @@ let!(:vote_weights) do [ - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 1), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 2), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 3), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0), - create(:awesome_vote_weight, vote: create(:proposal_vote, proposal: proposal), weight: 0) + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 1), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 2), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 3), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0), + create(:awesome_vote_weight, vote: create(:proposal_vote, proposal:), weight: 0) ] end @@ -565,9 +569,9 @@ within "#proposal_#{proposal.id}" do click_link "Click to vote" end - expect(page).to have_selector("#loginModal", visible: :hidden) + expect(page).to have_css("#loginModal", visible: :hidden) click_link "Abstain" - expect(page).to have_selector("#loginModal", visible: :visible) + expect(page).to have_css("#loginModal", visible: :visible) end end end diff --git a/spec/types/proposal_type_spec.rb b/spec/types/proposal_type_spec.rb index e89bde5a6..a96b615f1 100644 --- a/spec/types/proposal_type_spec.rb +++ b/spec/types/proposal_type_spec.rb @@ -8,7 +8,7 @@ module Decidim::Proposals include_context "with a graphql class type" let(:component) { create(:proposal_component) } let!(:extra_fields) { create(:awesome_proposal_extra_fields, :with_votes, proposal: model) } - let(:model) { create :proposal, component: component } + let(:model) { create(:proposal, component:) } describe "id" do let(:query) { "{ id }" } diff --git a/spec/uploaders/cw/image_uploader_spec.rb b/spec/uploaders/cw/image_uploader_spec.rb index e47c10d0e..5495e5656 100644 --- a/spec/uploaders/cw/image_uploader_spec.rb +++ b/spec/uploaders/cw/image_uploader_spec.rb @@ -8,7 +8,7 @@ module Decidim::Cw::DecidimAwesome include CarrierWave::Test::Matchers let(:organization) { build(:organization) } - let(:user) { build(:user, organization: organization) } + let(:user) { build(:user, organization:) } let(:image) { Decidim::Dev.test_file("city.jpeg", "image/jpeg") } let(:uploader) { ImageUploader.new(user, :image) }